00001 #ifndef PSANA_OCEANOPTICS_DDL_H 00002 #define PSANA_OCEANOPTICS_DDL_H 1 00003 00004 // *** Do not edit this file, it is auto-generated *** 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 OceanOptics { 00013 00014 /** @class ConfigV1 00015 00016 00017 */ 00018 00019 00020 class ConfigV1 { 00021 public: 00022 enum { TypeId = Pds::TypeId::Id_OceanOpticsConfig /**< XTC type ID value (from Pds::TypeId class) */ }; 00023 enum { Version = 1 /**< XTC type version number */ }; 00024 virtual ~ConfigV1(); 00025 virtual float exposureTime() const = 0; 00026 virtual ndarray<const double, 1> waveLenCalib() const = 0; 00027 virtual ndarray<const double, 1> nonlinCorrect() const = 0; 00028 virtual double strayLightConstant() const = 0; 00029 }; 00030 00031 /** @class ConfigV2 00032 00033 00034 */ 00035 00036 00037 class ConfigV2 { 00038 public: 00039 enum { TypeId = Pds::TypeId::Id_OceanOpticsConfig /**< XTC type ID value (from Pds::TypeId class) */ }; 00040 enum { Version = 2 /**< XTC type version number */ }; 00041 virtual ~ConfigV2(); 00042 virtual float exposureTime() const = 0; 00043 virtual int32_t deviceType() const = 0; 00044 virtual ndarray<const double, 1> waveLenCalib() const = 0; 00045 virtual ndarray<const double, 1> nonlinCorrect() const = 0; 00046 virtual double strayLightConstant() const = 0; 00047 }; 00048 00049 /** @class timespec64 00050 00051 00052 */ 00053 00054 00055 class timespec64 { 00056 public: 00057 timespec64(uint64_t arg__tv_sec, uint64_t arg__tv_nsec) 00058 : _tv_sec(arg__tv_sec), _tv_nsec(arg__tv_nsec) 00059 { 00060 } 00061 timespec64() {} 00062 uint64_t tv_sec() const { return _tv_sec; } 00063 uint64_t tv_nsec() const { return _tv_nsec; } 00064 static uint32_t _sizeof() { return 16; } 00065 private: 00066 uint64_t _tv_sec; 00067 uint64_t _tv_nsec; 00068 }; 00069 00070 /** @class DataV1 00071 00072 00073 */ 00074 00075 class ConfigV1; 00076 class ConfigV2; 00077 00078 class DataV1 { 00079 public: 00080 enum { TypeId = Pds::TypeId::Id_OceanOpticsData /**< XTC type ID value (from Pds::TypeId class) */ }; 00081 enum { Version = 1 /**< XTC type version number */ }; 00082 enum { iDataReadSize = 8192 }; 00083 enum { iNumPixels = 3840 }; 00084 enum { iActivePixelIndex = 22 }; 00085 virtual ~DataV1(); 00086 virtual ndarray<const uint16_t, 1> data() const = 0; 00087 virtual uint64_t frameCounter() const = 0; 00088 virtual uint64_t numDelayedFrames() const = 0; 00089 virtual uint64_t numDiscardFrames() const = 0; 00090 virtual const OceanOptics::timespec64& timeFrameStart() const = 0; 00091 virtual const OceanOptics::timespec64& timeFrameFirstData() const = 0; 00092 virtual const OceanOptics::timespec64& timeFrameEnd() const = 0; 00093 virtual int8_t numSpectraInData() const = 0; 00094 virtual int8_t numSpectraInQueue() const = 0; 00095 virtual int8_t numSpectraUnused() const = 0; 00096 virtual double durationOfFrame() const = 0; 00097 virtual double nonlinerCorrected(uint32_t iPixel) const = 0; 00098 }; 00099 00100 /** @class DataV2 00101 00102 00103 */ 00104 00105 class ConfigV2; 00106 00107 class DataV2 { 00108 public: 00109 enum { TypeId = Pds::TypeId::Id_OceanOpticsData /**< XTC type ID value (from Pds::TypeId class) */ }; 00110 enum { Version = 2 /**< XTC type version number */ }; 00111 enum { iDataReadSize = 4608 }; 00112 enum { iNumPixels = 2048 }; 00113 enum { iActivePixelIndex = 0 }; 00114 virtual ~DataV2(); 00115 virtual ndarray<const uint16_t, 1> data() const = 0; 00116 virtual uint64_t frameCounter() const = 0; 00117 virtual uint64_t numDelayedFrames() const = 0; 00118 virtual uint64_t numDiscardFrames() const = 0; 00119 virtual const OceanOptics::timespec64& timeFrameStart() const = 0; 00120 virtual const OceanOptics::timespec64& timeFrameFirstData() const = 0; 00121 virtual const OceanOptics::timespec64& timeFrameEnd() const = 0; 00122 virtual int8_t numSpectraInData() const = 0; 00123 virtual int8_t numSpectraInQueue() const = 0; 00124 virtual int8_t numSpectraUnused() const = 0; 00125 virtual double durationOfFrame() const = 0; 00126 virtual double nonlinerCorrected(uint32_t iPixel) const = 0; 00127 }; 00128 00129 /** @class DataV3 00130 00131 00132 */ 00133 00134 class ConfigV2; 00135 00136 class DataV3 { 00137 public: 00138 enum { TypeId = Pds::TypeId::Id_OceanOpticsData /**< XTC type ID value (from Pds::TypeId class) */ }; 00139 enum { Version = 3 /**< XTC type version number */ }; 00140 enum { iDataReadSize = 8192 }; 00141 enum { iNumPixels = 3840 }; 00142 enum { iActivePixelIndex = 22 }; 00143 virtual ~DataV3(); 00144 virtual ndarray<const uint16_t, 1> data() const = 0; 00145 virtual uint64_t frameCounter() const = 0; 00146 virtual uint64_t numDelayedFrames() const = 0; 00147 virtual uint64_t numDiscardFrames() const = 0; 00148 virtual const OceanOptics::timespec64& timeFrameStart() const = 0; 00149 virtual const OceanOptics::timespec64& timeFrameFirstData() const = 0; 00150 virtual const OceanOptics::timespec64& timeFrameEnd() const = 0; 00151 virtual int8_t numSpectraInData() const = 0; 00152 virtual int8_t numSpectraInQueue() const = 0; 00153 virtual int8_t numSpectraUnused() const = 0; 00154 virtual double durationOfFrame() const = 0; 00155 virtual double nonlinerCorrected(uint32_t iPixel) const = 0; 00156 }; 00157 } // namespace OceanOptics 00158 } // namespace Psana 00159 #endif // PSANA_OCEANOPTICS_DDL_H