00001 #ifndef PSANA_FLI_DDL_H
00002 #define PSANA_FLI_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 Fli {
00013
00014
00015
00016
00017
00018
00019
00020 class ConfigV1 {
00021 public:
00022 enum { TypeId = Pds::TypeId::Id_FliConfig };
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 uint8_t gainIndex() const = 0;
00034 virtual uint8_t readoutSpeedIndex() const = 0;
00035 virtual uint16_t exposureEventCode() const = 0;
00036 virtual uint32_t numDelayShots() const = 0;
00037
00038 virtual uint32_t frameSize() const = 0;
00039
00040 virtual uint32_t numPixelsX() const = 0;
00041
00042 virtual uint32_t numPixelsY() const = 0;
00043
00044 virtual uint32_t numPixels() const = 0;
00045 };
00046
00047
00048
00049
00050
00051
00052 class ConfigV1;
00053
00054 class FrameV1 {
00055 public:
00056 enum { TypeId = Pds::TypeId::Id_FliFrame };
00057 enum { Version = 1 };
00058 virtual ~FrameV1();
00059 virtual uint32_t shotIdStart() const = 0;
00060 virtual float readoutTime() const = 0;
00061 virtual float temperature() const = 0;
00062 virtual ndarray<const uint16_t, 2> data() const = 0;
00063 };
00064 }
00065 }
00066 #endif // PSANA_FLI_DDL_H