00001 #ifndef FASTSHOWER_UPDATINGGAUSSIANBASE_H
00002 #define FASTSHOWER_UPDATINGGAUSSIANBASE_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 UpdatingGaussianBase:
00049 virtual public IUpdatingGaussian, private DebugBase{
00050 public:
00051 UpdatingGaussianBase(const std::string& samplerName, const IConfigurer&);
00052 virtual ~UpdatingGaussianBase(){};
00053
00054
00057 virtual double sample(double phyiscalLow,
00058 double nSigmaLow,
00059 double physicalUp,
00060 double nSigmaUp,
00061 const PolyArgs&) const;
00062
00065 virtual std::pair<double, double>
00066 parameters( const PolyArgs& ) const;
00067 virtual void components(std::vector<const IDebug*>&) const;
00068 virtual IDistProcessor* makeIDistProcessor( const PolyArgs&) const=0;
00069 virtual std::pair<double, double> getLims(double phyiscalLow,
00070 double nSigmaLow,
00071 double physicalUp,
00072 double nSigmaUp,
00073 const PolyArgs&) const=0;
00074
00075 virtual IUpdatingGaussian* clone() const=0;
00076 private:
00078 SP<IFn> m_mean;
00079 SP<IFn> m_sigma;
00080 SP<IProcessedDist> m_normal;
00081 };
00082 }
00083 #endif
00084
00085
00086
00087
00088