18 params_(params), cordic_(
Cordic(144*16,17,8))
24 std::vector<l1t::EtSum> & outputSums) {
26 int et(0), etHF(0), etHFOnly(0), etem(0), metx(0), mety(0), metxHF(0), metyHF(0), ht(0), htHF(0), mhtx(0), mhty(0), mhtxHF(0), mhtyHF(0), metPhi(0), metPhiHF(0), mhtPhi(0), mhtPhiHF(0);
27 double etPos(0), etNeg(0), etHFPos(0), etHFNeg(0), htPos(0), htNeg(0), htHFPos(0), htHFNeg(0);
29 unsigned int asymEt(0), asymEtHF(0), asymHt(0), asymHtHF(0);
30 bool posEt(
false), posEtHF(
false), posHt(
false), posHtHF(
false);
31 unsigned int met(0), metHF(0), mht(0), mhtHF(0);
32 unsigned int mbp0(0), mbm0(0), mbp1(0), mbm1(0);
35 bool etSat(
false), etHFSat(
false), htSat(
false), htHFSat(
false);
36 bool metSat(
false), metHFSat(
false), mhtSat(
false), mhtHFSat(
false);
39 for (
auto&& eSum : inputSums)
41 switch (eSum.getType()) {
44 if(eSum.hwPt()==0xffff) etSat=
true;
46 if(posEt) etPos = eSum.hwPt();
54 if(eSum.hwPt()==0xffff) etHFSat=
true;
56 if(posEtHF) etHFPos = eSum.hwPt();
58 etHFNeg = eSum.hwPt();
68 if(eSum.hwPt()==0x7fffffff) metSat=
true;
69 else metx += eSum.hwPt();
73 if(eSum.hwPt()==0x7fffffff) metSat=
true;
74 else mety += eSum.hwPt();
78 if(eSum.hwPt()==0xffff) htSat=
true;
80 if(posHt) htPos = eSum.hwPt();
88 if(eSum.hwPt()==0xffff) htHFSat=
true;
90 if(posHtHF) htHFPos = eSum.hwPt();
92 htHFNeg = eSum.hwPt();
98 if(eSum.hwPt()==0x7fffffff) mhtSat=
true;
99 else mhtx += eSum.hwPt();
103 if(eSum.hwPt()==0x7fffffff) mhtSat=
true;
104 else mhty += eSum.hwPt();
108 if(eSum.hwPt()==0x7fffffff) metHFSat=
true;
109 else metxHF += eSum.hwPt();
113 if(eSum.hwPt()==0x7fffffff) metHFSat=
true;
114 else metyHF += eSum.hwPt();
118 if(eSum.hwPt()==0x7fffffff) mhtHFSat=
true;
119 else mhtxHF += eSum.hwPt();
123 if(eSum.hwPt()==0x7fffffff) mhtHFSat=
true;
124 else mhtyHF += eSum.hwPt();
153 etHFOnly =
abs(etHF -
et);
160 if(etHFSat) cent = 0x80;
168 if(etSat) asymEt = 0xFF;
169 if(etHFSat) asymEtHF = 0xFF;
170 if(htSat) asymHt = 0xFF;
171 if(htHFSat) asymHtHF = 0xFF;
173 if (
et>0xFFF)
et = 0xFFF;
174 if (etHF>0xFFF) etHF = 0xFFF;
175 if (etem>0xFFF) etem = 0xFFF;
176 if (ht>0xFFF) ht = 0xFFF;
177 if (htHF>0xFFF) htHF = 0xFFF;
187 if ( (metx != 0 || mety != 0) && !metSat )
cordic_( metx , mety , metPhi ,
met );
193 if ( (metxHF != 0 || metyHF != 0) && !metHFSat )
cordic_( metxHF , metyHF , metPhiHF , metHF );
198 if ( (mhtx != 0 || mhty != 0) && !mhtSat )
cordic_( mhtx , mhty , mhtPhi , mht );
203 if ( (mhtxHF != 0 || mhtyHF != 0) && !mhtHFSat )
cordic_( mhtxHF , mhtyHF , mhtPhiHF , mhtHF );
206 if(metSat ||
met > 0xFFF)
met=0xFFF;
207 if(metHFSat || metHF > 0xFFF) metHF=0xFFF;
208 if(mhtSat || mht > 0xFFF) mht=0xFFF;
209 if(mhtHFSat || mhtHF > 0xFFF) mhtHF=0xFFF;
234 outputSums.push_back(etSumTotalEt);
235 outputSums.push_back(etSumTotalEtHF);
236 outputSums.push_back(etSumTotalEtEm);
237 outputSums.push_back(etSumMinBiasHFP0);
238 outputSums.push_back(htSumht);
239 outputSums.push_back(htSumhtHF);
240 outputSums.push_back(etSumMinBiasHFM0);
241 outputSums.push_back(etSumMissingEt);
242 outputSums.push_back(etSumMinBiasHFP1);
243 outputSums.push_back(htSumMissingHt);
244 outputSums.push_back(etSumMinBiasHFM1);
245 outputSums.push_back(etSumMissingEtHF);
246 outputSums.push_back(htSumMissingHtHF);
247 outputSums.push_back(etSumTowCount);
248 outputSums.push_back(etAsym);
249 outputSums.push_back(etHFAsym);
250 outputSums.push_back(htAsym);
251 outputSums.push_back(htHFAsym);
252 outputSums.push_back(centrality);
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
void processEvent(const std::vector< l1t::EtSum > &inputSums, std::vector< l1t::EtSum > &outputSums) override
Abs< T >::type abs(const T &t)
double etSumCentUpper(unsigned centClass) const
et
define resolution functions of each parameter
CaloParamsHelper const * params_
double towerLsbSum() const
Stage2Layer2DemuxSumsAlgoFirmwareImp1(CaloParamsHelper const *params)
double etSumCentLower(unsigned centClass) const