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