Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

AIDA_Histogram3D.h

Go to the documentation of this file.
00001 // Emacs -*- C++ -*-
00002 #ifndef ANAPHE_AIDAHISTOGRAM3D
00003 #define ANAPHE_AIDAHISTOGRAM3D 1
00004 
00005 #include "AIDA_BaseHistogram.h"
00006 #include "AIDA_Dev/IDevHistogram3D.h"
00007 #include <vector>
00008 
00009 namespace Anaphe {
00010   namespace AIDA_Histogram_native {
00011     class GravityBin3D;
00012 
00023 class AIDA_Histogram3D : public AIDA_BaseHistogram,
00024                          virtual public AIDA::Dev::IDevHistogram3D
00025 {
00026 
00027 public:
00029   AIDA_Histogram3D( const std::string& title,
00030                     int numberOfBinsX,
00031                     double lowEdgeX,
00032                     double highEdgeX,
00033                     int numberOfBinsY,
00034                     double lowEdgeY,
00035                     double highEdgeY,
00036                     int numberOfBinsZ,
00037                     double lowEdgeZ,
00038                     double highEdgeZ );
00040   AIDA_Histogram3D( const std::string& title,
00041                     const std::vector< double >& edgesX,
00042                     const std::vector< double >& edgesY,
00043                     const std::vector< double >& edgesZ );
00045   AIDA_Histogram3D( const AIDA_Histogram3D& h );
00047   AIDA_Histogram3D( const AIDA::IHistogram3D& h );
00049   ~AIDA_Histogram3D();
00054 protected:
00055   void updateAnnotation() const;
00056 public:
00057   bool reset();
00058   int entries() const;
00059 
00061   int allEntries() const;
00062   int extraEntries() const;
00063   double equivalentBinEntries() const;
00064   double sumBinHeights() const;
00065   double sumAllBinHeights() const;
00066   double sumExtraBinHeights() const;
00067   double minBinHeight() const;
00068   double maxBinHeight() const;
00069   bool scale( double scaleFactor );
00070 
00072   bool fill( double x, double y, double z, double weight = 1. );
00073   double binMeanX( int indexX, int indexY, int indexZ ) const;
00074   double binMeanY( int indexX, int indexY, int indexZ ) const;
00075   double binMeanZ( int indexX, int indexY, int indexZ ) const;
00076   int binEntries( int indexX, int indexY, int indexZ ) const;
00077   int binEntriesX( int indexX ) const;
00078   int binEntriesY( int indexY ) const;
00079   int binEntriesZ( int indexZ ) const;
00080   double binHeight( int indexX, int indexY, int indexZ ) const;
00081   double binHeightX( int indexX ) const;
00082   double binHeightY( int indexY ) const;
00083   double binHeightZ( int indexZ ) const;
00084   double binError( int indexX, int indexY, int indexZ ) const;
00085   double meanX() const;
00086   double meanY() const;
00087   double meanZ() const;
00088   double rmsX() const;
00089   double rmsY() const;
00090   double rmsZ() const;
00091   const AIDA::IAxis& xAxis() const;
00092   const AIDA::IAxis& yAxis() const;
00093   const AIDA::IAxis& zAxis() const;
00094   int coordToIndexX( double coordX ) const;
00095   int coordToIndexY( double coordY ) const;
00096   int coordToIndexZ( double coordZ ) const;
00097   bool add( const AIDA::IHistogram3D & h );
00098 
00100   bool setBinContents( int binIndexX,
00101                        int binIndexY,
00102                        int binIndexZ,
00103                        int entries,
00104                        double height,
00105                        double error,
00106                        double centreX,
00107                        double centreY,
00108                        double centreZ );
00109   bool setRms( double rmsX, double rmsY, double rmsZ );
00110 
00111 private:
00113   bool calculateStatistics() const;
00114   bool increment( const AIDA_Histogram3D& h );
00115 
00116 private:
00117   AIDA::IAxis*                  m_axisX;
00118   AIDA::IAxis*                  m_axisY;
00119   AIDA::IAxis*                  m_axisZ;
00120   std::vector< std::vector< std::vector< GravityBin3D* > > > m_bins;
00121   mutable bool                  m_validStatistics;
00122 
00123   // Histogram statistics
00124   mutable double                m_meanX;
00125   mutable double                m_rmsX;
00126   mutable double                m_meanY;
00127   mutable double                m_rmsY;
00128   mutable double                m_meanZ;
00129   mutable double                m_rmsZ;
00130   mutable int                   m_entries;
00131   mutable int                   m_extraEntries;
00132   mutable double                m_ebe;
00133   mutable double                m_sumBinHeights;
00134   mutable double                m_sumExtraBinHeights;
00135   mutable double                m_minHeight;
00136   mutable double                m_maxHeight;
00137   double                        m_sumWeightTimesSquaredX;
00138   double                        m_sumWeightTimesSquaredY;
00139   double                        m_sumWeightTimesSquaredZ;
00140 
00142   AIDA_Histogram3D& operator=( const AIDA_Histogram3D& );
00143 };
00144 
00145   }
00146 }
00147 
00148 #endif /* ifndef ANAPHE_AIDAHISTOGRAM3D */

Generated on Tue Nov 19 12:32:16 2002 for AIDA_Histogram_native by doxygen1.2.16