CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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

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

Private Attributes

CaloParamsHelperparams_
 

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 params)

Definition at line 14 of file Stage2TowerCompressAlgorithmFirmwareImp1.cc.

14  :
15  params_(params)
16 {
17 
18 }
l1t::Stage2TowerCompressAlgorithmFirmwareImp1::~Stage2TowerCompressAlgorithmFirmwareImp1 ( )
virtual

Definition at line 21 of file Stage2TowerCompressAlgorithmFirmwareImp1.cc.

21  {
22 
23 
24 }

Member Function Documentation

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

Implements l1t::Stage2TowerCompressAlgorithm.

Definition at line 27 of file Stage2TowerCompressAlgorithmFirmwareImp1.cc.

References cmsBatch::log, l1t::L1Candidate::setHwEta(), l1t::CaloTower::setHwEtEm(), l1t::CaloTower::setHwEtHad(), l1t::CaloTower::setHwEtRatio(), l1t::L1Candidate::setHwPhi(), l1t::L1Candidate::setHwPt(), and l1t::L1Candidate::setHwQual().

28  {
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 }
bool doTowerEncoding() const
void setHwQual(int qual)
Definition: L1Candidate.cc:64
void setHwEtHad(int et)
Definition: CaloTower.cc:44
void setHwEtRatio(int ratio)
Definition: CaloTower.cc:49
void setHwPhi(int phi)
Definition: L1Candidate.cc:54
void setHwPt(int pt)
Definition: L1Candidate.cc:44
int towerMaskRatio() const
void setHwEta(int eta)
Definition: L1Candidate.cc:49
void setHwEtEm(int et)
Definition: CaloTower.cc:39
tuple log
Definition: cmsBatch.py:341

Member Data Documentation

CaloParamsHelper* l1t::Stage2TowerCompressAlgorithmFirmwareImp1::params_
private

Definition at line 29 of file Stage2TowerCompressAlgorithmFirmware.h.