00001 #ifndef FASTSHOWER_C0EMECALEC1_H 00002 #define FASTSHOWER_C0EMECALEC1_H 00003 00004 #ifndef FASTSHOWER_ISAMPLER_H 00005 #include "FastShowerUtils/ISampler.h" 00006 #endif 00007 00008 #ifndef FASTSHOWER_IUPDATINGGAUSSIAN_H 00009 #include "FastShowerUtils/IUpdatingGaussian.h" 00010 #endif 00011 00012 #ifndef FASTSHOWER_ICELL0_H 00013 #include "FastShowerUtils/ICell0.h" 00014 #endif 00015 00016 #ifndef FASTSHOWER_DEBUGBASE_H 00017 #include "FastShowerUtils/DebugBase.h" 00018 #endif 00019 00020 #ifndef FASTSHOWER_SP_H 00021 #include "FastShowerUtils/SP.h" 00022 #endif 00023 00024 namespace FastShower{ 00043 class IInTail; 00044 class CoreSamples; 00045 class IProcessedDist; 00046 class IConfigurer; 00047 class PolyArgs; 00048 class IFn; 00049 00050 class C0EmEcalEc1: 00051 virtual public ISampler, 00052 public ICell0, private DebugBase{ 00053 public: 00054 // 00055 C0EmEcalEc1(IUpdatingGaussian*, IProcessedDist*, IInTail*, IFn*); 00056 C0EmEcalEc1(const IConfigurer*, const std::string&); 00058 virtual ISampler* clone() const; 00059 00060 virtual void sample(const PolyArgs&, CoreSamples&) const; 00061 virtual double lastValue(const CoreSamples&) const; 00062 virtual void components(IDebug::Cpts& ) const; 00063 00064 private: 00065 // 00066 double evalTail(const PolyArgs&) const; 00067 double evalPeak(const PolyArgs&) const; 00068 // 00069 SP<IUpdatingGaussian> m_peak; 00070 SP<IProcessedDist> m_tail; 00071 SP<IInTail> m_inTail; 00072 SP<IFn> m_tailLowerBound; 00073 static const double s_nSigma1; 00074 static const double s_nSigma2; 00075 static const double s_tailFluctScale; 00076 00077 }; 00078 }//namespace 00079 #endif 00080 00081 00082 00083 00084 00085 00086