00001
00002
00003 #ifndef GAUDIALG_IHISTOTOOL_H
00004 #define GAUDIALG_IHISTOTOOL_H 1
00005
00006
00007
00008
00009
00010 #include <string>
00011
00012
00013
00014 #include "GaudiKernel/IAlgTool.h"
00015 #include "GaudiAlg/HistoID.h"
00016
00017
00018 namespace AIDA
00019 {
00020 class IHistogram1D;
00021 class IHistogram2D;
00022 class IHistogram3D;
00023 };
00024
00033 class IHistoTool : virtual public IAlgTool
00034 {
00035 public:
00036
00038 typedef Histos::HistoID HistoID ;
00039
00040 public:
00041
00043 static const InterfaceID& interfaceID() ;
00044
00045 public:
00046
00047
00048
00077 virtual AIDA::IHistogram1D* plot1D
00078 ( const double value ,
00079 const std::string& title ,
00080 const double low ,
00081 const double high ,
00082 const unsigned long bins = 100 ,
00083 const double weight = 1.0 ) const = 0 ;
00084
00098 AIDA::IHistogram1D* plot
00099 ( const double value ,
00100 const std::string& title ,
00101 const double low ,
00102 const double high ,
00103 const unsigned long bins = 100 ,
00104 const double weight = 1.0 ) const
00105 {
00106 return plot1D ( value, title, low, high, bins, weight );
00107 }
00108
00149 virtual AIDA::IHistogram1D* plot1D
00150 ( const double value ,
00151 const HistoID& ID ,
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 = 0 ;
00157
00172 AIDA::IHistogram1D* plot
00173 ( const double value ,
00174 const HistoID& ID ,
00175 const std::string& title ,
00176 const double low ,
00177 const double high ,
00178 const unsigned long bins = 100 ,
00179 const double weight = 1.0 ) const
00180 {
00181 return plot1D ( value, ID, title, low, high, bins, weight );
00182 };
00183
00184
00185
00220 virtual AIDA::IHistogram2D* plot2D
00221 ( const double valueX ,
00222 const double valueY ,
00223 const std::string& title ,
00224 const double lowX ,
00225 const double highX ,
00226 const double lowY ,
00227 const double highY ,
00228 const unsigned long binsX = 50 ,
00229 const unsigned long binsY = 50 ,
00230 const double weight = 1.0 ) const = 0;
00231
00278 virtual AIDA::IHistogram2D* plot2D
00279 ( const double valueX ,
00280 const double valueY ,
00281 const HistoID& ID ,
00282 const std::string& title ,
00283 const double lowX ,
00284 const double highX ,
00285 const double lowY ,
00286 const double highY ,
00287 const unsigned long binsX = 50 ,
00288 const unsigned long binsY = 50 ,
00289 const double weight = 1.0 ) const = 0;
00290
00291
00292
00333 virtual AIDA::IHistogram3D* plot3D
00334 ( const double valueX ,
00335 const double valueY ,
00336 const double valueZ ,
00337 const std::string& title ,
00338 const double lowX ,
00339 const double highX ,
00340 const double lowY ,
00341 const double highY ,
00342 const double lowZ ,
00343 const double highZ ,
00344 const unsigned long binsX = 10 ,
00345 const unsigned long binsY = 10 ,
00346 const unsigned long binsZ = 10 ,
00347 const double weight = 1.0 ) const = 0;
00348
00401 virtual AIDA::IHistogram3D* plot3D
00402 ( const double valueX ,
00403 const double valueY ,
00404 const double valueZ ,
00405 const HistoID& ID ,
00406 const std::string& title ,
00407 const double lowX ,
00408 const double highX ,
00409 const double lowY ,
00410 const double highY ,
00411 const double lowZ ,
00412 const double highZ ,
00413 const unsigned long binsX = 10 ,
00414 const unsigned long binsY = 10 ,
00415 const unsigned long binsZ = 10 ,
00416 const double weight = 1.0 ) const = 0;
00417
00418 public:
00419
00431 virtual AIDA::IHistogram1D* book1D
00432 ( const std::string& title ,
00433 const double low = 0 ,
00434 const double high = 100 ,
00435 const unsigned long bins = 100 ) const = 0 ;
00436
00449 AIDA::IHistogram1D* book
00450 ( const std::string& title ,
00451 const double low = 0 ,
00452 const double high = 100 ,
00453 const unsigned long bins = 100 ) const
00454 {
00455 return book1D( title, low, high, bins );
00456 }
00457
00472 virtual AIDA::IHistogram2D* book2D
00473 ( const std::string& title ,
00474 const double lowX = 0 ,
00475 const double highX = 100 ,
00476 const unsigned long binsX = 50 ,
00477 const double lowY = 0 ,
00478 const double highY = 100 ,
00479 const unsigned long binsY = 50 ) const = 0;
00480
00498 virtual AIDA::IHistogram3D* book3D
00499 ( const std::string& title ,
00500 const double lowX = 0 ,
00501 const double highX = 100 ,
00502 const unsigned long binsX = 10 ,
00503 const double lowY = 0 ,
00504 const double highY = 100 ,
00505 const unsigned long binsY = 10 ,
00506 const double lowZ = 0 ,
00507 const double highZ = 100 ,
00508 const unsigned long binsZ = 10 ) const = 0;
00509
00520 virtual AIDA::IHistogram1D* book1D
00521 ( const HistoID& ID ,
00522 const std::string& title = "" ,
00523 const double low = 0 ,
00524 const double high = 100 ,
00525 const unsigned long bins = 100 ) const = 0 ;
00526
00540 AIDA::IHistogram1D* book
00541 ( const HistoID& ID ,
00542 const std::string& title = "" ,
00543 const double low = 0 ,
00544 const double high = 100 ,
00545 const unsigned long bins = 100 ) const
00546 {
00547 return book1D( ID, title, low, high, bins );
00548 }
00549
00560 virtual AIDA::IHistogram2D* book2D
00561 ( const HistoID& ID ,
00562 const std::string& title ,
00563 const double lowX = 0 ,
00564 const double highX = 100 ,
00565 const unsigned long binsX = 100 ,
00566 const double lowY = 0 ,
00567 const double highY = 100 ,
00568 const unsigned long binsY = 100 ) const = 0;
00569
00586 virtual AIDA::IHistogram3D* book3D
00587 ( const HistoID& ID ,
00588 const std::string& title ,
00589 const double lowX = 0 ,
00590 const double highX = 100 ,
00591 const unsigned long binsX = 10 ,
00592 const double lowY = 0 ,
00593 const double highY = 100 ,
00594 const unsigned long binsY = 10 ,
00595 const double lowZ = 0 ,
00596 const double highZ = 100 ,
00597 const unsigned long binsZ = 10 ) const = 0;
00598
00606 virtual AIDA::IHistogram1D* fill
00607 ( AIDA::IHistogram1D* histo ,
00608 const double value ,
00609 const double weight ,
00610 const std::string& title = "") const = 0 ;
00611
00620 virtual AIDA::IHistogram2D* fill
00621 ( AIDA::IHistogram2D* histo ,
00622 const double valueX ,
00623 const double valueY ,
00624 const double weight ,
00625 const std::string& title = "" ) const = 0 ;
00626
00636 virtual AIDA::IHistogram3D* fill
00637 ( AIDA::IHistogram3D* histo ,
00638 const double valueX ,
00639 const double valueY ,
00640 const double valueZ ,
00641 const double weight ,
00642 const std::string& title = "" ) const = 0 ;
00643
00647 virtual AIDA::IHistogram1D* histo1D ( const std::string& title ) const = 0 ;
00648
00656 AIDA::IHistogram1D* histo ( const std::string& title ) const
00657 {
00658 return histo1D( title );
00659 };
00660
00664 virtual AIDA::IHistogram2D* histo2D ( const std::string& title ) const = 0;
00665
00666
00670 virtual AIDA::IHistogram3D* histo3D ( const std::string& title ) const = 0;
00671
00675 virtual AIDA::IHistogram1D* histo1D ( const HistoID& ID ) const = 0 ;
00676
00684 AIDA::IHistogram1D* histo ( const HistoID& ID ) const
00685 {
00686 return histo1D( ID );
00687 };
00688
00692 virtual AIDA::IHistogram2D* histo2D ( const HistoID& ID ) const = 0;
00693
00697 virtual AIDA::IHistogram3D* histo3D ( const HistoID& ID ) const = 0;
00698
00700 virtual bool histoExists ( const std::string& title ) const = 0 ;
00701
00703 virtual bool histoExists ( const HistoID& ID ) const = 0 ;
00704
00705 public:
00706
00756 template <class FUNCTION,class OBJECT>
00757 AIDA::IHistogram1D* plot
00758 ( const FUNCTION& func ,
00759 OBJECT first ,
00760 OBJECT last ,
00761 const std::string& title ,
00762 const double low ,
00763 const double high ,
00764 const unsigned long bins = 100 ) const
00765 {
00766
00767 AIDA::IHistogram1D* h = histo1D ( title ) ;
00768 if ( 0 == h ) { h = book1D ( title , low , high , bins ); }
00769 while ( first != last && 0 != h )
00770 { h = fill ( h , func( *first ) , 1.0 , title ) ; ++first ; }
00771 return h ;
00772 };
00773
00823 template <class FUNCTION,class OBJECT>
00824 AIDA::IHistogram1D* plot
00825 ( const FUNCTION& func ,
00826 OBJECT first ,
00827 OBJECT last ,
00828 const HistoID& ID ,
00829 const std::string& title ,
00830 const double low ,
00831 const double high ,
00832 const unsigned long bins = 100 ) const
00833 {
00834
00835 AIDA::IHistogram1D* h = histo1D ( ID ) ;
00836 if ( 0 == h ) { h = book1D ( ID , title , low , high , bins ); }
00837 while ( first != last && 0 != h )
00838 { h = fill( h , func( *first ) , 1.0 , title ) ; ++first ; }
00839 return h ;
00840 };
00841
00896 template <class FUNCTION,class OBJECT,class WEIGHT>
00897 AIDA::IHistogram1D* plot
00898 ( const FUNCTION& func ,
00899 OBJECT first ,
00900 OBJECT last ,
00901 const std::string& title ,
00902 const double low ,
00903 const double high ,
00904 const unsigned long bins ,
00905 const WEIGHT& weight ) const
00906 {
00907
00908 AIDA::IHistogram1D* h = histo1D ( title ) ;
00909 if ( 0 == h ) { h = book1D ( title , low , high , bins ); }
00910 while( first != last && 0 != h )
00911 { h = fill ( h ,
00912 func ( *first ) ,
00913 weight ( *first ) , title ) ; ++first ; }
00914 return h ;
00915 };
00916
00976 template <class FUNCTION,class OBJECT,class WEIGHT>
00977 AIDA::IHistogram1D* plot
00978 ( const FUNCTION& func ,
00979 OBJECT first ,
00980 OBJECT last ,
00981 const HistoID& ID ,
00982 const std::string& title ,
00983 const double low ,
00984 const double high ,
00985 const unsigned long bins ,
00986 const WEIGHT& weight ) const
00987 {
00988
00989 AIDA::IHistogram1D* h = histo1D ( ID ) ;
00990 if ( 0 == h ) { h = book1D ( ID , title , low , high , bins ); }
00991 while( first != last && 0 != h )
00992 { h = fill ( h ,
00993 func ( *first ) ,
00994 weight ( *first ) , title ) ; ++first ; }
00995 return h ;
00996 };
00997
00998 protected:
00999
01000 virtual ~IHistoTool() ;
01001
01002 };
01003
01004 #endif // GAUDIALG_IHISTOTOOL_H