28 std::vector<l1t::CaloTower> & outTowers) {
30 for (
auto tow = inTowers.begin();
31 tow != inTowers.end();
34 if (!params_->doTowerEncoding()) {
36 outTowers.push_back( *tow );
42 int etEm = tow->hwEtEm();
43 int etHad = tow->hwEtHad();
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.));
50 ratio &= params_->towerMaskRatio() ;
52 int sum = etEm + etHad;
53 sum &= params_->towerMaskSum() ;
56 qual |= (etEm==0 || etHad==0 ? 0x1 : 0x0 );
57 qual |= ((etHad==0 && etEm>0) || etEm>=etHad ? 0x2 : 0x0 );
58 qual |= (tow->hwQual() & 0xc);
69 outTowers.push_back(newTow);
virtual void processEvent(const std::vector< l1t::CaloTower > &inTowers, std::vector< l1t::CaloTower > &outTowers)
void setHwEtRatio(int ratio)
Stage2TowerCompressAlgorithmFirmwareImp1(CaloParamsHelper *params)
virtual ~Stage2TowerCompressAlgorithmFirmwareImp1()