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