00001 #ifndef FASTSHOWER_UPDATINGGAUSSIAN_H 00002 #define FASTSHOWER_UPDATINGGAUSSIAN_H 00003 00004 #ifndef FASTSHOWER_IUPDATINGGAUSSIAN_H 00005 #include "FastShowerUtils/IUpdatingGaussian.h" 00006 #endif 00007 00008 #ifndef FASTSHOWER_DEBUGBASE_H 00009 #include "FastShowerUtils/DebugBase.h" 00010 #endif 00011 00012 #ifndef FASTSHOWER_SP_H 00013 #include "FastShowerUtils/SP.h" 00014 #endif 00015 00016 #ifndef FASTSHOWER_LINEARPROCESSOR_H 00017 #include "FastShowerUtils/LinearProcessor.h" 00018 #endif 00019 00020 #ifndef FASTSHOWER_IPROCESSEDDIST_H 00021 #include "FastShowerUtils/IProcessedDist.h" 00022 #endif 00023 00024 #ifndef FASTSHOWER_IFN_H 00025 #include "FastShowerUtils/IFn.h" 00026 #endif 00027 00028 #ifndef STD_VECTOR_H 00029 #define STD_VECTOR_H 00030 #include <vector> 00031 #endif 00032 00033 #ifndef STD_PAIR_H 00034 #define STD_PAIR_H 00035 #include <pair.h> 00036 #endif 00037 00038 namespace FastShower{ 00046 class IConfigurer; 00047 00048 class UpdatingGaussian: 00049 virtual public IUpdatingGaussian, private DebugBase{ 00050 public: 00051 UpdatingGaussian(IFn* meanFunction, IFn* sigmaFunction, 00052 IProcessedDist* norm); 00053 UpdatingGaussian(const std::string& samplerName, const IConfigurer&); 00054 ~UpdatingGaussian(){}; 00055 virtual IUpdatingGaussian* clone() const; 00056 00057 00060 virtual double sample(double phyiscalLow, 00061 double nSigmaLow, 00062 double physicalUp, 00063 double nSigmaUp, 00064 const PolyArgs&) const; 00065 00068 virtual std::pair<double, double> 00069 parameters( const PolyArgs& ) const; 00070 virtual void components(std::vector<const IDebug*>&) const; 00071 private: 00073 SP<IFn> m_mean; 00074 SP<IFn> m_sigma; 00075 SP<IProcessedDist> m_normal; 00076 }; 00077 }//namespace 00078 #endif 00079 00080 00081 00082 00083