![]() |
![]() |
#include <EventFilter/GctRawToDigi/src/GctFormatTranslateV38.h>
Public Member Functions | |
virtual bool | convertBlock (const unsigned char *d, const GctBlockHeader &hdr) |
Get digis from the block - will return true if it succeeds, false otherwise. | |
GctFormatTranslateV38 (bool hltMode=false, bool unpackSharedRegions=false) | |
Constructor. | |
virtual GctBlockHeader | generateBlockHeader (const unsigned char *data) const |
Generate a block header from four 8-bit values. | |
virtual | ~GctFormatTranslateV38 () |
Destructor. | |
Protected Member Functions | |
virtual const BlockLengthMap & | blockLengthMap () const |
get the static block ID to block-length map. | |
virtual BlockLengthMap & | blockLengthMap () |
get the static block ID to block-length map. | |
virtual const BlockNameMap & | blockNameMap () const |
get the static block ID to blockname map. | |
virtual BlockNameMap & | blockNameMap () |
get the static block ID to block-name map. | |
virtual uint32_t | generateRawHeader (const uint32_t blockId, const uint32_t nSamples, const uint32_t bxId, const uint32_t eventId) const |
Returns a raw 32-bit header word generated from the blockId, number of time samples, bunch-crossing and event IDs. | |
virtual const BlockIdToEmCandIsoBoundMap & | internEmIsoBounds () const |
get the static intern EM cand isolated boundary map. | |
virtual BlockIdToEmCandIsoBoundMap & | internEmIsoBounds () |
get the static intern EM cand isolated boundary map. | |
virtual const BlkToRctCrateMap & | rctEmCrateMap () const |
get static the block ID to RCT crate map for electrons. | |
virtual BlkToRctCrateMap & | rctEmCrateMap () |
get the static block ID to RCT crate map for electrons. | |
virtual const BlkToRctCrateMap & | rctJetCrateMap () const |
get the static block ID to RCT crate map for jets | |
virtual BlkToRctCrateMap & | rctJetCrateMap () |
get the static block ID to RCT crate map for jets | |
Private Types | |
typedef std::map< unsigned int, PtrToUnpackFn > | BlockIdToUnpackFnMap |
Typedef for a block ID to unpack function map. | |
typedef void(GctFormatTranslateV38::* | PtrToUnpackFn )(const unsigned char *, const GctBlockHeader &) |
Function pointer typdef to a block unpack function. | |
Private Member Functions | |
void | blockToFibres (const unsigned char *d, const GctBlockHeader &hdr) |
unpack Fibres | |
void | blockToFibresAndToRctEmCand (const unsigned char *d, const GctBlockHeader &hdr) |
unpack Fibres and RCT EM Candidates | |
void | blockToGctEmCandsAndEnergySums (const unsigned char *d, const GctBlockHeader &hdr) |
unpack GCT EM Candidates and energy sums. | |
void | blockToGctInternEmCand (const unsigned char *d, const GctBlockHeader &hdr) |
unpack GCT internal EM Candidates | |
void | blockToGctJetCandsAndCounts (const unsigned char *d, const GctBlockHeader &hdr) |
Unpack GCT Jet Candidates and jet counts. | |
void | blockToGctJetClusterMinimal (const unsigned char *d, const GctBlockHeader &hdr) |
unpack GCT internal input to wheel jet sort | |
void | blockToGctJetPreCluster (const unsigned char *d, const GctBlockHeader &hdr) |
unpack GCT internal shared jet finder info | |
void | blockToGctTrigObjects (const unsigned char *d, const GctBlockHeader &hdr) |
unpack GCT internal wheel and conc jets | |
void | blockToRctCaloRegions (const unsigned char *d, const GctBlockHeader &hdr) |
Unpack RCT Calo Regions. | |
void | blockToRctEmCand (const unsigned char *d, const GctBlockHeader &hdr) |
unpack RCT EM Candidates | |
Static Private Attributes | |
static BlockLengthMap | m_blockLength = GctFormatTranslateV38::BlockLengthMap() |
Map to translate block number to fundamental size of a block (i.e. for 1 time-sample). | |
static BlockNameMap | m_blockName = GctFormatTranslateV38::BlockNameMap() |
Map to hold a description for each block number. | |
static BlockIdToUnpackFnMap | m_blockUnpackFn = GctFormatTranslateV38::BlockIdToUnpackFnMap() |
Block ID to unpack function map. | |
static BlockIdToEmCandIsoBoundMap | m_internEmIsoBounds = GctFormatTranslateV38::BlockIdToEmCandIsoBoundMap() |
static BlkToRctCrateMap | m_rctEmCrate = GctFormatTranslateV38::BlkToRctCrateMap() |
Map to relate capture block ID to the RCT crate the data originated from (for electrons). | |
static BlkToRctCrateMap | m_rctJetCrate = GctFormatTranslateV38::BlkToRctCrateMap() |
Map to relate capture block ID to the RCT crate the data originated from (for jets). |
Definition at line 19 of file GctFormatTranslateV38.h.
typedef std::map<unsigned int, PtrToUnpackFn> GctFormatTranslateV38::BlockIdToUnpackFnMap [private] |
Typedef for a block ID to unpack function map.
Definition at line 82 of file GctFormatTranslateV38.h.
typedef void(GctFormatTranslateV38::* GctFormatTranslateV38::PtrToUnpackFn)(const unsigned char *, const GctBlockHeader &) [private] |
Function pointer typdef to a block unpack function.
GctFormatTranslateV38::GctFormatTranslateV38 | ( | bool | hltMode = false , |
|
bool | unpackSharedRegions = false | |||
) | [explicit] |
Constructor.
hltMode | - set true to unpack only BX zero and GCT output data (i.e. to run as quick as possible). | |
unpackSharedRegions | - this is a commissioning option to unpack the shared RCT calo regions. |
Definition at line 27 of file GctFormatTranslateV38.cc.
References GctFormatTranslateBase::blockDoNothing(), blockToFibres(), blockToFibresAndToRctEmCand(), blockToGctEmCandsAndEnergySums(), blockToGctInternEmCand(), blockToGctJetCandsAndCounts(), blockToGctJetClusterMinimal(), blockToGctJetPreCluster(), blockToGctTrigObjects(), blockToRctCaloRegions(), m_blockLength, m_blockName, m_blockUnpackFn, m_internEmIsoBounds, m_rctEmCrate, and m_rctJetCrate.
00027 : 00028 GctFormatTranslateBase(hltMode, unpackSharedRegions) 00029 { 00030 static bool initClass = true; 00031 00032 if(initClass) 00033 { 00034 initClass = false; 00035 00036 /*** Setup BlockID to BlockLength Map ***/ 00037 // Miscellaneous Blocks 00038 m_blockLength.insert(make_pair(0x000,0)); // NULL 00039 // ConcJet FPGA 00040 m_blockLength.insert(make_pair(0x580,12)); // ConcJet: Input TrigPathA (Jet Cands) 00041 m_blockLength.insert(make_pair(0x581,2)); // ConcJet: Input TrigPathB (HF Rings) 00042 m_blockLength.insert(make_pair(0x582,4)); // ConcJet: Input TrigPathC (MissHt) 00043 m_blockLength.insert(make_pair(0x583,8)); // ConcJet: Jet Cands and Counts Output to GT 00044 m_blockLength.insert(make_pair(0x587,4)); // ConcJet: BX & Orbit Info 00045 // ConcElec FPGA 00046 m_blockLength.insert(make_pair(0x680,16)); // ConcElec: Input TrigPathA (EM Cands) 00047 m_blockLength.insert(make_pair(0x681,6)); // ConcElec: Input TrigPathB (Et Sums) 00048 m_blockLength.insert(make_pair(0x682,2)); // ConcElec: Input TrigPathC (Ht Sums) 00049 m_blockLength.insert(make_pair(0x683,6)); // ConcElec: EM Cands and Energy Sums Output to GT 00050 m_blockLength.insert(make_pair(0x686,2)); // ConcElec: Test (GT Serdes Loopback) 00051 m_blockLength.insert(make_pair(0x687,4)); // ConcElec: BX & Orbit Info 00052 // Electron Leaf FPGAs 00053 m_blockLength.insert(make_pair(0x800,20)); // Leaf0ElecPosEtaU1: Sort Input 00054 m_blockLength.insert(make_pair(0x803,4)); // Leaf0ElecPosEtaU1: Sort Output 00055 m_blockLength.insert(make_pair(0x804,15)); // Leaf0ElecPosEtaU1: Raw Input 00056 m_blockLength.insert(make_pair(0x880,16)); // Leaf0ElecPosEtaU2: Sort Input 00057 m_blockLength.insert(make_pair(0x883,4)); // Leaf0ElecPosEtaU2: Sort Output 00058 m_blockLength.insert(make_pair(0x884,12)); // Leaf0ElecPosEtaU2: Raw Input 00059 m_blockLength.insert(make_pair(0xc00,20)); // Leaf0ElecNegEtaU1: Sort Input 00060 m_blockLength.insert(make_pair(0xc03,4)); // Leaf0ElecNegEtaU1: Sort Output 00061 m_blockLength.insert(make_pair(0xc04,15)); // Leaf0ElecNegEtaU1: Raw Input 00062 m_blockLength.insert(make_pair(0xc80,16)); // Leaf0ElecNegEtaU2: Sort Input 00063 m_blockLength.insert(make_pair(0xc83,4)); // Leaf0ElecNegEtaU2: Sort Output 00064 m_blockLength.insert(make_pair(0xc84,12)); // Leaf0ElecNegEtaU2: Raw Input 00065 // Wheel Pos-eta Jet FPGA 00066 m_blockLength.insert(make_pair(0x300,27)); // WheelPosEtaJet: Input TrigPathA (Jet Sort) 00067 m_blockLength.insert(make_pair(0x301,3)); // WheelPosEtaJet: Input TrigPathB (MissHt) 00068 m_blockLength.insert(make_pair(0x303,6)); // WheelPosEtaJet: Output TrigPathA (Jet Sort) 00069 m_blockLength.insert(make_pair(0x305,2)); // WheelPosEtaJet: Output TrigPathB (MissHt) 00070 m_blockLength.insert(make_pair(0x306,32)); // WheelPosEtaJet: Test (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00071 m_blockLength.insert(make_pair(0x307,4)); // WheelPosEtaJet: Info (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00072 // Wheel Pos-eta Energy FPGA 00073 m_blockLength.insert(make_pair(0x380,21)); // WheelPosEtaEnergy: Input TrigPathA (Et) 00074 m_blockLength.insert(make_pair(0x381,6)); // WheelPosEtaEnergy: Input TrigPathB (Ht) 00075 m_blockLength.insert(make_pair(0x383,7)); // WheelPosEtaEnergy: Output TrigPathA (Et) 00076 m_blockLength.insert(make_pair(0x385,2)); // WheelPosEtaEnergy: Output TrigPathB (Ht) 00077 m_blockLength.insert(make_pair(0x386,32)); // WheelPosEtaEnergy: Test 00078 m_blockLength.insert(make_pair(0x387,6)); // WheelPosEtaEnergy: BX & Orbit Info (Potential data incompatibility between V24/V25 where block length=4, and V27.1 where block length=6) 00079 // Wheel Neg-eta Jet FPGA 00080 m_blockLength.insert(make_pair(0x700,27)); // WheelNegEtaJet: Input TrigPathA (Jet Sort) 00081 m_blockLength.insert(make_pair(0x701,3)); // WheelNegEtaJet: Input TrigPathB (MissHt) 00082 m_blockLength.insert(make_pair(0x703,6)); // WheelNegEtaJet: Output TrigPathA (Jet Sort) 00083 m_blockLength.insert(make_pair(0x705,2)); // WheelNegEtaJet: Output TrigPathB (MissHt) 00084 m_blockLength.insert(make_pair(0x706,32)); // WheelNegEtaJet: Test (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00085 m_blockLength.insert(make_pair(0x707,4)); // WheelNegEtaJet: Info (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00086 // Wheel Neg-eta Energy FPGA 00087 m_blockLength.insert(make_pair(0x780,21)); // WheelNegEtaEnergy: Input TrigPathA (Et) 00088 m_blockLength.insert(make_pair(0x781,6)); // WheelNegEtaEnergy: Input TrigPathB (Ht) 00089 m_blockLength.insert(make_pair(0x783,7)); // WheelNegEtaEnergy: Output TrigPathA (Et) 00090 m_blockLength.insert(make_pair(0x785,2)); // WheelNegEtaEnergy: Output TrigPathB (Ht) 00091 m_blockLength.insert(make_pair(0x786,32)); // WheelNegEtaEnergy: Test 00092 m_blockLength.insert(make_pair(0x787,6)); // WheelNegEtaEnergy: BX & Orbit Info (Potential data incompatibility between V24/V25 where block length=4, and V27.1 where block length=6) 00093 // Jet Leaf FPGAs - Positive Eta 00094 m_blockLength.insert(make_pair(0x900,13)); // Leaf1JetPosEtaU1: JF2 Input 00095 m_blockLength.insert(make_pair(0x901,3)); // Leaf1JetPosEtaU1: JF2 Shared Received 00096 m_blockLength.insert(make_pair(0x902,3)); // Leaf1JetPosEtaU1: JF2 Shared Sent 00097 m_blockLength.insert(make_pair(0x903,10)); // Leaf1JetPosEtaU1: JF2 Output 00098 m_blockLength.insert(make_pair(0x904,8)); // Leaf1JetPosEtaU1: JF2 Raw Input 00099 m_blockLength.insert(make_pair(0x908,13)); // Leaf1JetPosEtaU1: JF3 Input 00100 m_blockLength.insert(make_pair(0x909,3)); // Leaf1JetPosEtaU1: JF3 Shared Received 00101 m_blockLength.insert(make_pair(0x90a,3)); // Leaf1JetPosEtaU1: JF3 Shared Sent 00102 m_blockLength.insert(make_pair(0x90b,10)); // Leaf1JetPosEtaU1: JF3 Output 00103 m_blockLength.insert(make_pair(0x90c,8)); // Leaf1JetPosEtaU1: JF3 Raw Input 00104 m_blockLength.insert(make_pair(0x980,6)); // Leaf1JetPosEtaU2: Eta0 Input 00105 m_blockLength.insert(make_pair(0x984,6)); // Leaf1JetPosEtaU2: Eta0 Raw Input 00106 m_blockLength.insert(make_pair(0x988,13)); // Leaf1JetPosEtaU2: JF1 Input 00107 m_blockLength.insert(make_pair(0x989,3)); // Leaf1JetPosEtaU2: JF1 Shared Received 00108 m_blockLength.insert(make_pair(0x98a,3)); // Leaf1JetPosEtaU2: JF1 Shared Sent 00109 m_blockLength.insert(make_pair(0x98b,10)); // Leaf1JetPosEtaU2: JF1 Output 00110 m_blockLength.insert(make_pair(0x98c,8)); // Leaf1JetPosEtaU2: JF1 Raw Input 00111 m_blockLength.insert(make_pair(0xa00,13)); // Leaf2JetPosEtaU1: JF2 Input 00112 m_blockLength.insert(make_pair(0xa01,3)); // Leaf2JetPosEtaU1: JF2 Shared Received 00113 m_blockLength.insert(make_pair(0xa02,3)); // Leaf2JetPosEtaU1: JF2 Shared Sent 00114 m_blockLength.insert(make_pair(0xa03,10)); // Leaf2JetPosEtaU1: JF2 Output 00115 m_blockLength.insert(make_pair(0xa04,8)); // Leaf2JetPosEtaU1: JF2 Raw Input 00116 m_blockLength.insert(make_pair(0xa08,13)); // Leaf2JetPosEtaU1: JF3 Input 00117 m_blockLength.insert(make_pair(0xa09,3)); // Leaf2JetPosEtaU1: JF3 Shared Received 00118 m_blockLength.insert(make_pair(0xa0a,3)); // Leaf2JetPosEtaU1: JF3 Shared Sent 00119 m_blockLength.insert(make_pair(0xa0b,10)); // Leaf2JetPosEtaU1: JF3 Output 00120 m_blockLength.insert(make_pair(0xa0c,8)); // Leaf2JetPosEtaU1: JF3 Raw Input 00121 m_blockLength.insert(make_pair(0xa80,6)); // Leaf2JetPosEtaU2: Eta0 Input 00122 m_blockLength.insert(make_pair(0xa84,6)); // Leaf2JetPosEtaU2: Eta0 Raw Input 00123 m_blockLength.insert(make_pair(0xa88,13)); // Leaf2JetPosEtaU2: JF1 Input 00124 m_blockLength.insert(make_pair(0xa89,3)); // Leaf2JetPosEtaU2: JF1 Shared Received 00125 m_blockLength.insert(make_pair(0xa8a,3)); // Leaf2JetPosEtaU2: JF1 Shared Sent 00126 m_blockLength.insert(make_pair(0xa8b,10)); // Leaf2JetPosEtaU2: JF1 Output 00127 m_blockLength.insert(make_pair(0xa8c,8)); // Leaf2JetPosEtaU2: JF1 Raw Input 00128 m_blockLength.insert(make_pair(0xb00,13)); // Leaf3JetPosEtaU1: JF2 Input 00129 m_blockLength.insert(make_pair(0xb01,3)); // Leaf3JetPosEtaU1: JF2 Shared Received 00130 m_blockLength.insert(make_pair(0xb02,3)); // Leaf3JetPosEtaU1: JF2 Shared Sent 00131 m_blockLength.insert(make_pair(0xb03,10)); // Leaf3JetPosEtaU1: JF2 Output 00132 m_blockLength.insert(make_pair(0xb04,8)); // Leaf3JetPosEtaU1: JF2 Raw Input 00133 m_blockLength.insert(make_pair(0xb08,13)); // Leaf3JetPosEtaU1: JF3 Input 00134 m_blockLength.insert(make_pair(0xb09,3)); // Leaf3JetPosEtaU1: JF3 Shared Received 00135 m_blockLength.insert(make_pair(0xb0a,3)); // Leaf3JetPosEtaU1: JF3 Shared Sent 00136 m_blockLength.insert(make_pair(0xb0b,10)); // Leaf3JetPosEtaU1: JF3 Output 00137 m_blockLength.insert(make_pair(0xb0c,8)); // Leaf3JetPosEtaU1: JF3 Raw Input 00138 m_blockLength.insert(make_pair(0xb80,6)); // Leaf3JetPosEtaU2: Eta0 Input 00139 m_blockLength.insert(make_pair(0xb84,6)); // Leaf3JetPosEtaU2: Eta0 Raw Input 00140 m_blockLength.insert(make_pair(0xb88,13)); // Leaf3JetPosEtaU2: JF1 Input 00141 m_blockLength.insert(make_pair(0xb89,3)); // Leaf3JetPosEtaU2: JF1 Shared Received 00142 m_blockLength.insert(make_pair(0xb8a,3)); // Leaf3JetPosEtaU2: JF1 Shared Sent 00143 m_blockLength.insert(make_pair(0xb8b,10)); // Leaf3JetPosEtaU2: JF1 Output 00144 m_blockLength.insert(make_pair(0xb8c,8)); // Leaf3JetPosEtaU2: JF1 Raw Input 00145 // Jet Leaf FPGAs - Negative Eta 00146 m_blockLength.insert(make_pair(0xd00,13)); // Leaf1JetNegEtaU1: JF2 Input 00147 m_blockLength.insert(make_pair(0xd01,3)); // Leaf1JetNegEtaU1: JF2 Shared Received 00148 m_blockLength.insert(make_pair(0xd02,3)); // Leaf1JetNegEtaU1: JF2 Shared Sent 00149 m_blockLength.insert(make_pair(0xd03,10)); // Leaf1JetNegEtaU1: JF2 Output 00150 m_blockLength.insert(make_pair(0xd04,8)); // Leaf1JetNegEtaU1: JF2 Raw Input 00151 m_blockLength.insert(make_pair(0xd08,13)); // Leaf1JetNegEtaU1: JF3 Input 00152 m_blockLength.insert(make_pair(0xd09,3)); // Leaf1JetNegEtaU1: JF3 Shared Received 00153 m_blockLength.insert(make_pair(0xd0a,3)); // Leaf1JetNegEtaU1: JF3 Shared Sent 00154 m_blockLength.insert(make_pair(0xd0b,10)); // Leaf1JetNegEtaU1: JF3 Output 00155 m_blockLength.insert(make_pair(0xd0c,8)); // Leaf1JetNegEtaU1: JF3 Raw Input 00156 m_blockLength.insert(make_pair(0xd80,6)); // Leaf1JetNegEtaU2: Eta0 Input 00157 m_blockLength.insert(make_pair(0xd84,6)); // Leaf1JetNegEtaU2: Eta0 Raw Input 00158 m_blockLength.insert(make_pair(0xd88,13)); // Leaf1JetNegEtaU2: JF1 Input 00159 m_blockLength.insert(make_pair(0xd89,3)); // Leaf1JetNegEtaU2: JF1 Shared Received 00160 m_blockLength.insert(make_pair(0xd8a,3)); // Leaf1JetNegEtaU2: JF1 Shared Sent 00161 m_blockLength.insert(make_pair(0xd8b,10)); // Leaf1JetNegEtaU2: JF1 Output 00162 m_blockLength.insert(make_pair(0xd8c,8)); // Leaf1JetNegEtaU2: JF1 Raw Input 00163 m_blockLength.insert(make_pair(0xe00,13)); // Leaf2JetNegEtaU1: JF2 Input 00164 m_blockLength.insert(make_pair(0xe01,3)); // Leaf2JetNegEtaU1: JF2 Shared Received 00165 m_blockLength.insert(make_pair(0xe02,3)); // Leaf2JetNegEtaU1: JF2 Shared Sent 00166 m_blockLength.insert(make_pair(0xe03,10)); // Leaf2JetNegEtaU1: JF2 Output 00167 m_blockLength.insert(make_pair(0xe04,8)); // Leaf2JetNegEtaU1: JF2 Raw Input 00168 m_blockLength.insert(make_pair(0xe08,13)); // Leaf2JetNegEtaU1: JF3 Input 00169 m_blockLength.insert(make_pair(0xe09,3)); // Leaf2JetNegEtaU1: JF3 Shared Received 00170 m_blockLength.insert(make_pair(0xe0a,3)); // Leaf2JetNegEtaU1: JF3 Shared Sent 00171 m_blockLength.insert(make_pair(0xe0b,10)); // Leaf2JetNegEtaU1: JF3 Output 00172 m_blockLength.insert(make_pair(0xe0c,8)); // Leaf2JetNegEtaU1: JF3 Raw Input 00173 m_blockLength.insert(make_pair(0xe80,6)); // Leaf2JetNegEtaU2: Eta0 Input 00174 m_blockLength.insert(make_pair(0xe84,6)); // Leaf2JetNegEtaU2: Eta0 Raw Input 00175 m_blockLength.insert(make_pair(0xe88,13)); // Leaf2JetNegEtaU2: JF1 Input 00176 m_blockLength.insert(make_pair(0xe89,3)); // Leaf2JetNegEtaU2: JF1 Shared Received 00177 m_blockLength.insert(make_pair(0xe8a,3)); // Leaf2JetNegEtaU2: JF1 Shared Sent 00178 m_blockLength.insert(make_pair(0xe8b,10)); // Leaf2JetNegEtaU2: JF1 Output 00179 m_blockLength.insert(make_pair(0xe8c,8)); // Leaf2JetNegEtaU2: JF1 Raw Input 00180 m_blockLength.insert(make_pair(0xf00,13)); // Leaf3JetNegEtaU1: JF2 Input 00181 m_blockLength.insert(make_pair(0xf01,3)); // Leaf3JetNegEtaU1: JF2 Shared Received 00182 m_blockLength.insert(make_pair(0xf02,3)); // Leaf3JetNegEtaU1: JF2 Shared Sent 00183 m_blockLength.insert(make_pair(0xf03,10)); // Leaf3JetNegEtaU1: JF2 Output 00184 m_blockLength.insert(make_pair(0xf04,8)); // Leaf3JetNegEtaU1: JF2 Raw Input 00185 m_blockLength.insert(make_pair(0xf08,13)); // Leaf3JetNegEtaU1: JF3 Input 00186 m_blockLength.insert(make_pair(0xf09,3)); // Leaf3JetNegEtaU1: JF3 Shared Received 00187 m_blockLength.insert(make_pair(0xf0a,3)); // Leaf3JetNegEtaU1: JF3 Shared Sent 00188 m_blockLength.insert(make_pair(0xf0b,10)); // Leaf3JetNegEtaU1: JF3 Output 00189 m_blockLength.insert(make_pair(0xf0c,8)); // Leaf3JetNegEtaU1: JF3 Raw Input 00190 m_blockLength.insert(make_pair(0xf80,6)); // Leaf3JetNegEtaU2: Eta0 Input 00191 m_blockLength.insert(make_pair(0xf84,6)); // Leaf3JetNegEtaU2: Eta0 Raw Input 00192 m_blockLength.insert(make_pair(0xf88,13)); // Leaf3JetNegEtaU2: JF1 Input 00193 m_blockLength.insert(make_pair(0xf89,3)); // Leaf3JetNegEtaU2: JF1 Shared Received 00194 m_blockLength.insert(make_pair(0xf8a,3)); // Leaf3JetNegEtaU2: JF1 Shared Sent 00195 m_blockLength.insert(make_pair(0xf8b,10)); // Leaf3JetNegEtaU2: JF1 Output 00196 m_blockLength.insert(make_pair(0xf8c,8)); // Leaf3JetNegEtaU2: JF1 Raw Input 00197 00198 00199 /*** Setup BlockID to BlockName Map ***/ 00200 // Miscellaneous Blocks 00201 m_blockName.insert(make_pair(0x000,"NULL")); 00202 // ConcJet FPGA 00203 m_blockName.insert(make_pair(0x580,"ConcJet: Input TrigPathA (Jet Cands)")); 00204 m_blockName.insert(make_pair(0x581,"ConcJet: Input TrigPathB (HF Rings)")); 00205 m_blockName.insert(make_pair(0x582,"ConcJet: Input TrigPathC (MissHt)")); 00206 m_blockName.insert(make_pair(0x583,"ConcJet: Jet Cands and Counts Output to GT")); 00207 m_blockName.insert(make_pair(0x587,"ConcJet: BX & Orbit Info")); 00208 // ConcElec FPGA 00209 m_blockName.insert(make_pair(0x680,"ConcElec: Input TrigPathA (EM Cands)")); 00210 m_blockName.insert(make_pair(0x681,"ConcElec: Input TrigPathB (Et Sums)")); 00211 m_blockName.insert(make_pair(0x682,"ConcElec: Input TrigPathC (Ht Sums)")); 00212 m_blockName.insert(make_pair(0x683,"ConcElec: EM Cands and Energy Sums Output to GT")); 00213 m_blockName.insert(make_pair(0x686,"ConcElec: Test (GT Serdes Loopback)")); 00214 m_blockName.insert(make_pair(0x687,"ConcElec: BX & Orbit Info")); 00215 // Electron Leaf FPGAs 00216 m_blockName.insert(make_pair(0x800,"Leaf0ElecPosEtaU1: Sort Input")); 00217 m_blockName.insert(make_pair(0x803,"Leaf0ElecPosEtaU1: Sort Output")); 00218 m_blockName.insert(make_pair(0x804,"Leaf0ElecPosEtaU1: Raw Input")); 00219 m_blockName.insert(make_pair(0x880,"Leaf0ElecPosEtaU2: Sort Input")); 00220 m_blockName.insert(make_pair(0x883,"Leaf0ElecPosEtaU2: Sort Output")); 00221 m_blockName.insert(make_pair(0x884,"Leaf0ElecPosEtaU2: Raw Input")); 00222 m_blockName.insert(make_pair(0xc00,"Leaf0ElecNegEtaU1: Sort Input")); 00223 m_blockName.insert(make_pair(0xc03,"Leaf0ElecNegEtaU1: Sort Output")); 00224 m_blockName.insert(make_pair(0xc04,"Leaf0ElecNegEtaU1: Raw Input")); 00225 m_blockName.insert(make_pair(0xc80,"Leaf0ElecNegEtaU2: Sort Input")); 00226 m_blockName.insert(make_pair(0xc83,"Leaf0ElecNegEtaU2: Sort Output")); 00227 m_blockName.insert(make_pair(0xc84,"Leaf0ElecNegEtaU2: Raw Input")); 00228 // Wheel Pos-eta Jet FPGA 00229 m_blockName.insert(make_pair(0x300,"WheelPosEtaJet: Input TrigPathA (Jet Sort)")); 00230 m_blockName.insert(make_pair(0x301,"WheelPosEtaJet: Input TrigPathB (MissHt)")); 00231 m_blockName.insert(make_pair(0x303,"WheelPosEtaJet: Output TrigPathA (Jet Sort)")); 00232 m_blockName.insert(make_pair(0x305,"WheelPosEtaJet: Output TrigPathB (MissHt)")); 00233 m_blockName.insert(make_pair(0x306,"WheelPosEtaJet: Test (deprecated)")); // (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00234 m_blockName.insert(make_pair(0x307,"WheelPosEtaJet: Info (deprecated)")); // (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00235 // Wheel Pos-eta Energy FPGA 00236 m_blockName.insert(make_pair(0x380,"WheelPosEtaEnergy: Input TrigPathA (Et)")); 00237 m_blockName.insert(make_pair(0x381,"WheelPosEtaEnergy: Input TrigPathB (Ht)")); 00238 m_blockName.insert(make_pair(0x383,"WheelPosEtaEnergy: Output TrigPathA (Et)")); 00239 m_blockName.insert(make_pair(0x385,"WheelPosEtaEnergy: Output TrigPathB (Ht)")); 00240 m_blockName.insert(make_pair(0x386,"WheelPosEtaEnergy: Test")); 00241 m_blockName.insert(make_pair(0x387,"WheelPosEtaEnergy: BX & Orbit Info")); 00242 // Wheel Neg-eta Jet FPGA 00243 m_blockName.insert(make_pair(0x700,"WheelNegEtaJet: Input TrigPathA (Jet Sort)")); 00244 m_blockName.insert(make_pair(0x701,"WheelNegEtaJet: Input TrigPathB (MissHt)")); 00245 m_blockName.insert(make_pair(0x703,"WheelNegEtaJet: Output TrigPathA (Jet Sort)")); 00246 m_blockName.insert(make_pair(0x705,"WheelNegEtaJet: Output TrigPathB (MissHt)")); 00247 m_blockName.insert(make_pair(0x706,"WheelNegEtaJet: Test (deprecated)")); // (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00248 m_blockName.insert(make_pair(0x707,"WheelNegEtaJet: Info (deprecated)")); // (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00249 // Wheel Neg-eta Energy FPGA 00250 m_blockName.insert(make_pair(0x780,"WheelNegEtaEnergy: Input TrigPathA (Et)")); 00251 m_blockName.insert(make_pair(0x781,"WheelNegEtaEnergy: Input TrigPathB (Ht)")); 00252 m_blockName.insert(make_pair(0x783,"WheelNegEtaEnergy: Output TrigPathA (Et)")); 00253 m_blockName.insert(make_pair(0x785,"WheelNegEtaEnergy: Output TrigPathB (Ht)")); 00254 m_blockName.insert(make_pair(0x786,"WheelNegEtaEnergy: Test")); 00255 m_blockName.insert(make_pair(0x787,"WheelNegEtaEnergy: BX & Orbit Info")); 00256 // Jet Leaf FPGAs - Positive Eta 00257 m_blockName.insert(make_pair(0x900,"Leaf1JetPosEtaU1: JF2 Input")); 00258 m_blockName.insert(make_pair(0x901,"Leaf1JetPosEtaU1: JF2 Shared Received")); 00259 m_blockName.insert(make_pair(0x902,"Leaf1JetPosEtaU1: JF2 Shared Sent")); 00260 m_blockName.insert(make_pair(0x903,"Leaf1JetPosEtaU1: JF2 Output")); 00261 m_blockName.insert(make_pair(0x904,"Leaf1JetPosEtaU1: JF2 Raw Input")); 00262 m_blockName.insert(make_pair(0x908,"Leaf1JetPosEtaU1: JF3 Input")); 00263 m_blockName.insert(make_pair(0x909,"Leaf1JetPosEtaU1: JF3 Shared Received")); 00264 m_blockName.insert(make_pair(0x90a,"Leaf1JetPosEtaU1: JF3 Shared Sent")); 00265 m_blockName.insert(make_pair(0x90b,"Leaf1JetPosEtaU1: JF3 Output")); 00266 m_blockName.insert(make_pair(0x90c,"Leaf1JetPosEtaU1: JF3 Raw Input")); 00267 m_blockName.insert(make_pair(0x980,"Leaf1JetPosEtaU2: Eta0 Input")); // Next Leaf Start 00268 m_blockName.insert(make_pair(0x984,"Leaf1JetPosEtaU2: Eta0 Raw Input")); 00269 m_blockName.insert(make_pair(0x988,"Leaf1JetPosEtaU2: JF1 Input")); 00270 m_blockName.insert(make_pair(0x989,"Leaf1JetPosEtaU2: JF1 Shared Received")); 00271 m_blockName.insert(make_pair(0x98a,"Leaf1JetPosEtaU2: JF1 Shared Sent")); 00272 m_blockName.insert(make_pair(0x98b,"Leaf1JetPosEtaU2: JF1 Output")); 00273 m_blockName.insert(make_pair(0x98c,"Leaf1JetPosEtaU2: JF1 Raw Input")); 00274 m_blockName.insert(make_pair(0xa00,"Leaf2JetPosEtaU1: JF2 Input")); // Next Leaf Start 00275 m_blockName.insert(make_pair(0xa01,"Leaf2JetPosEtaU1: JF2 Shared Received")); 00276 m_blockName.insert(make_pair(0xa02,"Leaf2JetPosEtaU1: JF2 Shared Sent")); 00277 m_blockName.insert(make_pair(0xa03,"Leaf2JetPosEtaU1: JF2 Output")); 00278 m_blockName.insert(make_pair(0xa04,"Leaf2JetPosEtaU1: JF2 Raw Input")); 00279 m_blockName.insert(make_pair(0xa08,"Leaf2JetPosEtaU1: JF3 Input")); 00280 m_blockName.insert(make_pair(0xa09,"Leaf2JetPosEtaU1: JF3 Shared Received")); 00281 m_blockName.insert(make_pair(0xa0a,"Leaf2JetPosEtaU1: JF3 Shared Sent")); 00282 m_blockName.insert(make_pair(0xa0b,"Leaf2JetPosEtaU1: JF3 Output")); 00283 m_blockName.insert(make_pair(0xa0c,"Leaf2JetPosEtaU1: JF3 Raw Input")); 00284 m_blockName.insert(make_pair(0xa80,"Leaf2JetPosEtaU2: Eta0 Input")); // Next Leaf Start 00285 m_blockName.insert(make_pair(0xa84,"Leaf2JetPosEtaU2: Eta0 Raw Input")); 00286 m_blockName.insert(make_pair(0xa88,"Leaf2JetPosEtaU2: JF1 Input")); 00287 m_blockName.insert(make_pair(0xa89,"Leaf2JetPosEtaU2: JF1 Shared Received")); 00288 m_blockName.insert(make_pair(0xa8a,"Leaf2JetPosEtaU2: JF1 Shared Sent")); 00289 m_blockName.insert(make_pair(0xa8b,"Leaf2JetPosEtaU2: JF1 Output")); 00290 m_blockName.insert(make_pair(0xa8c,"Leaf2JetPosEtaU2: JF1 Raw Input")); 00291 m_blockName.insert(make_pair(0xb00,"Leaf3JetPosEtaU1: JF2 Input")); // Next Leaf Start 00292 m_blockName.insert(make_pair(0xb01,"Leaf3JetPosEtaU1: JF2 Shared Received")); 00293 m_blockName.insert(make_pair(0xb02,"Leaf3JetPosEtaU1: JF2 Shared Sent")); 00294 m_blockName.insert(make_pair(0xb03,"Leaf3JetPosEtaU1: JF2 Output")); 00295 m_blockName.insert(make_pair(0xb04,"Leaf3JetPosEtaU1: JF2 Raw Input")); 00296 m_blockName.insert(make_pair(0xb08,"Leaf3JetPosEtaU1: JF3 Input")); 00297 m_blockName.insert(make_pair(0xb09,"Leaf3JetPosEtaU1: JF3 Shared Received")); 00298 m_blockName.insert(make_pair(0xb0a,"Leaf3JetPosEtaU1: JF3 Shared Sent")); 00299 m_blockName.insert(make_pair(0xb0b,"Leaf3JetPosEtaU1: JF3 Output")); 00300 m_blockName.insert(make_pair(0xb0c,"Leaf3JetPosEtaU1: JF3 Raw Input")); 00301 m_blockName.insert(make_pair(0xb80,"Leaf3JetPosEtaU2: Eta0 Input")); // Next Leaf Start 00302 m_blockName.insert(make_pair(0xb84,"Leaf3JetPosEtaU2: Eta0 Raw Input")); 00303 m_blockName.insert(make_pair(0xb88,"Leaf3JetPosEtaU2: JF1 Input")); 00304 m_blockName.insert(make_pair(0xb89,"Leaf3JetPosEtaU2: JF1 Shared Received")); 00305 m_blockName.insert(make_pair(0xb8a,"Leaf3JetPosEtaU2: JF1 Shared Sent")); 00306 m_blockName.insert(make_pair(0xb8b,"Leaf3JetPosEtaU2: JF1 Output")); 00307 m_blockName.insert(make_pair(0xb8c,"Leaf3JetPosEtaU2: JF1 Raw Input")); 00308 // Jet Leaf FPGAs - Negative Eta 00309 m_blockName.insert(make_pair(0xd00,"Leaf1JetNegEtaU1: JF2 Input")); // START OF NEG ETA JET LEAVES 00310 m_blockName.insert(make_pair(0xd01,"Leaf1JetNegEtaU1: JF2 Shared Received")); 00311 m_blockName.insert(make_pair(0xd02,"Leaf1JetNegEtaU1: JF2 Shared Sent")); 00312 m_blockName.insert(make_pair(0xd03,"Leaf1JetNegEtaU1: JF2 Output")); 00313 m_blockName.insert(make_pair(0xd04,"Leaf1JetNegEtaU1: JF2 Raw Input")); 00314 m_blockName.insert(make_pair(0xd08,"Leaf1JetNegEtaU1: JF3 Input")); 00315 m_blockName.insert(make_pair(0xd09,"Leaf1JetNegEtaU1: JF3 Shared Received")); 00316 m_blockName.insert(make_pair(0xd0a,"Leaf1JetNegEtaU1: JF3 Shared Sent")); 00317 m_blockName.insert(make_pair(0xd0b,"Leaf1JetNegEtaU1: JF3 Output")); 00318 m_blockName.insert(make_pair(0xd0c,"Leaf1JetNegEtaU1: JF3 Raw Input")); 00319 m_blockName.insert(make_pair(0xd80,"Leaf1JetNegEtaU2: Eta0 Input")); // Next Leaf Start 00320 m_blockName.insert(make_pair(0xd84,"Leaf1JetNegEtaU2: Eta0 Raw Input")); 00321 m_blockName.insert(make_pair(0xd88,"Leaf1JetNegEtaU2: JF1 Input")); 00322 m_blockName.insert(make_pair(0xd89,"Leaf1JetNegEtaU2: JF1 Shared Received")); 00323 m_blockName.insert(make_pair(0xd8a,"Leaf1JetNegEtaU2: JF1 Shared Sent")); 00324 m_blockName.insert(make_pair(0xd8b,"Leaf1JetNegEtaU2: JF1 Output")); 00325 m_blockName.insert(make_pair(0xd8c,"Leaf1JetNegEtaU2: JF1 Raw Input")); 00326 m_blockName.insert(make_pair(0xe00,"Leaf2JetNegEtaU1: JF2 Input")); // Next Leaf Start 00327 m_blockName.insert(make_pair(0xe01,"Leaf2JetNegEtaU1: JF2 Shared Received")); 00328 m_blockName.insert(make_pair(0xe02,"Leaf2JetNegEtaU1: JF2 Shared Sent")); 00329 m_blockName.insert(make_pair(0xe03,"Leaf2JetNegEtaU1: JF2 Output")); 00330 m_blockName.insert(make_pair(0xe04,"Leaf2JetNegEtaU1: JF2 Raw Input")); 00331 m_blockName.insert(make_pair(0xe08,"Leaf2JetNegEtaU1: JF3 Input")); 00332 m_blockName.insert(make_pair(0xe09,"Leaf2JetNegEtaU1: JF3 Shared Received")); 00333 m_blockName.insert(make_pair(0xe0a,"Leaf2JetNegEtaU1: JF3 Shared Sent")); 00334 m_blockName.insert(make_pair(0xe0b,"Leaf2JetNegEtaU1: JF3 Output")); 00335 m_blockName.insert(make_pair(0xe0c,"Leaf2JetNegEtaU1: JF3 Raw Input")); 00336 m_blockName.insert(make_pair(0xe80,"Leaf2JetNegEtaU2: Eta0 Input")); // Next Leaf Start 00337 m_blockName.insert(make_pair(0xe84,"Leaf2JetNegEtaU2: Eta0 Raw Input")); 00338 m_blockName.insert(make_pair(0xe88,"Leaf2JetNegEtaU2: JF1 Input")); 00339 m_blockName.insert(make_pair(0xe89,"Leaf2JetNegEtaU2: JF1 Shared Received")); 00340 m_blockName.insert(make_pair(0xe8a,"Leaf2JetNegEtaU2: JF1 Shared Sent")); 00341 m_blockName.insert(make_pair(0xe8b,"Leaf2JetNegEtaU2: JF1 Output")); 00342 m_blockName.insert(make_pair(0xe8c,"Leaf2JetNegEtaU2: JF1 Raw Input")); 00343 m_blockName.insert(make_pair(0xf00,"Leaf3JetNegEtaU1: JF2 Input")); // Next Leaf Start 00344 m_blockName.insert(make_pair(0xf01,"Leaf3JetNegEtaU1: JF2 Shared Received")); 00345 m_blockName.insert(make_pair(0xf02,"Leaf3JetNegEtaU1: JF2 Shared Sent")); 00346 m_blockName.insert(make_pair(0xf03,"Leaf3JetNegEtaU1: JF2 Output")); 00347 m_blockName.insert(make_pair(0xf04,"Leaf3JetNegEtaU1: JF2 Raw Input")); 00348 m_blockName.insert(make_pair(0xf08,"Leaf3JetNegEtaU1: JF3 Input")); 00349 m_blockName.insert(make_pair(0xf09,"Leaf3JetNegEtaU1: JF3 Shared Received")); 00350 m_blockName.insert(make_pair(0xf0a,"Leaf3JetNegEtaU1: JF3 Shared Sent")); 00351 m_blockName.insert(make_pair(0xf0b,"Leaf3JetNegEtaU1: JF3 Output")); 00352 m_blockName.insert(make_pair(0xf0c,"Leaf3JetNegEtaU1: JF3 Raw Input")); 00353 m_blockName.insert(make_pair(0xf80,"Leaf3JetNegEtaU2: Eta0 Input")); // Next Leaf Start 00354 m_blockName.insert(make_pair(0xf84,"Leaf3JetNegEtaU2: Eta0 Raw Input")); 00355 m_blockName.insert(make_pair(0xf88,"Leaf3JetNegEtaU2: JF1 Input")); 00356 m_blockName.insert(make_pair(0xf89,"Leaf3JetNegEtaU2: JF1 Shared Received")); 00357 m_blockName.insert(make_pair(0xf8a,"Leaf3JetNegEtaU2: JF1 Shared Sent")); 00358 m_blockName.insert(make_pair(0xf8b,"Leaf3JetNegEtaU2: JF1 Output")); 00359 m_blockName.insert(make_pair(0xf8c,"Leaf3JetNegEtaU2: JF1 Raw Input")); 00360 00361 00362 /*** Setup BlockID to Unpack-Function Map ***/ 00363 // Miscellaneous Blocks 00364 m_blockUnpackFn[0x000] = &GctFormatTranslateV38::blockDoNothing; // NULL 00365 // ConcJet FPGA 00366 m_blockUnpackFn[0x580] = &GctFormatTranslateV38::blockToGctTrigObjects; // ConcJet: Input TrigPathA (Jet Cands) 00367 m_blockUnpackFn[0x581] = &GctFormatTranslateV38::blockDoNothing; // ConcJet: Input TrigPathB (HF Rings) 00368 m_blockUnpackFn[0x582] = &GctFormatTranslateV38::blockDoNothing; // ConcJet: Input TrigPathC (MissHt) 00369 m_blockUnpackFn[0x583] = &GctFormatTranslateV38::blockToGctJetCandsAndCounts; // ConcJet: Jet Cands and Counts Output to GT 00370 m_blockUnpackFn[0x587] = &GctFormatTranslateV38::blockDoNothing; // ConcJet: BX & Orbit Info 00371 // ConcElec FPGA 00372 m_blockUnpackFn[0x680] = &GctFormatTranslateV38::blockToGctInternEmCand; // ConcElec: Input TrigPathA (EM Cands) 00373 m_blockUnpackFn[0x681] = &GctFormatTranslateV38::blockDoNothing; // ConcElec: Input TrigPathB (Et Sums) 00374 m_blockUnpackFn[0x682] = &GctFormatTranslateV38::blockDoNothing; // ConcElec: Input TrigPathC (Ht Sums) 00375 m_blockUnpackFn[0x683] = &GctFormatTranslateV38::blockToGctEmCandsAndEnergySums; // ConcElec: EM Cands and Energy Sums Output to GT 00376 m_blockUnpackFn[0x686] = &GctFormatTranslateV38::blockDoNothing; // ConcElec: Test (GT Serdes Loopback) 00377 m_blockUnpackFn[0x687] = &GctFormatTranslateV38::blockDoNothing; // ConcElec: BX & Orbit Info 00378 // Electron Leaf FPGAs 00379 m_blockUnpackFn[0x800] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecPosEtaU1: Sort Input 00380 m_blockUnpackFn[0x803] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecPosEtaU1: Sort Output 00381 m_blockUnpackFn[0x804] = &GctFormatTranslateV38::blockToFibresAndToRctEmCand; // Leaf0ElecPosEtaU1: Raw Input 00382 m_blockUnpackFn[0x880] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecPosEtaU2: Sort Input 00383 m_blockUnpackFn[0x883] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecPosEtaU2: Sort Output 00384 m_blockUnpackFn[0x884] = &GctFormatTranslateV38::blockToFibresAndToRctEmCand; // Leaf0ElecPosEtaU2: Raw Input 00385 m_blockUnpackFn[0xc00] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecNegEtaU1: Sort Input 00386 m_blockUnpackFn[0xc03] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecNegEtaU1: Sort Output 00387 m_blockUnpackFn[0xc04] = &GctFormatTranslateV38::blockToFibresAndToRctEmCand; // Leaf0ElecNegEtaU1: Raw Input 00388 m_blockUnpackFn[0xc80] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecNegEtaU2: Sort Input 00389 m_blockUnpackFn[0xc83] = &GctFormatTranslateV38::blockToGctInternEmCand; // Leaf0ElecNegEtaU2: Sort Output 00390 m_blockUnpackFn[0xc84] = &GctFormatTranslateV38::blockToFibresAndToRctEmCand; // Leaf0ElecNegEtaU2: Raw Input 00391 // Wheel Pos-eta Jet FPGA 00392 m_blockUnpackFn[0x300] = &GctFormatTranslateV38::blockToGctJetClusterMinimal; // WheelPosEtaJet: Input TrigPathA (Jet Sort) 00393 m_blockUnpackFn[0x301] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaJet: Input TrigPathB (MissHt) 00394 m_blockUnpackFn[0x303] = &GctFormatTranslateV38::blockToGctTrigObjects; // WheelPosEtaJet: Output TrigPathA (Jet Sort) 00395 m_blockUnpackFn[0x305] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaJet: Output TrigPathB (MissHt) 00396 m_blockUnpackFn[0x306] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaJet: Test (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00397 m_blockUnpackFn[0x307] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaJet: Info (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00398 // Wheel Pos-eta Energy FPGA 00399 m_blockUnpackFn[0x380] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaEnergy: Input TrigPathA (Et) 00400 m_blockUnpackFn[0x381] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaEnergy: Input TrigPathB (Ht) 00401 m_blockUnpackFn[0x383] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaEnergy: Output TrigPathA (Et) 00402 m_blockUnpackFn[0x385] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaEnergy: Output TrigPathB (Ht) 00403 m_blockUnpackFn[0x386] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaEnergy: Test 00404 m_blockUnpackFn[0x387] = &GctFormatTranslateV38::blockDoNothing; // WheelPosEtaEnergy: BX & Orbit Info (Potential data incompatibility between V24/V25 where block length=4, and V27.1 where block length=6) 00405 // Wheel Neg-eta Jet FPGA 00406 m_blockUnpackFn[0x700] = &GctFormatTranslateV38::blockToGctJetClusterMinimal; // WheelNegEtaJet: Input TrigPathA (Jet Sort) 00407 m_blockUnpackFn[0x701] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaJet: Input TrigPathB (MissHt) 00408 m_blockUnpackFn[0x703] = &GctFormatTranslateV38::blockToGctTrigObjects; // WheelNegEtaJet: Output TrigPathA (Jet Sort) 00409 m_blockUnpackFn[0x705] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaJet: Output TrigPathB (MissHt) 00410 m_blockUnpackFn[0x706] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaJet: Test (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00411 m_blockUnpackFn[0x707] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaJet: Info (deprecated) (Doesn't exist in V27.1 format, but does in V24 & V25, so keep for CRUZET2 data compatibility reasons) 00412 // Wheel Neg-eta Energy FPGA 00413 m_blockUnpackFn[0x780] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaEnergy: Input TrigPathA (Et) 00414 m_blockUnpackFn[0x781] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaEnergy: Input TrigPathB (Ht) 00415 m_blockUnpackFn[0x783] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaEnergy: Output TrigPathA (Et) 00416 m_blockUnpackFn[0x785] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaEnergy: Output TrigPathB (Ht) 00417 m_blockUnpackFn[0x786] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaEnergy: Test 00418 m_blockUnpackFn[0x787] = &GctFormatTranslateV38::blockDoNothing; // WheelNegEtaEnergy: BX & Orbit Info (Potential data incompatibility between V24/V25 where block length=4, and V27.1 where block length=6) 00419 // Jet Leaf FPGAs - Positive Eta 00420 m_blockUnpackFn[0x900] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf1JetPosEtaU1: JF2 Input 00421 m_blockUnpackFn[0x901] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetPosEtaU1: JF2 Shared Received 00422 m_blockUnpackFn[0x902] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetPosEtaU1: JF2 Shared Sent 00423 m_blockUnpackFn[0x903] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetPosEtaU1: JF2 Output 00424 m_blockUnpackFn[0x904] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetPosEtaU1: JF2 Raw Input 00425 m_blockUnpackFn[0x908] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf1JetPosEtaU1: JF3 Input 00426 m_blockUnpackFn[0x909] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetPosEtaU1: JF3 Shared Received 00427 m_blockUnpackFn[0x90a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetPosEtaU1: JF3 Shared Sent 00428 m_blockUnpackFn[0x90b] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetPosEtaU1: JF3 Output 00429 m_blockUnpackFn[0x90c] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetPosEtaU1: JF3 Raw Input 00430 m_blockUnpackFn[0x980] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetPosEtaU2: Eta0 Input 00431 m_blockUnpackFn[0x984] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetPosEtaU2: Eta0 Raw Input 00432 m_blockUnpackFn[0x988] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf1JetPosEtaU2: JF1 Input 00433 m_blockUnpackFn[0x989] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetPosEtaU2: JF1 Shared Received 00434 m_blockUnpackFn[0x98a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetPosEtaU2: JF1 Shared Sent 00435 m_blockUnpackFn[0x98b] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetPosEtaU2: JF1 Output 00436 m_blockUnpackFn[0x98c] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetPosEtaU2: JF1 Raw Input 00437 m_blockUnpackFn[0xa00] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf2JetPosEtaU1: JF2 Input 00438 m_blockUnpackFn[0xa01] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetPosEtaU1: JF2 Shared Received 00439 m_blockUnpackFn[0xa02] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetPosEtaU1: JF2 Shared Sent 00440 m_blockUnpackFn[0xa03] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetPosEtaU1: JF2 Output 00441 m_blockUnpackFn[0xa04] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetPosEtaU1: JF2 Raw Input 00442 m_blockUnpackFn[0xa08] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf2JetPosEtaU1: JF3 Input 00443 m_blockUnpackFn[0xa09] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetPosEtaU1: JF3 Shared Received 00444 m_blockUnpackFn[0xa0a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetPosEtaU1: JF3 Shared Sent 00445 m_blockUnpackFn[0xa0b] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetPosEtaU1: JF3 Output 00446 m_blockUnpackFn[0xa0c] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetPosEtaU1: JF3 Raw Input 00447 m_blockUnpackFn[0xa80] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetPosEtaU2: Eta0 Input 00448 m_blockUnpackFn[0xa84] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetPosEtaU2: Eta0 Raw Input 00449 m_blockUnpackFn[0xa88] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf2JetPosEtaU2: JF1 Input 00450 m_blockUnpackFn[0xa89] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetPosEtaU2: JF1 Shared Received 00451 m_blockUnpackFn[0xa8a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetPosEtaU2: JF1 Shared Sent 00452 m_blockUnpackFn[0xa8b] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetPosEtaU2: JF1 Output 00453 m_blockUnpackFn[0xa8c] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetPosEtaU2: JF1 Raw Input 00454 m_blockUnpackFn[0xb00] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf3JetPosEtaU1: JF2 Input 00455 m_blockUnpackFn[0xb01] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetPosEtaU1: JF2 Shared Received 00456 m_blockUnpackFn[0xb02] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetPosEtaU1: JF2 Shared Sent 00457 m_blockUnpackFn[0xb03] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetPosEtaU1: JF2 Output 00458 m_blockUnpackFn[0xb04] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetPosEtaU1: JF2 Raw Input 00459 m_blockUnpackFn[0xb08] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf3JetPosEtaU1: JF3 Input 00460 m_blockUnpackFn[0xb09] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetPosEtaU1: JF3 Shared Received 00461 m_blockUnpackFn[0xb0a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetPosEtaU1: JF3 Shared Sent 00462 m_blockUnpackFn[0xb0b] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetPosEtaU1: JF3 Output 00463 m_blockUnpackFn[0xb0c] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetPosEtaU1: JF3 Raw Input 00464 m_blockUnpackFn[0xb80] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetPosEtaU2: Eta0 Input 00465 m_blockUnpackFn[0xb84] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetPosEtaU2: Eta0 Raw Input 00466 m_blockUnpackFn[0xb88] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf3JetPosEtaU2: JF1 Input 00467 m_blockUnpackFn[0xb89] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetPosEtaU2: JF1 Shared Received 00468 m_blockUnpackFn[0xb8a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetPosEtaU2: JF1 Shared Sent 00469 m_blockUnpackFn[0xb8b] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetPosEtaU2: JF1 Output 00470 m_blockUnpackFn[0xb8c] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetPosEtaU2: JF1 Raw Input 00471 // Jet Leaf FPGAs - Negative Eta 00472 m_blockUnpackFn[0xd00] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf1JetNegEtaU1: JF2 Input 00473 m_blockUnpackFn[0xd01] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetNegEtaU1: JF2 Shared Received 00474 m_blockUnpackFn[0xd02] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetNegEtaU1: JF2 Shared Sent 00475 m_blockUnpackFn[0xd03] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetNegEtaU1: JF2 Output 00476 m_blockUnpackFn[0xd04] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetNegEtaU1: JF2 Raw Input 00477 m_blockUnpackFn[0xd08] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf1JetNegEtaU1: JF3 Input 00478 m_blockUnpackFn[0xd09] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetNegEtaU1: JF3 Shared Received 00479 m_blockUnpackFn[0xd0a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetNegEtaU1: JF3 Shared Sent 00480 m_blockUnpackFn[0xd0b] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetNegEtaU1: JF3 Output 00481 m_blockUnpackFn[0xd0c] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetNegEtaU1: JF3 Raw Input 00482 m_blockUnpackFn[0xd80] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetNegEtaU2: Eta0 Input 00483 m_blockUnpackFn[0xd84] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetNegEtaU2: Eta0 Raw Input 00484 m_blockUnpackFn[0xd88] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf1JetNegEtaU2: JF1 Input 00485 m_blockUnpackFn[0xd89] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetNegEtaU2: JF1 Shared Received 00486 m_blockUnpackFn[0xd8a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf1JetNegEtaU2: JF1 Shared Sent 00487 m_blockUnpackFn[0xd8b] = &GctFormatTranslateV38::blockDoNothing; // Leaf1JetNegEtaU2: JF1 Output 00488 m_blockUnpackFn[0xd8c] = &GctFormatTranslateV38::blockToFibres; // Leaf1JetNegEtaU2: JF1 Raw Input 00489 m_blockUnpackFn[0xe00] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf2JetNegEtaU1: JF2 Input 00490 m_blockUnpackFn[0xe01] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetNegEtaU1: JF2 Shared Received 00491 m_blockUnpackFn[0xe02] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetNegEtaU1: JF2 Shared Sent 00492 m_blockUnpackFn[0xe03] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetNegEtaU1: JF2 Output 00493 m_blockUnpackFn[0xe04] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetNegEtaU1: JF2 Raw Input 00494 m_blockUnpackFn[0xe08] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf2JetNegEtaU1: JF3 Input 00495 m_blockUnpackFn[0xe09] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetNegEtaU1: JF3 Shared Received 00496 m_blockUnpackFn[0xe0a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetNegEtaU1: JF3 Shared Sent 00497 m_blockUnpackFn[0xe0b] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetNegEtaU1: JF3 Output 00498 m_blockUnpackFn[0xe0c] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetNegEtaU1: JF3 Raw Input 00499 m_blockUnpackFn[0xe80] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetNegEtaU2: Eta0 Input 00500 m_blockUnpackFn[0xe84] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetNegEtaU2: Eta0 Raw Input 00501 m_blockUnpackFn[0xe88] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf2JetNegEtaU2: JF1 Input 00502 m_blockUnpackFn[0xe89] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetNegEtaU2: JF1 Shared Received 00503 m_blockUnpackFn[0xe8a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf2JetNegEtaU2: JF1 Shared Sent 00504 m_blockUnpackFn[0xe8b] = &GctFormatTranslateV38::blockDoNothing; // Leaf2JetNegEtaU2: JF1 Output 00505 m_blockUnpackFn[0xe8c] = &GctFormatTranslateV38::blockToFibres; // Leaf2JetNegEtaU2: JF1 Raw Input 00506 m_blockUnpackFn[0xf00] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf3JetNegEtaU1: JF2 Input 00507 m_blockUnpackFn[0xf01] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetNegEtaU1: JF2 Shared Received 00508 m_blockUnpackFn[0xf02] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetNegEtaU1: JF2 Shared Sent 00509 m_blockUnpackFn[0xf03] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetNegEtaU1: JF2 Output 00510 m_blockUnpackFn[0xf04] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetNegEtaU1: JF2 Raw Input 00511 m_blockUnpackFn[0xf08] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf3JetNegEtaU1: JF3 Input 00512 m_blockUnpackFn[0xf09] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetNegEtaU1: JF3 Shared Received 00513 m_blockUnpackFn[0xf0a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetNegEtaU1: JF3 Shared Sent 00514 m_blockUnpackFn[0xf0b] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetNegEtaU1: JF3 Output 00515 m_blockUnpackFn[0xf0c] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetNegEtaU1: JF3 Raw Input 00516 m_blockUnpackFn[0xf80] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetNegEtaU2: Eta0 Input 00517 m_blockUnpackFn[0xf84] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetNegEtaU2: Eta0 Raw Input 00518 m_blockUnpackFn[0xf88] = &GctFormatTranslateV38::blockToRctCaloRegions; // Leaf3JetNegEtaU2: JF1 Input 00519 m_blockUnpackFn[0xf89] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetNegEtaU2: JF1 Shared Received 00520 m_blockUnpackFn[0xf8a] = &GctFormatTranslateV38::blockToGctJetPreCluster; // Leaf3JetNegEtaU2: JF1 Shared Sent 00521 m_blockUnpackFn[0xf8b] = &GctFormatTranslateV38::blockDoNothing; // Leaf3JetNegEtaU2: JF1 Output 00522 m_blockUnpackFn[0xf8c] = &GctFormatTranslateV38::blockToFibres; // Leaf3JetNegEtaU2: JF1 Raw Input 00523 00524 00525 /*** Setup RCT Em Crate Map ***/ 00526 m_rctEmCrate[0x804] = 13; 00527 m_rctEmCrate[0x884] = 9; 00528 m_rctEmCrate[0xc04] = 4; 00529 m_rctEmCrate[0xc84] = 0; 00530 00531 00532 /*** Setup RCT jet crate map. ***/ 00533 m_rctJetCrate[0x900] = 9; // PosEta Leaf 1 JF2 00534 m_rctJetCrate[0x908] = 10; // PosEta Leaf 1 JF3 00535 m_rctJetCrate[0x988] = 17; // PosEta Leaf 1 JF1 00536 m_rctJetCrate[0xa00] = 12; // PosEta Leaf 2 JF2 00537 m_rctJetCrate[0xa08] = 13; // PosEta Leaf 2 JF3 00538 m_rctJetCrate[0xa88] = 11; // PosEta Leaf 2 JF1 00539 m_rctJetCrate[0xb00] = 15; // PosEta Leaf 3 JF2 00540 m_rctJetCrate[0xb08] = 16; // PosEta Leaf 3 JF3 00541 m_rctJetCrate[0xb88] = 14; // PosEta Leaf 3 JF1 00542 m_rctJetCrate[0xd00] = 0; // NegEta Leaf 1 JF2 00543 m_rctJetCrate[0xd08] = 1; // NegEta Leaf 1 JF3 00544 m_rctJetCrate[0xd88] = 8; // NegEta Leaf 1 JF1 00545 m_rctJetCrate[0xe00] = 3; // NegEta Leaf 2 JF2 00546 m_rctJetCrate[0xe08] = 4; // NegEta Leaf 2 JF3 00547 m_rctJetCrate[0xe88] = 2; // NegEta Leaf 2 JF1 00548 m_rctJetCrate[0xf00] = 6; // NegEta Leaf 3 JF2 00549 m_rctJetCrate[0xf08] = 7; // NegEta Leaf 3 JF3 00550 m_rctJetCrate[0xf88] = 5; // NegEta Leaf 3 JF1 00551 00552 00553 /*** Setup Block ID map for pipeline payload positions of isolated Internal EM Cands. ***/ 00554 m_internEmIsoBounds[0x680] = IsoBoundaryPair(8,15); 00555 m_internEmIsoBounds[0x800] = IsoBoundaryPair(0, 9); 00556 m_internEmIsoBounds[0x803] = IsoBoundaryPair(0, 1); 00557 m_internEmIsoBounds[0x880] = IsoBoundaryPair(0, 7); 00558 m_internEmIsoBounds[0x883] = IsoBoundaryPair(0, 1); 00559 m_internEmIsoBounds[0xc00] = IsoBoundaryPair(0, 9); 00560 m_internEmIsoBounds[0xc03] = IsoBoundaryPair(0, 1); 00561 m_internEmIsoBounds[0xc80] = IsoBoundaryPair(0, 7); 00562 m_internEmIsoBounds[0xc83] = IsoBoundaryPair(0, 1); 00563 } 00564 }
GctFormatTranslateV38::~GctFormatTranslateV38 | ( | ) | [virtual] |
virtual const BlockLengthMap& GctFormatTranslateV38::blockLengthMap | ( | ) | const [inline, protected, virtual] |
get the static block ID to block-length map.
Implements GctFormatTranslateBase.
Definition at line 52 of file GctFormatTranslateV38.h.
References m_blockLength.
virtual BlockLengthMap& GctFormatTranslateV38::blockLengthMap | ( | ) | [inline, protected, virtual] |
get the static block ID to block-length map.
Implements GctFormatTranslateBase.
Definition at line 51 of file GctFormatTranslateV38.h.
References m_blockLength.
Referenced by generateBlockHeader().
virtual const BlockNameMap& GctFormatTranslateV38::blockNameMap | ( | ) | const [inline, protected, virtual] |
get the static block ID to blockname map.
Implements GctFormatTranslateBase.
Definition at line 55 of file GctFormatTranslateV38.h.
References m_blockName.
virtual BlockNameMap& GctFormatTranslateV38::blockNameMap | ( | ) | [inline, protected, virtual] |
get the static block ID to block-name map.
Implements GctFormatTranslateBase.
Definition at line 54 of file GctFormatTranslateV38.h.
References m_blockName.
void GctFormatTranslateV38::blockToFibres | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack Fibres
Definition at line 912 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), GctUnpackCollections::gctFibres(), GctFormatTranslateBase::hltMode(), i, LogDebug, GctBlockHeader::nSamples(), and p.
Referenced by blockToFibresAndToRctEmCand(), and GctFormatTranslateV38().
00913 { 00914 // Don't want to do this in HLT optimisation mode! 00915 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of GCT Fibres"; return; } 00916 00917 unsigned int id = hdr.blockId(); 00918 unsigned int nSamples = hdr.nSamples(); 00919 unsigned int length = hdr.blockLength(); 00920 00921 // re-interpret pointer 00922 uint32_t * p = reinterpret_cast<uint32_t *>(const_cast<unsigned char *>(d)); 00923 00924 for (unsigned int i=0; i<length; ++i) { 00925 for (unsigned int bx=0; bx<nSamples; ++bx) { 00926 colls()->gctFibres()->push_back( L1GctFibreWord(*p, id, i, bx) ); 00927 ++p; 00928 } 00929 } 00930 }
void GctFormatTranslateV38::blockToFibresAndToRctEmCand | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack Fibres and RCT EM Candidates
Definition at line 932 of file GctFormatTranslateV38.cc.
References blockToFibres(), and blockToRctEmCand().
Referenced by GctFormatTranslateV38().
00933 { 00934 this->blockToRctEmCand(d, hdr); 00935 this->blockToFibres(d, hdr); 00936 }
void GctFormatTranslateV38::blockToGctEmCandsAndEnergySums | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack GCT EM Candidates and energy sums.
Definition at line 638 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctFormatTranslateBase::colls(), em, GctUnpackCollections::gctEtHad(), GctUnpackCollections::gctEtMiss(), GctUnpackCollections::gctEtTot(), GctUnpackCollections::gctIsoEm(), GctUnpackCollections::gctNonIsoEm(), GctFormatTranslateBase::hltMode(), and GctBlockHeader::nSamples().
Referenced by GctFormatTranslateV38().
00639 { 00640 const unsigned int id = hdr.blockId(); 00641 const unsigned int nSamples = hdr.nSamples(); 00642 00643 // Re-interpret pointer. p16 will be pointing at the 16 bit word that 00644 // contains the rank0 non-isolated electron of the zeroth time-sample. 00645 const uint16_t * p16 = reinterpret_cast<const uint16_t *>(d); 00646 00647 // UNPACK EM CANDS 00648 00649 const unsigned int emCandCategoryOffset = nSamples * 4; // Offset to jump from the non-iso electrons to the isolated ones. 00650 const unsigned int timeSampleOffset = nSamples * 2; // Offset to jump to next candidate pair in the same time-sample. 00651 00652 unsigned int samplesToUnpack = 1; 00653 if(!hltMode()) { samplesToUnpack = nSamples; } // Only if not running in HLT mode do we want more than 1 timesample. 00654 00655 for (unsigned int iso=0; iso<2; ++iso) // loop over non-iso/iso candidate pairs 00656 { 00657 bool isoFlag = (iso==1); 00658 00659 // Get the correct collection to put them in. 00660 L1GctEmCandCollection* em; 00661 if (isoFlag) { em = colls()->gctIsoEm(); } 00662 else { em = colls()->gctNonIsoEm(); } 00663 00664 for (unsigned int bx=0; bx<samplesToUnpack; ++bx) // loop over time samples 00665 { 00666 // cand0Offset will give the offset on p16 to get the rank 0 candidate 00667 // of the correct category and timesample. 00668 const unsigned int cand0Offset = iso*emCandCategoryOffset + bx*2; 00669 00670 em->push_back(L1GctEmCand(p16[cand0Offset], isoFlag, id, 0, bx)); // rank0 electron 00671 em->push_back(L1GctEmCand(p16[cand0Offset + timeSampleOffset], isoFlag, id, 1, bx)); // rank1 electron 00672 em->push_back(L1GctEmCand(p16[cand0Offset + 1], isoFlag, id, 2, bx)); // rank2 electron 00673 em->push_back(L1GctEmCand(p16[cand0Offset + timeSampleOffset + 1], isoFlag, id, 3, bx)); // rank3 electron 00674 } 00675 } 00676 00677 p16 += emCandCategoryOffset * 2; // Move the pointer over the data we've already unpacked. 00678 00679 // UNPACK ENERGY SUMS 00680 // NOTE: we are only unpacking one timesample of these currently! 00681 00682 colls()->gctEtTot()->push_back(L1GctEtTotal(p16[0])); // Et total (timesample 0). 00683 colls()->gctEtHad()->push_back(L1GctEtHad(p16[1])); // Et hadronic (timesample 0). 00684 00685 // 32-bit pointer for getting Missing Et. 00686 const uint32_t * p32 = reinterpret_cast<const uint32_t *>(p16); 00687 00688 colls()->gctEtMiss()->push_back(L1GctEtMiss(p32[nSamples])); // Et Miss (timesample 0). 00689 }
void GctFormatTranslateV38::blockToGctInternEmCand | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack GCT internal EM Candidates
Definition at line 750 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), end, find(), GctUnpackCollections::gctInternEm(), GctFormatTranslateBase::hltMode(), i, internEmIsoBounds(), LogDebug, GctBlockHeader::nSamples(), offset, and p.
Referenced by GctFormatTranslateV38().
00751 { 00752 // Don't want to do this in HLT optimisation mode! 00753 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of internal EM Cands"; return; } 00754 00755 unsigned int id = hdr.blockId(); 00756 unsigned int nSamples = hdr.nSamples(); 00757 unsigned int numCandPairs = hdr.blockLength(); 00758 00759 // Debug assertion to prevent problems if definitions not up to date. 00760 assert(internEmIsoBounds().find(id) != internEmIsoBounds().end()); 00761 00762 unsigned int lowerIsoPairBound = internEmIsoBounds()[id].first; 00763 unsigned int upperIsoPairBound = internEmIsoBounds()[id].second; 00764 00765 // Re-interpret pointer to 16 bits so it sees one candidate at a time. 00766 uint16_t * p = reinterpret_cast<uint16_t *>(const_cast<unsigned char *>(d)); 00767 00768 // Loop over timesamples (i.e. bunch crossings) 00769 for(unsigned int bx=0; bx < nSamples; ++bx) 00770 { 00771 // Loop over candidate pairs (i.e. each iteration unpacks a pair of candidates) 00772 for(unsigned int candPair = 0 ; candPair < numCandPairs ; ++candPair) 00773 { 00774 // Is the candidate electron pair an isolated pair or not? 00775 bool iso = ((candPair>=lowerIsoPairBound) && (candPair<=upperIsoPairBound)); 00776 00777 // Loop over the two electron candidates in each pair 00778 for(unsigned int i = 0 ; i < 2 ; ++i) 00779 { 00780 unsigned offset = 2*(bx + candPair*nSamples) + i; 00781 uint16_t candRaw = p[offset]; 00782 colls()->gctInternEm()->push_back( L1GctInternEmCand(candRaw, iso, id, candPair*2 + i, bx) ); 00783 } 00784 } 00785 } 00786 }
void GctFormatTranslateV38::blockToGctJetCandsAndCounts | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
Unpack GCT Jet Candidates and jet counts.
Definition at line 691 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctFormatTranslateBase::colls(), GctFormatTranslateBase::FORWARD_JETS, L1GctHFBitCounts::fromConcHFBitCounts(), L1GctHFRingEtSums::fromConcRingSums(), GctUnpackCollections::gctHfBitCounts(), GctUnpackCollections::gctHfRingEtSums(), GctFormatTranslateBase::gctJets(), GctFormatTranslateBase::hltMode(), pfTauBenchmarkGeneric_cfi::jets, GctBlockHeader::nSamples(), GctFormatTranslateBase::NUM_JET_CATEGORIES, and GctFormatTranslateBase::TAU_JETS.
Referenced by GctFormatTranslateV38().
00692 { 00693 const unsigned int id = hdr.blockId(); // Capture block ID. 00694 const unsigned int nSamples = hdr.nSamples(); // Number of time-samples. 00695 00696 // Re-interpret block payload pointer to 16 bits so it sees one candidate at a time. 00697 // p16 points to the start of the block payload, at the rank0 tau jet candidate. 00698 const uint16_t * p16 = reinterpret_cast<const uint16_t *>(d); 00699 00700 // UNPACK JET CANDS 00701 00702 const unsigned int jetCandCategoryOffset = nSamples * 4; // Offset to jump from one jet category to the next. 00703 const unsigned int timeSampleOffset = nSamples * 2; // Offset to jump to next candidate pair in the same time-sample. 00704 00705 unsigned int samplesToUnpack = 1; 00706 if(!hltMode()) { samplesToUnpack = nSamples; } // Only if not running in HLT mode do we want more than 1 timesample. 00707 00708 // Loop over the different catagories of jets 00709 for(unsigned int iCat = 0 ; iCat < NUM_JET_CATEGORIES ; ++iCat) 00710 { 00711 L1GctJetCandCollection * const jets = gctJets(iCat); 00712 assert(jets->empty()); // The supplied vector should be empty. 00713 00714 bool tauflag = (iCat == TAU_JETS); 00715 bool forwardFlag = (iCat == FORWARD_JETS); 00716 00717 // Loop over the different timesamples (bunch crossings). 00718 for(unsigned int bx = 0 ; bx < samplesToUnpack ; ++bx) 00719 { 00720 // cand0Offset will give the offset on p16 to get the rank 0 Jet Cand of the correct category and timesample. 00721 const unsigned int cand0Offset = iCat*jetCandCategoryOffset + bx*2; 00722 00723 // Rank 0 Jet. 00724 jets->push_back(L1GctJetCand(p16[cand0Offset], tauflag, forwardFlag, id, 0, bx)); 00725 // Rank 1 Jet. 00726 jets->push_back(L1GctJetCand(p16[cand0Offset + timeSampleOffset], tauflag, forwardFlag, id, 1, bx)); 00727 // Rank 2 Jet. 00728 jets->push_back(L1GctJetCand(p16[cand0Offset + 1], tauflag, forwardFlag, id, 2, bx)); 00729 // Rank 3 Jet. 00730 jets->push_back(L1GctJetCand(p16[cand0Offset + timeSampleOffset + 1], tauflag, forwardFlag, id, 3, bx)); 00731 } 00732 } 00733 00734 p16 += NUM_JET_CATEGORIES * jetCandCategoryOffset; // Move the pointer over the data we've already unpacked. 00735 00736 // NOW UNPACK: HFBitCounts, HFRingEtSums and Missing Ht 00737 // NOTE: we are only unpacking one timesample of these currently! 00738 00739 // Re-interpret block payload pointer to 32 bits so it sees six jet counts at a time. 00740 const uint32_t * p32 = reinterpret_cast<const uint32_t *>(p16); 00741 00742 // Channel 0 carries both HF counts and sums 00743 colls()->gctHfBitCounts()->push_back(L1GctHFBitCounts::fromConcHFBitCounts(id,6,0,p32[0])); 00744 colls()->gctHfRingEtSums()->push_back(L1GctHFRingEtSums::fromConcRingSums(id,6,0,p32[0])); 00745 00746 // Channel 1 carries Missing HT. Would be found at p32[nSamples]. Excluded from 22X backport for now. 00747 }
void GctFormatTranslateV38::blockToGctJetClusterMinimal | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack GCT internal input to wheel jet sort
Definition at line 961 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), L1GctInternJetData::fromJetClusterMinimal(), GctUnpackCollections::gctInternJets(), GctFormatTranslateBase::hltMode(), i, LogDebug, GctBlockHeader::nSamples(), and p.
Referenced by GctFormatTranslateV38().
00962 { 00963 // Don't want to do this in HLT optimisation mode! 00964 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of internal Jet Cands"; return; } 00965 00966 unsigned int id = hdr.blockId(); 00967 unsigned int nSamples = hdr.nSamples(); 00968 unsigned int length = hdr.blockLength(); 00969 00970 // Re-interpret pointer to 16 bits so it sees one candidate at a time. 00971 uint16_t * p = reinterpret_cast<uint16_t *>(const_cast<unsigned char *>(d)); 00972 00973 for (unsigned int i=0; i<length; ++i) { 00974 // Loop over timesamples (i.e. bunch crossings) 00975 for (unsigned int bx=0; bx<nSamples; ++bx) { 00976 colls()->gctInternJets()->push_back( L1GctInternJetData::fromJetClusterMinimal(L1CaloRegionDetId(0,0),id,i,bx,*p)); 00977 ++p; 00978 colls()->gctInternJets()->push_back( L1GctInternJetData::fromJetClusterMinimal(L1CaloRegionDetId(0,0),id,i,bx,*p)); 00979 ++p; 00980 } 00981 } 00982 }
void GctFormatTranslateV38::blockToGctJetPreCluster | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack GCT internal shared jet finder info
Definition at line 984 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), L1GctInternJetData::fromJetPreCluster(), GctUnpackCollections::gctInternJets(), GctFormatTranslateBase::hltMode(), i, LogDebug, GctBlockHeader::nSamples(), and p.
Referenced by GctFormatTranslateV38().
00985 { 00986 // Don't want to do this in HLT optimisation mode! 00987 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of internal Jet Cands"; return; } 00988 00989 unsigned int id = hdr.blockId(); 00990 unsigned int nSamples = hdr.nSamples(); 00991 unsigned int length = hdr.blockLength(); 00992 00993 // Re-interpret pointer to 16 bits so it sees one candidate at a time. 00994 uint16_t * p = reinterpret_cast<uint16_t *>(const_cast<unsigned char *>(d)); 00995 00996 for (unsigned int i=0; i<length; ++i) { 00997 // Loop over timesamples (i.e. bunch crossings) 00998 for (unsigned int bx=0; bx<nSamples; ++bx) { 00999 colls()->gctInternJets()->push_back( L1GctInternJetData::fromJetPreCluster(L1CaloRegionDetId(0,0),id,i,bx,*p)); 01000 ++p; 01001 colls()->gctInternJets()->push_back( L1GctInternJetData::fromJetPreCluster(L1CaloRegionDetId(0,0),id,i,bx,*p)); 01002 ++p; 01003 } 01004 } 01005 }
void GctFormatTranslateV38::blockToGctTrigObjects | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack GCT internal wheel and conc jets
Definition at line 938 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), L1GctInternJetData::fromGctTrigObject(), GctUnpackCollections::gctInternJets(), GctFormatTranslateBase::hltMode(), i, LogDebug, GctBlockHeader::nSamples(), and p.
Referenced by GctFormatTranslateV38().
00939 { 00940 // Don't want to do this in HLT optimisation mode! 00941 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of internal Jet Cands"; return; } 00942 00943 unsigned int id = hdr.blockId(); 00944 unsigned int nSamples = hdr.nSamples(); 00945 unsigned int length = hdr.blockLength(); 00946 00947 // Re-interpret pointer to 16 bits so it sees one candidate at a time. 00948 uint16_t * p = reinterpret_cast<uint16_t *>(const_cast<unsigned char *>(d)); 00949 00950 for (unsigned int i=0; i<length; ++i) { 00951 // Loop over timesamples (i.e. bunch crossings) 00952 for (unsigned int bx=0; bx<nSamples; ++bx) { 00953 colls()->gctInternJets()->push_back( L1GctInternJetData::fromGctTrigObject(L1CaloRegionDetId(0,0),id,i,bx,*p)); 00954 ++p; 00955 colls()->gctInternJets()->push_back( L1GctInternJetData::fromGctTrigObject(L1CaloRegionDetId(0,0),id,i,bx,*p)); 00956 ++p; 00957 } 00958 } 00959 }
void GctFormatTranslateV38::blockToRctCaloRegions | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
Unpack RCT Calo Regions.
Definition at line 845 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), end, find(), GctFormatTranslateBase::hltMode(), i, LogDebug, GctFormatTranslateBase::makeL1CaloRegionBackPortHack(), GctBlockHeader::nSamples(), p, GctUnpackCollections::rctCalo(), rctJetCrateMap(), and GctFormatTranslateBase::unpackSharedRegions().
Referenced by GctFormatTranslateV38().
00846 { 00847 // Don't want to do this in HLT optimisation mode! 00848 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of RCT Regions"; return; } 00849 00850 unsigned int id = hdr.blockId(); 00851 unsigned int nSamples = hdr.nSamples(); 00852 unsigned int length = hdr.blockLength(); 00853 00854 // Debug assertion to prevent problems if definitions not up to date. 00855 assert(rctJetCrateMap().find(id) != rctJetCrateMap().end()); 00856 00857 // get crate (need this to get ieta and iphi) 00858 unsigned int crate=rctJetCrateMap()[id]; 00859 00860 // re-interpret pointer 00861 uint16_t * p = reinterpret_cast<uint16_t *>(const_cast<unsigned char *>(d)); 00862 00863 // eta and phi 00864 unsigned int ieta; 00865 unsigned int iphi; 00866 00867 for (unsigned int i=0; i<length; ++i) 00868 { 00869 for (uint16_t bx=0; bx<nSamples; ++bx) 00870 { 00871 // First figure out eta and phi 00872 if (crate<9) { // negative eta 00873 ieta = 12-i; 00874 iphi = 2*((11-crate)%9); 00875 } 00876 else { // positive eta 00877 ieta = 9+i; 00878 iphi = 2*((20-crate)%9); 00879 } 00880 00881 // Skip the first four regions (i.e. where i<2) which are duplicates (shared data). 00882 if (i>1) { 00883 // First region is phi=0 00884 colls()->rctCalo()->push_back( makeL1CaloRegionBackPortHack(*p, ieta, iphi, bx) ); 00885 ++p; 00886 // Second region is phi=1 00887 if (iphi>0) { iphi-=1; } 00888 else { iphi = 17; } 00889 colls()->rctCalo()->push_back( makeL1CaloRegionBackPortHack(*p, ieta, iphi, bx) ); 00890 ++p; 00891 } 00892 // Unpack the shared data if asked for debugging 00893 else if (unpackSharedRegions()){ 00894 // First region is phi=0 00895 colls()->rctCalo()->push_back( makeL1CaloRegionBackPortHack(*p, ieta, iphi, bx) ); 00896 ++p; 00897 // Second region is phi=1 00898 if (iphi>0) { iphi-=1; } 00899 else { iphi = 17; } 00900 colls()->rctCalo()->push_back( makeL1CaloRegionBackPortHack(*p, ieta, iphi, bx) ); 00901 ++p; 00902 00903 } else { // Skip the shared data 00904 ++p; 00905 ++p; 00906 } 00907 } 00908 } 00909 }
void GctFormatTranslateV38::blockToRctEmCand | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [private] |
unpack RCT EM Candidates
Definition at line 791 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctBlockHeader::blockLength(), GctFormatTranslateBase::colls(), GctFormatTranslateBase::hltMode(), i, LogDebug, GctBlockHeader::nSamples(), p, GctUnpackCollections::rctEm(), rctEmCrateMap(), SourceCardRouting::SFPtoEMU(), and GctFormatTranslateBase::srcCardRouting().
Referenced by blockToFibresAndToRctEmCand().
00792 { 00793 // Don't want to do this in HLT optimisation mode! 00794 if(hltMode()) { LogDebug("GCT") << "HLT mode - skipping unpack of RCT EM Cands"; return; } 00795 00796 unsigned int id = hdr.blockId(); 00797 unsigned int nSamples = hdr.nSamples(); 00798 unsigned int length = hdr.blockLength(); 00799 00800 // re-interpret pointer 00801 uint16_t * p = reinterpret_cast<uint16_t *>(const_cast<unsigned char *>(d)); 00802 00803 // arrays of source card data 00804 uint16_t sfp[2][4]; // [ cycle ] [ SFP ] 00805 uint16_t eIsoRank[4]; 00806 uint16_t eIsoCard[4]; 00807 uint16_t eIsoRgn[4]; 00808 uint16_t eNonIsoRank[4]; 00809 uint16_t eNonIsoCard[4]; 00810 uint16_t eNonIsoRgn[4]; 00811 uint16_t MIPbits[7][2]; 00812 uint16_t QBits[7][2]; 00813 00814 unsigned int bx = 0; 00815 00816 // loop over crates 00817 for (unsigned int crate=rctEmCrateMap()[id]; crate<rctEmCrateMap()[id]+length/3; ++crate) { 00818 00819 // read SC SFP words 00820 for (unsigned short iSfp=0 ; iSfp<4 ; ++iSfp) { 00821 for (unsigned short cyc=0 ; cyc<2 ; ++cyc) { 00822 if (iSfp==0) { sfp[cyc][iSfp] = 0; } // muon bits 00823 else { // EM candidate 00824 sfp[cyc][iSfp] = *p; 00825 ++p; 00826 } 00827 } 00828 p = p + 2*(nSamples-1); 00829 } 00830 00831 // fill SC arrays 00832 srcCardRouting().SFPtoEMU(eIsoRank, eIsoCard, eIsoRgn, eNonIsoRank, eNonIsoCard, eNonIsoRgn, MIPbits, QBits, sfp); 00833 00834 // create EM cands 00835 for (unsigned short int i=0; i<4; ++i) { 00836 colls()->rctEm()->push_back( L1CaloEmCand( eIsoRank[i], eIsoRgn[i], eIsoCard[i], crate, true, i, bx) ); 00837 } 00838 for (unsigned short int i=0; i<4; ++i) { 00839 colls()->rctEm()->push_back( L1CaloEmCand( eNonIsoRank[i], eNonIsoRgn[i], eNonIsoCard[i], crate, false, i, bx) ); 00840 } 00841 } 00842 }
bool GctFormatTranslateV38::convertBlock | ( | const unsigned char * | d, | |
const GctBlockHeader & | hdr | |||
) | [virtual] |
Get digis from the block - will return true if it succeeds, false otherwise.
Implements GctFormatTranslateBase.
Definition at line 598 of file GctFormatTranslateV38.cc.
References GctBlockHeader::blockId(), GctFormatTranslateBase::checkBlock(), m_blockUnpackFn, GctBlockHeader::nSamples(), and edm::second().
00599 { 00600 // if the block has no time samples, don't bother with it. 00601 if ( hdr.nSamples() < 1 ) { return true; } 00602 00603 if(!checkBlock(hdr)) { return false; } // Check the block to see if it's possible to unpack. 00604 00605 // The header validity check above will protect against 00606 // the map::find() method returning the end of the map, 00607 // assuming the block header definitions are up-to-date. 00608 (this->*m_blockUnpackFn.find(hdr.blockId())->second)(data, hdr); // Calls the correct unpack function, based on block ID. 00609 00610 return true; 00611 }
GctBlockHeader GctFormatTranslateV38::generateBlockHeader | ( | const unsigned char * | data | ) | const [virtual] |
Generate a block header from four 8-bit values.
Implements GctFormatTranslateBase.
Definition at line 570 of file GctFormatTranslateV38.cc.
References blockLengthMap(), and TrackValidation_HighPurity_cff::valid.
00571 { 00572 // Turn the four 8-bit header words into the full 32-bit header. 00573 uint32_t hdr = data[0] + (data[1]<<8) + (data[2]<<16) + (data[3]<<24); 00574 00575 // Bit mapping of V35 header: 00576 // -------------------------- 00577 // 11:0 => block_id Unique pipeline identifier. 00578 // - 3:0 =>> pipe_id There can be up to 16 different pipelines per FPGA. 00579 // - 6:4 =>> reserved Do not use yet. Set to zero. 00580 // - 11:7 =>> fpga geograpical add The VME geographical address of the FPGA. 00581 // 15:12 => event_id Determined locally. Not reset by Resync. 00582 // 19:16 => number_of_time_samples If time samples 15 or more then value = 15. 00583 // 31:20 => event_bcid The bunch crossing the data was recorded. 00584 00585 unsigned blockId = hdr & 0xfff; 00586 unsigned blockLength = 0; // Set to zero until we know it's a valid block 00587 unsigned nSamples = (hdr>>16) & 0xf; 00588 unsigned bxId = (hdr>>20) & 0xfff; 00589 unsigned eventId = (hdr>>12) & 0xf; 00590 bool valid = (blockLengthMap().find(blockId) != blockLengthMap().end()); 00591 00592 if(valid) { blockLength = blockLengthMap().find(blockId)->second; } 00593 00594 return GctBlockHeader(blockId, blockLength, nSamples, bxId, eventId, valid); 00595 }
uint32_t GctFormatTranslateV38::generateRawHeader | ( | const uint32_t | blockId, | |
const uint32_t | nSamples, | |||
const uint32_t | bxId, | |||
const uint32_t | eventId | |||
) | const [protected, virtual] |
Returns a raw 32-bit header word generated from the blockId, number of time samples, bunch-crossing and event IDs.
Implements GctFormatTranslateBase.
Definition at line 616 of file GctFormatTranslateV38.cc.
00620 { 00621 // Bit mapping of V35 header: 00622 // -------------------------- 00623 // 11:0 => block_id Unique pipeline identifier. 00624 // - 3:0 =>> pipe_id There can be up to 16 different pipelines per FPGA. 00625 // - 6:4 =>> reserved Do not use yet. Set to zero. 00626 // - 11:7 =>> fpga geograpical add The VME geographical address of the FPGA. 00627 // 15:12 => event_id Determined locally. Not reset by Resync. 00628 // 19:16 => number_of_time_samples If time samples 15 or more then value = 15. 00629 // 31:20 => event_bxId The bunch crossing the data was recorded. 00630 00631 return ((bxId & 0xfff) << 20) | ((nSamples & 0xf) << 16) | ((eventId & 0xf) << 12) | (blockId & 0xfff); 00632 }
virtual const BlockIdToEmCandIsoBoundMap& GctFormatTranslateV38::internEmIsoBounds | ( | ) | const [inline, protected, virtual] |
get the static intern EM cand isolated boundary map.
Implements GctFormatTranslateBase.
Definition at line 64 of file GctFormatTranslateV38.h.
References m_internEmIsoBounds.
virtual BlockIdToEmCandIsoBoundMap& GctFormatTranslateV38::internEmIsoBounds | ( | ) | [inline, protected, virtual] |
get the static intern EM cand isolated boundary map.
Implements GctFormatTranslateBase.
Definition at line 63 of file GctFormatTranslateV38.h.
References m_internEmIsoBounds.
Referenced by blockToGctInternEmCand().
virtual const BlkToRctCrateMap& GctFormatTranslateV38::rctEmCrateMap | ( | ) | const [inline, protected, virtual] |
get static the block ID to RCT crate map for electrons.
Implements GctFormatTranslateBase.
Definition at line 58 of file GctFormatTranslateV38.h.
References m_rctEmCrate.
virtual BlkToRctCrateMap& GctFormatTranslateV38::rctEmCrateMap | ( | ) | [inline, protected, virtual] |
get the static block ID to RCT crate map for electrons.
Implements GctFormatTranslateBase.
Definition at line 57 of file GctFormatTranslateV38.h.
References m_rctEmCrate.
Referenced by blockToRctEmCand().
virtual const BlkToRctCrateMap& GctFormatTranslateV38::rctJetCrateMap | ( | ) | const [inline, protected, virtual] |
get the static block ID to RCT crate map for jets
Implements GctFormatTranslateBase.
Definition at line 61 of file GctFormatTranslateV38.h.
References m_rctJetCrate.
virtual BlkToRctCrateMap& GctFormatTranslateV38::rctJetCrateMap | ( | ) | [inline, protected, virtual] |
get the static block ID to RCT crate map for jets
Implements GctFormatTranslateBase.
Definition at line 60 of file GctFormatTranslateV38.h.
References m_rctJetCrate.
Referenced by blockToRctCaloRegions().
GctFormatTranslateV38::BlockLengthMap GctFormatTranslateV38::m_blockLength = GctFormatTranslateV38::BlockLengthMap() [static, private] |
Map to translate block number to fundamental size of a block (i.e. for 1 time-sample).
Definition at line 88 of file GctFormatTranslateV38.h.
Referenced by blockLengthMap(), and GctFormatTranslateV38().
GctFormatTranslateV38::BlockNameMap GctFormatTranslateV38::m_blockName = GctFormatTranslateV38::BlockNameMap() [static, private] |
Map to hold a description for each block number.
Definition at line 91 of file GctFormatTranslateV38.h.
Referenced by blockNameMap(), and GctFormatTranslateV38().
GctFormatTranslateV38::BlockIdToUnpackFnMap GctFormatTranslateV38::m_blockUnpackFn = GctFormatTranslateV38::BlockIdToUnpackFnMap() [static, private] |
Block ID to unpack function map.
Definition at line 104 of file GctFormatTranslateV38.h.
Referenced by convertBlock(), and GctFormatTranslateV38().
GctFormatTranslateV38::BlockIdToEmCandIsoBoundMap GctFormatTranslateV38::m_internEmIsoBounds = GctFormatTranslateV38::BlockIdToEmCandIsoBoundMap() [static, private] |
A map of Block IDs to IsoBoundaryPairs for storing the location of the isolated Internal EM cands in the pipeline, as this differs with Block ID.
Definition at line 101 of file GctFormatTranslateV38.h.
Referenced by GctFormatTranslateV38(), and internEmIsoBounds().
GctFormatTranslateV38::BlkToRctCrateMap GctFormatTranslateV38::m_rctEmCrate = GctFormatTranslateV38::BlkToRctCrateMap() [static, private] |
Map to relate capture block ID to the RCT crate the data originated from (for electrons).
Definition at line 94 of file GctFormatTranslateV38.h.
Referenced by GctFormatTranslateV38(), and rctEmCrateMap().
GctFormatTranslateV38::BlkToRctCrateMap GctFormatTranslateV38::m_rctJetCrate = GctFormatTranslateV38::BlkToRctCrateMap() [static, private] |
Map to relate capture block ID to the RCT crate the data originated from (for jets).
Definition at line 97 of file GctFormatTranslateV38.h.
Referenced by GctFormatTranslateV38(), and rctJetCrateMap().