| # Gaudi Framework, version v21r9 |

Home |  | Generated: 3 May 2010

# IHistogramSvc.h

Go to the documentation of this file.

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