psddl_psana/include/cspad.ddl.h

Go to the documentation of this file.
00001 #ifndef PSANA_CSPAD_DDL_H
00002 #define PSANA_CSPAD_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 CsPad {
00013   enum {
00014     MaxQuadsPerSensor = 4 /**< Defines number of quadrants in a CsPad device. */
00015   };
00016   enum {
00017     ASICsPerQuad = 16 /**< Total number of ASICs in one quadrant. */
00018   };
00019   enum {
00020     RowsPerBank = 26 /**< Number of rows per readout bank? */
00021   };
00022   enum {
00023     FullBanksPerASIC = 7 /**< Number of full readout banks per one ASIC? */
00024   };
00025   enum {
00026     BanksPerASIC = 8 /**< Number of readout banks per one ASIC? */
00027   };
00028   enum {
00029     ColumnsPerASIC = 185 /**< Number of columns readout by single ASIC. */
00030   };
00031   enum {
00032     MaxRowsPerASIC = 194 /**< Maximum number of rows readout by single ASIC. */
00033   };
00034   enum {
00035     PotsPerQuad = 80 /**< Number of POTs? per single quadrant. */
00036   };
00037   enum {
00038     TwoByTwosPerQuad = 4 /**< Total number of 2x2s in single quadrant. */
00039   };
00040   enum {
00041     SectorsPerQuad = 8 /**< Total number of sectors (2x1) per single quadrant. */
00042   };
00043 
00044   /** Enum specifying different running modes. */
00045   enum RunModes {
00046     NoRunning,
00047     RunButDrop,
00048     RunAndSendToRCE,
00049     RunAndSendTriggeredByTTL,
00050     ExternalTriggerSendToRCE,
00051     ExternalTriggerDrop,
00052     NumberOfRunModes,
00053   };
00054 std::ostream& operator<<(std::ostream& str, CsPad::RunModes enval);
00055 
00056   /** Enum specifying different data collection modes. */
00057   enum DataModes {
00058     normal = 0,
00059     shiftTest = 1,
00060     testData = 2,
00061     reserved = 3,
00062   };
00063 std::ostream& operator<<(std::ostream& str, CsPad::DataModes enval);
00064 
00065 /** @class CsPadDigitalPotsCfg
00066 
00067   Class defining configuration for CsPad POTs?
00068 */
00069 
00070 
00071 class CsPadDigitalPotsCfg {
00072 public:
00073   virtual ~CsPadDigitalPotsCfg();
00074   virtual ndarray<const uint8_t, 1> pots() const = 0;
00075 };
00076 
00077 /** @class CsPadReadOnlyCfg
00078 
00079   Class defining read-only configuration.
00080 */
00081 
00082 
00083 class CsPadReadOnlyCfg {
00084 public:
00085   CsPadReadOnlyCfg(uint32_t arg__shiftTest, uint32_t arg__version)
00086     : _shiftTest(arg__shiftTest), _version(arg__version)
00087   {
00088   }
00089   CsPadReadOnlyCfg() {}
00090   uint32_t shiftTest() const { return _shiftTest; }
00091   uint32_t version() const { return _version; }
00092   static uint32_t _sizeof() { return 8; }
00093 private:
00094   uint32_t      _shiftTest;
00095   uint32_t      _version;
00096 };
00097 
00098 /** @class ProtectionSystemThreshold
00099 
00100   
00101 */
00102 
00103 
00104 class ProtectionSystemThreshold {
00105 public:
00106   ProtectionSystemThreshold(uint32_t arg__adcThreshold, uint32_t arg__pixelCountThreshold)
00107     : _adcThreshold(arg__adcThreshold), _pixelCountThreshold(arg__pixelCountThreshold)
00108   {
00109   }
00110   ProtectionSystemThreshold() {}
00111   uint32_t adcThreshold() const { return _adcThreshold; }
00112   uint32_t pixelCountThreshold() const { return _pixelCountThreshold; }
00113   static uint32_t _sizeof() { return 8; }
00114 private:
00115   uint32_t      _adcThreshold;
00116   uint32_t      _pixelCountThreshold;
00117 };
00118 
00119 /** @class CsPadGainMapCfg
00120 
00121   Class defining ASIC gain map.
00122 */
00123 
00124 
00125 class CsPadGainMapCfg {
00126 public:
00127   virtual ~CsPadGainMapCfg();
00128   /** Array with the gain map for single ASIC. */
00129   virtual ndarray<const uint16_t, 2> gainMap() const = 0;
00130 };
00131 
00132 /** @class ConfigV1QuadReg
00133 
00134   Configuration data for single quadrant.
00135 */
00136 
00137 
00138 class ConfigV1QuadReg {
00139 public:
00140   virtual ~ConfigV1QuadReg();
00141   virtual ndarray<const uint32_t, 1> shiftSelect() const = 0;
00142   virtual ndarray<const uint32_t, 1> edgeSelect() const = 0;
00143   virtual uint32_t readClkSet() const = 0;
00144   virtual uint32_t readClkHold() const = 0;
00145   virtual uint32_t dataMode() const = 0;
00146   virtual uint32_t prstSel() const = 0;
00147   virtual uint32_t acqDelay() const = 0;
00148   virtual uint32_t intTime() const = 0;
00149   virtual uint32_t digDelay() const = 0;
00150   virtual uint32_t ampIdle() const = 0;
00151   virtual uint32_t injTotal() const = 0;
00152   virtual uint32_t rowColShiftPer() const = 0;
00153   /** read-only configuration */
00154   virtual const CsPad::CsPadReadOnlyCfg& ro() const = 0;
00155   virtual const CsPad::CsPadDigitalPotsCfg& dp() const = 0;
00156   /** Gain map. */
00157   virtual const CsPad::CsPadGainMapCfg& gm() const = 0;
00158 };
00159 
00160 /** @class ConfigV2QuadReg
00161 
00162   Configuration data for single quadrant.
00163 */
00164 
00165 
00166 class ConfigV2QuadReg {
00167 public:
00168   virtual ~ConfigV2QuadReg();
00169   virtual ndarray<const uint32_t, 1> shiftSelect() const = 0;
00170   virtual ndarray<const uint32_t, 1> edgeSelect() const = 0;
00171   virtual uint32_t readClkSet() const = 0;
00172   virtual uint32_t readClkHold() const = 0;
00173   virtual uint32_t dataMode() const = 0;
00174   virtual uint32_t prstSel() const = 0;
00175   virtual uint32_t acqDelay() const = 0;
00176   virtual uint32_t intTime() const = 0;
00177   virtual uint32_t digDelay() const = 0;
00178   virtual uint32_t ampIdle() const = 0;
00179   virtual uint32_t injTotal() const = 0;
00180   virtual uint32_t rowColShiftPer() const = 0;
00181   virtual uint32_t ampReset() const = 0;
00182   virtual uint32_t digCount() const = 0;
00183   virtual uint32_t digPeriod() const = 0;
00184   /** read-only configuration */
00185   virtual const CsPad::CsPadReadOnlyCfg& ro() const = 0;
00186   virtual const CsPad::CsPadDigitalPotsCfg& dp() const = 0;
00187   /** Gain map. */
00188   virtual const CsPad::CsPadGainMapCfg& gm() const = 0;
00189 };
00190 
00191 /** @class ConfigV3QuadReg
00192 
00193   Configuration data for single quadrant.
00194 */
00195 
00196 
00197 class ConfigV3QuadReg {
00198 public:
00199   virtual ~ConfigV3QuadReg();
00200   virtual ndarray<const uint32_t, 1> shiftSelect() const = 0;
00201   virtual ndarray<const uint32_t, 1> edgeSelect() const = 0;
00202   virtual uint32_t readClkSet() const = 0;
00203   virtual uint32_t readClkHold() const = 0;
00204   virtual uint32_t dataMode() const = 0;
00205   virtual uint32_t prstSel() const = 0;
00206   virtual uint32_t acqDelay() const = 0;
00207   virtual uint32_t intTime() const = 0;
00208   virtual uint32_t digDelay() const = 0;
00209   virtual uint32_t ampIdle() const = 0;
00210   virtual uint32_t injTotal() const = 0;
00211   virtual uint32_t rowColShiftPer() const = 0;
00212   virtual uint32_t ampReset() const = 0;
00213   virtual uint32_t digCount() const = 0;
00214   virtual uint32_t digPeriod() const = 0;
00215   virtual uint32_t biasTuning() const = 0;
00216   virtual uint32_t pdpmndnmBalance() const = 0;
00217   /** read-only configuration */
00218   virtual const CsPad::CsPadReadOnlyCfg& ro() const = 0;
00219   virtual const CsPad::CsPadDigitalPotsCfg& dp() const = 0;
00220   /** Gain map. */
00221   virtual const CsPad::CsPadGainMapCfg& gm() const = 0;
00222 };
00223 
00224 /** @class ConfigV1
00225 
00226   Configuration data for complete CsPad device.
00227 */
00228 
00229 
00230 class ConfigV1 {
00231 public:
00232   enum { TypeId = Pds::TypeId::Id_CspadConfig /**< XTC type ID value (from Pds::TypeId class) */ };
00233   enum { Version = 1 /**< XTC type version number */ };
00234   virtual ~ConfigV1();
00235   virtual uint32_t concentratorVersion() const = 0;
00236   virtual uint32_t runDelay() const = 0;
00237   virtual uint32_t eventCode() const = 0;
00238   virtual uint32_t inactiveRunMode() const = 0;
00239   virtual uint32_t activeRunMode() const = 0;
00240   virtual uint32_t tdi() const = 0;
00241   virtual uint32_t payloadSize() const = 0;
00242   virtual uint32_t badAsicMask0() const = 0;
00243   virtual uint32_t badAsicMask1() const = 0;
00244   virtual uint32_t asicMask() const = 0;
00245   virtual uint32_t quadMask() const = 0;
00246   virtual const CsPad::ConfigV1QuadReg& quads(uint32_t i0) const = 0;
00247   virtual uint32_t numAsicsRead() const = 0;
00248   virtual uint32_t numQuads() const = 0;
00249   virtual uint32_t numSect() const = 0;
00250   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00251   virtual std::vector<int> quads_shape() const = 0;
00252 };
00253 
00254 /** @class ConfigV2
00255 
00256   Configuration data for complete CsPad device.
00257 */
00258 
00259 
00260 class ConfigV2 {
00261 public:
00262   enum { TypeId = Pds::TypeId::Id_CspadConfig /**< XTC type ID value (from Pds::TypeId class) */ };
00263   enum { Version = 2 /**< XTC type version number */ };
00264   virtual ~ConfigV2();
00265   virtual uint32_t concentratorVersion() const = 0;
00266   virtual uint32_t runDelay() const = 0;
00267   virtual uint32_t eventCode() const = 0;
00268   virtual uint32_t inactiveRunMode() const = 0;
00269   virtual uint32_t activeRunMode() const = 0;
00270   virtual uint32_t tdi() const = 0;
00271   virtual uint32_t payloadSize() const = 0;
00272   virtual uint32_t badAsicMask0() const = 0;
00273   virtual uint32_t badAsicMask1() const = 0;
00274   virtual uint32_t asicMask() const = 0;
00275   virtual uint32_t quadMask() const = 0;
00276   virtual uint32_t roiMasks() const = 0;
00277   virtual const CsPad::ConfigV1QuadReg& quads(uint32_t i0) const = 0;
00278   virtual uint32_t numAsicsRead() const = 0;
00279   /** ROI mask for given quadrant */
00280   virtual uint32_t roiMask(uint32_t iq) const = 0;
00281   /** Number of ASICs in given quadrant */
00282   virtual uint32_t numAsicsStored(uint32_t iq) const = 0;
00283   /** Total number of quadrants in setup */
00284   virtual uint32_t numQuads() const = 0;
00285   /** Total number of sections (2x1) in all quadrants */
00286   virtual uint32_t numSect() const = 0;
00287   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00288   virtual std::vector<int> quads_shape() const = 0;
00289 };
00290 
00291 /** @class ConfigV3
00292 
00293   Configuration data for complete CsPad device.
00294 */
00295 
00296 
00297 class ConfigV3 {
00298 public:
00299   enum { TypeId = Pds::TypeId::Id_CspadConfig /**< XTC type ID value (from Pds::TypeId class) */ };
00300   enum { Version = 3 /**< XTC type version number */ };
00301   virtual ~ConfigV3();
00302   virtual uint32_t concentratorVersion() const = 0;
00303   virtual uint32_t runDelay() const = 0;
00304   virtual uint32_t eventCode() const = 0;
00305   virtual ndarray<const CsPad::ProtectionSystemThreshold, 1> protectionThresholds() const = 0;
00306   virtual uint32_t protectionEnable() const = 0;
00307   virtual uint32_t inactiveRunMode() const = 0;
00308   virtual uint32_t activeRunMode() const = 0;
00309   virtual uint32_t tdi() const = 0;
00310   virtual uint32_t payloadSize() const = 0;
00311   virtual uint32_t badAsicMask0() const = 0;
00312   virtual uint32_t badAsicMask1() const = 0;
00313   virtual uint32_t asicMask() const = 0;
00314   virtual uint32_t quadMask() const = 0;
00315   virtual uint32_t roiMasks() const = 0;
00316   virtual const CsPad::ConfigV1QuadReg& quads(uint32_t i0) const = 0;
00317   virtual uint32_t numAsicsRead() const = 0;
00318   /** ROI mask for given quadrant */
00319   virtual uint32_t roiMask(uint32_t iq) const = 0;
00320   /** Number of ASICs in given quadrant */
00321   virtual uint32_t numAsicsStored(uint32_t iq) const = 0;
00322   /** Total number of quadrants in setup */
00323   virtual uint32_t numQuads() const = 0;
00324   /** Total number of sections (2x1) in all quadrants */
00325   virtual uint32_t numSect() const = 0;
00326   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00327   virtual std::vector<int> quads_shape() const = 0;
00328 };
00329 
00330 /** @class ConfigV4
00331 
00332   Configuration data for complete CsPad device.
00333 */
00334 
00335 
00336 class ConfigV4 {
00337 public:
00338   enum { TypeId = Pds::TypeId::Id_CspadConfig /**< XTC type ID value (from Pds::TypeId class) */ };
00339   enum { Version = 4 /**< XTC type version number */ };
00340   virtual ~ConfigV4();
00341   virtual uint32_t concentratorVersion() const = 0;
00342   virtual uint32_t runDelay() const = 0;
00343   virtual uint32_t eventCode() const = 0;
00344   virtual ndarray<const CsPad::ProtectionSystemThreshold, 1> protectionThresholds() const = 0;
00345   virtual uint32_t protectionEnable() const = 0;
00346   virtual uint32_t inactiveRunMode() const = 0;
00347   virtual uint32_t activeRunMode() const = 0;
00348   virtual uint32_t tdi() const = 0;
00349   virtual uint32_t payloadSize() const = 0;
00350   virtual uint32_t badAsicMask0() const = 0;
00351   virtual uint32_t badAsicMask1() const = 0;
00352   virtual uint32_t asicMask() const = 0;
00353   virtual uint32_t quadMask() const = 0;
00354   virtual uint32_t roiMasks() const = 0;
00355   virtual const CsPad::ConfigV2QuadReg& quads(uint32_t i0) const = 0;
00356   virtual uint32_t numAsicsRead() const = 0;
00357   /** ROI mask for given quadrant */
00358   virtual uint32_t roiMask(uint32_t iq) const = 0;
00359   /** Number of ASICs in given quadrant */
00360   virtual uint32_t numAsicsStored(uint32_t iq) const = 0;
00361   /** Total number of quadrants in setup */
00362   virtual uint32_t numQuads() const = 0;
00363   /** Total number of sections (2x1) in all quadrants */
00364   virtual uint32_t numSect() const = 0;
00365   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00366   virtual std::vector<int> quads_shape() const = 0;
00367 };
00368 
00369 /** @class ConfigV5
00370 
00371   Configuration data for complete CsPad device.
00372 */
00373 
00374 
00375 class ConfigV5 {
00376 public:
00377   enum { TypeId = Pds::TypeId::Id_CspadConfig /**< XTC type ID value (from Pds::TypeId class) */ };
00378   enum { Version = 5 /**< XTC type version number */ };
00379   virtual ~ConfigV5();
00380   virtual uint32_t concentratorVersion() const = 0;
00381   virtual uint32_t runDelay() const = 0;
00382   virtual uint32_t eventCode() const = 0;
00383   virtual ndarray<const CsPad::ProtectionSystemThreshold, 1> protectionThresholds() const = 0;
00384   virtual uint32_t protectionEnable() const = 0;
00385   virtual uint32_t inactiveRunMode() const = 0;
00386   virtual uint32_t activeRunMode() const = 0;
00387   virtual uint32_t internalTriggerDelay() const = 0;
00388   virtual uint32_t tdi() const = 0;
00389   virtual uint32_t payloadSize() const = 0;
00390   virtual uint32_t badAsicMask0() const = 0;
00391   virtual uint32_t badAsicMask1() const = 0;
00392   virtual uint32_t asicMask() const = 0;
00393   virtual uint32_t quadMask() const = 0;
00394   virtual uint32_t roiMasks() const = 0;
00395   virtual const CsPad::ConfigV3QuadReg& quads(uint32_t i0) const = 0;
00396   virtual uint32_t numAsicsRead() const = 0;
00397   /** ROI mask for given quadrant */
00398   virtual uint32_t roiMask(uint32_t iq) const = 0;
00399   /** Number of ASICs in given quadrant */
00400   virtual uint32_t numAsicsStored(uint32_t iq) const = 0;
00401   /** Total number of quadrants in setup */
00402   virtual uint32_t numQuads() const = 0;
00403   /** Total number of sections (2x1) in all quadrants */
00404   virtual uint32_t numSect() const = 0;
00405   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00406   virtual std::vector<int> quads_shape() const = 0;
00407 };
00408 
00409 /** @class ElementV1
00410 
00411   CsPad data from single CsPad quadrant.
00412 */
00413 
00414 class ConfigV1;
00415 class ConfigV2;
00416 class ConfigV3;
00417 class ConfigV4;
00418 class ConfigV5;
00419 
00420 class ElementV1 {
00421 public:
00422   enum { Nsbtemp = 4 /**< Number of the elements in _sbtemp array. */ };
00423   virtual ~ElementV1();
00424   /** Virtual channel number. */
00425   virtual uint32_t virtual_channel() const = 0;
00426   /** Lane number. */
00427   virtual uint32_t lane() const = 0;
00428   virtual uint32_t tid() const = 0;
00429   virtual uint32_t acq_count() const = 0;
00430   virtual uint32_t op_code() const = 0;
00431   /** Quadrant number. */
00432   virtual uint32_t quad() const = 0;
00433   /** Counter incremented on every event. */
00434   virtual uint32_t seq_count() const = 0;
00435   virtual uint32_t ticks() const = 0;
00436   virtual uint32_t fiducials() const = 0;
00437   virtual ndarray<const uint16_t, 1> sb_temp() const = 0;
00438   virtual uint32_t frame_type() const = 0;
00439   virtual ndarray<const int16_t, 3> data() const = 0;
00440   /** Returns section mask for this quadrant. Mask can contain up to 8 bits in the lower byte, 
00441                 total bit count gives the number of sections active. */
00442   virtual uint32_t sectionMask() const = 0;
00443   /** Common mode value for a given section, section number can be 0 to config.numAsicsRead()/2.
00444                 Will return 0 for data read from XTC, may be non-zero after calibration. */
00445   virtual float common_mode(uint32_t section) const = 0;
00446 };
00447 
00448 /** @class DataV1
00449 
00450   CsPad data from whole detector.
00451 */
00452 
00453 class ConfigV1;
00454 class ConfigV2;
00455 class ConfigV3;
00456 class ConfigV4;
00457 class ConfigV5;
00458 
00459 class DataV1 {
00460 public:
00461   enum { TypeId = Pds::TypeId::Id_CspadElement /**< XTC type ID value (from Pds::TypeId class) */ };
00462   enum { Version = 1 /**< XTC type version number */ };
00463   virtual ~DataV1();
00464   /** Data objects, one element per quadrant. The size of the array is determined by 
00465             the numQuads() method of the configuration object. */
00466   virtual const CsPad::ElementV1& quads(uint32_t i0) const = 0;
00467   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00468   virtual std::vector<int> quads_shape() const = 0;
00469 };
00470 
00471 /** @class ElementV2
00472 
00473   CsPad data from single CsPad quadrant.
00474 */
00475 
00476 class ConfigV2;
00477 class ConfigV3;
00478 class ConfigV4;
00479 class ConfigV5;
00480 
00481 class ElementV2 {
00482 public:
00483   enum { Nsbtemp = 4 /**< Number of the elements in _sbtemp array. */ };
00484   virtual ~ElementV2();
00485   /** Virtual channel number. */
00486   virtual uint32_t virtual_channel() const = 0;
00487   /** Lane number. */
00488   virtual uint32_t lane() const = 0;
00489   virtual uint32_t tid() const = 0;
00490   virtual uint32_t acq_count() const = 0;
00491   virtual uint32_t op_code() const = 0;
00492   /** Quadrant number. */
00493   virtual uint32_t quad() const = 0;
00494   virtual uint32_t seq_count() const = 0;
00495   virtual uint32_t ticks() const = 0;
00496   virtual uint32_t fiducials() const = 0;
00497   virtual ndarray<const uint16_t, 1> sb_temp() const = 0;
00498   virtual uint32_t frame_type() const = 0;
00499   virtual ndarray<const int16_t, 3> data() const = 0;
00500   /** Returns section mask for this quadrant. Mask can contain up to 8 bits in the lower byte, 
00501                 total bit count gives the number of sections active. */
00502   virtual uint32_t sectionMask() const = 0;
00503   /** Common mode value for a given section, section number can be 0 to config.numSect().
00504          Will return 0 for data read from XTC, may be non-zero after calibration. */
00505   virtual float common_mode(uint32_t section) const = 0;
00506 };
00507 
00508 /** @class DataV2
00509 
00510   CsPad data from whole detector.
00511 */
00512 
00513 class ConfigV2;
00514 class ConfigV3;
00515 class ConfigV4;
00516 class ConfigV5;
00517 
00518 class DataV2 {
00519 public:
00520   enum { TypeId = Pds::TypeId::Id_CspadElement /**< XTC type ID value (from Pds::TypeId class) */ };
00521   enum { Version = 2 /**< XTC type version number */ };
00522   virtual ~DataV2();
00523   /** Data objects, one element per quadrant. The size of the array is determined by 
00524             the numQuads() method of the configuration object. */
00525   virtual const CsPad::ElementV2& quads(uint32_t i0) const = 0;
00526   /** Method which returns the shape (dimensions) of the data returned by quads() method. */
00527   virtual std::vector<int> quads_shape() const = 0;
00528 };
00529 } // namespace CsPad
00530 } // namespace Psana
00531 #endif // PSANA_CSPAD_DDL_H

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7