CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
l1t::stage2::EtSumUnpacker Class Reference

#include <EtSumUnpacker.h>

Inheritance diagram for l1t::stage2::EtSumUnpacker:
l1t::Unpacker

Public Member Functions

 EtSumUnpacker ()
 
void setEtSumCopy (const unsigned int copy)
 
bool unpack (const Block &block, UnpackerCollections *coll) override
 
 ~EtSumUnpacker () override
 
- Public Member Functions inherited from l1t::Unpacker
unsigned int getAlgoVersion ()
 
void setAlgoVersion (const unsigned int version)
 
 Unpacker ()
 
virtual ~Unpacker ()=default
 

Private Attributes

unsigned int EtSumCopy_
 

Detailed Description

Definition at line 8 of file EtSumUnpacker.h.

Constructor & Destructor Documentation

l1t::stage2::EtSumUnpacker::EtSumUnpacker ( )

Definition at line 13 of file EtSumUnpacker.cc.

13  : EtSumCopy_(0)
14  {
15  }
l1t::stage2::EtSumUnpacker::~EtSumUnpacker ( )
inlineoverride

Definition at line 11 of file EtSumUnpacker.h.

References groupFilesInBlocks::block, coll, and unpack().

11 {};

Member Function Documentation

void l1t::stage2::EtSumUnpacker::setEtSumCopy ( const unsigned int  copy)
inline

Definition at line 15 of file EtSumUnpacker.h.

References popcon2dropbox::copy(), and EtSumCopy_.

15 { EtSumCopy_ = copy; };
def copy(args, dbName)
bool l1t::stage2::EtSumUnpacker::unpack ( const Block block,
UnpackerCollections coll 
)
overridevirtual

Implements l1t::Unpacker.

Definition at line 18 of file EtSumUnpacker.cc.

References coll, DEFINE_L1T_UNPACKER, stringResolutionProvider_cfi::et, EtSumCopy_, l1t::BlockHeader::getID(), l1t::BlockHeader::getSize(), l1t::Block::header(), l1t::L1Candidate::hwPhi(), l1t::L1Candidate::hwPt(), createfilelist::int, l1t::EtSum::kMinBiasHFM0, l1t::EtSum::kMinBiasHFM1, l1t::EtSum::kMinBiasHFP0, l1t::EtSum::kMinBiasHFP1, l1t::EtSum::kMissingEt, l1t::EtSum::kMissingEtHF, l1t::EtSum::kMissingHt, l1t::EtSum::kMissingHtHF, l1t::EtSum::kTotalEt, l1t::EtSum::kTotalEtEm, l1t::EtSum::kTotalHt, l1t::EtSum::kTowerCount, LogDebug, RazorAnalyzer::met, l1t::stage2::layer2::mp::nOutputFramePerBX, l1t::CaloTools::p4Demux(), l1t::Block::payload(), l1t::L1Candidate::setHwPhi(), l1t::L1Candidate::setHwPt(), reco::LeafCandidate::setP4(), and l1t::EtSum::setType().

Referenced by ~EtSumUnpacker().

