00001 #ifndef FASTSHOWER_ANHADEARLYECALBAR1_H 00002 #define FASTSHOWER_ANHADEARLYECALBAR1_H 00003 00004 #ifndef FASTSHOWER_ISAMPLER_H 00005 #include "FastShowerUtils/ISampler.h" 00006 #endif 00007 00008 #ifndef FASTSHOWER_ICELLAN_H 00009 #include "FastShowerUtils/ICellAN.h" 00010 #endif 00011 00012 #ifndef FASTSHOWER_IUPDATINGGAUSSIAN_H 00013 #include "FastShowerUtils/IUpdatingGaussian.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 #ifndef STD_STRING_H 00025 #define STD_STRING_H 00026 #include <string> 00027 #endif 00028 00029 namespace FastShower{ 00048 class IInTail; 00049 class PolyArgs; 00050 class CoreSamples; 00051 class IConfigurer; 00052 class IProcessedDist; 00053 00054 class ANHadEarlyEcalBar1: 00055 virtual public ISampler, 00056 public ICellAN, private DebugBase{ 00057 public: 00058 // 00059 ANHadEarlyEcalBar1(IUpdatingGaussian*, 00060 IProcessedDist*, 00061 IInTail*); 00062 // 00063 ANHadEarlyEcalBar1(const IConfigurer*, const std::string&); 00064 // 00066 virtual ISampler* clone() const; 00067 00068 virtual void sample(const PolyArgs&, CoreSamples&) const; 00069 virtual double lastValue(const CoreSamples& ) const; 00070 virtual void components(IDebug::Cpts& ) const; 00071 00072 private: 00073 // 00074 double evalTail(const PolyArgs&) const; 00075 double evalPeak(const PolyArgs&) const; 00076 // 00077 SP<IUpdatingGaussian> m_peak; 00078 SP<IProcessedDist> m_tail; 00079 SP<IInTail> m_inTail; 00080 }; 00081 }//namespace 00082 #endif