00001 #ifndef PSANA_PIMAX_DDL_H
00002 #define PSANA_PIMAX_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 Pimax {
00013
00014
00015
00016
00017
00018
00019
00020 class ConfigV1 {
00021 public:
00022 enum { TypeId = Pds::TypeId::Id_PimaxConfig };
00023 enum { Version = 1 };
00024 virtual ~ConfigV1();
00025 virtual uint32_t width() const = 0;
00026 virtual uint32_t height() const = 0;
00027 virtual uint32_t orgX() const = 0;
00028 virtual uint32_t orgY() const = 0;
00029 virtual uint32_t binX() const = 0;
00030 virtual uint32_t binY() const = 0;
00031 virtual float exposureTime() const = 0;
00032 virtual float coolingTemp() const = 0;
00033 virtual float readoutSpeed() const = 0;
00034 virtual uint16_t gainIndex() const = 0;
00035 virtual uint16_t intensifierGain() const = 0;
00036 virtual double gateDelay() const = 0;
00037 virtual double gateWidth() const = 0;
00038 virtual uint32_t maskedHeight() const = 0;
00039 virtual uint32_t kineticHeight() const = 0;
00040 virtual float vsSpeed() const = 0;
00041 virtual int16_t infoReportInterval() const = 0;
00042 virtual uint16_t exposureEventCode() const = 0;
00043 virtual uint32_t numIntegrationShots() const = 0;
00044
00045 virtual uint32_t frameSize() const = 0;
00046
00047 virtual uint32_t numPixelsX() const = 0;
00048
00049 virtual uint32_t numPixelsY() const = 0;
00050
00051 virtual uint32_t numPixels() const = 0;
00052 };
00053
00054
00055
00056
00057
00058
00059 class ConfigV1;
00060
00061 class FrameV1 {
00062 public:
00063 enum { TypeId = Pds::TypeId::Id_PimaxFrame };
00064 enum { Version = 1 };
00065 virtual ~FrameV1();
00066 virtual uint32_t shotIdStart() const = 0;
00067 virtual float readoutTime() const = 0;
00068 virtual float temperature() const = 0;
00069 virtual ndarray<const uint16_t, 2> data() const = 0;
00070 };
00071 }
00072 }
00073 #endif // PSANA_PIMAX_DDL_H