CS-Pad
Cornell-SLAC Pixel Array Detector
// Each "Element" represents one quadrant of a complete detector // and they are arranged as follows (viewed from upstream): // +---+---+ // | 0 | 1 | // +---+---+ // | 3 | 2 | // +---+---+ // // Each "Element" is composed of 8 "Section"s arranged as follows: // +---+---+-------+ // | | | 6 | // + 5 | 4 +-------+ // | | | 7 | // +---+---+---+---+ (for quadrant 0) // | 2 | | | // +-------+ 0 | 1 | // | 3 | | | // +-------+---+---+ // The layout of each successive quadrant is rotated 90 degrees clockwise // with respect to the previous quadrant. // // Each "Section" is composed of 2*194 rows by 185 columns with the following // orientations (for quadrant 0): // Sections 0,1: row index increases from bottom to top, column index increases from left to right // Sections 2,3: row index increases from left to right, column index increases from top to bottom // Sections 4,5: row index increases from top to bottom, column index increases from right to left // Sections 6,7: row index increases from left to right, column index increases from top to bottom // Again, the orientations of the Sections for quadrant 1 are rotated 90 degrees clockwise // and so on for each successive quadrant. //
Here's a picture showing the approximate position and alignment of the sections in the CSPAD detector image. The value of each pixel is set to increase with increasing row and column number, so the blue corners are (row 0,column 0) in the section array.
Namespace CsPad
Enumerations
enum { MaxQuadsPerSensor = 4, ASICsPerQuad = 16 } enum { RowsPerBank = 26, FullBanksPerASIC = 7, BanksPerASIC = 8, ColumnsPerASIC = 185, MaxRowsPerASIC = 194 } enum { PotsPerQuad = 80, TwoByTwosPerQuad = 4 } enum RunModes { NoRunning, RunButDrop, RunAndSendToRCE, RunAndSendTriggeredByTTL, ExternalTriggerSendToRCE, ExternalTriggerDrop, NumberOfRunModes } enum DataModes { normal = 0, shiftTest = 1, testData = 2, reserved = 3 }
class CsPadDigitalPotsCfg
Public Member Functions
// Constructor CsPadDigitalPotsCfg () uint8_t value (unsigned i) const
Public Attributes
uint8_t pots [PotsPerQuad]
class CsPadReadOnlyCfg
Public Member Functions
// Constructor CsPadReadOnlyCfg ()
Public Attributes
uint32_t shiftTest uint32_t version
class CsPadGainMapCfg
Public Types
typedef uint16_t GainMap [ColumnsPerASIC][MaxRowsPerASIC]
Public Member Functions
// Constructor CsPadGainMapCfg () GainMap * map () const GainMap * map () const
Public Attributes
GainMap _gainMap
class ConfigV1QuadReg
Public Member Functions
// Constructors ConfigV1QuadReg () ConfigV1QuadReg (uint32_t shiftSelect[], uint32_t edgeSelect[], uint32_t readClkSet, uint32_t readClkHold, uint32_t dataMode, uint32_t prstSel, uint32_t acqDelay, uint32_t intTime, uint32_t digDelay, uint32_t ampIdle, uint32_t injTotal, uint32_t rowColShiftPer) const uint32_t * shiftSelect () const const uint32_t * edgeSelect () const uint32_t readClkSet () const uint32_t readClkHold () const uint32_t dataMode () const uint32_t prstSel () const uint32_t acqDelay () const uint32_t intTime () const uint32_t digDelay () const uint32_t ampIdle () const uint32_t injTotal () const uint32_t rowColShiftPer () const Pds::CsPad::CsPadReadOnlyCfg & ro () const Pds::CsPad::CsPadReadOnlyCfg & ro () const Pds::CsPad::CsPadDigitalPotsCfg & dp () const Pds::CsPad::CsPadDigitalPotsCfg & dp () const Pds::CsPad::CsPadGainMapCfg * gm () const Pds::CsPad::CsPadGainMapCfg * gm () const Pds::CsPad::CsPadReadOnlyCfg * readOnly () const Pds::CsPad::CsPadReadOnlyCfg * readOnly () const
class ConfigV1
Public Member Functions
// Constructors ConfigV1 () ConfigV1 (uint32_t runDelay, uint32_t eventCode, uint32_t inactiveRunMode, uint32_t activeRunMode, uint32_t testDataIndex, uint32_t payloadPerQuad, uint32_t badAsicMask0, uint32_t badAsicMask1, uint32_t AsicMask, uint32_t quadMask) ConfigV1QuadReg * quads () const ConfigV1QuadReg * quads () const uint32_t tdi () const uint32_t quadMask () const uint32_t runDelay () const uint32_t eventCode () const uint32_t inactiveRunMode () const uint32_t activeRunMode () const uint32_t payloadSize () const uint32_t badAsicMask0 () const uint32_t badAsicMask1 () const uint32_t asicMask () const uint32_t numAsicsRead () const uint32_t concentratorVersion () const uint32_t * concentratorVersionAddr ()
Static Public Member Functions
static const int version ()
Static Public Attributes
static const int Version = 1
class ConfigV2
Public Member Functions
// Constructors ConfigV2 () ConfigV2 (uint32_t runDelay, uint32_t eventCode, uint32_t inactiveRunMode, uint32_t activeRunMode, uint32_t testDataIndex, uint32_t payloadPerQuad, uint32_t badAsicMask0, uint32_t badAsicMask1, uint32_t AsicMask, uint32_t quadMask, uint32_t roiMask) ConfigV1QuadReg * quads () const ConfigV1QuadReg * quads () const uint32_t tdi () const uint32_t quadMask () const uint32_t roiMask (int iq) const uint32_t runDelay () const uint32_t eventCode () const uint32_t inactiveRunMode () const uint32_t activeRunMode () const uint32_t payloadSize () const uint32_t badAsicMask0 () const uint32_t badAsicMask1 () const uint32_t asicMask () const uint32_t numAsicsRead () const uint32_t concentratorVersion () const uint32_t * concentratorVersionAddr ()
Static Public Member Functions
static const int version ()
Static Public Attributes
static const int Version = 2
ElementHeader
Public Member Functions
// Constructors ElementHeader () // "unsigned" is shorthand for "unsigned int" unsigned virtual_channel () const unsigned lane () const unsigned tid () const unsigned acq_count () const unsigned op_code () const unsigned quad () const unsigned seq_count () const unsigned ticks () const unsigned fiducials () const unsigned sb_temp (unsigned i) const unsigned frame_type () const
ElementV1
Inherits from ElementHeader.
Public Types
Version = 1 enum { Version = 1 }
Public Member Functions
// Constructors ElementV1 () const uint16_t * data () const const uint16_t * pixel (unsigned asic, unsigned column, unsigned row) const const ElementV1 * next (const ConfigV1 &) const
ElementV2
Inherits from ElementHeader.
Public Types
Version = 2 enum { Version = 2 }
Public Member Functions
// Constructors ElementV2 ()
ElementIterator
Iterates through Elements.
Public Types
class Section { public: uint16_t pixel[ColumnsPerASIC][2*MaxRowsPerASIC]; };
Public Member Functions
ElementIterator(); ElementIterator(const ConfigV1&, const Xtc&); ElementIterator(const ConfigV2&, const Xtc&); // Iterate to the next Element/quadrant (0..3) const ElementHeader* next(); // Iterate to the next Section (0..7) within the current quadrant const Section* next(unsigned& sectionID);