9 #include "CaloCollections.h"
34 unsigned int bxid = block.
amc().getBX();
37 if( (tmt-1) != ((bxid-1+3)%9) )
return true;
38 LogDebug(
"L1T") <<
"Unpacking TMT # " << tmt <<
" for BX " << bxid;
45 res1_->setBXRange(0,0);
46 res2_->setBXRange(0,0);
47 res3_->setBXRange(0,0);
48 res4_->setBXRange(0,0);
54 int unsigned ftau = 6;
55 int unsigned fjet = 8;
56 int unsigned faux = 10;
62 uint32_t raw_data = block.
payload()[fet];
69 ethf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
73 ethf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
77 ethf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
81 ethf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
85 ethf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
89 ethf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
97 res2_->push_back(0,ethf);
102 raw_data = block.
payload()[fet + 1];
110 etNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
114 etNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
118 etNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
122 etNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
126 etNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
130 etNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
136 LogDebug(
"L1T") <<
"ET/METx/METy (no HF): pT " << etNoHF.
hwPt();
138 res2_->push_back(0,etNoHF);
144 etEm.
setHwPt( static_cast<int32_t>( uint32_t( ( raw_data >> 16 ) & 0xFFFF )) );
145 res2_->push_back(0,etEm);
152 raw_data = block.
payload()[fht];
159 hthf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
163 hthf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
167 hthf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
171 hthf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
175 hthf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
179 hthf.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
185 LogDebug(
"L1T") <<
"HTHF/MHTHFx/MHTHFy: pT " << hthf.
hwPt();
187 res2_->push_back(0,hthf);
192 raw_data = block.
payload()[fht+1];
199 htNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
203 htNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
207 htNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
211 htNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data & 0xFFFF)) );
215 htNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
219 htNoHF.
setHwPt( static_cast<int32_t>( uint32_t(raw_data) ) );
226 LogDebug(
"L1T") <<
"HTNOHF/MHTNOHFx/MHTNOHFy: pT " << htNoHF.
hwPt();
228 res2_->push_back(0,htNoHF);
232 for (
unsigned nJet=0; nJet < 2; nJet++){
234 raw_data = block.
payload()[fjet+nJet];
250 int mpEta = etasign*(raw_data & 0x3F);
252 jet.
setHwPhi((raw_data >> 6) & 0x7F);
253 jet.
setHwPt((raw_data >> 13) & 0xFFFF);
256 if (jet.
hwPt()==0)
continue;
261 res1_->push_back(0,jet);
270 for (
unsigned nEG=0; nEG < 2; nEG++){
272 raw_data = block.
payload()[feg+nEG];
288 eg.
setHwEta(etasign*((raw_data >> 3) & 0x3F));
289 eg.
setHwPhi((raw_data >> 9) & 0x7F);
290 eg.
setHwPt((raw_data >> 20) & 0xFFF);
294 if (eg.
hwPt()==0)
continue;
299 res3_->push_back(0,eg);
307 for (
unsigned nTau=0; nTau < 2; nTau++){
309 raw_data = block.
payload()[ftau+nTau];
325 tau.
setHwEta(etasign*((raw_data >> 3) & 0x3F));
326 tau.
setHwPhi((raw_data >> 9) & 0x7F);
327 tau.
setHwPt((raw_data >> 20) & 0xFFF);
331 if (tau.
hwPt()==0)
continue;
336 res4_->push_back(0,tau);
340 raw_data = block.
payload()[faux];
353 mbp0.
setHwPt( ( raw_data >> 24 ) & 0xF );
357 mbm0.
setHwPt( ( raw_data >> 16 ) & 0xF );
361 mbp1.
setHwPt( ( raw_data >> 8 ) & 0xF );
365 mbm1.
setHwPt( raw_data & 0xF );
373 res2_->push_back(0,mbp0);
374 res2_->push_back(0,mbm0);
375 res2_->push_back(0,mbp1);
376 res2_->push_back(0,mbm1);
379 towCount.
setHwPt( raw_data & 0x1FFF );
381 res2_->push_back(0,towCount);
virtual bool unpack(const Block &block, UnpackerCollections *coll) override
BlockHeader header() const
unsigned int offsetBoardId
std::vector< uint32_t > payload() const
void setType(EtSumType type)
DEFINE_L1T_UNPACKER(l1t::stage2::MPUnpacker_0x10010033)
virtual void setP4(const LorentzVector &p4) final
set 4-momentum
void amc(const amc::Header &h)