psddl_psana/include/cspad2x2.ddl.h

Go to the documentation of this file.
00001 #ifndef PSANA_CSPAD2X2_DDL_H
00002 #define PSANA_CSPAD2X2_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 CsPad2x2 {
00013   enum {
00014     QuadsPerSensor = 1 /**< Defines number of quadrants in a CsPad2x2 device. */
00015   };
00016   enum {
00017     ASICsPerQuad = 4 /**< 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 = 1 /**< Total number of 2x2s in single quadrant. */
00039   };
00040   enum {
00041     SectorsPerQuad = 2 /**< 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, CsPad2x2::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, CsPad2x2::DataModes enval);
00064 
00065 /** @class CsPad2x2DigitalPotsCfg
00066 
00067   Class defining configuration for CsPad POTs?
00068 */
00069 
00070 
00071 class CsPad2x2DigitalPotsCfg {
00072 public:
00073   virtual ~CsPad2x2DigitalPotsCfg();
00074   virtual ndarray<const uint8_t, 1> pots() const = 0;
00075 };
00076 
00077 /** @class CsPad2x2ReadOnlyCfg
00078 
00079   Class defining read-only configuration.
00080 */
00081 
00082 
00083 class CsPad2x2ReadOnlyCfg {
00084 public:
00085   CsPad2x2ReadOnlyCfg(uint32_t arg__shiftTest, uint32_t arg__version)
00086     : _shiftTest(arg__shiftTest), _version(arg__version)
00087   {
00088   }
00089   CsPad2x2ReadOnlyCfg() {}
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 CsPad2x2GainMapCfg
00120 
00121   Class defining ASIC gain map.
00122 */
00123 
00124 
00125 class CsPad2x2GainMapCfg {
00126 public:
00127   virtual ~CsPad2x2GainMapCfg();
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" which for 2x2 means a single 2x2.
00135 */
00136 
00137 
00138 class ConfigV1QuadReg {
00139 public:
00140   virtual ~ConfigV1QuadReg();
00141   virtual uint32_t shiftSelect() const = 0;
00142   virtual uint32_t 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   virtual uint32_t ampReset() const = 0;
00154   virtual uint32_t digCount() const = 0;
00155   virtual uint32_t digPeriod() const = 0;
00156   virtual uint32_t PeltierEnable() const = 0;
00157   virtual uint32_t kpConstant() const = 0;
00158   virtual uint32_t kiConstant() const = 0;
00159   virtual uint32_t kdConstant() const = 0;
00160   virtual uint32_t humidThold() const = 0;
00161   virtual uint32_t setPoint() const = 0;
00162   /** read-only configuration */
00163   virtual const CsPad2x2::CsPad2x2ReadOnlyCfg& ro() const = 0;
00164   virtual const CsPad2x2::CsPad2x2DigitalPotsCfg& dp() const = 0;
00165   /** Gain map. */
00166   virtual const CsPad2x2::CsPad2x2GainMapCfg& gm() const = 0;
00167 };
00168 
00169 /** @class ConfigV1
00170 
00171   Configuration data for 2x2 CsPad device.
00172 */
00173 
00174 
00175 class ConfigV1 {
00176 public:
00177   enum { TypeId = Pds::TypeId::Id_Cspad2x2Config /**< XTC type ID value (from Pds::TypeId class) */ };
00178   enum { Version = 1 /**< XTC type version number */ };
00179   virtual ~ConfigV1();
00180   virtual uint32_t concentratorVersion() const = 0;
00181   virtual const CsPad2x2::ProtectionSystemThreshold& protectionThreshold() const = 0;
00182   virtual uint32_t protectionEnable() const = 0;
00183   virtual uint32_t inactiveRunMode() const = 0;
00184   virtual uint32_t activeRunMode() const = 0;
00185   virtual uint32_t tdi() const = 0;
00186   virtual uint32_t payloadSize() const = 0;
00187   virtual uint32_t badAsicMask() const = 0;
00188   virtual uint32_t asicMask() const = 0;
00189   virtual uint32_t roiMask() const = 0;
00190   virtual const CsPad2x2::ConfigV1QuadReg& quad() const = 0;
00191   virtual uint32_t numAsicsRead() const = 0;
00192   /** Number of ASICs in given quadrant */
00193   virtual uint32_t numAsicsStored() const = 0;
00194 };
00195 
00196 /** @class ConfigV2QuadReg
00197 
00198   Configuration data for single "quadrant" which for 2x2 means a single 2x2.
00199 */
00200 
00201 
00202 class ConfigV2QuadReg {
00203 public:
00204   virtual ~ConfigV2QuadReg();
00205   virtual uint32_t shiftSelect() const = 0;
00206   virtual uint32_t edgeSelect() const = 0;
00207   virtual uint32_t readClkSet() const = 0;
00208   virtual uint32_t readClkHold() const = 0;
00209   virtual uint32_t dataMode() const = 0;
00210   virtual uint32_t prstSel() const = 0;
00211   virtual uint32_t acqDelay() const = 0;
00212   virtual uint32_t intTime() const = 0;
00213   virtual uint32_t digDelay() const = 0;
00214   virtual uint32_t ampIdle() const = 0;
00215   virtual uint32_t injTotal() const = 0;
00216   virtual uint32_t rowColShiftPer() const = 0;
00217   virtual uint32_t ampReset() const = 0;
00218   virtual uint32_t digCount() const = 0;
00219   virtual uint32_t digPeriod() const = 0;
00220   virtual uint32_t PeltierEnable() const = 0;
00221   virtual uint32_t kpConstant() const = 0;
00222   virtual uint32_t kiConstant() const = 0;
00223   virtual uint32_t kdConstant() const = 0;
00224   virtual uint32_t humidThold() const = 0;
00225   virtual uint32_t setPoint() const = 0;
00226   /** bias tuning is used, but not written;
00227             2 bits per nibble, C2,C1,I5,I2;
00228             bit order rc00rc00rc00rc */
00229   virtual uint32_t biasTuning() const = 0;
00230   /** pMOS and nMOS Displacement and Main;
00231             used but not written and not in GUI yet;
00232             hard-wired to zero in GUI;
00233             2 bits per nibble, bit order pd00pm00nd00nm */
00234   virtual uint32_t pdpmndnmBalance() const = 0;
00235   /** read-only configuration */
00236   virtual const CsPad2x2::CsPad2x2ReadOnlyCfg& ro() const = 0;
00237   virtual const CsPad2x2::CsPad2x2DigitalPotsCfg& dp() const = 0;
00238   /** Gain map. */
00239   virtual const CsPad2x2::CsPad2x2GainMapCfg& gm() const = 0;
00240 };
00241 
00242 /** @class ConfigV2
00243 
00244   Configuration data for 2x2 CsPad device.
00245 */
00246 
00247 
00248 class ConfigV2 {
00249 public:
00250   enum { TypeId = Pds::TypeId::Id_Cspad2x2Config /**< XTC type ID value (from Pds::TypeId class) */ };
00251   enum { Version = 2 /**< XTC type version number */ };
00252   virtual ~ConfigV2();
00253   virtual uint32_t concentratorVersion() const = 0;
00254   virtual const CsPad2x2::ProtectionSystemThreshold& protectionThreshold() const = 0;
00255   virtual uint32_t protectionEnable() const = 0;
00256   virtual uint32_t inactiveRunMode() const = 0;
00257   virtual uint32_t activeRunMode() const = 0;
00258   virtual uint32_t runTriggerDelay() const = 0;
00259   virtual uint32_t tdi() const = 0;
00260   virtual uint32_t payloadSize() const = 0;
00261   virtual uint32_t badAsicMask() const = 0;
00262   virtual uint32_t asicMask() const = 0;
00263   virtual uint32_t roiMask() const = 0;
00264   virtual const CsPad2x2::ConfigV2QuadReg& quad() const = 0;
00265   virtual uint32_t numAsicsRead() const = 0;
00266   /** Number of ASICs in given quadrant */
00267   virtual uint32_t numAsicsStored() const = 0;
00268 };
00269 
00270 /** @class ElementV1
00271 
00272   CsPad data from single 2x2 element.
00273 */
00274 
00275 
00276 class ElementV1 {
00277 public:
00278   enum { TypeId = Pds::TypeId::Id_Cspad2x2Element /**< XTC type ID value (from Pds::TypeId class) */ };
00279   enum { Version = 1 /**< XTC type version number */ };
00280   enum { Nsbtemp = 4 /**< Number of the elements in _sbtemp array. */ };
00281   virtual ~ElementV1();
00282   /** Virtual channel number. */
00283   virtual uint32_t virtual_channel() const = 0;
00284   /** Lane number. */
00285   virtual uint32_t lane() const = 0;
00286   virtual uint32_t tid() const = 0;
00287   virtual uint32_t acq_count() const = 0;
00288   virtual uint32_t op_code() const = 0;
00289   /** Quadrant number. */
00290   virtual uint32_t quad() const = 0;
00291   virtual uint32_t seq_count() const = 0;
00292   virtual uint32_t ticks() const = 0;
00293   virtual uint32_t fiducials() const = 0;
00294   virtual ndarray<const uint16_t, 1> sb_temp() const = 0;
00295   virtual uint32_t frame_type() const = 0;
00296   virtual ndarray<const int16_t, 3> data() const = 0;
00297   /** Common mode value for a given section, section number can be 0 or 1.
00298                 Will return 0 for data read from XTC, may be non-zero after calibration. */
00299   virtual float common_mode(uint32_t section) const = 0;
00300 };
00301 } // namespace CsPad2x2
00302 } // namespace Psana
00303 #endif // PSANA_CSPAD2X2_DDL_H

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7