| # Gaudi Framework, version v20r3
Generated: 24 Nov 2008

# IHistogramSvc.h

Go to the documentation of this file.

    00001 // $Header: /local/reps/Gaudi/GaudiKernel/GaudiKernel/IHistogramSvc.h,v 1.13 2008/10/09 09:59:14 marcocle Exp $
    00002 #ifndef GAUDIKERNEL_IHISTOGRAMSVC_H
    00003 #define GAUDIKERNEL_IHISTOGRAMSVC_H
    00004
    00005
    00006 // Include files
    00007 #include "GaudiKernel/IDataProviderSvc.h"
    00008 #include <string>
    00009 #include <vector>
    00010 #include <iostream>
    00011
    00012 // Forward declarations
    00013 class DataObject;
    00014
    00015 // added to allow use of AIDA in applications
    00016 // without prefix AIDA:: (as before)
    00017 namespace AIDA {
    00018   class IBaseHistogram;
    00019   class IHistogram;
    00020   class IHistogram1D;
    00021   class IProfile1D;
    00022   class IHistogram2D;
    00023   class IProfile2D;
    00024   class IHistogram3D;
    00025   class IHistogramFactory;
    00026   class IAnnotation;
    00027   class IAxis;
    00028 }
    00029
    00030 using AIDA::IHistogramFactory;
    00031 using AIDA::IBaseHistogram;
    00032 using AIDA::IHistogram;
    00033 using AIDA::IHistogram1D;
    00034 using AIDA::IProfile1D;
    00035 using AIDA::IHistogram2D;
    00036 using AIDA::IProfile2D;
    00037 using AIDA::IHistogram3D;
    00038 using AIDA::IAxis;
    00039 using AIDA::IAnnotation;
    00040
    00041 // Declaration of the interface ID ( interface id, major version, minor version)
    00042 static const InterfaceID IID_IHistogramSvc(60, 4 , 0);
    00043
    00044
    00051 class IHistogramSvc : virtual public IDataProviderSvc  {
    00052
    00053 public:
    00054
    00056   static const InterfaceID& interfaceID() { return IID_IHistogramSvc; }
    00058   virtual AIDA::IHistogramFactory* histogramFactory() = 0;
    00059
    00076   // ==========================================================================
    00077   // Book 1D histogram with fixed binning
    00078   // ==========================================================================
    00079
    00080   virtual AIDA::IHistogram1D* book( const std::string& fullPath,
    00081                               const std::string& title,
    00082                               int binsX, double lowX, double highX )          = 0;
    00083   virtual AIDA::IHistogram1D* book( const std::string& dirPath,
    00084                               const std::string& relPath,
    00085                               const std::string& title,
    00086                               int binsX, double lowX, double highX )          = 0;
    00087   virtual AIDA::IHistogram1D* book( const std::string& dirPath,
    00088                               int hID,
    00089                               const std::string& title,
    00090                               int binsX, double lowX, double highX )          = 0;
    00091   virtual AIDA::IHistogram1D* book( DataObject* pParent,
    00092                               const std::string& relPath,
    00093                               const std::string& title,
    00094                               int binsX, double lowX, double highX )          = 0;
    00095   virtual AIDA::IHistogram1D* book( DataObject* pParent,
    00096                               int hID,
    00097                               const std::string& title,
    00098                               int binsX, double lowX, double highX )          = 0;
    00099
    00100   // ==========================================================================
    00101   // Book 1D profile histogram with fixed binning
    00102   // ==========================================================================
    00103
    00104   virtual AIDA::IProfile1D* bookProf
    00105   ( const std::string& fullPath,
    00106     const std::string& title,
    00107     int binsX, double lowX, double highX ,
    00108     const std::string& opt = "" )          = 0;
    00109   virtual AIDA::IProfile1D* bookProf
    00110   ( const std::string& dirPath,
    00111     const std::string& relPath,
    00112     const std::string& title,
    00113     int binsX, double lowX, double highX ,
    00114     const std::string& opt = "" )          = 0;
    00115   virtual AIDA::IProfile1D* bookProf
    00116   ( const std::string& dirPath,
    00117     int hID,
    00118     const std::string& title,
    00119     int binsX, double lowX, double highX ,
    00120     const std::string& opt = "" )          = 0;
    00121   virtual AIDA::IProfile1D* bookProf
    00122   ( DataObject* pParent,
    00123     const std::string& relPath,
    00124     const std::string& title,
    00125     int binsX, double lowX, double highX ,
    00126     const std::string& opt = "" )          = 0;
    00127   virtual AIDA::IProfile1D* bookProf
    00128   ( DataObject* pParent,
    00129     int hID,
    00130     const std::string& title,
    00131     int binsX, double lowX, double highX ,
    00132     const std::string& opt = "" )          = 0;
    00133
    00134   // ==========================================================================
    00135   // Book 1D profile histogram with fixed binning & Y-limits
    00136   // ==========================================================================
    00137
    00138   virtual AIDA::IProfile1D* bookProf
    00139   ( const std::string& fullPath ,
    00140     const std::string& title    ,
    00141     int                binsX    ,
    00142     double lowX , double highX  ,
    00143     double lowY , double highY  ,
    00144     const std::string& opt = "s" )          = 0;
    00145   virtual AIDA::IProfile1D* bookProf
    00146   ( const std::string& dirPath  ,
    00147     const std::string& relPath  ,
    00148     const std::string& title    ,
    00149     int binsX                   ,
    00150     double lowX , double highX  ,
    00151     double lowY , double highY  ,
    00152     const std::string& opt = "s" )          = 0;
    00153   virtual AIDA::IProfile1D* bookProf
    00154   ( const std::string& dirPath  ,
    00155     int hID                     ,
    00156     const std::string& title    ,
    00157     int binsX                   ,
    00158     double lowX , double highX  ,
    00159     double lowY , double highY  ,
    00160     const std::string& opt = "s" )          = 0;
    00161   virtual AIDA::IProfile1D* bookProf
    00162   ( DataObject*        pParent  ,
    00163     const std::string& relPath  ,
    00164     const std::string& title    ,
    00165     int binsX                   ,
    00166     double lowX , double highX  ,
    00167     double lowY , double highY  ,
    00168     const std::string& opt = "s" )          = 0;
    00169   virtual AIDA::IProfile1D* bookProf
    00170   ( DataObject*         pParent ,
    00171     int                 hID     ,
    00172     const std::string&  title   ,
    00173     int binsX                   ,
    00174     double lowX , double highX  ,
    00175     double lowY , double highY  ,
    00176     const std::string& opt = "s" )          = 0;
    00177
    00178   // ==========================================================================
    00179   // Book 1D histogram with variable binning
    00180   // ==========================================================================
    00181
    00182   virtual AIDA::IHistogram1D* book( const std::string& fullPath,
    00183                               const std::string& title,
    00184                               std::vector<double> edges )                   = 0;
    00185   virtual AIDA::IHistogram1D* book( const std::string& dirPath,
    00186                               const std::string& relPath,
    00187                               const std::string& title,
    00188                               std::vector<double> edges )                   = 0;
    00189   virtual AIDA::IHistogram1D* book( const std::string& dirPath,
    00190                               int hID,
    00191                               const std::string& title,
    00192                               std::vector<double> edges )                   = 0;
    00193   virtual AIDA::IHistogram1D* book( DataObject* pParent,
    00194                               const std::string& relPath,
    00195                               const std::string& title,
    00196                               std::vector<double> edges )                   = 0;
    00197   virtual AIDA::IHistogram1D* book( DataObject* pParent,
    00198                               int hID,
    00199                               const std::string& title,
    00200                               std::vector<double> edges )                   = 0;
    00201
    00202   // ==========================================================================
    00203   // Book 1D profile histogram with variable binning
    00204   // ==========================================================================
    00205
    00206   virtual AIDA::IProfile1D* bookProf( const std::string& fullPath,
    00207                               const std::string& title,
    00208                               std::vector<double> edges )                   = 0;
    00209   virtual AIDA::IProfile1D* bookProf( const std::string& dirPath,
    00210                               const std::string& relPath,
    00211                               const std::string& title,
    00212                               std::vector<double> edges )                   = 0;
    00213   virtual AIDA::IProfile1D* bookProf( const std::string& dirPath,
    00214                               int hID,
    00215                               const std::string& title,
    00216                               std::vector<double> edges )                   = 0;
    00217   virtual AIDA::IProfile1D* bookProf( DataObject* pParent,
    00218                               const std::string& relPath,
    00219                               const std::string& title,
    00220                               std::vector<double> edges )                   = 0;
    00221   virtual AIDA::IProfile1D* bookProf( DataObject* pParent,
    00222                               int hID,
    00223                               const std::string& title,
    00224                               std::vector<double> edges )                   = 0;
    00225
    00226   // ==========================================================================
    00227   // Book 2D histogram with fixed binning
    00228   // ==========================================================================
    00229
    00230   virtual AIDA::IHistogram2D* book( const std::string& fullPath,
    00231                               const std::string& title,
    00232                               int binsX, double lowX, double highX,
    00233                               int binsY, double lowY, double highY )          = 0;
    00234   virtual AIDA::IHistogram2D* book( const std::string& dirPath,
    00235                               const std::string& relPath,
    00236                               const std::string& title,
    00237                               int binsX, double lowX, double highX,
    00238                               int binsY, double lowY, double highY )          = 0;
    00239   virtual AIDA::IHistogram2D* book( const std::string& dirPath,
    00240                               int hID,
    00241                               const std::string& title,
    00242                               int binsX, double lowX, double highX,
    00243                               int binsY, double lowY, double highY )          = 0;
    00244   virtual AIDA::IHistogram2D* book( DataObject* pParent,
    00245                               const std::string& relPath,
    00246                               const std::string& title,
    00247                               int binsX, double lowX, double highX,
    00248                               int binsY, double lowY, double highY )          = 0;
    00249   virtual AIDA::IHistogram2D* book( DataObject* pParent,
    00250                               int hID,
    00251                               const std::string& title,
    00252                               int binsX, double lowX, double highX,
    00253                               int binsY, double lowY, double highY )          = 0;
    00254
    00255   // ==========================================================================
    00256   // Book 2D profile histogram with fixed binning
    00257   // ==========================================================================
    00258
    00259   virtual AIDA::IProfile2D* bookProf( const std::string& fullPath,
    00260                               const std::string& title,
    00261                               int binsX, double lowX, double highX,
    00262                               int binsY, double lowY, double highY )          = 0;
    00263   virtual AIDA::IProfile2D* bookProf( const std::string& dirPath,
    00264                               const std::string& relPath,
    00265                               const std::string& title,
    00266                               int binsX, double lowX, double highX,
    00267                               int binsY, double lowY, double highY )          = 0;
    00268   virtual AIDA::IProfile2D* bookProf( const std::string& dirPath,
    00269                               int hID,
    00270                               const std::string& title,
    00271                               int binsX, double lowX, double highX,
    00272                               int binsY, double lowY, double highY )          = 0;
    00273   virtual AIDA::IProfile2D* bookProf( DataObject* pParent,
    00274                               const std::string& relPath,
    00275                               const std::string& title,
    00276                               int binsX, double lowX, double highX,
    00277                               int binsY, double lowY, double highY )          = 0;
    00278   virtual AIDA::IProfile2D* bookProf( DataObject* pParent,
    00279                               int hID,
    00280                               const std::string& title,
    00281                               int binsX, double lowX, double highX,
    00282                               int binsY, double lowY, double highY )          = 0;
    00283
    00284   // ==========================================================================
    00285   // Book 2D histogram with variable binning
    00286   // ==========================================================================
    00287
    00288   virtual AIDA::IHistogram2D* book( const std::string& fullPath,
    00289                               const std::string& title,
    00290                               std::vector<double> edgesX,
    00291                               std::vector<double> edgesY )                    = 0;
    00292   virtual AIDA::IHistogram2D* book( const std::string& dirPath,
    00293                               const std::string& relPath,
    00294                               const std::string& title,
    00295                               std::vector<double> edgesX,
    00296                               std::vector<double> edgesY )                    = 0;
    00297   virtual AIDA::IHistogram2D* book( const std::string& dirPath,
    00298                               int hID,
    00299                               const std::string& title,
    00300                               std::vector<double> edgesX,
    00301                               std::vector<double> edgesY )                    = 0;
    00302   virtual AIDA::IHistogram2D* book( DataObject* pParent,
    00303                               const std::string& relPath,
    00304                               const std::string& title,
    00305                               std::vector<double> edgesX,
    00306                               std::vector<double> edgesY )                    = 0;
    00307   virtual AIDA::IHistogram2D* book( DataObject* pParent,
    00308                               int hID,
    00309                               const std::string& title,
    00310                               std::vector<double> edgesX,
    00311                               std::vector<double> edgesY )                    = 0;
    00312
    00313
    00314   // ==========================================================================
    00315   // Book 2D profile histogram with variable binning
    00316   // ==========================================================================
    00317
    00318   virtual AIDA::IProfile2D* bookProf( const std::string& fullPath,
    00319                               const std::string& title,
    00320                               std::vector<double> edgesX,
    00321                               std::vector<double> edgesY )                    = 0;
    00322   virtual AIDA::IProfile2D* bookProf( const std::string& dirPath,
    00323                               const std::string& relPath,
    00324                               const std::string& title,
    00325                               std::vector<double> edgesX,
    00326                               std::vector<double> edgesY )                    = 0;
    00327   virtual AIDA::IProfile2D* bookProf( const std::string& dirPath,
    00328                               int hID,
    00329                               const std::string& title,
    00330                               std::vector<double> edgesX,
    00331                               std::vector<double> edgesY )                    = 0;
    00332   virtual AIDA::IProfile2D* bookProf( DataObject* pParent,
    00333                               const std::string& relPath,
    00334                               const std::string& title,
    00335                               std::vector<double> edgesX,
    00336                               std::vector<double> edgesY )                    = 0;
    00337   virtual AIDA::IProfile2D* bookProf( DataObject* pParent,
    00338                               int hID,
    00339                               const std::string& title,
    00340                               std::vector<double> edgesX,
    00341                               std::vector<double> edgesY )                    = 0;
    00342
    00343
    00344   // ==========================================================================
    00345   // Book 3D histogram with fixed binning
    00346   // ==========================================================================
    00347
    00348   virtual AIDA::IHistogram3D* book( const std::string& fullPath,
    00349                               const std::string& title,
    00350                               int binsX, double lowX, double highX,
    00351                               int binsY, double lowY, double highY,
    00352                               int binsZ, double lowZ, double highZ )          = 0;
    00353   virtual AIDA::IHistogram3D* book( const std::string& dirPath,
    00354                               const std::string& relPath,
    00355                               const std::string& title,
    00356                               int binsX, double lowX, double highX,
    00357                               int binsY, double lowY, double highY,
    00358                               int binsZ, double lowZ, double highZ )          = 0;
    00359   virtual AIDA::IHistogram3D* book( const std::string& dirPath,
    00360                               int hID,
    00361                               const std::string& title,
    00362                               int binsX, double lowX, double highX,
    00363                               int binsY, double lowY, double highY,
    00364                               int binsZ, double lowZ, double highZ )          = 0;
    00365   virtual AIDA::IHistogram3D* book( DataObject* pParent,
    00366                               const std::string& relPath,
    00367                               const std::string& title,
    00368                               int binsX, double lowX, double highX,
    00369                               int binsY, double lowY, double highY,
    00370                               int binsZ, double lowZ, double highZ )          = 0;
    00371   virtual AIDA::IHistogram3D* book( DataObject* pParent,
    00372                               int hID,
    00373                               const std::string& title,
    00374                               int binsX, double lowX, double highX,
    00375                               int binsY, double lowY, double highY,
    00376                               int binsZ, double lowZ, double highZ )          = 0;
    00377
    00378   // ==========================================================================
    00379   // Book 3D histogram with variable binning
    00380   // ==========================================================================
    00381
    00382   virtual AIDA::IHistogram3D* book( const std::string& fullPath,
    00383                               const std::string& title,
    00384                               std::vector<double> edgesX,
    00385                               std::vector<double> edgesY,
    00386                               std::vector<double> edgesZ )                    = 0;
    00387   virtual AIDA::IHistogram3D* book( const std::string& dirPath,
    00388                               const std::string& relPath,
    00389                               const std::string& title,
    00390                               std::vector<double> edgesX,
    00391                               std::vector<double> edgesY,
    00392                               std::vector<double> edgesZ )                    = 0;
    00393   virtual AIDA::IHistogram3D* book( const std::string& dirPath,
    00394                               int hID,
    00395                               const std::string& title,
    00396                               std::vector<double> edgesX,
    00397                               std::vector<double> edgesY,
    00398                               std::vector<double> edgesZ )                    = 0;
    00399   virtual AIDA::IHistogram3D* book( DataObject* pParent,
    00400                               const std::string& relPath,
    00401                               const std::string& title,
    00402                               std::vector<double> edgesX,
    00403                               std::vector<double> edgesY,
    00404                               std::vector<double> edgesZ )                    = 0;
    00405   virtual AIDA::IHistogram3D* book( DataObject* pParent,
    00406                               int hID,
    00407                               const std::string& title,
    00408                               std::vector<double> edgesX,
    00409                               std::vector<double> edgesY,
    00410                               std::vector<double> edgesZ )                    = 0;
    00411
    00412   // ==========================================================================
    00413   // Register histogram with the data store
    00414   // ==========================================================================
    00415
    00416   virtual StatusCode registerObject( const std::string& fullPath,
    00417                                      AIDA::IBaseHistogram* hObj )                     = 0;
    00418   // ---------------------------
    00419   virtual StatusCode registerObject( const std::string& parentPath,
    00420                                      const std::string& objPath,
    00421                                      AIDA::IBaseHistogram* hObj )                     = 0;
    00422   // ---------------------------
    00423   virtual StatusCode registerObject( const std::string& parentPath,
    00424                                      int item, AIDA::IBaseHistogram* hObj )           = 0;
    00425   // ---------------------------
    00426   virtual StatusCode registerObject( DataObject* parentObj,
    00427                                      const std::string& objPath,
    00428                                      AIDA::IBaseHistogram* hObj )                     = 0;
    00429   virtual StatusCode registerObject( AIDA::IBaseHistogram* parentObj,
    00430                                      const std::string& objPath,
    00431                                      AIDA::IBaseHistogram* hObj )                     = 0;
    00432   // ---------------------------
    00433   virtual StatusCode registerObject( DataObject* parentObj,
    00434                                      int item,
    00435                                      AIDA::IBaseHistogram* hObj )                     = 0;
    00436   virtual StatusCode registerObject( AIDA::IBaseHistogram* parentObj,
    00437                                      int item,
    00438                                      AIDA::IBaseHistogram* hObj )                     = 0;
    00439
    00440
    00441   // ==========================================================================
    00442   // Unregister histogram from the data store
    00443   // ==========================================================================
    00444
    00445   virtual StatusCode unregisterObject( AIDA::IBaseHistogram* hObj )                   = 0;
    00446   // ---------------------------
    00447   virtual StatusCode unregisterObject( AIDA::IBaseHistogram* hObj,
    00448                                        const std::string& objectPath )      = 0;
    00449   // ---------------------------
    00450   virtual StatusCode unregisterObject( AIDA::IBaseHistogram* hObj,
    00451                                        int item )                           = 0;
    00452
    00453
    00454   // ==========================================================================
    00455   // Retrieve histogram from data store
    00456   // ==========================================================================
    00457
    00458   virtual StatusCode retrieveObject( IRegistry* pDirectory,
    00459                                      const std::string& path,
    00460                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00461   virtual StatusCode retrieveObject( IRegistry* pDirectory,
    00462                                      const std::string& path,
    00463                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00464   virtual StatusCode retrieveObject( IRegistry* pDirectory,
    00465                                      const std::string& path,
    00466                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00467   virtual StatusCode retrieveObject( IRegistry* pDirectory,
    00468                                      const std::string& path,
    00469                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00470   virtual StatusCode retrieveObject( IRegistry* pDirectory,
    00471                                      const std::string& path,
    00472                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00473   // ---------------------------
    00474   virtual StatusCode retrieveObject( const std::string& fullPath,
    00475                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00476   virtual StatusCode retrieveObject( const std::string& fullPath,
    00477                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00478   virtual StatusCode retrieveObject( const std::string& fullPath,
    00479                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00480   virtual StatusCode retrieveObject( const std::string& fullPath,
    00481                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00482   virtual StatusCode retrieveObject( const std::string& fullPath,
    00483                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00484   // ---------------------------
    00485   virtual StatusCode retrieveObject( const std::string& parentPath,
    00486                                      const std::string& objPath,
    00487                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00488   virtual StatusCode retrieveObject( const std::string& parentPath,
    00489                                      const std::string& objPath,
    00490                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00491   virtual StatusCode retrieveObject( const std::string& parentPath,
    00492                                      const std::string& objPath,
    00493                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00494   virtual StatusCode retrieveObject( const std::string& parentPath,
    00495                                      const std::string& objPath,
    00496                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00497   virtual StatusCode retrieveObject( const std::string& parentPath,
    00498                                      const std::string& objPath,
    00499                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00500   // ---------------------------
    00501   virtual StatusCode retrieveObject( const std::string& parentPath,
    00502                                      int item,
    00503                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00504   virtual StatusCode retrieveObject( const std::string& parentPath,
    00505                                      int item,
    00506                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00507   virtual StatusCode retrieveObject( const std::string& parentPath,
    00508                                      int item,
    00509                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00510   virtual StatusCode retrieveObject( const std::string& parentPath,
    00511                                      int item,
    00512                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00513   virtual StatusCode retrieveObject( const std::string& parentPath,
    00514                                      int item,
    00515                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00516   // ---------------------------
    00517   virtual StatusCode retrieveObject( DataObject* parentObj,
    00518                                      const std::string& objPath,
    00519                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00520   virtual StatusCode retrieveObject( DataObject* parentObj,
    00521                                      const std::string& objPath,
    00522                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00523   virtual StatusCode retrieveObject( DataObject* parentObj,
    00524                                      const std::string& objPath,
    00525                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00526   virtual StatusCode retrieveObject( DataObject* parentObj,
    00527                                      const std::string& objPath,
    00528                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00529   virtual StatusCode retrieveObject( DataObject* parentObj,
    00530                                      const std::string& objPath,
    00531                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00532   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00533                                      const std::string& objPath,
    00534                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00535   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00536                                      const std::string& objPath,
    00537                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00538   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00539                                      const std::string& objPath,
    00540                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00541   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00542                                      const std::string& objPath,
    00543                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00544   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00545                                      const std::string& objPath,
    00546                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00547   // ---------------------------
    00548   virtual StatusCode retrieveObject( DataObject* parentObj,
    00549                                      int item,
    00550                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00551   virtual StatusCode retrieveObject( DataObject* parentObj,
    00552                                      int item,
    00553                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00554   virtual StatusCode retrieveObject( DataObject* parentObj,
    00555                                      int item,
    00556                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00557   virtual StatusCode retrieveObject( DataObject* parentObj,
    00558                                      int item,
    00559                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00560   virtual StatusCode retrieveObject( DataObject* parentObj,
    00561                                      int item,
    00562                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00563   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00564                                      int item,
    00565                                      AIDA::IHistogram1D*& h1dObj )                = 0;
    00566   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00567                                      int item,
    00568                                      AIDA::IProfile1D*& h1dObj )                  = 0;
    00569   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00570                                      int item,
    00571                                      AIDA::IHistogram2D*& h2dObj )                = 0;
    00572   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00573                                      int item,
    00574                                      AIDA::IProfile2D*& h2dObj )                = 0;
    00575   virtual StatusCode retrieveObject( AIDA::IBaseHistogram* parentObj,
    00576                                      int item,
    00577                                      AIDA::IHistogram3D*& h3dObj )                = 0;
    00578
    00579
    00580   // ==========================================================================
    00581   // Find histogram identified by its full path in the data store
    00582   // ==========================================================================
    00583
    00584   virtual StatusCode findObject( const std::string& fullPath,
    00585                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00586   virtual StatusCode findObject( const std::string& fullPath,
    00587                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00588   virtual StatusCode findObject( const std::string& fullPath,
    00589                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00590   virtual StatusCode findObject( const std::string& fullPath,
    00591                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00592   virtual StatusCode findObject( const std::string& fullPath,
    00593                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00594   // ---------------------------
    00595   virtual StatusCode findObject( IRegistry* pDirectory,
    00596                                  const std::string& path,
    00597                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00598   virtual StatusCode findObject( IRegistry* pDirectory,
    00599                                  const std::string& path,
    00600                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00601   virtual StatusCode findObject( IRegistry* pDirectory,
    00602                                  const std::string& path,
    00603                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00604   virtual StatusCode findObject( IRegistry* pDirectory,
    00605                                  const std::string& path,
    00606                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00607   virtual StatusCode findObject( IRegistry* pDirectory,
    00608                                  const std::string& path,
    00609                                  AIDA::IHistogram3D*& h2dObj )                    = 0;
    00610   // ---------------------------
    00611   virtual StatusCode findObject( const std::string& parentPath,
    00612                                  const std::string& objPath,
    00613                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00614   virtual StatusCode findObject( const std::string& parentPath,
    00615                                  const std::string& objPath,
    00616                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00617   virtual StatusCode findObject( const std::string& parentPath,
    00618                                  const std::string& objPath,
    00619                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00620   virtual StatusCode findObject( const std::string& parentPath,
    00621                                  const std::string& objPath,
    00622                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00623   virtual StatusCode findObject( const std::string& parentPath,
    00624                                  const std::string& objPath,
    00625                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00626   // ---------------------------
    00627   virtual StatusCode findObject( const std::string& parentPath,
    00628                                  int item,
    00629                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00630   virtual StatusCode findObject( const std::string& parentPath,
    00631                                  int item,
    00632                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00633   virtual StatusCode findObject( const std::string& parentPath,
    00634                                  int item,
    00635                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00636   virtual StatusCode findObject( const std::string& parentPath,
    00637                                  int item,
    00638                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00639   virtual StatusCode findObject( const std::string& parentPath,
    00640                                  int item,
    00641                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00642   // ---------------------------
    00643   virtual StatusCode findObject( DataObject* parentObj,
    00644                                  const std::string& objPath,
    00645                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00646   virtual StatusCode findObject( DataObject* parentObj,
    00647                                  const std::string& objPath,
    00648                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00649   virtual StatusCode findObject( DataObject* parentObj,
    00650                                  const std::string& objPath,
    00651                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00652   virtual StatusCode findObject( DataObject* parentObj,
    00653                                  const std::string& objPath,
    00654                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00655   virtual StatusCode findObject( DataObject* parentObj,
    00656                                  const std::string& objPath,
    00657                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00658   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00659                                  const std::string& objPath,
    00660                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00661   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00662                                  const std::string& objPath,
    00663                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00664   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00665                                  const std::string& objPath,
    00666                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00667   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00668                                  const std::string& objPath,
    00669                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00670   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00671                                  const std::string& objPath,
    00672                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00673   // ---------------------------
    00674   virtual StatusCode findObject( DataObject* parentObj,
    00675                                  int item,
    00676                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00677   virtual StatusCode findObject( DataObject* parentObj,
    00678                                  int item,
    00679                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00680   virtual StatusCode findObject( DataObject* parentObj,
    00681                                  int item,
    00682                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00683   virtual StatusCode findObject( DataObject* parentObj,
    00684                                  int item,
    00685                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00686   virtual StatusCode findObject( DataObject* parentObj,
    00687                                  int item,
    00688                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00689   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00690                                  int item,
    00691                                  AIDA::IHistogram1D*& h1dObj )                    = 0;
    00692   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00693                                  int item,
    00694                                  AIDA::IProfile1D*& h1dObj )                      = 0;
    00695   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00696                                  int item,
    00697                                  AIDA::IHistogram2D*& h2dObj )                    = 0;
    00698   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00699                                  int item,
    00700                                  AIDA::IProfile2D*& h2dObj )                    = 0;
    00701   virtual StatusCode findObject( AIDA::IBaseHistogram* parentObj,
    00702                                  int item,
    00703                                  AIDA::IHistogram3D*& h3dObj )                    = 0;
    00704
    00705
    00706   // ==========================================================================
    00707   // ASCII output
    00708   // ==========================================================================
    00709   // --------------------------------------------------------------------------
    00710   // Print functions (ASCII graphical representation)
    00711
    00712   // Print (ASCII) the histogram into the output stream
    00713   virtual std::ostream& print( AIDA::IBaseHistogram* h,
    00714                                std::ostream& s = std::cout) const           = 0;
    00715
    00716   // --------------------------------------------------------------------------
    00717   // Write functions (ASCII table containing numbers e.g. bin height)
    00718
    00720   virtual std::ostream& write( AIDA::IBaseHistogram* h,
    00721                                std::ostream& s = std::cout) const           = 0;
    00722
    00724   virtual int write( AIDA::IBaseHistogram* h, const char* file_name ) const       = 0;
    00725
    00726   // ==========================================================================
    00727   // Create all directories in a given full path
    00728   // ==========================================================================
    00729
    00730   virtual DataObject* createPath( const std::string& newPath )              = 0;
    00731
    00737   virtual DataObject* createDirectory   (
    00738     const std::string& parentDir,
    00739     const std::string& subDir  ) = 0;
    00740
    00743   virtual StatusCode registerObject(const std::string& fullPath, DataObject* pObject) = 0;
    00744   virtual StatusCode registerObject(const std::string& parentPath, const std::string& objectPath, DataObject* pObject) = 0;
    00745   virtual StatusCode registerObject(const std::string& parentPath, int item, DataObject* pObject) = 0;
    00746   virtual StatusCode registerObject(DataObject* parentObj, const std::string& objectPath, DataObject* pObject) = 0;
    00747   virtual StatusCode registerObject(DataObject* parentObj, int item, DataObject* pObject) = 0;
    00748   virtual StatusCode unregisterObject(const std::string& fullPath) = 0;
    00749   virtual StatusCode unregisterObject(const std::string& parentPath, const std::string& objPath) = 0;
    00750   virtual StatusCode unregisterObject(const std::string& parentPath, int item) = 0;
    00751   virtual StatusCode unregisterObject(DataObject* pObject) = 0;
    00752   virtual StatusCode unregisterObject(DataObject* pParent, const std::string& objPath) = 0;
    00753   virtual StatusCode unregisterObject(DataObject* pParent, int item) = 0;
    00754   virtual StatusCode retrieveObject(IRegistry* pDirectory, const std::string& path, DataObject*& pObject) = 0;
    00755   virtual StatusCode retrieveObject(const std::string& fullPath, DataObject*& pObject) = 0;
    00756   virtual StatusCode retrieveObject(const std::string& parentPath, const std::string& objectPath, DataObject*& pObject) = 0;
    00757   virtual StatusCode retrieveObject(const std::string& parentPath, int item, DataObject*& pObject) = 0;
    00758   virtual StatusCode retrieveObject(DataObject* parentObj, const std::string& objectPath, DataObject*& pObject) = 0;
    00759   virtual StatusCode retrieveObject(DataObject* parentObj, int item, DataObject*& pObject) = 0;
    00760   virtual StatusCode findObject(IRegistry* pDirectory, const std::string& path, DataObject*& pObject) = 0;
    00761   virtual StatusCode findObject(const std::string& fullPath, DataObject*& pObject) = 0;
    00762   virtual StatusCode findObject(const std::string& parentPath, const std::string& objectPath, DataObject*& pObject) = 0;
    00763   virtual StatusCode findObject(const std::string& parentPath, int item, DataObject*& pObject) = 0;
    00764   virtual StatusCode findObject(DataObject* pNode, const std::string& objectPath, DataObject*& pObject) = 0;
    00765   virtual StatusCode findObject(DataObject* parentObj, int item, DataObject*& pObject) = 0;
    00766 };
    00767
    00768
    00769 #endif  // INTERFACES_IHISTOGRAMSVC_H