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

AIDA_HistogramFactory.h

Go to the documentation of this file.
00001 // Emacs -*- C++ -*-
00002 #ifndef ANAPHE_AIDAHISTOGRAMFACTORY_H 
00003 #define ANAPHE_AIDAHISTOGRAMFACTORY_H 1
00004 
00005 // includes 
00006 #include "AIDA/IHistogramFactory.h"
00007 
00008 // forward declarations
00009 namespace AIDA {
00010   namespace Dev {
00011     class IDevTree;
00012     class IDevHistogramFactory;
00013   }
00014 }
00015 
00016 
00017 namespace Anaphe {
00018   namespace AIDA_Histogram_native {
00019 
00021 
00022 class AIDA_HistogramFactory : virtual public AIDA::IHistogramFactory
00023 {
00024 public:
00026   AIDA_HistogramFactory( AIDA::Dev::IDevTree& tree, AIDA::Dev::IDevHistogramFactory& factory );
00028   ~AIDA_HistogramFactory() { /* nop */; }
00030   bool destroy( AIDA::IBaseHistogram* histo );
00031   AIDA::ICloud1D* createCloud1D( const std::string& name, const std::string& title, int nMax = -1, const std::string& options = "" );
00032   AIDA::ICloud1D* createCloud1D( const std::string& name );
00033   AIDA::ICloud1D* createCopy( const std::string& name, const AIDA::ICloud1D& original );
00034   AIDA::ICloud2D* createCloud2D( const std::string& name, const std::string& title, int nMax = -1, const std::string& options = "" );
00035   AIDA::ICloud2D* createCloud2D( const std::string& name );
00036   AIDA::ICloud2D* createCopy( const std::string& name, const AIDA::ICloud2D& original );
00037   AIDA::ICloud3D* createCloud3D( const std::string& name, const std::string& title, int nMax = -1, const std::string& options = "" );
00038   AIDA::ICloud3D* createCloud3D( const std::string& name );
00039   AIDA::ICloud3D* createCopy( const std::string& name, const AIDA::ICloud3D& original );
00040   AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, int nBins, double lowerEdge, double upperEdge, const std::string& options = "");
00041   AIDA::IHistogram1D* createHistogram1D( const std::string& name, const std::string& title, const std::vector< double >& binEdge, const std::string& options = "" );
00042   AIDA::IHistogram1D* createHistogram1D( const std::string& name, int nBins, double lowerEdge, double upperEdge );
00043   AIDA::IHistogram1D* createCopy( const std::string& name, const AIDA::IHistogram1D& original );
00044   AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, const std::string& options  = "");
00045   AIDA::IHistogram2D* createHistogram2D( const std::string& name, const std::string& title, const std::vector< double >& binEdgeX, const std::vector< double >& binEdgeY, const std::string& options = "" );
00046   AIDA::IHistogram2D* createHistogram2D( const std::string& name, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY );
00047   AIDA::IHistogram2D* createCopy( const std::string& name, const AIDA::IHistogram2D& original );
00048   AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, int nBinsZ, double lowerEdgeZ, double upperEdgeZ, const std::string& options = "" );
00049   AIDA::IHistogram3D* createHistogram3D( const std::string& name, const std::string& title, const std::vector< double >& binEdgeX, const std::vector< double >& binEdgeY, const std::vector< double >& binEdgeZ, const std::string& options = "" );
00050   AIDA::IHistogram3D* createHistogram3D( const std::string& name, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, int nBinsZ, double lowerEdgeZ, double upperEdgeZ );
00051   AIDA::IHistogram3D* createCopy( const std::string& name, const AIDA::IHistogram3D& original );
00052   AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, int nBins, double lowerEdge, double upperEdge, const std::string& options = "");
00053   AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue, const std::string& options = "");
00054   AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const std::vector< double >& binEdge, const std::string& options = "" );
00055   AIDA::IProfile1D* createProfile1D( const std::string& name, const std::string& title, const std::vector< double >& binEdge, double lowerValue, double upperValue, const std::string& options = "" );
00056   AIDA::IProfile1D* createProfile1D( const std::string& name, int nBins, double lowerEdge, double upperEdge );
00057   AIDA::IProfile1D* createProfile1D( const std::string& name, int nBins, double lowerEdge, double upperEdge, double lowerValue, double upperValue );
00058   AIDA::IProfile1D* createCopy( const std::string& name, const AIDA::IProfile1D& original );
00059   AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, const std::string& options = "" );
00060   AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue, const std::string& options = "");
00061   AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const std::vector< double >& binEdgeX, const std::vector< double >& binEdgeY, const std::string& options = "" );
00062   AIDA::IProfile2D* createProfile2D( const std::string& name, const std::string& title, const std::vector< double >& binEdgeX, const std::vector< double >& binEdgeY, double lowerValue, double upperValue, const std::string& options = "" );
00063   AIDA::IProfile2D* createProfile2D( const std::string& name, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY );
00064   AIDA::IProfile2D* createProfile2D( const std::string& name, int nBinsX, double lowerEdgeX, double upperEdgeX, int nBinsY, double lowerEdgeY, double upperEdgeY, double lowerValue, double upperValue );
00065   AIDA::IProfile2D* createCopy( const std::string& name, const AIDA::IProfile2D& original );
00066   AIDA::IHistogram1D* add( const std::string& name, const AIDA::IHistogram1D& a, const AIDA::IHistogram1D& b );
00067   AIDA::IHistogram1D* subtract( const std::string& name, const AIDA::IHistogram1D& a, const AIDA::IHistogram1D& b );
00068   AIDA::IHistogram1D* multiply( const std::string& name, const AIDA::IHistogram1D& a, const AIDA::IHistogram1D& b );
00069   AIDA::IHistogram1D* divide( const std::string& name, const AIDA::IHistogram1D& a, const AIDA::IHistogram1D& b );
00070   AIDA::IHistogram2D* add( const std::string& name, const AIDA::IHistogram2D& a, const AIDA::IHistogram2D& b );
00071   AIDA::IHistogram2D* subtract( const std::string& name, const AIDA::IHistogram2D& a, const AIDA::IHistogram2D& b );
00072   AIDA::IHistogram2D* multiply( const std::string& name, const AIDA::IHistogram2D& a, const AIDA::IHistogram2D& b );
00073   AIDA::IHistogram2D* divide( const std::string& name, const AIDA::IHistogram2D& a, const AIDA::IHistogram2D& b );
00074   AIDA::IHistogram3D* add( const std::string& name, const AIDA::IHistogram3D& a, const AIDA::IHistogram3D& b );
00075   AIDA::IHistogram3D* subtract( const std::string& name, const AIDA::IHistogram3D& a, const AIDA::IHistogram3D& b );
00076   AIDA::IHistogram3D* multiply( const std::string& name, const AIDA::IHistogram3D& a, const AIDA::IHistogram3D& b );
00077   AIDA::IHistogram3D* divide( const std::string& name, const AIDA::IHistogram3D& a, const AIDA::IHistogram3D& b );
00078   AIDA::IHistogram1D* projectionX( const std::string& name, const AIDA::IHistogram2D& h );
00079   AIDA::IHistogram1D* projectionY( const std::string& name, const AIDA::IHistogram2D& h );
00080   AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY );
00081   AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX );
00082   AIDA::IHistogram1D* sliceX( const std::string& name, const AIDA::IHistogram2D& h, int indexY1, int indexY2 );
00083   AIDA::IHistogram1D* sliceY( const std::string& name, const AIDA::IHistogram2D& h, int indexX1, int indexX2 );
00084   AIDA::IHistogram2D* projectionXY( const std::string& name, const AIDA::IHistogram3D& h );
00085   AIDA::IHistogram2D* projectionXZ( const std::string& name, const AIDA::IHistogram3D& h );
00086   AIDA::IHistogram2D* projectionYZ( const std::string& name, const AIDA::IHistogram3D& h );
00087   AIDA::IHistogram2D* sliceXY( const std::string& name, const AIDA::IHistogram3D& h, int indexZ1, int indexZ2 );
00088   AIDA::IHistogram2D* sliceXZ( const std::string& name, const AIDA::IHistogram3D& h, int indexY1, int indexY2 );
00089   AIDA::IHistogram2D* sliceYZ( const std::string& name, const AIDA::IHistogram3D& h, int indexX1, int indexX2 );
00090 
00091 private:
00093   AIDA::Dev::IDevTree&              m_tree;
00094   AIDA::Dev::IDevHistogramFactory&  m_factory;
00095 
00097   template< class T >
00098   T* registerObject( T* p, const std::string& name )
00099   {
00100     if ( p ) {
00101       p->setName( name );
00102       if ( ! m_tree.add( p ) ) {
00103         m_factory.destroy( p );
00104         p = 0;
00105       }
00106     }
00107     return p;
00108   }
00109   
00110 
00111 };
00112 
00113   }
00114 }
00115 #endif /* ifndef ANAPHE_AIDAHISTOGRAMFACTORY_H */ 

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