00001 #ifndef PSANA_EPIX_DDL_H
00002 #define PSANA_EPIX_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 #include "psddl_psana/genericpgp.ddl.h"
00012 namespace Psana {
00013 namespace Epix {
00014
00015
00016
00017
00018
00019
00020
00021 class AsicConfigV1 {
00022 public:
00023 virtual ~AsicConfigV1();
00024 virtual uint8_t monostPulser() const = 0;
00025 virtual uint8_t dummyTest() const = 0;
00026 virtual uint8_t dummyMask() const = 0;
00027 virtual uint16_t pulser() const = 0;
00028 virtual uint8_t pbit() const = 0;
00029 virtual uint8_t atest() const = 0;
00030 virtual uint8_t test() const = 0;
00031 virtual uint8_t sabTest() const = 0;
00032 virtual uint8_t hrTest() const = 0;
00033 virtual uint8_t digMon1() const = 0;
00034 virtual uint8_t digMon2() const = 0;
00035 virtual uint8_t pulserDac() const = 0;
00036 virtual uint8_t Dm1En() const = 0;
00037 virtual uint8_t Dm2En() const = 0;
00038 virtual uint8_t slvdSBit() const = 0;
00039 virtual uint8_t VRefDac() const = 0;
00040 virtual uint8_t TpsTComp() const = 0;
00041 virtual uint8_t TpsMux() const = 0;
00042 virtual uint8_t RoMonost() const = 0;
00043 virtual uint8_t TpsGr() const = 0;
00044 virtual uint8_t S2dGr() const = 0;
00045 virtual uint8_t PpOcbS2d() const = 0;
00046 virtual uint8_t Ocb() const = 0;
00047 virtual uint8_t Monost() const = 0;
00048 virtual uint8_t FastppEnable() const = 0;
00049 virtual uint8_t Preamp() const = 0;
00050 virtual uint8_t PixelCb() const = 0;
00051 virtual uint8_t S2dTComp() const = 0;
00052 virtual uint8_t FilterDac() const = 0;
00053 virtual uint8_t TC() const = 0;
00054 virtual uint8_t S2d() const = 0;
00055 virtual uint8_t S2dDacBias() const = 0;
00056 virtual uint8_t TpsTcDac() const = 0;
00057 virtual uint8_t TpsDac() const = 0;
00058 virtual uint8_t S2dTcDac() const = 0;
00059 virtual uint8_t S2dDac() const = 0;
00060 virtual uint8_t TestBe() const = 0;
00061 virtual uint8_t IsEn() const = 0;
00062 virtual uint8_t DelExec() const = 0;
00063 virtual uint8_t DelCckReg() const = 0;
00064 virtual uint16_t RowStartAddr() const = 0;
00065 virtual uint16_t RowStopAddr() const = 0;
00066 virtual uint8_t ColStartAddr() const = 0;
00067 virtual uint8_t ColStopAddr() const = 0;
00068 virtual uint16_t chipID() const = 0;
00069 };
00070
00071
00072
00073
00074
00075
00076
00077 class ConfigV1 {
00078 public:
00079 enum { TypeId = Pds::TypeId::Id_EpixConfig };
00080 enum { Version = 1 };
00081 virtual ~ConfigV1();
00082 virtual uint32_t version() const = 0;
00083 virtual uint32_t runTrigDelay() const = 0;
00084 virtual uint32_t daqTrigDelay() const = 0;
00085 virtual uint32_t dacSetting() const = 0;
00086 virtual uint8_t asicGR() const = 0;
00087 virtual uint8_t asicAcq() const = 0;
00088 virtual uint8_t asicR0() const = 0;
00089 virtual uint8_t asicPpmat() const = 0;
00090 virtual uint8_t asicPpbe() const = 0;
00091 virtual uint8_t asicRoClk() const = 0;
00092 virtual uint8_t asicGRControl() const = 0;
00093 virtual uint8_t asicAcqControl() const = 0;
00094 virtual uint8_t asicR0Control() const = 0;
00095 virtual uint8_t asicPpmatControl() const = 0;
00096 virtual uint8_t asicPpbeControl() const = 0;
00097 virtual uint8_t asicR0ClkControl() const = 0;
00098 virtual uint8_t prepulseR0En() const = 0;
00099 virtual uint32_t adcStreamMode() const = 0;
00100 virtual uint8_t testPatternEnable() const = 0;
00101 virtual uint32_t acqToAsicR0Delay() const = 0;
00102 virtual uint32_t asicR0ToAsicAcq() const = 0;
00103 virtual uint32_t asicAcqWidth() const = 0;
00104 virtual uint32_t asicAcqLToPPmatL() const = 0;
00105 virtual uint32_t asicRoClkHalfT() const = 0;
00106 virtual uint32_t adcReadsPerPixel() const = 0;
00107 virtual uint32_t adcClkHalfT() const = 0;
00108 virtual uint32_t asicR0Width() const = 0;
00109 virtual uint32_t adcPipelineDelay() const = 0;
00110 virtual uint32_t prepulseR0Width() const = 0;
00111 virtual uint32_t prepulseR0Delay() const = 0;
00112 virtual uint32_t digitalCardId0() const = 0;
00113 virtual uint32_t digitalCardId1() const = 0;
00114 virtual uint32_t analogCardId0() const = 0;
00115 virtual uint32_t analogCardId1() const = 0;
00116 virtual uint32_t lastRowExclusions() const = 0;
00117 virtual uint32_t numberOfAsicsPerRow() const = 0;
00118 virtual uint32_t numberOfAsicsPerColumn() const = 0;
00119
00120 virtual uint32_t numberOfRowsPerAsic() const = 0;
00121
00122 virtual uint32_t numberOfPixelsPerAsicRow() const = 0;
00123
00124 virtual uint32_t baseClockFrequency() const = 0;
00125 virtual uint32_t asicMask() const = 0;
00126 virtual const Epix::AsicConfigV1& asics(uint32_t i0) const = 0;
00127 virtual ndarray<const uint32_t, 3> asicPixelTestArray() const = 0;
00128 virtual ndarray<const uint32_t, 3> asicPixelMaskArray() const = 0;
00129
00130 virtual uint32_t numberOfRows() const = 0;
00131
00132 virtual uint32_t numberOfColumns() const = 0;
00133
00134 virtual uint32_t numberOfAsics() const = 0;
00135
00136 virtual std::vector<int> asics_shape() const = 0;
00137 };
00138
00139
00140
00141
00142
00143
00144
00145 class Asic10kConfigV1 {
00146 public:
00147 virtual ~Asic10kConfigV1();
00148 virtual uint8_t CompTH_DAC() const = 0;
00149 virtual uint8_t CompEn_0() const = 0;
00150 virtual uint8_t PulserSync() const = 0;
00151 virtual uint8_t dummyTest() const = 0;
00152 virtual uint8_t dummyMask() const = 0;
00153 virtual uint8_t dummyG() const = 0;
00154 virtual uint8_t dummyGA() const = 0;
00155 virtual uint16_t dummyUpper12bits() const = 0;
00156 virtual uint16_t pulser() const = 0;
00157 virtual uint8_t pbit() const = 0;
00158 virtual uint8_t atest() const = 0;
00159 virtual uint8_t test() const = 0;
00160 virtual uint8_t sabTest() const = 0;
00161 virtual uint8_t hrTest() const = 0;
00162 virtual uint8_t pulserR() const = 0;
00163 virtual uint8_t digMon1() const = 0;
00164 virtual uint8_t digMon2() const = 0;
00165 virtual uint8_t pulserDac() const = 0;
00166 virtual uint8_t monostPulser() const = 0;
00167 virtual uint8_t CompEn_1() const = 0;
00168 virtual uint8_t CompEn_2() const = 0;
00169 virtual uint8_t Dm1En() const = 0;
00170 virtual uint8_t Dm2En() const = 0;
00171 virtual uint8_t emph_bd() const = 0;
00172 virtual uint8_t emph_bc() const = 0;
00173 virtual uint8_t VRefDac() const = 0;
00174 virtual uint8_t vrefLow() const = 0;
00175 virtual uint8_t TpsTComp() const = 0;
00176 virtual uint8_t TpsMux() const = 0;
00177 virtual uint8_t RoMonost() const = 0;
00178 virtual uint8_t TpsGr() const = 0;
00179 virtual uint8_t S2dGr() const = 0;
00180 virtual uint8_t PpOcbS2d() const = 0;
00181 virtual uint8_t Ocb() const = 0;
00182 virtual uint8_t Monost() const = 0;
00183 virtual uint8_t FastppEnable() const = 0;
00184 virtual uint8_t Preamp() const = 0;
00185 virtual uint8_t PixelCb() const = 0;
00186 virtual uint8_t Vld1_b() const = 0;
00187 virtual uint8_t S2dTComp() const = 0;
00188 virtual uint8_t FilterDac() const = 0;
00189 virtual uint8_t testVDTransmitter() const = 0;
00190 virtual uint8_t TC() const = 0;
00191 virtual uint8_t S2d() const = 0;
00192 virtual uint8_t S2dDacBias() const = 0;
00193 virtual uint8_t TpsTcDac() const = 0;
00194 virtual uint8_t TpsDac() const = 0;
00195 virtual uint8_t S2dTcDac() const = 0;
00196 virtual uint8_t S2dDac() const = 0;
00197 virtual uint8_t TestBe() const = 0;
00198 virtual uint8_t IsEn() const = 0;
00199 virtual uint8_t DelExec() const = 0;
00200 virtual uint8_t DelCckReg() const = 0;
00201 virtual uint8_t RO_rst_en() const = 0;
00202 virtual uint8_t slvdSBit() const = 0;
00203 virtual uint8_t FELmode() const = 0;
00204 virtual uint8_t CompEnOn() const = 0;
00205 virtual uint16_t RowStartAddr() const = 0;
00206 virtual uint16_t RowStopAddr() const = 0;
00207 virtual uint8_t ColStartAddr() const = 0;
00208 virtual uint8_t ColStopAddr() const = 0;
00209 virtual uint16_t chipID() const = 0;
00210 };
00211
00212
00213
00214
00215
00216
00217
00218 class Config10KV1 {
00219 public:
00220 enum { TypeId = Pds::TypeId::Id_Epix10kConfig };
00221 enum { Version = 1 };
00222 virtual ~Config10KV1();
00223 virtual uint32_t version() const = 0;
00224 virtual uint32_t runTrigDelay() const = 0;
00225 virtual uint32_t daqTrigDelay() const = 0;
00226 virtual uint32_t dacSetting() const = 0;
00227 virtual uint8_t asicGR() const = 0;
00228 virtual uint8_t asicAcq() const = 0;
00229 virtual uint8_t asicR0() const = 0;
00230 virtual uint8_t asicPpmat() const = 0;
00231 virtual uint8_t asicPpbe() const = 0;
00232 virtual uint8_t asicRoClk() const = 0;
00233 virtual uint8_t asicGRControl() const = 0;
00234 virtual uint8_t asicAcqControl() const = 0;
00235 virtual uint8_t asicR0Control() const = 0;
00236 virtual uint8_t asicPpmatControl() const = 0;
00237 virtual uint8_t asicPpbeControl() const = 0;
00238 virtual uint8_t asicR0ClkControl() const = 0;
00239 virtual uint8_t prepulseR0En() const = 0;
00240 virtual uint32_t adcStreamMode() const = 0;
00241 virtual uint8_t testPatternEnable() const = 0;
00242
00243 virtual uint8_t SyncMode() const = 0;
00244
00245 virtual uint8_t R0Mode() const = 0;
00246
00247 virtual uint32_t DoutPipelineDelay() const = 0;
00248 virtual uint32_t acqToAsicR0Delay() const = 0;
00249 virtual uint32_t asicR0ToAsicAcq() const = 0;
00250 virtual uint32_t asicAcqWidth() const = 0;
00251 virtual uint32_t asicAcqLToPPmatL() const = 0;
00252 virtual uint32_t asicRoClkHalfT() const = 0;
00253 virtual uint32_t adcReadsPerPixel() const = 0;
00254 virtual uint32_t adcClkHalfT() const = 0;
00255 virtual uint32_t asicR0Width() const = 0;
00256 virtual uint32_t adcPipelineDelay() const = 0;
00257
00258 virtual uint16_t SyncWidth() const = 0;
00259
00260 virtual uint16_t SyncDelay() const = 0;
00261 virtual uint32_t prepulseR0Width() const = 0;
00262 virtual uint32_t prepulseR0Delay() const = 0;
00263 virtual uint32_t digitalCardId0() const = 0;
00264 virtual uint32_t digitalCardId1() const = 0;
00265 virtual uint32_t analogCardId0() const = 0;
00266 virtual uint32_t analogCardId1() const = 0;
00267 virtual uint32_t lastRowExclusions() const = 0;
00268 virtual uint32_t numberOfAsicsPerRow() const = 0;
00269 virtual uint32_t numberOfAsicsPerColumn() const = 0;
00270 virtual uint32_t numberOfRowsPerAsic() const = 0;
00271
00272 virtual uint32_t numberOfPixelsPerAsicRow() const = 0;
00273
00274 virtual uint32_t baseClockFrequency() const = 0;
00275 virtual uint32_t asicMask() const = 0;
00276 virtual uint8_t scopeEnable() const = 0;
00277 virtual uint8_t scopeTrigEdge() const = 0;
00278 virtual uint8_t scopeTrigChan() const = 0;
00279 virtual uint8_t scopeArmMode() const = 0;
00280 virtual uint16_t scopeADCThreshold() const = 0;
00281 virtual uint16_t scopeTrigHoldoff() const = 0;
00282 virtual uint16_t scopeTrigOffset() const = 0;
00283 virtual uint16_t scopeTraceLength() const = 0;
00284 virtual uint16_t scopeADCsameplesToSkip() const = 0;
00285 virtual uint8_t scopeChanAwaveformSelect() const = 0;
00286 virtual uint8_t scopeChanBwaveformSelect() const = 0;
00287 virtual const Epix::Asic10kConfigV1& asics(uint32_t i0) const = 0;
00288 virtual ndarray<const uint16_t, 3> asicPixelConfigArray() const = 0;
00289
00290 virtual uint32_t numberOfRows() const = 0;
00291
00292 virtual uint32_t numberOfColumns() const = 0;
00293
00294 virtual uint32_t numberOfAsics() const = 0;
00295
00296 virtual std::vector<int> asics_shape() const = 0;
00297 };
00298
00299
00300
00301
00302
00303
00304
00305 class Asic100aConfigV1 {
00306 public:
00307 virtual ~Asic100aConfigV1();
00308 virtual uint8_t pulserVsPixelOnDelay() const = 0;
00309 virtual uint8_t pulserSync() const = 0;
00310 virtual uint8_t dummyTest() const = 0;
00311 virtual uint8_t dummyMask() const = 0;
00312 virtual uint16_t testPulserLevel() const = 0;
00313 virtual uint8_t pulserCounterDirection() const = 0;
00314 virtual uint8_t automaticTestModeEnable() const = 0;
00315 virtual uint8_t testMode() const = 0;
00316 virtual uint8_t testModeWithDarkFrame() const = 0;
00317 virtual uint8_t highResolutionModeTest() const = 0;
00318 virtual uint8_t pulserReset() const = 0;
00319 virtual uint8_t digitalMonitorMux1() const = 0;
00320 virtual uint8_t digitalMonitorMux2() const = 0;
00321 virtual uint8_t testPulserCurrent() const = 0;
00322 virtual uint8_t testPointSystemOutputDynamicRange() const = 0;
00323 virtual uint8_t digitalMonitor1Enable() const = 0;
00324 virtual uint8_t digitalMonitor2Enable() const = 0;
00325 virtual uint8_t LVDS_ImpedenceMatchingEnable() const = 0;
00326 virtual uint8_t VRefBaselineDac() const = 0;
00327 virtual uint8_t extraRowsLowReferenceValue() const = 0;
00328 virtual uint8_t testPointSystemTemperatureCompensationEnable() const = 0;
00329 virtual uint8_t testPointSytemInputSelect() const = 0;
00330 virtual uint8_t programmableReadoutDelay() const = 0;
00331 virtual uint8_t outputDriverOutputDynamicRange0() const = 0;
00332 virtual uint8_t outputDriverOutputDynamicRange1() const = 0;
00333 virtual uint8_t balconyEnable() const = 0;
00334 virtual uint8_t balconyDriverCurrent() const = 0;
00335 virtual uint8_t fastPowerPulsingSpeed() const = 0;
00336 virtual uint8_t fastPowerPulsingEnable() const = 0;
00337 virtual uint8_t preamplifierCurrent() const = 0;
00338 virtual uint8_t pixelOutputBufferCurrent() const = 0;
00339 virtual uint8_t pixelBufferAndPreamplifierDrivingCapabilities() const = 0;
00340 virtual uint8_t outputDriverTemperatureCompensationEnable() const = 0;
00341 virtual uint8_t pixelFilterLevel() const = 0;
00342 virtual uint8_t bandGapReferenceTemperatureCompensationBits() const = 0;
00343 virtual uint8_t outputDriverDrivingCapabilitiesAndStability() const = 0;
00344 virtual uint8_t outputDriverDacReferenceBias() const = 0;
00345 virtual uint8_t testPointSystemTemperatureCompensationGain() const = 0;
00346 virtual uint8_t testPointSystemInputCommonMode() const = 0;
00347 virtual uint8_t outputDriverTemperatureCompensationGain0() const = 0;
00348 virtual uint8_t outputDriverInputCommonMode0() const = 0;
00349 virtual uint8_t testBackEnd() const = 0;
00350 virtual uint8_t interleavedReadOutEnable() const = 0;
00351 virtual uint8_t EXEC_DelayEnable() const = 0;
00352 virtual uint8_t CCK_RegDelayEnable() const = 0;
00353 virtual uint8_t syncPinEnable() const = 0;
00354 virtual uint16_t RowStartAddr() const = 0;
00355 virtual uint16_t RowStopAddr() const = 0;
00356 virtual uint8_t ColumnStartAddr() const = 0;
00357 virtual uint8_t ColumnStopAddr() const = 0;
00358 virtual uint16_t chipID() const = 0;
00359 virtual uint8_t outputDriverOutputDynamicRange2() const = 0;
00360 virtual uint8_t outputDriverOutputDynamicRange3() const = 0;
00361 virtual uint8_t outputDriverTemperatureCompensationGain1() const = 0;
00362 virtual uint8_t outputDriverInputCommonMode1() const = 0;
00363 virtual uint8_t outputDriverTemperatureCompensationGain2() const = 0;
00364 virtual uint8_t outputDriverInputCommonMode2() const = 0;
00365 virtual uint8_t outputDriverTemperatureCompensationGain3() const = 0;
00366 virtual uint8_t outputDriverInputCommonMode3() const = 0;
00367 };
00368
00369
00370
00371
00372
00373
00374
00375 class Config100aV1 {
00376 public:
00377 enum { TypeId = Pds::TypeId::Id_Epix100aConfig };
00378 enum { Version = 1 };
00379 virtual ~Config100aV1();
00380 virtual uint32_t version() const = 0;
00381 virtual uint32_t runTrigDelay() const = 0;
00382 virtual uint32_t daqTrigDelay() const = 0;
00383 virtual uint32_t dacSetting() const = 0;
00384 virtual uint8_t asicGR() const = 0;
00385 virtual uint8_t asicAcq() const = 0;
00386 virtual uint8_t asicR0() const = 0;
00387 virtual uint8_t asicPpmat() const = 0;
00388 virtual uint8_t asicPpbe() const = 0;
00389 virtual uint8_t asicRoClk() const = 0;
00390 virtual uint8_t asicGRControl() const = 0;
00391 virtual uint8_t asicAcqControl() const = 0;
00392 virtual uint8_t asicR0Control() const = 0;
00393 virtual uint8_t asicPpmatControl() const = 0;
00394 virtual uint8_t asicPpbeControl() const = 0;
00395 virtual uint8_t asicR0ClkControl() const = 0;
00396 virtual uint8_t prepulseR0En() const = 0;
00397 virtual uint32_t adcStreamMode() const = 0;
00398 virtual uint8_t testPatternEnable() const = 0;
00399 virtual uint8_t SyncMode() const = 0;
00400 virtual uint8_t R0Mode() const = 0;
00401 virtual uint32_t acqToAsicR0Delay() const = 0;
00402 virtual uint32_t asicR0ToAsicAcq() const = 0;
00403 virtual uint32_t asicAcqWidth() const = 0;
00404 virtual uint32_t asicAcqLToPPmatL() const = 0;
00405 virtual uint32_t asicPPmatToReadout() const = 0;
00406 virtual uint32_t asicRoClkHalfT() const = 0;
00407 virtual uint32_t adcReadsPerPixel() const = 0;
00408 virtual uint32_t adcClkHalfT() const = 0;
00409 virtual uint32_t asicR0Width() const = 0;
00410 virtual uint32_t adcPipelineDelay() const = 0;
00411 virtual uint16_t SyncWidth() const = 0;
00412 virtual uint16_t SyncDelay() const = 0;
00413 virtual uint32_t prepulseR0Width() const = 0;
00414 virtual uint32_t prepulseR0Delay() const = 0;
00415 virtual uint32_t digitalCardId0() const = 0;
00416 virtual uint32_t digitalCardId1() const = 0;
00417 virtual uint32_t analogCardId0() const = 0;
00418 virtual uint32_t analogCardId1() const = 0;
00419 virtual uint32_t numberOfAsicsPerRow() const = 0;
00420 virtual uint32_t numberOfAsicsPerColumn() const = 0;
00421 virtual uint32_t numberOfRowsPerAsic() const = 0;
00422 virtual uint32_t numberOfReadableRowsPerAsic() const = 0;
00423
00424 virtual uint32_t numberOfPixelsPerAsicRow() const = 0;
00425
00426 virtual uint32_t calibrationRowCountPerASIC() const = 0;
00427 virtual uint32_t environmentalRowCountPerASIC() const = 0;
00428 virtual uint32_t baseClockFrequency() const = 0;
00429 virtual uint32_t asicMask() const = 0;
00430 virtual uint8_t scopeEnable() const = 0;
00431 virtual uint8_t scopeTrigEdge() const = 0;
00432 virtual uint8_t scopeTrigChan() const = 0;
00433 virtual uint8_t scopeArmMode() const = 0;
00434 virtual uint16_t scopeADCThreshold() const = 0;
00435 virtual uint16_t scopeTrigHoldoff() const = 0;
00436 virtual uint16_t scopeTrigOffset() const = 0;
00437 virtual uint16_t scopeTraceLength() const = 0;
00438 virtual uint16_t scopeADCsameplesToSkip() const = 0;
00439 virtual uint8_t scopeChanAwaveformSelect() const = 0;
00440 virtual uint8_t scopeChanBwaveformSelect() const = 0;
00441 virtual const Epix::Asic100aConfigV1& asics(uint32_t i0) const = 0;
00442 virtual ndarray<const uint16_t, 2> asicPixelConfigArray() const = 0;
00443
00444 virtual ndarray<const uint8_t, 2> calibPixelConfigArray() const = 0;
00445
00446 virtual uint32_t numberOfRows() const = 0;
00447
00448 virtual uint32_t numberOfReadableRows() const = 0;
00449
00450 virtual uint32_t numberOfColumns() const = 0;
00451
00452 virtual uint32_t numberOfCalibrationRows() const = 0;
00453
00454 virtual uint32_t numberOfEnvironmentalRows() const = 0;
00455
00456 virtual uint32_t numberOfAsics() const = 0;
00457
00458 virtual std::vector<int> asics_shape() const = 0;
00459 };
00460
00461
00462
00463
00464
00465
00466
00467 class Config100aV2 {
00468 public:
00469 enum { TypeId = Pds::TypeId::Id_Epix100aConfig };
00470 enum { Version = 2 };
00471 virtual ~Config100aV2();
00472 virtual uint32_t version() const = 0;
00473 virtual uint32_t usePgpEvr() const = 0;
00474 virtual uint32_t evrRunCode() const = 0;
00475 virtual uint32_t evrDaqCode() const = 0;
00476 virtual uint32_t evrRunTrigDelay() const = 0;
00477 virtual uint32_t epixRunTrigDelay() const = 0;
00478 virtual uint32_t dacSetting() const = 0;
00479 virtual uint8_t asicGR() const = 0;
00480 virtual uint8_t asicAcq() const = 0;
00481 virtual uint8_t asicR0() const = 0;
00482 virtual uint8_t asicPpmat() const = 0;
00483 virtual uint8_t asicPpbe() const = 0;
00484 virtual uint8_t asicRoClk() const = 0;
00485 virtual uint8_t asicGRControl() const = 0;
00486 virtual uint8_t asicAcqControl() const = 0;
00487 virtual uint8_t asicR0Control() const = 0;
00488 virtual uint8_t asicPpmatControl() const = 0;
00489 virtual uint8_t asicPpbeControl() const = 0;
00490 virtual uint8_t asicR0ClkControl() const = 0;
00491 virtual uint8_t prepulseR0En() const = 0;
00492 virtual uint32_t adcStreamMode() const = 0;
00493 virtual uint8_t testPatternEnable() const = 0;
00494 virtual uint8_t SyncMode() const = 0;
00495 virtual uint8_t R0Mode() const = 0;
00496 virtual uint32_t acqToAsicR0Delay() const = 0;
00497 virtual uint32_t asicR0ToAsicAcq() const = 0;
00498 virtual uint32_t asicAcqWidth() const = 0;
00499 virtual uint32_t asicAcqLToPPmatL() const = 0;
00500 virtual uint32_t asicPPmatToReadout() const = 0;
00501 virtual uint32_t asicRoClkHalfT() const = 0;
00502 virtual uint32_t adcReadsPerPixel() const = 0;
00503 virtual uint32_t adcClkHalfT() const = 0;
00504 virtual uint32_t asicR0Width() const = 0;
00505 virtual uint32_t adcPipelineDelay() const = 0;
00506 virtual uint32_t adcPipelineDelay0() const = 0;
00507 virtual uint32_t adcPipelineDelay1() const = 0;
00508 virtual uint32_t adcPipelineDelay2() const = 0;
00509 virtual uint32_t adcPipelineDelay3() const = 0;
00510 virtual uint16_t SyncWidth() const = 0;
00511 virtual uint16_t SyncDelay() const = 0;
00512 virtual uint32_t prepulseR0Width() const = 0;
00513 virtual uint32_t prepulseR0Delay() const = 0;
00514 virtual uint32_t digitalCardId0() const = 0;
00515 virtual uint32_t digitalCardId1() const = 0;
00516 virtual uint32_t analogCardId0() const = 0;
00517 virtual uint32_t analogCardId1() const = 0;
00518 virtual uint32_t carrierId0() const = 0;
00519 virtual uint32_t carrierId1() const = 0;
00520 virtual uint32_t numberOfAsicsPerRow() const = 0;
00521 virtual uint32_t numberOfAsicsPerColumn() const = 0;
00522 virtual uint32_t numberOfRowsPerAsic() const = 0;
00523 virtual uint32_t numberOfReadableRowsPerAsic() const = 0;
00524
00525 virtual uint32_t numberOfPixelsPerAsicRow() const = 0;
00526
00527 virtual uint32_t calibrationRowCountPerASIC() const = 0;
00528 virtual uint32_t environmentalRowCountPerASIC() const = 0;
00529 virtual uint32_t baseClockFrequency() const = 0;
00530 virtual uint32_t asicMask() const = 0;
00531 virtual uint32_t enableAutomaticRunTrigger() const = 0;
00532 virtual uint32_t numberOf125MhzTicksPerRunTrigger() const = 0;
00533 virtual uint8_t scopeEnable() const = 0;
00534 virtual uint8_t scopeTrigEdge() const = 0;
00535 virtual uint8_t scopeTrigChan() const = 0;
00536 virtual uint8_t scopeArmMode() const = 0;
00537 virtual uint16_t scopeADCThreshold() const = 0;
00538 virtual uint16_t scopeTrigHoldoff() const = 0;
00539 virtual uint16_t scopeTrigOffset() const = 0;
00540 virtual uint16_t scopeTraceLength() const = 0;
00541 virtual uint16_t scopeADCsameplesToSkip() const = 0;
00542 virtual uint8_t scopeChanAwaveformSelect() const = 0;
00543 virtual uint8_t scopeChanBwaveformSelect() const = 0;
00544 virtual const Epix::Asic100aConfigV1& asics(uint32_t i0) const = 0;
00545 virtual ndarray<const uint16_t, 2> asicPixelConfigArray() const = 0;
00546
00547 virtual ndarray<const uint8_t, 2> calibPixelConfigArray() const = 0;
00548
00549 virtual uint32_t numberOfRows() const = 0;
00550
00551 virtual uint32_t numberOfReadableRows() const = 0;
00552
00553 virtual uint32_t numberOfColumns() const = 0;
00554
00555 virtual uint32_t numberOfCalibrationRows() const = 0;
00556
00557 virtual uint32_t numberOfEnvironmentalRows() const = 0;
00558
00559 virtual uint32_t numberOfAsics() const = 0;
00560
00561 virtual std::vector<int> asics_shape() const = 0;
00562 };
00563
00564
00565
00566
00567
00568
00569 class ConfigV1;
00570 class Config10KV1;
00571
00572 class ElementV1 {
00573 public:
00574 enum { TypeId = Pds::TypeId::Id_EpixElement };
00575 enum { Version = 1 };
00576 virtual ~ElementV1();
00577 virtual uint8_t vc() const = 0;
00578 virtual uint8_t lane() const = 0;
00579 virtual uint16_t acqCount() const = 0;
00580 virtual uint32_t frameNumber() const = 0;
00581 virtual uint32_t ticks() const = 0;
00582 virtual uint32_t fiducials() const = 0;
00583 virtual ndarray<const uint16_t, 2> frame() const = 0;
00584 virtual ndarray<const uint16_t, 2> excludedRows() const = 0;
00585 virtual ndarray<const uint16_t, 1> temperatures() const = 0;
00586 virtual uint32_t lastWord() const = 0;
00587 };
00588
00589
00590
00591
00592
00593
00594 class Config100aV1;
00595 class Config100aV2;
00596
00597 class ElementV2 {
00598 public:
00599 enum { TypeId = Pds::TypeId::Id_EpixElement };
00600 enum { Version = 2 };
00601 virtual ~ElementV2();
00602 virtual uint8_t vc() const = 0;
00603 virtual uint8_t lane() const = 0;
00604 virtual uint16_t acqCount() const = 0;
00605 virtual uint32_t frameNumber() const = 0;
00606 virtual uint32_t ticks() const = 0;
00607 virtual uint32_t fiducials() const = 0;
00608 virtual ndarray<const uint16_t, 2> frame() const = 0;
00609 virtual ndarray<const uint16_t, 2> calibrationRows() const = 0;
00610 virtual ndarray<const uint16_t, 2> environmentalRows() const = 0;
00611 virtual ndarray<const uint16_t, 1> temperatures() const = 0;
00612 virtual uint32_t lastWord() const = 0;
00613 };
00614
00615
00616
00617
00618
00619
00620 class Config100aV1;
00621 class Config100aV2;
00622
00623 class ElementV3 {
00624 public:
00625 enum { TypeId = Pds::TypeId::Id_EpixElement };
00626 enum { Version = 3 };
00627 virtual ~ElementV3();
00628 virtual uint8_t vc() const = 0;
00629 virtual uint8_t lane() const = 0;
00630 virtual uint16_t acqCount() const = 0;
00631 virtual uint32_t frameNumber() const = 0;
00632 virtual uint32_t ticks() const = 0;
00633 virtual uint32_t fiducials() const = 0;
00634 virtual ndarray<const uint16_t, 2> frame() const = 0;
00635 virtual ndarray<const uint16_t, 2> calibrationRows() const = 0;
00636 virtual ndarray<const uint32_t, 2> environmentalRows() const = 0;
00637 virtual ndarray<const uint16_t, 1> temperatures() const = 0;
00638 virtual uint32_t lastWord() const = 0;
00639 };
00640 }
00641 }
00642 #endif // PSANA_EPIX_DDL_H