CMS 3D CMS Logo

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