00001 #ifndef FASTSHOWER_S0HADLATEHCALEC1_H 00002 #define FASTSHOWER_S0HADLATEHCALEC1_H 00003 00004 #ifndef FASTSHOWER_ISAMPLER_H 00005 #include "FastShowerUtils/ISampler.h" 00006 #endif 00007 00008 #ifndef FASTSHOWER_DEBUGBASE_H 00009 #include "FastShowerUtils/DebugBase.h" 00010 #endif 00011 00012 #ifndef FASTSHOWER_IUPDATINGGAUSSIAN_H 00013 #include "FastShowerUtils/IUpdatingGaussian.h" 00014 #endif 00015 00016 #ifndef FASTSHOWER_ISLICE0_H 00017 #include "FastShowerUtils/ISlice0.h" 00018 #endif 00019 00020 #ifndef FASTSHOWER_SP_H 00021 #include "FastShowerUtils/SP.h" 00022 #endif 00023 00024 #ifndef STD_VECTOR_H 00025 #define STD_VECTOR_H 00026 #include <vector> 00027 #endif 00028 00029 #ifndef STD_STRING_H 00030 #define STD_STRING_H 00031 #include <string> 00032 #endif 00033 00034 namespace FastShower{ 00053 class IInTail; 00054 class CoreSamples; 00055 class IProcessedDist; 00056 class IConfigurer; 00057 class PolyArgs; 00058 00059 class S0HadLateHcalEc1: 00060 virtual public ISampler, 00061 public ISlice0, private DebugBase{ 00062 public: 00063 // 00064 S0HadLateHcalEc1(IUpdatingGaussian*, 00065 IProcessedDist*, 00066 IInTail*); 00067 00068 S0HadLateHcalEc1(const IConfigurer*, const std::string&); 00069 00071 virtual ISampler* clone() const; 00072 00073 virtual void sample(const PolyArgs&, CoreSamples&) const; 00074 virtual double lastValue(const CoreSamples&) const; 00075 virtual void components(IDebug::Cpts& ) const; 00076 00077 private: 00078 // 00079 double evalTail(const PolyArgs&) const; 00080 double evalPeak(const PolyArgs&) const; 00081 // 00082 SP<IUpdatingGaussian> m_peak; 00083 SP<IProcessedDist> m_tail; 00084 SP<IInTail> m_inTail; 00085 static const double s_nSigma1; 00086 static const double s_nSigma2; 00087 }; 00088 }//namespace 00089 #endif 00090 00091 00092 00093 00094 00095 00096