00001 #ifndef FASTSHOWER_SMEARSOFTPHOTONBASE_H 00002 #define FASTSHOWER_SMEARSOFTPHOTONBASE_H 00003 00004 #ifndef FASTSHOWER_IFNOFPARTICLEPARAMETERS_H 00005 #include "FastShowerUtils/IFnOfParticleParameters.h" 00006 #endif 00007 00008 #ifndef FASTSHOWER_DEBUGBASE_H 00009 #include "FastShowerUtils/DebugBase.h" 00010 #endif 00011 00012 #include <map> 00013 #include <vector> 00014 #include <string> 00015 #include <iostream> 00016 namespace FastShower{ 00024 class ISingleShowererSelectorConfig; 00025 class DistRandomiser1D; 00026 00027 class SmearSoftPhotonBase: 00028 virtual public IFnOfParticleParameters, private DebugBase{ 00029 public: 00030 SmearSoftPhotonBase(const ISingleShowererSelectorConfig*, 00031 const std::string&); 00032 virtual ~SmearSoftPhotonBase(); 00033 virtual double value(const ParticleParameters&) const; 00034 void nudge(const double, const double, double&) const; 00035 virtual double mean(const double) const=0; 00036 virtual IFnOfParticleParameters* clone() const=0; 00037 00038 typedef std::map<double,std::string>::const_iterator MCItr_Type1; 00039 typedef std::map<double,DistRandomiser1D*>::const_iterator MCItr_Type2; 00040 00041 private: 00042 std::map<double,std::string> m_histograms; 00043 std::map<double,DistRandomiser1D*> m_energyDists; 00044 }; 00045 }//namespace 00046 #endif 00047