You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

CS-Pad

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.

Comments

//
//  class ElementIterator
//
//  A class to iterate through the CSPAD detector data
//
//  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.
//

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);
  • No labels