CMS 3D CMS Logo

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

#include <Stage2TowerCompressAlgorithmFirmware.h>

Inheritance diagram for l1t::Stage2TowerCompressAlgorithmFirmwareImp1:
l1t::Stage2TowerCompressAlgorithm

Public Member Functions

void processEvent (const std::vector< l1t::CaloTower > &inTowers, std::vector< l1t::CaloTower > &outTowers) override
 
 Stage2TowerCompressAlgorithmFirmwareImp1 (CaloParamsHelper const *params)
 
 ~Stage2TowerCompressAlgorithmFirmwareImp1 () override
 
- Public Member Functions inherited from l1t::Stage2TowerCompressAlgorithm
virtual ~Stage2TowerCompressAlgorithm ()
 

Private Attributes

CaloParamsHelper const * params_
 

Detailed Description

Author
: Jim Brooke

Description: first iteration of stage 2 jet algo

Definition at line 22 of file Stage2TowerCompressAlgorithmFirmware.h.

Constructor & Destructor Documentation

l1t::Stage2TowerCompressAlgorithmFirmwareImp1::Stage2TowerCompressAlgorithmFirmwareImp1 ( CaloParamsHelper const *  params)

Definition at line 12 of file Stage2TowerCompressAlgorithmFirmwareImp1.cc.

12  :
13  params_(params)
14 {
15 
16 }
l1t::Stage2TowerCompressAlgorithmFirmwareImp1::~Stage2TowerCompressAlgorithmFirmwareImp1 ( )
override

Definition at line 19 of file Stage2TowerCompressAlgorithmFirmwareImp1.cc.

19  {
20 
21 
22 }

Member Function Documentation

void l1t::Stage2TowerCompressAlgorithmFirmwareImp1::processEvent ( const std::vector< l1t::CaloTower > &  inTowers,
std::vector< l1t::CaloTower > &  outTowers 
)
overridevirtual

Implements l1t::Stage2TowerCompressAlgorithm.

Definition at line 25 of file Stage2TowerCompressAlgorithmFirmwareImp1.cc.

References l1t::CaloParamsHelper::doTowerEncoding(), objects.autophobj::float, createfilelist::int, cmsBatch::log, params_, particleFlowDisplacedVertex_cfi::ratio, l1t::L1Candidate::setHwEta(), l1t::CaloTower::setHwEtEm(), l1t::CaloTower::setHwEtHad(), l1t::CaloTower::setHwEtRatio(), l1t::L1Candidate::setHwPhi(), l1t::L1Candidate::setHwPt(), l1t::L1Candidate::setHwQual(), l1t::CaloParamsHelper::towerMaskRatio(), l1t::CaloParamsHelper::towerMaskSum(), and globals_cff::x2.

26  {
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 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

Member Data Documentation

CaloParamsHelper const* l1t::Stage2TowerCompressAlgorithmFirmwareImp1::params_
private

Definition at line 29 of file Stage2TowerCompressAlgorithmFirmware.h.

Referenced by processEvent().