CMS 3D CMS Logo

Stage2TowerCompressAlgorithmFirmwareImp1.cc
Go to the documentation of this file.
1 
10 //#include "DataFormats/Math/interface/LorentzVector.h "
11 
13  params_(params)
14 {
15 
16 }
17 
18 
20 
21 
22 }
23 
24 
25 void l1t::Stage2TowerCompressAlgorithmFirmwareImp1::processEvent(const std::vector<l1t::CaloTower> & inTowers,
26  std::vector<l1t::CaloTower> & outTowers) {
27  outTowers.reserve(outTowers.size()+inTowers.size());
28  for ( auto tow = inTowers.begin();
29  tow != inTowers.end();
30  ++tow ) {
31 
32  if (!params_->doTowerEncoding()) {
33 
34  outTowers.push_back( *tow );
35 
36  }
37 
38  else {
39 
40  int etEm = tow->hwEtEm();
41  int etHad = tow->hwEtHad();
42 
43  int ratio = 0;
44  if (etEm>0 && etHad>0) {
45  if (etEm>=etHad) ratio = (int) std::round(log(float(etEm) / float(etHad))/log(2.));
46  else ratio = (int) std::round(log(float(etHad) / float(etEm))/log(2.));
47  }
48 
49  if (ratio >= params_->towerMaskRatio())
50  ratio = params_->towerMaskRatio();
51 
52  int sum = etEm + etHad;
53 
54  // apply
55  if (sum >= params_->towerMaskSum())
56  sum = params_->towerMaskSum();
57 
58  int qual = 0;
59  qual |= (etEm==0 || etHad==0 ? 0x1 : 0x0 ); // denominator ==0 flag
60  qual |= ((etHad==0 && etEm>0) || etEm>=etHad ? 0x2 : 0x0 ); // E/H flag
61  qual |= (tow->hwQual() & 0xc); // get feature bits from existing tower
62 
63  l1t::CaloTower newTow;
64  newTow.setHwEtEm(etEm);
65  newTow.setHwEtHad(etHad);
66  newTow.setHwEta( tow->hwEta() );
67  newTow.setHwPhi( tow->hwPhi() );
68  newTow.setHwPt( sum );
69  newTow.setHwEtRatio( ratio );
70  newTow.setHwQual( qual );
71 
72  outTowers.push_back(newTow);
73 
74  }
75 
76  }
77 
78 }
bool doTowerEncoding() const
void setHwQual(int qual)
Definition: L1Candidate.h:44
void setHwEtHad(int et)
Definition: CaloTower.cc:44
void processEvent(const std::vector< l1t::CaloTower > &inTowers, std::vector< l1t::CaloTower > &outTowers) override
void setHwEtRatio(int ratio)
Definition: CaloTower.cc:49
void setHwPhi(int phi)
Definition: L1Candidate.h:43
void setHwPt(int pt)
Definition: L1Candidate.h:41
int towerMaskRatio() const
void setHwEta(int eta)
Definition: L1Candidate.h:42
void setHwEtEm(int et)
Definition: CaloTower.cc:39