00001 #ifndef PSANA_JUNGFRAU_DDL_H
00002 #define PSANA_JUNGFRAU_DDL_H 1
00003
00004
00005
00006 #include <vector>
00007 #include <iosfwd>
00008 #include <cstring>
00009 #include "ndarray/ndarray.h"
00010 #include "pdsdata/xtc/TypeId.hh"
00011 namespace Psana {
00012 namespace Jungfrau {
00013
00014
00015
00016
00017
00018
00019
00020 class ConfigV1 {
00021 public:
00022 enum { TypeId = Pds::TypeId::Id_JungfrauConfig };
00023 enum { Version = 1 };
00024 enum GainMode {
00025 Normal = 0,
00026 FixedGain1 = 1,
00027 FixedGain2 = 2,
00028 ForcedGain1 = 3,
00029 ForcedGain2 = 4,
00030 HighGain0 = 5,
00031 };
00032 enum SpeedMode {
00033 Quarter = 0,
00034 Half = 1,
00035 };
00036 virtual ~ConfigV1();
00037
00038 virtual uint32_t numberOfModules() const = 0;
00039
00040 virtual uint32_t numberOfRowsPerModule() const = 0;
00041
00042 virtual uint32_t numberOfColumnsPerModule() const = 0;
00043
00044 virtual uint32_t biasVoltage() const = 0;
00045
00046 virtual Jungfrau::ConfigV1::GainMode gainMode() const = 0;
00047
00048 virtual Jungfrau::ConfigV1::SpeedMode speedMode() const = 0;
00049
00050 virtual double triggerDelay() const = 0;
00051
00052 virtual double exposureTime() const = 0;
00053
00054 virtual uint32_t frameSize() const = 0;
00055
00056 virtual uint32_t numPixels() const = 0;
00057 };
00058 std::ostream& operator<<(std::ostream& str, Jungfrau::ConfigV1::GainMode enval);
00059 std::ostream& operator<<(std::ostream& str, Jungfrau::ConfigV1::SpeedMode enval);
00060
00061
00062
00063
00064
00065
00066 class ConfigV1;
00067
00068 class ElementV1 {
00069 public:
00070 enum { TypeId = Pds::TypeId::Id_JungfrauElement };
00071 enum { Version = 1 };
00072 virtual ~ElementV1();
00073
00074 virtual uint32_t frameNumber() const = 0;
00075
00076 virtual uint32_t ticks() const = 0;
00077
00078 virtual uint32_t fiducials() const = 0;
00079 virtual ndarray<const uint16_t, 3> frame() const = 0;
00080 };
00081 }
00082 }
00083 #endif // PSANA_JUNGFRAU_DDL_H