00001
00002
00003 #include "StjeBemcEnergySumCalculator.h"
00004
00005 #include "StjBEMC.h"
00006 #include "StjTowerEnergyListCut.h"
00007
00008 StjeBemcEnergySumCalculatorImp::StjeBemcEnergySumCalculatorImp(StjBEMC* bemc, StjTowerEnergyListCut* cut)
00009 : _bemc(bemc)
00010 , _cut(cut)
00011 , _DylanPoints(0)
00012 , _SumEmcEt(0.0)
00013 {
00014
00015 }
00016 void StjeBemcEnergySumCalculatorImp::Init()
00017 {
00018 _bemc->Init();
00019 }
00020
00021 void StjeBemcEnergySumCalculatorImp::Make()
00022 {
00023 StjTowerEnergyList energyList = _bemc->getEnergyList();
00024
00025 energyList = (*_cut)(energyList);
00026
00027 _SumEmcEt = sumEnergyOverBemcTowers(0.4, energyList);
00028
00029 _DylanPoints = numberOfBemcTowersWithEnergyAbove(0.4, energyList);
00030 }
00031
00032 void StjeBemcEnergySumCalculatorImp::Clear()
00033 {
00034 _SumEmcEt = 0;
00035 _DylanPoints = 0;
00036 }
00037
00038 double StjeBemcEnergySumCalculatorImp::sumEnergyOverBemcTowers(double minE, const StjTowerEnergyList &energyDepositList)
00039 {
00040 double ret(0.0);
00041
00042 for(StjTowerEnergyList::const_iterator it = energyDepositList.begin(); it != energyDepositList.end(); ++it)
00043 if((*it).energy > minE) ret += (*it).energy;
00044
00045 return ret;
00046 }
00047
00048 int StjeBemcEnergySumCalculatorImp::numberOfBemcTowersWithEnergyAbove(double minE, const StjTowerEnergyList &energyDepositList)
00049 {
00050 int ret(0);
00051
00052 for(StjTowerEnergyList::const_iterator it = energyDepositList.begin(); it != energyDepositList.end(); ++it)
00053 if((*it).energy > minE) ret ++;
00054
00055 return ret;
00056 }