30 static bool initClass =
true;
198 m_blockName.insert(make_pair(0x580,
"ConcJet: Input TrigPathA (Jet Cands)"));
199 m_blockName.insert(make_pair(0x581,
"ConcJet: Input TrigPathB (HF Rings)"));
200 m_blockName.insert(make_pair(0x583,
"ConcJet: Jet Cands and Counts Output to GT"));
201 m_blockName.insert(make_pair(0x587,
"ConcJet: BX & Orbit Info"));
203 m_blockName.insert(make_pair(0x680,
"ConcElec: Input TrigPathA (EM Cands)"));
204 m_blockName.insert(make_pair(0x681,
"ConcElec: Input TrigPathB (Et Sums)"));
205 m_blockName.insert(make_pair(0x682,
"ConcElec: Input TrigPathC (Ht Sums)"));
206 m_blockName.insert(make_pair(0x683,
"ConcElec: EM Cands and Energy Sums Output to GT"));
207 m_blockName.insert(make_pair(0x686,
"ConcElec: Test (GT Serdes Loopback)"));
208 m_blockName.insert(make_pair(0x687,
"ConcElec: BX & Orbit Info"));
210 m_blockName.insert(make_pair(0x800,
"Leaf0ElecPosEtaU1: Sort Input"));
211 m_blockName.insert(make_pair(0x803,
"Leaf0ElecPosEtaU1: Sort Output"));
212 m_blockName.insert(make_pair(0x804,
"Leaf0ElecPosEtaU1: Raw Input"));
213 m_blockName.insert(make_pair(0x880,
"Leaf0ElecPosEtaU2: Sort Input"));
214 m_blockName.insert(make_pair(0x883,
"Leaf0ElecPosEtaU2: Sort Output"));
215 m_blockName.insert(make_pair(0x884,
"Leaf0ElecPosEtaU2: Raw Input"));
216 m_blockName.insert(make_pair(0xc00,
"Leaf0ElecNegEtaU1: Sort Input"));
217 m_blockName.insert(make_pair(0xc03,
"Leaf0ElecNegEtaU1: Sort Output"));
218 m_blockName.insert(make_pair(0xc04,
"Leaf0ElecNegEtaU1: Raw Input"));
219 m_blockName.insert(make_pair(0xc80,
"Leaf0ElecNegEtaU2: Sort Input"));
220 m_blockName.insert(make_pair(0xc83,
"Leaf0ElecNegEtaU2: Sort Output"));
221 m_blockName.insert(make_pair(0xc84,
"Leaf0ElecNegEtaU2: Raw Input"));
223 m_blockName.insert(make_pair(0x300,
"WheelPosEtaJet: Input TrigPathA (Jet Sort)"));
224 m_blockName.insert(make_pair(0x303,
"WheelPosEtaJet: Output TrigPathA (Jet Sort)"));
225 m_blockName.insert(make_pair(0x306,
"WheelPosEtaJet: Test (deprecated)"));
226 m_blockName.insert(make_pair(0x307,
"WheelPosEtaJet: Info (deprecated)"));
228 m_blockName.insert(make_pair(0x380,
"WheelPosEtaEnergy: Input TrigPathA (Et)"));
229 m_blockName.insert(make_pair(0x381,
"WheelPosEtaEnergy: Input TrigPathB (Ht)"));
230 m_blockName.insert(make_pair(0x383,
"WheelPosEtaEnergy: Output TrigPathA (Et)"));
231 m_blockName.insert(make_pair(0x385,
"WheelPosEtaEnergy: Output TrigPathB (Ht)"));
232 m_blockName.insert(make_pair(0x386,
"WheelPosEtaEnergy: Test"));
233 m_blockName.insert(make_pair(0x387,
"WheelPosEtaEnergy: BX & Orbit Info"));
235 m_blockName.insert(make_pair(0x700,
"WheelNegEtaJet: Input TrigPathA (Jet Sort)"));
236 m_blockName.insert(make_pair(0x703,
"WheelNegEtaJet: Output TrigPathA (Jet Sort)"));
237 m_blockName.insert(make_pair(0x706,
"WheelNegEtaJet: Test (deprecated)"));
238 m_blockName.insert(make_pair(0x707,
"WheelNegEtaJet: Info (deprecated)"));
240 m_blockName.insert(make_pair(0x780,
"WheelNegEtaEnergy: Input TrigPathA (Et)"));
241 m_blockName.insert(make_pair(0x781,
"WheelNegEtaEnergy: Input TrigPathB (Ht)"));
242 m_blockName.insert(make_pair(0x783,
"WheelNegEtaEnergy: Output TrigPathA (Et)"));
243 m_blockName.insert(make_pair(0x785,
"WheelNegEtaEnergy: Output TrigPathB (Ht)"));
244 m_blockName.insert(make_pair(0x786,
"WheelNegEtaEnergy: Test"));
245 m_blockName.insert(make_pair(0x787,
"WheelNegEtaEnergy: BX & Orbit Info"));
247 m_blockName.insert(make_pair(0x900,
"Leaf1JetPosEtaU1: JF2 Input"));
248 m_blockName.insert(make_pair(0x901,
"Leaf1JetPosEtaU1: JF2 Shared Received"));
249 m_blockName.insert(make_pair(0x902,
"Leaf1JetPosEtaU1: JF2 Shared Sent"));
250 m_blockName.insert(make_pair(0x903,
"Leaf1JetPosEtaU1: JF2 Output"));
251 m_blockName.insert(make_pair(0x904,
"Leaf1JetPosEtaU1: JF2 Raw Input"));
252 m_blockName.insert(make_pair(0x908,
"Leaf1JetPosEtaU1: JF3 Input"));
253 m_blockName.insert(make_pair(0x909,
"Leaf1JetPosEtaU1: JF3 Shared Received"));
254 m_blockName.insert(make_pair(0x90a,
"Leaf1JetPosEtaU1: JF3 Shared Sent"));
255 m_blockName.insert(make_pair(0x90b,
"Leaf1JetPosEtaU1: JF3 Output"));
256 m_blockName.insert(make_pair(0x90c,
"Leaf1JetPosEtaU1: JF3 Raw Input"));
257 m_blockName.insert(make_pair(0x980,
"Leaf1JetPosEtaU2: Eta0 Input"));
258 m_blockName.insert(make_pair(0x984,
"Leaf1JetPosEtaU2: Eta0 Raw Input"));
259 m_blockName.insert(make_pair(0x988,
"Leaf1JetPosEtaU2: JF1 Input"));
260 m_blockName.insert(make_pair(0x989,
"Leaf1JetPosEtaU2: JF1 Shared Received"));
261 m_blockName.insert(make_pair(0x98a,
"Leaf1JetPosEtaU2: JF1 Shared Sent"));
262 m_blockName.insert(make_pair(0x98b,
"Leaf1JetPosEtaU2: JF1 Output"));
263 m_blockName.insert(make_pair(0x98c,
"Leaf1JetPosEtaU2: JF1 Raw Input"));
264 m_blockName.insert(make_pair(0xa00,
"Leaf2JetPosEtaU1: JF2 Input"));
265 m_blockName.insert(make_pair(0xa01,
"Leaf2JetPosEtaU1: JF2 Shared Received"));
266 m_blockName.insert(make_pair(0xa02,
"Leaf2JetPosEtaU1: JF2 Shared Sent"));
267 m_blockName.insert(make_pair(0xa03,
"Leaf2JetPosEtaU1: JF2 Output"));
268 m_blockName.insert(make_pair(0xa04,
"Leaf2JetPosEtaU1: JF2 Raw Input"));
269 m_blockName.insert(make_pair(0xa08,
"Leaf2JetPosEtaU1: JF3 Input"));
270 m_blockName.insert(make_pair(0xa09,
"Leaf2JetPosEtaU1: JF3 Shared Received"));
271 m_blockName.insert(make_pair(0xa0a,
"Leaf2JetPosEtaU1: JF3 Shared Sent"));
272 m_blockName.insert(make_pair(0xa0b,
"Leaf2JetPosEtaU1: JF3 Output"));
273 m_blockName.insert(make_pair(0xa0c,
"Leaf2JetPosEtaU1: JF3 Raw Input"));
274 m_blockName.insert(make_pair(0xa80,
"Leaf2JetPosEtaU2: Eta0 Input"));
275 m_blockName.insert(make_pair(0xa84,
"Leaf2JetPosEtaU2: Eta0 Raw Input"));
276 m_blockName.insert(make_pair(0xa88,
"Leaf2JetPosEtaU2: JF1 Input"));
277 m_blockName.insert(make_pair(0xa89,
"Leaf2JetPosEtaU2: JF1 Shared Received"));
278 m_blockName.insert(make_pair(0xa8a,
"Leaf2JetPosEtaU2: JF1 Shared Sent"));
279 m_blockName.insert(make_pair(0xa8b,
"Leaf2JetPosEtaU2: JF1 Output"));
280 m_blockName.insert(make_pair(0xa8c,
"Leaf2JetPosEtaU2: JF1 Raw Input"));
281 m_blockName.insert(make_pair(0xb00,
"Leaf3JetPosEtaU1: JF2 Input"));
282 m_blockName.insert(make_pair(0xb01,
"Leaf3JetPosEtaU1: JF2 Shared Received"));
283 m_blockName.insert(make_pair(0xb02,
"Leaf3JetPosEtaU1: JF2 Shared Sent"));
284 m_blockName.insert(make_pair(0xb03,
"Leaf3JetPosEtaU1: JF2 Output"));
285 m_blockName.insert(make_pair(0xb04,
"Leaf3JetPosEtaU1: JF2 Raw Input"));
286 m_blockName.insert(make_pair(0xb08,
"Leaf3JetPosEtaU1: JF3 Input"));
287 m_blockName.insert(make_pair(0xb09,
"Leaf3JetPosEtaU1: JF3 Shared Received"));
288 m_blockName.insert(make_pair(0xb0a,
"Leaf3JetPosEtaU1: JF3 Shared Sent"));
289 m_blockName.insert(make_pair(0xb0b,
"Leaf3JetPosEtaU1: JF3 Output"));
290 m_blockName.insert(make_pair(0xb0c,
"Leaf3JetPosEtaU1: JF3 Raw Input"));
291 m_blockName.insert(make_pair(0xb80,
"Leaf3JetPosEtaU2: Eta0 Input"));
292 m_blockName.insert(make_pair(0xb84,
"Leaf3JetPosEtaU2: Eta0 Raw Input"));
293 m_blockName.insert(make_pair(0xb88,
"Leaf3JetPosEtaU2: JF1 Input"));
294 m_blockName.insert(make_pair(0xb89,
"Leaf3JetPosEtaU2: JF1 Shared Received"));
295 m_blockName.insert(make_pair(0xb8a,
"Leaf3JetPosEtaU2: JF1 Shared Sent"));
296 m_blockName.insert(make_pair(0xb8b,
"Leaf3JetPosEtaU2: JF1 Output"));
297 m_blockName.insert(make_pair(0xb8c,
"Leaf3JetPosEtaU2: JF1 Raw Input"));
299 m_blockName.insert(make_pair(0xd00,
"Leaf1JetNegEtaU1: JF2 Input"));
300 m_blockName.insert(make_pair(0xd01,
"Leaf1JetNegEtaU1: JF2 Shared Received"));
301 m_blockName.insert(make_pair(0xd02,
"Leaf1JetNegEtaU1: JF2 Shared Sent"));
302 m_blockName.insert(make_pair(0xd03,
"Leaf1JetNegEtaU1: JF2 Output"));
303 m_blockName.insert(make_pair(0xd04,
"Leaf1JetNegEtaU1: JF2 Raw Input"));
304 m_blockName.insert(make_pair(0xd08,
"Leaf1JetNegEtaU1: JF3 Input"));
305 m_blockName.insert(make_pair(0xd09,
"Leaf1JetNegEtaU1: JF3 Shared Received"));
306 m_blockName.insert(make_pair(0xd0a,
"Leaf1JetNegEtaU1: JF3 Shared Sent"));
307 m_blockName.insert(make_pair(0xd0b,
"Leaf1JetNegEtaU1: JF3 Output"));
308 m_blockName.insert(make_pair(0xd0c,
"Leaf1JetNegEtaU1: JF3 Raw Input"));
309 m_blockName.insert(make_pair(0xd80,
"Leaf1JetNegEtaU2: Eta0 Input"));
310 m_blockName.insert(make_pair(0xd84,
"Leaf1JetNegEtaU2: Eta0 Raw Input"));
311 m_blockName.insert(make_pair(0xd88,
"Leaf1JetNegEtaU2: JF1 Input"));
312 m_blockName.insert(make_pair(0xd89,
"Leaf1JetNegEtaU2: JF1 Shared Received"));
313 m_blockName.insert(make_pair(0xd8a,
"Leaf1JetNegEtaU2: JF1 Shared Sent"));
314 m_blockName.insert(make_pair(0xd8b,
"Leaf1JetNegEtaU2: JF1 Output"));
315 m_blockName.insert(make_pair(0xd8c,
"Leaf1JetNegEtaU2: JF1 Raw Input"));
316 m_blockName.insert(make_pair(0xe00,
"Leaf2JetNegEtaU1: JF2 Input"));
317 m_blockName.insert(make_pair(0xe01,
"Leaf2JetNegEtaU1: JF2 Shared Received"));
318 m_blockName.insert(make_pair(0xe02,
"Leaf2JetNegEtaU1: JF2 Shared Sent"));
319 m_blockName.insert(make_pair(0xe03,
"Leaf2JetNegEtaU1: JF2 Output"));
320 m_blockName.insert(make_pair(0xe04,
"Leaf2JetNegEtaU1: JF2 Raw Input"));
321 m_blockName.insert(make_pair(0xe08,
"Leaf2JetNegEtaU1: JF3 Input"));
322 m_blockName.insert(make_pair(0xe09,
"Leaf2JetNegEtaU1: JF3 Shared Received"));
323 m_blockName.insert(make_pair(0xe0a,
"Leaf2JetNegEtaU1: JF3 Shared Sent"));
324 m_blockName.insert(make_pair(0xe0b,
"Leaf2JetNegEtaU1: JF3 Output"));
325 m_blockName.insert(make_pair(0xe0c,
"Leaf2JetNegEtaU1: JF3 Raw Input"));
326 m_blockName.insert(make_pair(0xe80,
"Leaf2JetNegEtaU2: Eta0 Input"));
327 m_blockName.insert(make_pair(0xe84,
"Leaf2JetNegEtaU2: Eta0 Raw Input"));
328 m_blockName.insert(make_pair(0xe88,
"Leaf2JetNegEtaU2: JF1 Input"));
329 m_blockName.insert(make_pair(0xe89,
"Leaf2JetNegEtaU2: JF1 Shared Received"));
330 m_blockName.insert(make_pair(0xe8a,
"Leaf2JetNegEtaU2: JF1 Shared Sent"));
331 m_blockName.insert(make_pair(0xe8b,
"Leaf2JetNegEtaU2: JF1 Output"));
332 m_blockName.insert(make_pair(0xe8c,
"Leaf2JetNegEtaU2: JF1 Raw Input"));
333 m_blockName.insert(make_pair(0xf00,
"Leaf3JetNegEtaU1: JF2 Input"));
334 m_blockName.insert(make_pair(0xf01,
"Leaf3JetNegEtaU1: JF2 Shared Received"));
335 m_blockName.insert(make_pair(0xf02,
"Leaf3JetNegEtaU1: JF2 Shared Sent"));
336 m_blockName.insert(make_pair(0xf03,
"Leaf3JetNegEtaU1: JF2 Output"));
337 m_blockName.insert(make_pair(0xf04,
"Leaf3JetNegEtaU1: JF2 Raw Input"));
338 m_blockName.insert(make_pair(0xf08,
"Leaf3JetNegEtaU1: JF3 Input"));
339 m_blockName.insert(make_pair(0xf09,
"Leaf3JetNegEtaU1: JF3 Shared Received"));
340 m_blockName.insert(make_pair(0xf0a,
"Leaf3JetNegEtaU1: JF3 Shared Sent"));
341 m_blockName.insert(make_pair(0xf0b,
"Leaf3JetNegEtaU1: JF3 Output"));
342 m_blockName.insert(make_pair(0xf0c,
"Leaf3JetNegEtaU1: JF3 Raw Input"));
343 m_blockName.insert(make_pair(0xf80,
"Leaf3JetNegEtaU2: Eta0 Input"));
344 m_blockName.insert(make_pair(0xf84,
"Leaf3JetNegEtaU2: Eta0 Raw Input"));
345 m_blockName.insert(make_pair(0xf88,
"Leaf3JetNegEtaU2: JF1 Input"));
346 m_blockName.insert(make_pair(0xf89,
"Leaf3JetNegEtaU2: JF1 Shared Received"));
347 m_blockName.insert(make_pair(0xf8a,
"Leaf3JetNegEtaU2: JF1 Shared Sent"));
348 m_blockName.insert(make_pair(0xf8b,
"Leaf3JetNegEtaU2: JF1 Output"));
349 m_blockName.insert(make_pair(0xf8c,
"Leaf3JetNegEtaU2: JF1 Raw Input"));
558 uint32_t hdr = data[0] + (data[1]<<8) + (data[2]<<16) + (data[3]<<24);
570 unsigned blockId = hdr & 0xfff;
571 unsigned blockLength = 0;
572 unsigned nSamples = (hdr>>16) & 0xf;
573 unsigned bxId = (hdr>>20) & 0xfff;
574 unsigned eventId = (hdr>>12) & 0xf;
577 if(valid) { blockLength =
blockLengthMap().find(blockId)->second; }
579 return GctBlockHeader(blockId, blockLength, nSamples, bxId, eventId, valid);
586 if ( hdr.
nSamples() < 1 ) {
return true; }
602 const uint32_t nSamples,
604 const uint32_t eventId)
const
616 return ((bxId & 0xfff) << 20) | ((nSamples & 0xf) << 16) | ((eventId & 0xf) << 12) | (blockId & 0xfff);
625 const unsigned int id = hdr.
blockId();
626 const unsigned int nSamples = hdr.
nSamples();
630 const uint16_t * p16 =
reinterpret_cast<const uint16_t *
>(d);
634 const unsigned int emCandCategoryOffset = nSamples * 4;
635 const unsigned int timeSampleOffset = nSamples * 2;
637 unsigned int samplesToUnpack = 1;
638 if(!
hltMode()) { samplesToUnpack = nSamples; }
640 for (
unsigned int iso=0; iso<2; ++iso)
642 bool isoFlag = (iso==1);
649 for (
unsigned int bx=0; bx<samplesToUnpack; ++bx)
653 const unsigned int cand0Offset = iso*emCandCategoryOffset + bx*2;
655 em->push_back(
L1GctEmCand(p16[cand0Offset], isoFlag,
id, 0, bx));
656 em->push_back(
L1GctEmCand(p16[cand0Offset + timeSampleOffset], isoFlag,
id, 1, bx));
657 em->push_back(
L1GctEmCand(p16[cand0Offset + 1], isoFlag,
id, 2, bx));
658 em->push_back(
L1GctEmCand(p16[cand0Offset + timeSampleOffset + 1], isoFlag,
id, 3, bx));
662 p16 += emCandCategoryOffset * 2;
671 const uint32_t * p32 =
reinterpret_cast<const uint32_t *
>(p16);
678 const unsigned int id = hdr.
blockId();
679 const unsigned int nSamples = hdr.
nSamples();
683 const uint16_t * p16 =
reinterpret_cast<const uint16_t *
>(d);
687 const unsigned int jetCandCategoryOffset = nSamples * 4;
688 const unsigned int timeSampleOffset = nSamples * 2;
690 unsigned int samplesToUnpack = 1;
691 if(!
hltMode()) { samplesToUnpack = nSamples; }
697 assert(jets->empty());
703 for(
unsigned int bx = 0 ; bx < samplesToUnpack ; ++bx)
706 const unsigned int cand0Offset = iCat*jetCandCategoryOffset + bx*2;
709 jets->push_back(
L1GctJetCand(p16[cand0Offset], tauflag, forwardFlag,
id, 0, bx));
711 jets->push_back(
L1GctJetCand(p16[cand0Offset + timeSampleOffset], tauflag, forwardFlag,
id, 1, bx));
713 jets->push_back(
L1GctJetCand(p16[cand0Offset + 1], tauflag, forwardFlag,
id, 2, bx));
715 jets->push_back(
L1GctJetCand(p16[cand0Offset + timeSampleOffset + 1], tauflag, forwardFlag,
id, 3, bx));
719 p16 += NUM_JET_CATEGORIES * jetCandCategoryOffset;
725 const uint32_t * p32 =
reinterpret_cast<const uint32_t *
>(p16);
737 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal EM Cands";
return; }
739 unsigned int id = hdr.
blockId();
740 unsigned int nSamples = hdr.
nSamples();
750 const uint16_t *
p =
reinterpret_cast<const uint16_t *
>(d);
753 for(
unsigned int bx=0; bx < nSamples; ++bx)
756 for(
unsigned int candPair = 0 ; candPair < numCandPairs ; ++candPair)
759 bool iso = ((candPair>=lowerIsoPairBound) && (candPair<=upperIsoPairBound));
762 for(
unsigned int i = 0 ;
i < 2 ; ++
i)
764 unsigned offset = 2*(bx + candPair*nSamples) +
i;
765 uint16_t candRaw = p[
offset];
778 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of RCT EM Cands";
return; }
780 unsigned int id = hdr.
blockId();
781 unsigned int nSamples = hdr.
nSamples();
785 const uint16_t *
p =
reinterpret_cast<const uint16_t *
>(d);
789 uint16_t eIsoRank[4];
790 uint16_t eIsoCard[4];
792 uint16_t eNonIsoRank[4];
793 uint16_t eNonIsoCard[4];
794 uint16_t eNonIsoRgn[4];
795 uint16_t MIPbits[7][2];
796 uint16_t QBits[7][2];
804 for (
unsigned short iSfp=0 ; iSfp<4 ; ++iSfp) {
805 for (
unsigned short cyc=0 ; cyc<2 ; ++cyc) {
806 if (iSfp==0) { sfp[cyc][iSfp] = 0; }
812 p = p + 2*(nSamples-1);
816 srcCardRouting().
SFPtoEMU(eIsoRank, eIsoCard, eIsoRgn, eNonIsoRank, eNonIsoCard, eNonIsoRgn, MIPbits, QBits, sfp);
819 for (
unsigned short int i=0;
i<4; ++
i) {
822 for (
unsigned short int i=0;
i<4; ++
i) {
823 colls()->
rctEm()->push_back(
L1CaloEmCand( eNonIsoRank[
i], eNonIsoRgn[i], eNonIsoCard[i], crate,
false, i, bx) );
832 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of RCT Regions";
return; }
834 unsigned int id = hdr.
blockId();
835 unsigned int nSamples = hdr.
nSamples();
845 const uint16_t *
p =
reinterpret_cast<const uint16_t *
>(d);
851 for (
unsigned int i=0;
i<length; ++
i) {
852 for (uint16_t bx=0; bx<nSamples; ++bx) {
856 iphi = 2*((11-crate)%9);
859 iphi = 2*((20-crate)%9);
884 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of GCT Fibres";
return; }
886 unsigned int id = hdr.
blockId();
887 unsigned int nSamples = hdr.
nSamples();
891 const uint32_t *
p =
reinterpret_cast<const uint32_t *
>(d);
893 for (
unsigned int i=0;
i<length; ++
i) {
894 for (
unsigned int bx=0; bx<nSamples; ++bx) {
911 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal Et Sums";
return; }
913 unsigned int id = hdr.
blockId();
914 unsigned int nSamples = hdr.
nSamples();
918 const uint32_t *
p =
reinterpret_cast<const uint32_t *
>(d);
920 for (
unsigned int i=0;
i<length; ++
i) {
922 for (
unsigned int bx=0; bx<nSamples; ++bx) {
932 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal Jet Cands";
return; }
934 unsigned int id = hdr.
blockId();
935 unsigned int nSamples = hdr.
nSamples();
939 const uint32_t *
p =
reinterpret_cast<const uint32_t *
>(d);
941 for (
unsigned int i=0;
i<length; ++
i) {
943 for (
unsigned int bx=0; bx<nSamples; ++bx) {
958 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal Jet Cands";
return; }
960 unsigned int id = hdr.
blockId();
961 unsigned int nSamples = hdr.
nSamples();
965 const uint16_t *
p =
reinterpret_cast<const uint16_t *
>(d);
967 for (
unsigned int i=0;
i<length; ++
i) {
969 for (
unsigned int bx=0; bx<nSamples; ++bx) {
981 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal Jet Cands";
return; }
983 unsigned int id = hdr.
blockId();
984 unsigned int nSamples = hdr.
nSamples();
988 const uint16_t *
p =
reinterpret_cast<const uint16_t *
>(d);
990 for (
unsigned int i=0;
i<length; ++
i) {
992 for (
unsigned int bx=0; bx<nSamples; ++bx) {
1004 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal Jet Cands";
return; }
1006 unsigned int id = hdr.
blockId();
1007 unsigned int nSamples = hdr.
nSamples();
1011 const uint16_t *
p =
reinterpret_cast<const uint16_t *
>(d);
1013 for (
unsigned int i=0;
i<length; ++
i) {
1015 for (
unsigned int bx=0; bx<nSamples; ++bx) {
1027 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of internal HF ring data";
return; }
1029 unsigned int id = hdr.
blockId();
1030 unsigned int nSamples = hdr.
nSamples();
1034 const uint32_t *
p =
reinterpret_cast<const uint32_t *
>(d);
1036 for (
unsigned int i=0;
i<length/2; ++
i) {
1038 for (
unsigned int bx=0; bx<nSamples; ++bx) {
1042 for (
unsigned int bx=0; bx<nSamples; ++bx) {
1052 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of wheel input internal Et sums and HF ring data";
return; }
1054 unsigned int id = hdr.
blockId();
1055 unsigned int nSamples = hdr.
nSamples();
1059 const uint32_t *
p =
reinterpret_cast<const uint32_t *
>(d);
1061 for (
unsigned int i=0;
i<length; ++
i) {
1063 for (
unsigned int bx=0; bx<nSamples; ++bx) {
1066 }
else if (
i>2 &&
i<9) {
1068 }
else if (
i>8 &&
i<15) {
1081 if(
hltMode()) {
LogDebug(
"GCT") <<
"HLT mode - skipping unpack of wheel output internal Et sums and HF ring data";
return; }
1083 unsigned int id = hdr.
blockId();
1084 unsigned int nSamples = hdr.
nSamples();
1088 const uint32_t *
p =
reinterpret_cast<const uint32_t *
>(d);
1090 for (
unsigned int i=0;
i<length; ++
i) {
1092 for (
unsigned int bx=0; bx<nSamples; ++bx) {
1095 }
else if (
i>0 &&
i<3) {
1097 }
else if (
i>2 &&
i<5) {
static L1GctInternEtSum fromMissEtxOrEty(uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
L1GctHFBitCountsCollection *const gctHfBitCounts() const
GCT output: Hadronic-Forward bit-counts collection.
static L1GctInternJetData fromJetPreCluster(L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
construct from "jet_precluster"
L1GctEmCandCollection *const gctNonIsoEm() const
GCT output: Non-isolated EM candidate collection.
Global Calorimeter Trigger SC -> CC fibre data word.
L1CaloEmCollection *const rctEm() const
Input electrons from the RCT to the GCT.
void SFPtoEMU(unsigned short(&eIsoRank)[4], unsigned short(&eIsoCardId)[4], unsigned short(&eIsoRegionId)[4], unsigned short(&eNonIsoRank)[4], unsigned short(&eNonIsoCardId)[4], unsigned short(&eNonIsoRegionId)[4], unsigned short(&MIPbits)[7][2], unsigned short(&Qbits)[7][2], unsigned short(&SFP)[2][4]) const
Level-1 Trigger jet candidate.
Level-1 Region Calorimeter Trigger EM candidate.
Persistable copy of missing Et measured at Level-1.
static L1GctInternJetData fromJetClusterMinimal(L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
construct from "jet_cluster_minimal"
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
static L1GctInternHFData fromConcBitCounts(const uint16_t capBlock, const uint16_t capIndex, const int16_t bx, const uint32_t data)
Level-1 Trigger EM candidate at output of GCT.
static L1GctInternEtSum fromTotalEtOrHt(uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
L1GctInternHFDataCollection *const gctInternHFData() const
Internal Hadronic-Forward bit-counts/ring-sums data collection.
U second(std::pair< T, U > const &p)
std::vector< L1GctJetCand > L1GctJetCandCollection
L1GctInternEtSumCollection *const gctInternEtSums() const
Internal Et Sum collection.
L1GctEtTotalCollection *const gctEtTot() const
GCT output: Total Et collection.
static L1GctInternHFData fromConcRingSums(const uint16_t capBlock, const uint16_t capIndex, const int16_t bx, const uint32_t data)
Persistable copy of total Et measured at Level-1.
L1GctEtMissCollection *const gctEtMiss() const
GCT output: Missing Et collection.
static L1GctInternEtSum fromJetMissEt(uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
unsigned int offset(bool)
static L1GctInternHFData fromWheelRingSums(const uint16_t capBlock, const uint16_t capIndex, const int16_t bx, const uint32_t data)
Persistable copy of total Ht measured at Level-1.
static L1GctHFRingEtSums fromConcRingSums(const uint16_t capBlock, const uint16_t capIndex, const int16_t bx, const uint32_t data)
static L1GctInternJetData fromJetCluster(L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
construct from "jet_cluster"
L1GctHFRingEtSumsCollection *const gctHfRingEtSums() const
GCT output: Hadronic-Forward ring-sums collection.
static L1GctInternJetData fromGctTrigObject(L1CaloRegionDetId rgn, uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
construct from "gct_trig_object"
L1GctFibreCollection *const gctFibres() const
Raw fibre input to the GCT.
L1GctEmCandCollection *const gctIsoEm() const
GCT output: Isolated EM candidate collection.
char data[epos_bytes_allocation]
L1GctInternJetDataCollection *const gctInternJets() const
Internal Jet candidate collection.
L1GctEtHadCollection *const gctEtHad() const
GCT output: Hadronic transverse-energy (Ht) collection.
static L1GctHFBitCounts fromConcHFBitCounts(const uint16_t capBlock, const uint16_t capIndex, const int16_t bx, const uint32_t data)
static L1GctInternHFData fromWheelBitCounts(const uint16_t capBlock, const uint16_t capIndex, const int16_t bx, const uint32_t data)
L1GctInternEmCandCollection *const gctInternEm() const
Internal EM candidate collection.
static L1CaloRegion makeRegionFromUnpacker(const uint16_t data, const unsigned ieta, const unsigned iphi, const uint16_t block, const uint16_t index, const int16_t bx)
constructor from raw data and GCT indices for unpacking
static L1GctInternEtSum fromJetTotEt(uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)
L1CaloRegionCollection *const rctCalo() const
Input calo regions from the RCT to the GCT.
std::vector< L1GctEmCand > L1GctEmCandCollection
static L1GctInternEtSum fromJetTotHt(uint16_t capBlock, uint16_t capIndex, int16_t bx, uint32_t data)