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::Stage2TowerDecompressAlgorithmFirmwareImp1 Class Reference

#include <Stage2TowerDecompressAlgorithmFirmware.h>

Inheritance diagram for l1t::Stage2TowerDecompressAlgorithmFirmwareImp1:
l1t::Stage2TowerDecompressAlgorithm

Public Member Functions

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

Private Attributes

CaloParamsHelperparams_
 

Detailed Description

Definition at line 22 of file Stage2TowerDecompressAlgorithmFirmware.h.

Constructor & Destructor Documentation

l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::Stage2TowerDecompressAlgorithmFirmwareImp1 ( CaloParamsHelper params)

Definition at line 14 of file Stage2TowerDecompressAlgorithmFirmwareImp1.cc.

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

Definition at line 21 of file Stage2TowerDecompressAlgorithmFirmwareImp1.cc.

21  {
22 
23 
24 }

Member Function Documentation

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

Implements l1t::Stage2TowerDecompressAlgorithm.

Definition at line 27 of file Stage2TowerDecompressAlgorithmFirmwareImp1.cc.

References 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 
31  for ( auto tow = inTowers.begin();
32  tow != inTowers.end();
33  ++tow ) {
34 
35  if (!params_->doTowerEncoding()) {
36 
37  outTowers.push_back( *tow );
38 
39  }
40 
41  else {
42 
43 
44  int sum = tow->hwPt();
45  int ratio = tow->hwEtRatio();
46  int qual = tow->hwQual();
47 
48  int denomCoeff = int ( ( 128./ ( 1. + ratio ) ) + 0.5 );
49  int numCoeff = 128 - denomCoeff;
50 
51  // if ((qual & 0x1)==0) {
52  // switch (ratio) {
53  // case 000 :
54  // numCoeff = 64;
55  // denomCoeff = 64;
56  // break;
57  // case 001 :
58  // numCoeff = 43;
59  // denomCoeff = 85;
60  // break;
61  // case 010 :
62  // numCoeff = 26;
63  // denomCoeff = 102;
64  // break;
65  // case 011 :
66  // numCoeff = 14;
67  // denomCoeff = 114;
68  // break;
69  // case 100 :
70  // numCoeff = 8;
71  // denomCoeff = 120;
72  // break;
73  // case 101 :
74  // numCoeff = 4;
75  // denomCoeff = 124;
76  // break;
77  // case 110 :
78  // numCoeff = 2;
79  // denomCoeff = 126;
80  // break;
81  // case 111 :
82  // numCoeff = 1;
83  // denomCoeff = 127;
84  // break;
85  // }
86  // }
87  // else {
88  // numCoeff = 128;
89  // denomCoeff = 0;
90  // }
91 
92  int em = 0;
93  int had = 0;
94 
95  bool denomZeroFlag = ((qual&0x1) > 0);
96  bool eOverHFlag = ((qual&0x2) > 0);
97 
98  if (denomZeroFlag && !eOverHFlag)
99  had = sum;
100 
101  if (denomZeroFlag && eOverHFlag)
102  em = sum;
103 
104  if (!denomZeroFlag && !eOverHFlag) { // H > E, ratio = log(H/E)
105  em = denomCoeff * sum;
106  had = numCoeff * sum;
107  }
108 
109  if (!denomZeroFlag && eOverHFlag) { // E >= H , so ratio==log(E/H)
110  em = numCoeff * sum;
111  had = denomCoeff * sum;
112  }
113 
114  em &= params_->towerMaskE();
115  had &= params_->towerMaskH();
116 
117  l1t::CaloTower newTow;
118  newTow.setHwEta( tow->hwEta() );
119  newTow.setHwPhi( tow->hwPhi() );
120  newTow.setHwEtEm( em );
121  newTow.setHwEtHad( had );
122 
123  newTow.setHwPt( sum );
124  newTow.setHwEtRatio( ratio );
125  newTow.setHwQual( qual );
126 
127  outTowers.push_back(newTow);
128 
129  }
130 
131  }
132 
133 }
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
void setHwEta(int eta)
Definition: L1Candidate.cc:49
void setHwEtEm(int et)
Definition: CaloTower.cc:39

Member Data Documentation

CaloParamsHelper* l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::params_
private

Definition at line 29 of file Stage2TowerDecompressAlgorithmFirmware.h.