00001
00002
00003
00004 #ifndef STJEBEMCENERGYSUMCALCULATOR_H
00005 #define STJEBEMCENERGYSUMCALCULATOR_H
00006
00007 #include "StjTowerEnergyList.h"
00008
00009 class StjBEMC;
00010 class StjTowerEnergyListCut;
00011
00012 class StjeBemcEnergySumCalculator {
00013
00014 public:
00015
00016 StjeBemcEnergySumCalculator() { }
00017 virtual ~StjeBemcEnergySumCalculator() { }
00018
00019 virtual void Init() { }
00020 virtual void Make() { }
00021 virtual void Clear() { }
00022
00023 virtual int nDylanPoints() const = 0;
00024 virtual double sumEmcEt() const = 0;
00025
00026 private:
00027
00028 };
00029
00030 class StjeBemcEnergySumCalculatorNull : public StjeBemcEnergySumCalculator {
00031
00032 public:
00033
00034 StjeBemcEnergySumCalculatorNull() { }
00035 virtual ~StjeBemcEnergySumCalculatorNull() { }
00036
00037 void Init() { }
00038 void Make() { }
00039 void Clear() { }
00040
00041 int nDylanPoints() const { return 0; }
00042 double sumEmcEt() const { return 0; }
00043
00044 private:
00045
00046 };
00047
00048 class StjeBemcEnergySumCalculatorImp : public StjeBemcEnergySumCalculator {
00049
00050 public:
00051
00052 StjeBemcEnergySumCalculatorImp(StjBEMC* bemc, StjTowerEnergyListCut* cut);
00053 virtual ~StjeBemcEnergySumCalculatorImp() { }
00054
00055 void Init();
00056 void Make();
00057 void Clear();
00058
00059 int nDylanPoints() const { return _DylanPoints; }
00060 double sumEmcEt() const { return _SumEmcEt; }
00061
00062 private:
00063
00064 double sumEnergyOverBemcTowers(double minE, const StjTowerEnergyList &energyDepositList);
00065
00066 int numberOfBemcTowersWithEnergyAbove(double minE, const StjTowerEnergyList &energyDepositList);
00067
00068 StjBEMC* _bemc;
00069 StjTowerEnergyListCut* _cut;
00070
00071 int _DylanPoints;
00072 double _SumEmcEt;
00073
00074 };
00075
00076 #endif // STJEBEMCENERGYSUMCALCULATOR_H