19  {
20 
21  using namespace l1t::stage2::layer2;
22 
23  LogDebug("L1T") << "Block ID = " << block.header().getID() << " size = " << block.header().getSize();
24 
25  int nBX = int(ceil(block.header().getSize() / demux::nOutputFramePerBX)); // Since there 6 frames per demux output event
26  // expect the first four frames to be the first 4 EtSum objects reported per event (see CMS IN-2013/005)
27 
28  // Find the central, first and last BXs
29  int firstBX = -(ceil((double)nBX/2.)-1);
30  int lastBX;
31  if (nBX % 2 == 0) {
32  lastBX = ceil((double)nBX/2.);
33  } else {
34  lastBX = ceil((double)nBX/2.)-1;
35  }
36 
37  auto res_ = static_cast<L1TObjectCollections*>(coll)->getEtSums(EtSumCopy_);
38  res_->setBXRange(firstBX, lastBX);
39 
40  LogDebug("L1T") << "nBX = " << nBX << " first BX = " << firstBX << " lastBX = " << lastBX;
41 
42  // Loop over multiple BX and fill EtSums collection
43  for (int bx=firstBX; bx<=lastBX; bx++){
44 
45 
46  // ET
47  int iFrame = (bx-firstBX)*demux::nOutputFramePerBX;
48 
49  uint32_t raw_data = block.payload().at(iFrame);
50 
52 
53  et.setHwPt(raw_data & 0xFFF);
55  et.setP4( l1t::CaloTools::p4Demux(&et) );
56 
57  LogDebug("L1T") << "ET: pT " << et.hwPt() << " bx " << bx;
58 
59  res_->push_back(bx,et);
60 
61 
62  // ET EM
63 
64  l1t::EtSum etem = l1t::EtSum();
65 
66  etem.setHwPt( (raw_data >> 12) & 0xFFF);
68  etem.setP4( l1t::CaloTools::p4Demux(&etem) );
69 
70  LogDebug("L1T") << "ETEM: pT " << etem.hwPt() << " bx " << bx;
71 
72  res_->push_back(bx,etem);
73 
74 
75  // MBHFPT0
76 
77  l1t::EtSum mbp0 = l1t::EtSum();
78  mbp0.setHwPt( (raw_data>>28) & 0xf );
80 
81  res_->push_back(bx, mbp0);
82 
83 
84  // HT
85 
86  raw_data = block.payload()[iFrame+1];
87 
88  l1t::EtSum ht = l1t::EtSum();
89 
90  ht.setHwPt(raw_data & 0xFFF);
92  ht.setP4( l1t::CaloTools::p4Demux(&ht) );
93 
94  LogDebug("L1T") << "HT: pT " << ht.hwPt();
95 
96  res_->push_back(bx,ht);
97 
98  //MBHFMT0
99 
100  l1t::EtSum mbm0 = l1t::EtSum();
101  mbm0.setHwPt( (raw_data>>28) & 0xf );
103 
104  res_->push_back(bx, mbm0);
105 
106 
107  // MET (no HF)
108 
109  raw_data = block.payload()[iFrame+2];
110 
112 
113  met.setHwPt(raw_data & 0xFFF);
114  met.setHwPhi((raw_data >> 12) & 0xFF);
116  met.setP4( l1t::CaloTools::p4Demux(&met) );
117 
118  LogDebug("L1T") << "MET: phi " << met.hwPhi() << " pT " << met.hwPt() << " bx " << bx;
119 
120  res_->push_back(bx,met);
121 
122  // MBHFPT1
123 
124  l1t::EtSum mbp1 = l1t::EtSum();
125  mbp1.setHwPt( (raw_data>>28) & 0xf );
127 
128  res_->push_back(bx, mbp1);
129 
130  // MHT
131 
132  raw_data = block.payload()[iFrame+3];
133 
134  l1t::EtSum mht = l1t::EtSum();
135 
136  mht.setHwPt(raw_data & 0xFFF);
137  mht.setHwPhi((raw_data >> 12) & 0xFF);
139  mht.setP4( l1t::CaloTools::p4Demux(&mht) );
140 
141  LogDebug("L1T") << "MHT: phi " << mht.hwPhi() << " pT " << mht.hwPt() << " bx " << bx;
142 
143  res_->push_back(bx,mht);
144 
145  // MBHFMT1
146 
147  l1t::EtSum mbm1 = l1t::EtSum();
148  mbm1.setHwPt( (raw_data>>28) & 0xf );
150 
151  res_->push_back(bx, mbm1);
152 
153 
154  // MET (with HF)
155 
156  raw_data = block.payload()[iFrame+4];
157 
158  l1t::EtSum methf = l1t::EtSum();
159 
160  methf.setHwPt(raw_data & 0xFFF);
161  methf.setHwPhi((raw_data >> 12) & 0xFF);
163  methf.setP4( l1t::CaloTools::p4Demux(&methf) );
164 
165  LogDebug("L1T") << "METHF: phi " << methf.hwPhi() << " pT " << methf.hwPt() << " bx " << bx;
166 
167  res_->push_back(bx,methf);
168 
169  // MHT with HF
170 
171  raw_data = block.payload()[iFrame+5];
172 
173  l1t::EtSum mhthf = l1t::EtSum();
174 
175  mhthf.setHwPt(raw_data & 0xFFF);
176  mhthf.setHwPhi((raw_data >> 12) & 0xFF);
178  mhthf.setP4( l1t::CaloTools::p4Demux(&mhthf) );
179 
180  LogDebug("L1T") << "MHThf: phi " << mhthf.hwPhi() << " pT " << mhthf.hwPt() << " bx " << bx;
181 
182  res_->push_back(bx,mhthf);
183 
184  //HI-SUM
185 
186  raw_data = block.payload()[iFrame+1];
187 
188  l1t::EtSum towCount = l1t::EtSum();
189  towCount.setHwPt( (raw_data>>12) & 0x1FFF );
190  towCount.setType( (l1t::EtSum::kTowerCount) );
191  towCount.setP4( l1t::CaloTools::p4Demux(&towCount) );
192 
193  res_->push_back(bx, towCount);
194 
195 
196  }
197 
198  return true;
199  }
#define LogDebug(id)
const unsigned int nOutputFramePerBX
int hwPhi() const
Definition: L1Candidate.h:50
void setType(EtSumType type)
Definition: EtSum.cc:32
void setHwPhi(int phi)
Definition: L1Candidate.h:43
JetCorrectorParametersCollection coll
Definition: classes.h:10
int hwPt() const
Definition: L1Candidate.h:48
met
===> hadronic RAZOR
et
define resolution functions of each parameter
void setHwPt(int pt)
Definition: L1Candidate.h:41
static math::PtEtaPhiMLorentzVector p4Demux(l1t::L1Candidate *)
Definition: CaloTools.cc:290
void setP4(const LorentzVector &p4) final
set 4-momentum

Member Data Documentation

unsigned int l1t::stage2::EtSumUnpacker::EtSumCopy_
private

Definition at line 15 of file EtSumUnpacker.h.

Referenced by setEtSumCopy(), and unpack().