28 std::vector<l1t::CaloTower> & outTowers) {
31 for (
auto tow = inTowers.begin();
32 tow != inTowers.end();
35 if (!params_->doTowerEncoding()) {
37 outTowers.push_back( *tow );
44 int sum = tow->hwPt();
45 int ratio = tow->hwEtRatio();
46 int qual = tow->hwQual();
48 int denomCoeff = int ( ( 128./ ( 1. + ratio ) ) + 0.5 );
49 int numCoeff = 128 - denomCoeff;
95 bool denomZeroFlag = ((qual&0x1) > 0);
96 bool eOverHFlag = ((qual&0x2) > 0);
98 if (denomZeroFlag && !eOverHFlag)
101 if (denomZeroFlag && eOverHFlag)
104 if (!denomZeroFlag && !eOverHFlag) {
105 em = denomCoeff * sum;
106 had = numCoeff * sum;
109 if (!denomZeroFlag && eOverHFlag) {
111 had = denomCoeff * sum;
114 em &= params_->towerMaskE();
115 had &= params_->towerMaskH();
127 outTowers.push_back(newTow);
virtual void processEvent(const std::vector< l1t::CaloTower > &inTowers, std::vector< l1t::CaloTower > &outTowers)
Stage2TowerDecompressAlgorithmFirmwareImp1(CaloParamsHelper *params)
void setHwEtRatio(int ratio)
virtual ~Stage2TowerDecompressAlgorithmFirmwareImp1()