26 std::vector<l1t::CaloTower> & outTowers) {
27 outTowers.reserve(outTowers.size()+inTowers.size());
28 for (
auto tow = inTowers.begin();
29 tow != inTowers.end();
34 outTowers.push_back( *tow );
40 int etEm = tow->hwEtEm();
41 int etHad = tow->hwEtHad();
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.));
52 int sum = etEm + etHad;
59 qual |= (etEm==0 || etHad==0 ? 0x1 : 0x0 );
60 qual |= ((etHad==0 && etEm>0) || etEm>=etHad ? 0
x2 : 0x0 );
61 qual |= (tow->hwQual() & 0xc);
72 outTowers.push_back(newTow);
bool doTowerEncoding() const
~Stage2TowerCompressAlgorithmFirmwareImp1() override
Stage2TowerCompressAlgorithmFirmwareImp1(CaloParamsHelper const *params)
void processEvent(const std::vector< l1t::CaloTower > &inTowers, std::vector< l1t::CaloTower > &outTowers) override
void setHwEtRatio(int ratio)
int towerMaskRatio() const
CaloParamsHelper const * params_