| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

IHistoTool.h

Go to the documentation of this file.
00001 // $Id: IHistoTool.h,v 1.3 2005/01/18 15:51:53 mato Exp $
00002 // ============================================================================
00003 #ifndef GAUDIALG_IHISTOTOOL_H
00004 #define GAUDIALG_IHISTOTOOL_H 1
00005 // ============================================================================
00006 // Include files
00007 // ============================================================================
00008 // from STL
00009 // ============================================================================
00010 #include <string>
00011 // ============================================================================
00012 // from Gaudi
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   // ================================= 1D Histograms ========================================
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   // ================================= 2D Histograms ========================================
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   // ================================= 3D Histograms ========================================
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:  // non-virtual methods
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     // retrieve or book the histogram
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     // retrieve or book the histogram
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     // retrieve or book the histogram
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     // retrieve or book the histogram
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
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:58:14 2011 for GaudiAlg by doxygen 1.4.7