00001
00002 #ifndef ANAPHE_AIDAPROFILE1D
00003 #define ANAPHE_AIDAPROFILE1D 1
00004
00005 #include "AIDA_BaseHistogram.h"
00006 #include "AIDA_Dev/IDevProfile1D.h"
00007 #include <vector>
00008
00009 namespace Anaphe {
00010 namespace AIDA_Histogram_native {
00011 class ProfileBin1D;
00012
00023 class AIDA_Profile1D : public AIDA_BaseHistogram,
00024 virtual public AIDA::Dev::IDevProfile1D
00025 {
00026
00027 public:
00029 AIDA_Profile1D( const std::string& title,
00030 int numberOfBins,
00031 double lowEdge,
00032 double highEdge );
00034 AIDA_Profile1D( const std::string& title,
00035 const std::vector< double >& edges );
00037 AIDA_Profile1D( const AIDA_Profile1D& h );
00039 AIDA_Profile1D( const AIDA::IProfile1D& h );
00041 virtual ~AIDA_Profile1D();
00046 protected:
00047 void updateAnnotation() const;
00048 public:
00049 virtual bool reset();
00050 int entries() const;
00051
00053 int allEntries() const;
00054 virtual int extraEntries() const;
00055 double sumBinHeights() const;
00056 double sumAllBinHeights() const;
00057 double sumExtraBinHeights() const;
00058 double minBinHeight() const;
00059 double maxBinHeight() const;
00060
00062 virtual bool fill( double x, double y, double weight = 1. ) ;
00063 double binMean( int index ) const;
00064 int binEntries( int index ) const;
00065 double binHeight( int index ) const;
00066 double binError( int index ) const;
00067 double binRms( int index ) const;
00068 double mean() const;
00069 double rms() const;
00070 const AIDA::IAxis& axis() const;
00071 int coordToIndex( double coord ) const;
00072 virtual bool add( const AIDA::IProfile1D & h );
00073
00075 bool setBinContents( int binIndex,
00076 int entries,
00077 double height,
00078 double error,
00079 double spread,
00080 double centre );
00081
00082 private:
00084 bool calculateStatistics() const;
00085 bool increment( const AIDA_Profile1D& h );
00086
00087 private:
00088 AIDA::IAxis* m_axis;
00089 std::vector< ProfileBin1D* > m_bins;
00090 mutable bool m_validStatistics;
00091
00092
00093 mutable double m_mean;
00094 mutable double m_rms;
00095 mutable int m_entries;
00096 mutable int m_extraEntries;
00097 mutable double m_sumBinHeights;
00098 mutable double m_sumExtraBinHeights;
00099 mutable double m_minHeight;
00100 mutable double m_maxHeight;
00101
00103 AIDA_Profile1D& operator=( const AIDA_Profile1D& );
00104 };
00105
00106 }
00107 }
00108
00109 #endif