![]() |
|
|
Generated: 18 Jul 2008 |
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 // ============================================================================