Anaphe Home Page Reference Documentation

Main Page     Namespaces     Classes     Source Code    

IHistogram3D.h

Go to the documentation of this file.
00001 #ifndef INTERFACES_IHISTOGRAM3D_H
00002 #define INTERFACES_IHISTOGRAM3D_H 1
00003 
00004 
00005 // Include files
00006 #include "Interfaces/IHistogram.h"
00007 
00008 #ifndef ANAPHE_NO_NAMESPACE
00009 namespace Anaphe {
00010 #endif
00011 
00012   // Forward declarations
00013   class IHistogram1D;
00014   class IHistogram2D;
00015 
00016 
00017   //------------------------------------------------------------------------------
00018   //
00019   // ClassName:   IHistogram3D
00020   //  
00021   // Description: Definition of the IHistogram3D interface class
00022   //              See also <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a>
00023   //
00024   //              All methods that accept a bin number as an argument
00025   //              shall accept in-range bin indices from 0 to N-1,
00026   //              and also the UNDERFLOW_BIN or OVERFLOW_BIN.
00027   // 
00028   //              Number of bins N can be also obtained from
00029   //              the corresponding axis e.g. by xAxis()->bins()
00030   //
00031   //              Other index values are invalid,
00032   //              and their use shall result in an error
00033   //
00034   // Authors:     Pavel Binko, Dino Ferrero Merlino, Andreas Pfeiffer
00035   // Date:        16/01/2001
00036   //
00037   //------------------------------------------------------------------------------
00038 
00039 
00040   class IHistogram3D : virtual public IHistogram {
00041 
00042   public:
00043     virtual ~IHistogram3D() { /* nop */ }
00045     virtual void fill( double x, double y, double z, double weight = 1. )     = 0;
00047     virtual int binEntries( int indexX, int indexY, int indexZ ) const        = 0;
00048 
00049     // Total number of bin entries in projected slices can be calculated e.g. by
00050     //   sliceX( 0, Ny-1, 0, Nz-1 )->binEntries( indexX )
00051     //   sliceYZ( 0, Nx-1 )->binEntries( indexY, indexZ )
00052 
00054     virtual double binHeight( int indexX, int indexY, int indexZ ) const      = 0;
00056     virtual double binError( int indexX, int indexY, int indexZ ) const       = 0;
00059     virtual double meanX() const                                              = 0;
00060     virtual double meanY() const                                              = 0;
00061     virtual double meanZ() const                                              = 0;
00064     virtual double rmsX() const                                               = 0;
00065     virtual double rmsY() const                                               = 0;
00066     virtual double rmsZ() const                                               = 0;
00068     virtual double minBinHeight() const                                       = 0;
00070     virtual int minBinX() const                                               = 0;
00071     virtual int minBinY() const                                               = 0;
00072     virtual int minBinZ() const                                               = 0;
00074     virtual double maxBinHeight() const                                       = 0;
00076     virtual int maxBinX() const                                               = 0;
00077     virtual int maxBinY() const                                               = 0;
00078     virtual int maxBinZ() const                                               = 0;
00080     virtual IAxis* xAxis() const                                              = 0;
00081     virtual IAxis* yAxis() const                                              = 0;
00082     virtual IAxis* zAxis() const                                              = 0;
00083     virtual int coordToIndexX( double coordX ) const                          = 0;
00084     virtual int coordToIndexY( double coordY ) const                          = 0;
00085     virtual int coordToIndexZ( double coordZ ) const                          = 0;
00086 
00087     // ==========================================================================
00088     // Slices - to create the histograms returned, the slice methods should
00089     //          use the same factory, which created the parent 3D histogram.
00090     //          The users are fully responsible for the created histograms.
00091     // ==========================================================================
00092 
00097     virtual IHistogram2D* projectionXY()const  = 0;
00102     virtual IHistogram2D* projectionXZ() const = 0;
00107     virtual IHistogram2D* projectionYZ() const = 0;
00108 
00114     virtual IHistogram2D* sliceXY( int indexZ1, int indexZ2  ) const          = 0;
00115 
00119     virtual IHistogram2D* sliceXZ( int indexY1, int indexY2  ) const          = 0;
00120 
00124     virtual IHistogram2D* sliceYZ( int indexX1, int indexX2 ) const           = 0;
00125 
00126   };
00127 
00128 
00129 #ifndef ANAPHE_NO_NAMESPACE
00130 }; // end namespace Anaphe
00131 #endif
00132 
00133 #endif    // INTERFACES_IHISTOGRAM3D_H
00134 


Anaphe documentation generated by Doxygen (www.doxygen.org)