Gaudi Framework, version v20r2

Generated: 18 Jul 2008

GaudiHistos.h

Go to the documentation of this file.
00001 // $Id: GaudiHistos.h,v 1.9 2008/01/17 20:59:20 marcocle Exp $
00002 // ============================================================================
00003 #ifndef GAUDIALG_GAUDIHISTOS_H
00004 #define GAUDIALG_GAUDIHISTOS_H 1
00005 // ============================================================================
00006 /* @file GaudiHistos.h
00007  *
00008  *  Header file for class : GaudiHistos
00009  *
00010  *  @author Chris Jones   Christopher.Rob.Jones@cern.ch
00011  *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
00012  *  @date   2005-08-08
00013  */
00014 // ============================================================================
00015 // Include files#
00016 // ============================================================================
00017 #include "GaudiKernel/HistoProperty.h"
00018 #include "GaudiAlg/Maps.h"
00019 #include "GaudiAlg/HbookName.h"
00020 // ============================================================================
00021 // Forward declarations
00022 namespace AIDA
00023 {
00024   class IHistogram1D;
00025   class IHistogram2D;
00026   class IHistogram3D;
00027   class IProfile1D;
00028   class IProfile2D;
00029 }
00030 // ============================================================================
00040 template <class PBASE>
00041 class GaudiHistos : public PBASE
00042 {
00043 public:
00044   // ==========================================================================
00046   typedef GaudiAlg::HistoID                HistoID;
00047   // ==========================================================================
00049   typedef GaudiAlg::Histo1DMapNumericID    Histo1DMapNumID;
00051   typedef GaudiAlg::Histo1DMapLiteralID    Histo1DMapLitID;
00053   typedef GaudiAlg::Histo1DMapTitle        Histo1DMapTitle;
00054   // ==========================================================================
00056   typedef GaudiAlg::Histo2DMapNumericID    Histo2DMapNumID;
00058   typedef GaudiAlg::Histo2DMapLiteralID    Histo2DMapLitID;
00060   typedef GaudiAlg::Histo2DMapTitle        Histo2DMapTitle;
00061   // ==========================================================================
00063   typedef GaudiAlg::Histo3DMapNumericID    Histo3DMapNumID;
00065   typedef GaudiAlg::Histo3DMapLiteralID    Histo3DMapLitID;
00067   typedef GaudiAlg::Histo3DMapTitle        Histo3DMapTitle;
00068   // ==========================================================================
00070   typedef GaudiAlg::Profile1DMapNumericID  Profile1DMapNumID;
00072   typedef GaudiAlg::Profile1DMapLiteralID  Profile1DMapLitID;
00074   typedef GaudiAlg::Profile1DMapTitle      Profile1DMapTitle;
00075   // ==========================================================================
00077   typedef GaudiAlg::Profile2DMapNumericID  Profile2DMapNumID;
00079   typedef GaudiAlg::Profile2DMapLiteralID  Profile2DMapLitID;
00081   typedef GaudiAlg::Profile2DMapTitle      Profile2DMapTitle;
00082   // ==========================================================================
00083 public:
00084   // ==========================================================================
00085   // ================================= 1D Histograms ==========================
00086   // ==========================================================================
00129   AIDA::IHistogram1D*  plot1D
00130   ( const double        value        ,
00131     const std::string&  title        ,
00132     const double        low          ,
00133     const double        high         ,
00134     const unsigned long bins   = 100 ,
00135     const double        weight = 1.0 ) const ;
00136   // ==========================================================================
00150   inline AIDA::IHistogram1D*  plot
00151   ( const double        value        ,
00152     const std::string&  title        ,
00153     const double        low          ,
00154     const double        high         ,
00155     const unsigned long bins   = 100 ,
00156     const double        weight = 1.0 ) const
00157   {
00158     return plot1D ( value, title, low, high, bins, weight );
00159   }
00160   // ==========================================================================
00188   AIDA::IHistogram1D*  plot
00189   ( const double             value        ,
00190     const Gaudi::Histo1DDef& hdef         ,
00191     const double             weight = 1.0 ) const ;
00192   // ==========================================================================
00257   // ==========================================================================
00258   AIDA::IHistogram1D*  plot1D
00259   ( const double        value        ,
00260     const HistoID&      ID           ,
00261     const std::string&  title        ,
00262     const double        low          ,
00263     const double        high         ,
00264     const unsigned long bins   = 100 ,
00265     const double        weight = 1.0 ) const ;
00266   // ==========================================================================
00281   inline AIDA::IHistogram1D*  plot
00282   ( const double        value        ,
00283     const HistoID&      ID           ,
00284     const std::string&  title        ,
00285     const double        low          ,
00286     const double        high         ,
00287     const unsigned long bins   = 100 ,
00288     const double        weight = 1.0 ) const
00289   {
00290     return plot1D ( value, ID, title, low, high, bins, weight );
00291   }
00292   // ==========================================================================
00317   AIDA::IHistogram1D*  plot
00318   ( const double             value        ,
00319     const HistoID&           ID           ,
00320     const Gaudi::Histo1DDef& hdef         ,
00321     const double             weight = 1.0 ) const ;
00322   // ==========================================================================
00386   template <class FUNCTION,class OBJECT>
00387   inline AIDA::IHistogram1D*   plot
00388   ( const FUNCTION&     func         ,
00389     OBJECT              first        ,
00390     OBJECT              last         ,
00391     const std::string&  title        ,
00392     const double        low          ,
00393     const double        high         ,
00394     const unsigned long bins  = 100  ) const
00395   {
00396     AIDA::IHistogram1D* h(0);
00397     if ( produceHistos() )
00398     {
00399       // retrieve or book the histogram
00400       h = histo1D ( title ) ;
00401       if ( 0 == h )     { h = book1D  ( title , low , high , bins ); }
00402       // fill histogram
00403       while( first != last && 0 != h  )
00404       { h = fill ( h , func( *first ) , 1.0 , title  ) ; ++first ; }
00405     }
00406     return h ;
00407   }
00408   // ==========================================================================
00464   template <class FUNCTION,class OBJECT>
00465   inline AIDA::IHistogram1D*   plot
00466   ( const FUNCTION&     func         ,
00467     OBJECT              first        ,
00468     OBJECT              last         ,
00469     const HistoID&      ID           ,
00470     const std::string&  title        ,
00471     const double        low          ,
00472     const double        high         ,
00473     const unsigned long bins  = 100  ) const
00474   {
00475     AIDA::IHistogram1D* h(0);
00476     if ( produceHistos() )
00477     {
00478       // retrieve or book the histogram
00479       h = histo1D ( ID ) ;
00480       if ( 0 == h )     { h = book1D  ( ID , title , low , high , bins ); }
00481       // fill histogram
00482       while( first != last && 0 != h )
00483       { h = fill( h , func( *first ) , 1.0 , title  ) ; ++first ; }
00484     }
00485     return h;
00486   }
00487   // ==========================================================================
00556   template <class FUNCTION,class OBJECT,class WEIGHT>
00557   inline AIDA::IHistogram1D*   plot
00558   ( const FUNCTION&     func         ,
00559     OBJECT              first        ,
00560     OBJECT              last         ,
00561     const std::string&  title        ,
00562     const double        low          ,
00563     const double        high         ,
00564     const unsigned long bins         ,
00565     const WEIGHT&       weight       ) const
00566   {
00567     AIDA::IHistogram1D* h(0);
00568     if ( produceHistos() )
00569     {
00570       // retrieve or book the histogram
00571       h = histo1D ( title ) ;
00572       if ( 0 == h ) { h = book1D  ( title , low , high , bins ); }
00573       // fill histogram
00574       while ( first != last && 0 != h )
00575       { h = fill ( h                 ,
00576                    func   ( *first ) ,
00577                    weight ( *first ) , title  ) ; ++first ; }
00578     }
00579     return h;
00580   }
00581   // ==========================================================================
00648   template <class FUNCTION,class OBJECT,class WEIGHT>
00649   inline AIDA::IHistogram1D*   plot
00650   ( const FUNCTION&     func         ,
00651     OBJECT              first        ,
00652     OBJECT              last         ,
00653     const HistoID&      ID           ,
00654     const std::string&  title        ,
00655     const double        low          ,
00656     const double        high         ,
00657     const unsigned long bins         ,
00658     const WEIGHT&       weight       ) const
00659   {
00660     AIDA::IHistogram1D* h(0);
00661     if ( produceHistos() )
00662     {
00663       // retrieve or book the histogram
00664       h = histo1D ( ID ) ;
00665       if ( 0 == h ) { h = book1D  ( ID , title , low , high , bins ); }
00666       // fill histogram
00667       while( first != last && 0 != h )
00668       { h  = fill ( h                 ,
00669                     func   ( *first ) ,
00670                     weight ( *first ) , title  ) ; ++first ; }
00671     }
00672     return h ;
00673   }
00674   // ==========================================================================
00675   // ================================= 2D Histograms ==========================
00676   // ==========================================================================
00727   AIDA::IHistogram2D*  plot2D
00728   ( const double        valueX       ,
00729     const double        valueY       ,
00730     const std::string&  title        ,
00731     const double        lowX         ,
00732     const double        highX        ,
00733     const double        lowY         ,
00734     const double        highY        ,
00735     const unsigned long binsX  = 50  ,
00736     const unsigned long binsY  = 50  ,
00737     const double        weight = 1.0 ) const;
00738   // ==========================================================================
00815   AIDA::IHistogram2D*  plot2D
00816   ( const double        valueX       ,
00817     const double        valueY       ,
00818     const HistoID&      ID           ,
00819     const std::string&  title        ,
00820     const double        lowX         ,
00821     const double        highX        ,
00822     const double        lowY         ,
00823     const double        highY        ,
00824     const unsigned long binsX  = 50  ,
00825     const unsigned long binsY  = 50  ,
00826     const double        weight = 1.0 ) const;
00827   // ==========================================================================
00828   // ================================= 3D Histograms ==========================
00829   // ==========================================================================
00888   AIDA::IHistogram3D*  plot3D
00889   ( const double        valueX       ,
00890     const double        valueY       ,
00891     const double        valueZ       ,
00892     const std::string&  title        ,
00893     const double        lowX         ,
00894     const double        highX        ,
00895     const double        lowY         ,
00896     const double        highY        ,
00897     const double        lowZ         ,
00898     const double        highZ        ,
00899     const unsigned long binsX  = 10  ,
00900     const unsigned long binsY  = 10  ,
00901     const unsigned long binsZ  = 10  ,
00902     const double        weight = 1.0 ) const;
00903   // ==========================================================================
00990   AIDA::IHistogram3D*  plot3D
00991   ( const double        valueX       ,
00992     const double        valueY       ,
00993     const double        valueZ       ,
00994     const HistoID&      ID           ,
00995     const std::string&  title        ,
00996     const double        lowX         ,
00997     const double        highX        ,
00998     const double        lowY         ,
00999     const double        highY        ,
01000     const double        lowZ         ,
01001     const double        highZ        ,
01002     const unsigned long binsX  = 10  ,
01003     const unsigned long binsY  = 10  ,
01004     const unsigned long binsZ  = 10  ,
01005     const double        weight = 1.0 ) const;
01006   // ==========================================================================
01007   // ================================= 1D Profile =============================
01008   // ==========================================================================
01054   AIDA::IProfile1D* profile1D
01055   ( const double        valueX       ,
01056     const double        valueY       ,
01057     const std::string&  title        ,
01058     const double        lowX         ,
01059     const double        highX        ,
01060     const unsigned long binsX  = 100 ,
01061     const double        weight = 1.0 ) const;
01062   // ==========================================================================
01125   AIDA::IProfile1D* profile1D
01126   ( const double        valueX       ,
01127     const double        valueY       ,
01128     const HistoID&      ID           ,
01129     const std::string&  title        ,
01130     const double        lowX         ,
01131     const double        highX        ,
01132     const unsigned long binsX  = 100 ,
01133     const double        weight = 1.0 ) const;
01134   // ==========================================================================
01135   // ================================= 2D Profile =============================
01136   // ==========================================================================
01187   AIDA::IProfile2D* profile2D
01188   ( const double        valueX       ,
01189     const double        valueY       ,
01190     const double        valueZ       ,
01191     const std::string&  title        ,
01192     const double        lowX         ,
01193     const double        highX        ,
01194     const double        lowY         ,
01195     const double        highY        ,
01196     const unsigned long binsX  = 50  ,
01197     const unsigned long binsY  = 50  ,
01198     const double        weight = 1.0 ) const;
01199   // ==========================================================================
01267   AIDA::IProfile2D* profile2D
01268   ( const double        valueX       ,
01269     const double        valueY       ,
01270     const double        valueZ       ,
01271     const HistoID&      ID           ,
01272     const std::string&  title        ,
01273     const double        lowX         ,
01274     const double        highX        ,
01275     const double        lowY         ,
01276     const double        highY        ,
01277     const unsigned long binsX  = 50  ,
01278     const unsigned long binsY  = 50  ,
01279     const double        weight = 1.0 ) const;
01280   // ==========================================================================
01281 public:
01282   // ==========================================================================
01294   AIDA::IHistogram1D*  book1D
01295   ( const std::string&  title        ,
01296     const double        low    =   0 ,
01297     const double        high   = 100 ,
01298     const unsigned long bins   = 100 ) const ;
01299   // ==========================================================================
01312   inline AIDA::IHistogram1D*  book
01313   ( const std::string&  title        ,
01314     const double        low    =   0 ,
01315     const double        high   = 100 ,
01316     const unsigned long bins   = 100 ) const
01317   {
01318     return book1D( title, low, high, bins );
01319   }
01320   // ==========================================================================
01329    AIDA::IHistogram1D*  book
01330   ( const Gaudi::Histo1DDef& hdef ) const ;
01331   // ==========================================================================
01346   AIDA::IHistogram2D*  book2D
01347   ( const std::string&  title         ,
01348     const double        lowX    =   0 ,
01349     const double        highX   = 100 ,
01350     const unsigned long binsX   =  50 ,
01351     const double        lowY    =   0 ,
01352     const double        highY   = 100 ,
01353     const unsigned long binsY   =  50 ) const ;
01354   // ==========================================================================
01372   AIDA::IHistogram3D*  book3D
01373   ( const std::string&  title         ,
01374     const double        lowX    =   0 ,
01375     const double        highX   = 100 ,
01376     const unsigned long binsX   =  10 ,
01377     const double        lowY    =   0 ,
01378     const double        highY   = 100 ,
01379     const unsigned long binsY   =  10 ,
01380     const double        lowZ    =   0 ,
01381     const double        highZ   = 100 ,
01382     const unsigned long binsZ   =  10 ) const ;
01383   // ==========================================================================
01394   AIDA::IHistogram1D*  book1D
01395   ( const HistoID&      ID           ,
01396     const std::string&  title        ,
01397     const double        low    =   0 ,
01398     const double        high   = 100 ,
01399     const unsigned long bins   = 100 ) const ;
01400   // ==========================================================================
01414   inline AIDA::IHistogram1D*  book
01415   ( const HistoID&      ID           ,
01416     const std::string&  title        ,
01417     const double        low    =   0 ,
01418     const double        high   = 100 ,
01419     const unsigned long bins   = 100 ) const
01420   {
01421     return book1D( ID, title, low, high, bins );
01422   }
01423   // ==========================================================================
01431   inline AIDA::IHistogram1D*  book
01432   ( const HistoID&           ID   ,
01433     const Gaudi::Histo1DDef& hdef ) const ;
01434   // ==========================================================================
01445   AIDA::IHistogram2D*  book2D
01446   ( const HistoID&      ID            ,
01447     const std::string&  title         ,
01448     const double        lowX    =   0 ,
01449     const double        highX   = 100 ,
01450     const unsigned long binsX   =  50 ,
01451     const double        lowY    =   0 ,
01452     const double        highY   = 100 ,
01453     const unsigned long binsY   =  50 ) const ;
01454   // ==========================================================================
01471   AIDA::IHistogram3D*  book3D
01472   ( const HistoID&      ID            ,
01473     const std::string&  title         ,
01474     const double        lowX    =   0 ,
01475     const double        highX   = 100 ,
01476     const unsigned long binsX   =  10 ,
01477     const double        lowY    =   0 ,
01478     const double        highY   = 100 ,
01479     const unsigned long binsY   =  10 ,
01480     const double        lowZ    =   0 ,
01481     const double        highZ   = 100 ,
01482     const unsigned long binsZ   =  10 ) const ;
01483   // ==========================================================================
01495   AIDA::IProfile1D*  bookProfile1D
01496   ( const std::string&  title        ,
01497     const double        low    =   0 ,
01498     const double        high   = 100 ,
01499     const unsigned long bins   = 100 ) const ;
01500   // ==========================================================================
01512   AIDA::IProfile1D*  bookProfile1D
01513   ( const HistoID&      ID           ,
01514     const std::string&  title        ,
01515     const double        low    =   0 ,
01516     const double        high   = 100 ,
01517     const unsigned long bins   = 100 ) const ;
01518   // ==========================================================================
01533   AIDA::IProfile2D*  bookProfile2D
01534   ( const std::string&  title         ,
01535     const double        lowX    =   0 ,
01536     const double        highX   = 100 ,
01537     const unsigned long binsX   =  50 ,
01538     const double        lowY    =   0 ,
01539     const double        highY   = 100 ,
01540     const unsigned long binsY   =  50 ) const ;
01541   // ==========================================================================
01552   AIDA::IProfile2D*  bookProfile2D
01553   ( const HistoID&      ID            ,
01554     const std::string&  title         ,
01555     const double        lowX    =   0 ,
01556     const double        highX   = 100 ,
01557     const unsigned long binsX   =  50 ,
01558     const double        lowY    =   0 ,
01559     const double        highY   = 100 ,
01560     const unsigned long binsY   =  50 ) const ;
01561   // ==========================================================================
01562 public:
01563   // ==========================================================================
01571   AIDA::IHistogram1D* fill
01572   ( AIDA::IHistogram1D* histo  ,
01573     const double        value  ,
01574     const double        weight ,
01575     const std::string&  title  = "" ) const ;
01576   // ==========================================================================
01585   AIDA::IHistogram2D* fill
01586   ( AIDA::IHistogram2D* histo  ,
01587     const double        valueX ,
01588     const double        valueY ,
01589     const double        weight ,
01590     const std::string&  title  = "" ) const ;
01591   // ==========================================================================
01601   AIDA::IHistogram3D* fill
01602   ( AIDA::IHistogram3D* histo  ,
01603     const double        valueX ,
01604     const double        valueY ,
01605     const double        valueZ ,
01606     const double        weight ,
01607     const std::string&  title  = "" ) const ;
01608   // ==========================================================================
01617   AIDA::IProfile1D* fill
01618   ( AIDA::IProfile1D*   histo  ,
01619     const double        valueX ,
01620     const double        valueY ,
01621     const double        weight ,
01622     const std::string&  title  = "" ) const ;
01623   // ==========================================================================
01633   AIDA::IProfile2D* fill
01634   ( AIDA::IProfile2D*   histo  ,
01635     const double        valueX ,
01636     const double        valueY ,
01637     const double        valueZ ,
01638     const double        weight ,
01639     const std::string&  title  = "" ) const ;
01640   // ==========================================================================
01641 public:
01642   // ==========================================================================
01646   inline AIDA::IHistogram1D* histo1D ( const std::string& title  )  const
01647   {
01648     Histo1DMapTitle::const_iterator found = histo1DMapTitle().find( title ) ;
01649     return ( histo1DMapTitle().end() == found ? 0 : found->second );
01650   }
01651   // ==========================================================================
01659   inline AIDA::IHistogram1D* histo ( const std::string& title  )  const
01660   {
01661     return histo1D( title );
01662   }
01663   // ==========================================================================
01667   inline AIDA::IHistogram2D* histo2D ( const std::string& title  )  const
01668   {
01669     Histo2DMapTitle::const_iterator found = histo2DMapTitle().find( title ) ;
01670     return ( histo2DMapTitle().end() == found ? 0 : found->second );
01671   }
01672   // ==========================================================================
01676   inline AIDA::IHistogram3D* histo3D ( const std::string& title  )  const
01677   {
01678     Histo3DMapTitle::const_iterator found = histo3DMapTitle().find( title ) ;
01679     return ( histo3DMapTitle().end() == found ? 0 : found->second );
01680   }
01681   // ==========================================================================
01685   inline AIDA::IProfile1D* profile1D ( const std::string& title  )  const
01686   {
01687     Profile1DMapTitle::const_iterator found = profile1DMapTitle().find( title ) ;
01688     return ( profile1DMapTitle().end() == found ? 0 : found->second );
01689   }
01690   // ==========================================================================
01694   inline AIDA::IProfile2D* profile2D ( const std::string& title  )  const
01695   {
01696     Profile2DMapTitle::const_iterator found = profile2DMapTitle().find( title ) ;
01697     return ( profile2DMapTitle().end() == found ? 0 : found->second );
01698   }
01699   // ==========================================================================
01700 public:
01701   // ==========================================================================
01705   AIDA::IHistogram1D* histo1D ( const HistoID&     ID     )  const;
01706   // ==========================================================================
01714   inline AIDA::IHistogram1D* histo ( const HistoID&     ID     )  const
01715   {
01716     return histo1D( ID );
01717   }
01718   // ==========================================================================
01722   AIDA::IHistogram2D* histo2D ( const HistoID&     ID     )  const;
01723   // ==========================================================================
01727   AIDA::IHistogram3D* histo3D ( const HistoID&     ID     )  const;
01728   // ==========================================================================
01732   AIDA::IProfile1D* profile1D ( const HistoID&     ID  )  const;
01733   // ==========================================================================
01737   AIDA::IProfile2D* profile2D ( const HistoID&     ID  )  const;
01738   // ==========================================================================
01739 public:
01740   // ==========================================================================
01742   inline bool histoExists ( const std::string& title  )  const
01743   {
01744     return
01745       ( 0 != histo     ( title ) ||
01746         0 != histo2D   ( title ) ||
01747         0 != histo3D   ( title ) ||
01748         0 != profile1D ( title ) ||
01749         0 != profile2D ( title ) );
01750   }
01751   // ==========================================================================
01753   inline bool histoExists ( const HistoID&     ID     )  const
01754   {
01755     return
01756       ( 0 != histo     ( ID ) ||
01757         0 != histo2D   ( ID ) ||
01758         0 != histo3D   ( ID ) ||
01759         0 != profile1D ( ID ) ||
01760         0 != profile2D ( ID ) );
01761   }
01763   unsigned int totalNumberOfHistos() const;
01764   // ==========================================================================
01765 public: // trivial & non-trivial accessors
01766   // ==========================================================================
01768   inline bool               produceHistos () const { return m_produceHistos ; }
01770   inline bool               fullDetail    () const { return m_fullDetail    ; }
01772   inline bool               checkForNaN   () const { return m_checkForNaN   ; }
01774   inline bool               splitHistoDir () const { return m_splitHistoDir ; }
01776   inline const HistoID::NumericID histoOffSet   () const { return m_histoOffSet ; }
01778   inline const std::string& histoTopDir   () const { return m_histoTopDir   ; }
01780   inline const std::string& histoDir      () const { return m_histoDir      ; }
01782   inline std::string histoPath () const
01783   {
01784     const std::string path = histoTopDir() + histoDir();
01785     return ( splitHistoDir() ? dirHbookName(path) : path );
01786   }
01788   inline bool histosPrint () const  { return m_histosPrint ; }
01790   inline bool useNumericAutoIDs() const { return m_useNumericAutoIDs; }
01791   // ==========================================================================
01796   int printHistos ( const MSG::Level level = MSG::ALWAYS ) const ;
01797   // ==========================================================================
01825   const Histo1DMapTitle & histo1DMapTitle() const { return m_histo1DMapTitle; }
01826   // ==========================================================================
01856   const Histo1DMapNumID & histo1DMapNumID () const { return m_histo1DMapNumID; }
01857   // ==========================================================================
01886   const Histo1DMapLitID & histo1DMapLitID () const { return m_histo1DMapLitID; }
01887   // ==========================================================================
01915   const Histo2DMapTitle & histo2DMapTitle() const { return m_histo2DMapTitle ; }
01916   // ==========================================================================
01946   const Histo2DMapNumID & histo2DMapNumID () const { return m_histo2DMapNumID; }
01947   // ==========================================================================
01976   const Histo2DMapLitID & histo2DMapLitID () const { return m_histo2DMapLitID; }
01977   // ==========================================================================
02005   const Histo3DMapTitle & histo3DMapTitle () const { return m_histo3DMapTitle ; }
02006   // ==========================================================================
02036   const Histo3DMapNumID & histo3DMapNumID () const { return m_histo3DMapNumID; }
02037   // ==========================================================================
02066   const Histo3DMapLitID & histo3DMapLitID () const { return m_histo3DMapLitID; }
02067   // ==========================================================================
02095   const Profile1DMapTitle & profile1DMapTitle() const { return m_profile1DMapTitle; }
02096   // ==========================================================================
02126   const Profile1DMapNumID & profile1DMapNumID () const { return m_profile1DMapNumID; }
02127   // ==========================================================================
02157   const Profile1DMapLitID & profile1DMapLitID () const { return m_profile1DMapLitID; }
02158   // ==========================================================================
02186   const Profile2DMapTitle & profile2DMapTitle() const { return m_profile2DMapTitle; }
02187   // ==========================================================================
02217   const Profile2DMapNumID & profile2DMapNumID () const { return m_profile2DMapNumID; }
02218   // ==========================================================================
02248   const Profile2DMapLitID & profile2DMapLitID () const { return m_profile2DMapLitID; }
02249   // ==========================================================================
02250 public: // trivial setters
02251   // ==========================================================================
02253   inline void setProduceHistos ( const bool         val ) { m_produceHistos = val ; }
02255   inline void setFullDetail    ( const bool         val ) { m_fullDetail    = val ; }
02257   inline void setCheckForNaN   ( const bool         val ) { m_checkForNaN   = val ; }
02259   inline void setSplitHistoDir ( const bool         val ) { m_splitHistoDir = val ; }
02261   inline void setHistoOffSet   ( const HistoID::NumericID val )
02262   { m_histoOffSet   = val ; }
02263   // ==========================================================================
02265   inline void setHistoTopDir   ( const std::string& val ) { m_histoTopDir   = val ; }
02266   // ==========================================================================
02268   inline void setHistoDir      ( const std::string& val ) { m_histoDir      = val ; }
02269   // ==========================================================================
02270 public:
02271   // ==========================================================================
02273   GaudiHistos ( const std::string & name,
02274                 ISvcLocator * pSvcLocator );
02275   // ==========================================================================
02277   GaudiHistos ( const std::string& type   ,
02278                 const std::string& name   ,
02279                 const IInterface*  parent );
02280   // ==========================================================================
02282   virtual ~GaudiHistos();
02283   // ==========================================================================
02284 protected:
02285   // ==========================================================================
02289   virtual StatusCode initialize ();
02290   // ==========================================================================
02294   virtual StatusCode finalize   ();
02295   // ==========================================================================
02296 private:
02297   // ==========================================================================
02299   bool noHistos() const;
02300   // ===========================================unsigned===============================
02302   void initGaudiHistosConstructor();
02303   // ==========================================================================
02309   void monitorHisto( const AIDA::IBaseHistogram* hist,
02310                      const HistoID& ID ) const;
02311   // ==========================================================================
02316   void newHistoID( const std::string & title,
02317                    HistoID& ID ) const;
02318   // ==========================================================================
02320   void stringSearchReplace( std::string & title,
02321                             const std::string & A,
02322                             const std::string & B ) const;
02323   // ==========================================================================
02324 protected:
02325   // ==========================================================================
02327   std::string convertTitleToID( const std::string & title ) const;
02328   // ==========================================================================
02329 private:
02330   // ==========================================================================
02332   bool        m_produceHistos ;
02334   bool        m_fullDetail;
02336   bool        m_checkForNaN   ;
02338   bool        m_splitHistoDir ;
02340   HistoID::NumericID     m_histoOffSet ;
02342   std::string m_histoTopDir   ;
02344   std::string m_histoDir      ;
02346   bool        m_histosPrint   ;
02348   bool        m_declareMoniHists;
02349   // ==========================================================================
02351   mutable Histo1DMapTitle     m_histo1DMapTitle ;
02353   mutable Histo1DMapNumID     m_histo1DMapNumID ;
02355   mutable Histo1DMapLitID     m_histo1DMapLitID ;
02356   // ==========================================================================
02358   mutable Histo2DMapTitle     m_histo2DMapTitle ;
02360   mutable Histo2DMapNumID     m_histo2DMapNumID ;
02362   mutable Histo2DMapLitID     m_histo2DMapLitID ;
02363   // ==========================================================================
02365   mutable Histo3DMapTitle     m_histo3DMapTitle ;
02367   mutable Histo3DMapNumID     m_histo3DMapNumID ;
02369   mutable Histo3DMapLitID     m_histo3DMapLitID ;
02370   // ==========================================================================
02372   mutable Profile1DMapTitle   m_profile1DMapTitle ;
02374   mutable Profile1DMapNumID   m_profile1DMapNumID ;
02376   mutable Profile1DMapLitID   m_profile1DMapLitID ;
02377   // ==========================================================================
02379   mutable Profile2DMapTitle   m_profile2DMapTitle ;
02381   mutable Profile2DMapNumID   m_profile2DMapNumID ;
02383   mutable Profile2DMapLitID   m_profile2DMapLitID ;
02384   // ==========================================================================
02386   std::string  m_histo1DTableFormat      ;
02388   std::string  m_histo1DTableFormatShort ;
02390   std::string  m_histo1DTableHeader      ;
02392   bool        m_useNumericAutoIDs;
02396   std::map<std::string,std::string> m_idReplaceInfo;
02397 };
02398 // ============================================================================
02399 // The END
02400 // ============================================================================
02401 #endif // GAUDIALG_GAUDIHISTOS_H
02402 // ============================================================================

Generated at Fri Jul 18 11:59:19 2008 for Gaudi Framework, version v20r2 by Doxygen version 1.5.1 written by Dimitri van Heesch, © 1997-2004