00001 #ifndef FASTSHOWER_HADECALHCALSHARESBASE_H
00002 #define FASTSHOWER_HADECALHCALSHARESBASE_H
00003
00004 #ifndef FASTSHOWER_IFNOFPARTICLEPARAMETERS2_H
00005 #include "FastShowerUtils/IFnOfParticleParameters2.h"
00006 #endif
00007
00008 #ifndef FASTSHOWER_DEBUGBASE_H
00009 #include "FastShowerUtils/DebugBase.h"
00010 #endif
00011
00012 #ifndef STD_PAIR_H
00013 #define STD_PAIR_H
00014 #include <pair.h>
00015 #endif
00016
00017 #ifndef STD_MAP_H
00018 #define STD_MAP_H
00019 #include <map>
00020 #endif
00021
00022 #ifndef STD_STRING_H
00023 #define STD_STRING_H
00024 #include <string>
00025 #endif
00026
00027 namespace FastShower{
00035
00036 class ITripleShowererSelectorConfig;
00037 class DistRandomiser2D;
00038
00039 class HadEcalHcalSharesBase:
00040 virtual public IFnOfParticleParameters2,
00041 private DebugBase{
00042 public:
00043
00044 HadEcalHcalSharesBase(const ITripleShowererSelectorConfig*, const std::string&);
00045 virtual ~HadEcalHcalSharesBase();
00046
00047 virtual std::pair<double, double>
00048 value(const ParticleParameters&) const;
00049
00050 void nudge(const double, const double,
00051 std::pair<double,double>&) const;
00052
00053 virtual double mean(const double) const=0;
00054 virtual double sigma(const double) const=0;
00055
00056 virtual IFnOfParticleParameters2* clone() const=0;
00057
00058 typedef std::map<double, std::string>::const_iterator MCItr_Type1;
00059 typedef std::map<double, DistRandomiser2D*>::const_iterator MCItr_Type2;
00060
00061 private:
00062 std::map<double, std::string> m_histograms;
00063 std::map<double, DistRandomiser2D*> m_energyDists;
00064 };
00065 }
00066 #endif
00067
00068