The Gaudi Framework  v30r3 (a5ef0a68)
IHistoTool.h
Go to the documentation of this file.
1 #ifndef GAUDIALG_IHISTOTOOL_H
2 #define GAUDIALG_IHISTOTOOL_H 1
3 // ============================================================================
4 // Include files
5 // ============================================================================
6 // from STL
7 // ============================================================================
8 #include <string>
9 // ============================================================================
10 // from Gaudi
11 // ============================================================================
12 #include "GaudiAlg/HistoID.h"
13 #include "GaudiKernel/IAlgTool.h"
14 // ============================================================================
15 
16 namespace AIDA
17 {
18  class IHistogram1D;
19  class IHistogram2D;
20  class IHistogram3D;
21 }
22 
31 class GAUDI_API IHistoTool : virtual public IAlgTool
32 {
33 public:
36 
39 
40 public:
41  // ================================= 1D Histograms ========================================
42 
71  virtual AIDA::IHistogram1D* plot1D( const double value, const std::string& title, const double low, const double high,
72  const unsigned long bins = 100, const double weight = 1.0 ) const = 0;
73 
87  AIDA::IHistogram1D* plot( const double value, const std::string& title, const double low, const double high,
88  const unsigned long bins = 100, const double weight = 1.0 ) const
89  {
90  return plot1D( value, title, low, high, bins, weight );
91  }
92 
133  virtual AIDA::IHistogram1D* plot1D( const double value, const HistoID& ID, const std::string& title, const double low,
134  const double high, const unsigned long bins = 100,
135  const double weight = 1.0 ) const = 0;
136 
151  AIDA::IHistogram1D* plot( const double value, const HistoID& ID, const std::string& title, const double low,
152  const double high, const unsigned long bins = 100, const double weight = 1.0 ) const
153  {
154  return plot1D( value, ID, title, low, high, bins, weight );
155  };
156 
157  // ================================= 2D Histograms ========================================
158 
193  virtual AIDA::IHistogram2D* plot2D( const double valueX, const double valueY, const std::string& title,
194  const double lowX, const double highX, const double lowY, const double highY,
195  const unsigned long binsX = 50, const unsigned long binsY = 50,
196  const double weight = 1.0 ) const = 0;
197 
244  virtual AIDA::IHistogram2D* plot2D( const double valueX, const double valueY, const HistoID& ID,
245  const std::string& title, const double lowX, const double highX,
246  const double lowY, const double highY, const unsigned long binsX = 50,
247  const unsigned long binsY = 50, const double weight = 1.0 ) const = 0;
248 
249  // ================================= 3D Histograms ========================================
250 
291  virtual AIDA::IHistogram3D* plot3D( const double valueX, const double valueY, const double valueZ,
292  const std::string& title, const double lowX, const double highX,
293  const double lowY, const double highY, const double lowZ, const double highZ,
294  const unsigned long binsX = 10, const unsigned long binsY = 10,
295  const unsigned long binsZ = 10, const double weight = 1.0 ) const = 0;
296 
349  virtual AIDA::IHistogram3D* plot3D( const double valueX, const double valueY, const double valueZ, const HistoID& ID,
350  const std::string& title, const double lowX, const double highX,
351  const double lowY, const double highY, const double lowZ, const double highZ,
352  const unsigned long binsX = 10, const unsigned long binsY = 10,
353  const unsigned long binsZ = 10, const double weight = 1.0 ) const = 0;
354 
355 public:
367  virtual AIDA::IHistogram1D* book1D( const std::string& title, const double low = 0, const double high = 100,
368  const unsigned long bins = 100 ) const = 0;
369 
382  AIDA::IHistogram1D* book( const std::string& title, const double low = 0, const double high = 100,
383  const unsigned long bins = 100 ) const
384  {
385  return book1D( title, low, high, bins );
386  }
387 
402  virtual AIDA::IHistogram2D* book2D( const std::string& title, const double lowX = 0, const double highX = 100,
403  const unsigned long binsX = 50, const double lowY = 0, const double highY = 100,
404  const unsigned long binsY = 50 ) const = 0;
405 
423  virtual AIDA::IHistogram3D* book3D( const std::string& title, const double lowX = 0, const double highX = 100,
424  const unsigned long binsX = 10, const double lowY = 0, const double highY = 100,
425  const unsigned long binsY = 10, const double lowZ = 0, const double highZ = 100,
426  const unsigned long binsZ = 10 ) const = 0;
427 
438  virtual AIDA::IHistogram1D* book1D( const HistoID& ID, const std::string& title = "", const double low = 0,
439  const double high = 100, const unsigned long bins = 100 ) const = 0;
440 
454  AIDA::IHistogram1D* book( const HistoID& ID, const std::string& title = "", const double low = 0,
455  const double high = 100, const unsigned long bins = 100 ) const
456  {
457  return book1D( ID, title, low, high, bins );
458  }
459 
470  virtual AIDA::IHistogram2D* book2D( const HistoID& ID, const std::string& title, const double lowX = 0,
471  const double highX = 100, const unsigned long binsX = 100, const double lowY = 0,
472  const double highY = 100, const unsigned long binsY = 100 ) const = 0;
473 
490  virtual AIDA::IHistogram3D* book3D( const HistoID& ID, const std::string& title, const double lowX = 0,
491  const double highX = 100, const unsigned long binsX = 10, const double lowY = 0,
492  const double highY = 100, const unsigned long binsY = 10, const double lowZ = 0,
493  const double highZ = 100, const unsigned long binsZ = 10 ) const = 0;
494 
502  virtual AIDA::IHistogram1D* fill( AIDA::IHistogram1D* histo, const double value, const double weight,
503  const std::string& title = "" ) const = 0;
504 
513  virtual AIDA::IHistogram2D* fill( AIDA::IHistogram2D* histo, const double valueX, const double valueY,
514  const double weight, const std::string& title = "" ) const = 0;
515 
525  virtual AIDA::IHistogram3D* fill( AIDA::IHistogram3D* histo, const double valueX, const double valueY,
526  const double valueZ, const double weight, const std::string& title = "" ) const = 0;
527 
531  virtual AIDA::IHistogram1D* histo1D( const std::string& title ) const = 0;
532 
540  AIDA::IHistogram1D* histo( const std::string& title ) const { return histo1D( title ); };
541 
545  virtual AIDA::IHistogram2D* histo2D( const std::string& title ) const = 0;
546 
550  virtual AIDA::IHistogram3D* histo3D( const std::string& title ) const = 0;
551 
555  virtual AIDA::IHistogram1D* histo1D( const HistoID& ID ) const = 0;
556 
564  AIDA::IHistogram1D* histo( const HistoID& ID ) const { return histo1D( ID ); };
565 
569  virtual AIDA::IHistogram2D* histo2D( const HistoID& ID ) const = 0;
570 
574  virtual AIDA::IHistogram3D* histo3D( const HistoID& ID ) const = 0;
575 
577  virtual bool histoExists( const std::string& title ) const = 0;
578 
580  virtual bool histoExists( const HistoID& ID ) const = 0;
581 
582 public:
632  template <class FUNCTION, class OBJECT>
633  AIDA::IHistogram1D* plot( const FUNCTION& func, OBJECT first, OBJECT last, const std::string& title, const double low,
634  const double high, const unsigned long bins = 100 ) const
635  {
636  // retrieve or book the histogram
637  AIDA::IHistogram1D* h = histo1D( title );
638  if ( !h ) {
639  h = book1D( title, low, high, bins );
640  }
641  while ( first != last && h ) {
642  h = fill( h, func( *first ), 1.0, title );
643  ++first;
644  }
645  return h;
646  }
647 
697  template <class FUNCTION, class OBJECT>
698  AIDA::IHistogram1D* plot( const FUNCTION& func, OBJECT first, OBJECT last, const HistoID& ID,
699  const std::string& title, const double low, const double high,
700  const unsigned long bins = 100 ) const
701  {
702  // retrieve or book the histogram
703  AIDA::IHistogram1D* h = histo1D( ID );
704  if ( !h ) {
705  h = book1D( ID, title, low, high, bins );
706  }
707  while ( first != last && h ) {
708  h = fill( h, func( *first ), 1.0, title );
709  ++first;
710  }
711  return h;
712  }
713 
768  template <class FUNCTION, class OBJECT, class WEIGHT>
769  AIDA::IHistogram1D* plot( const FUNCTION& func, OBJECT first, OBJECT last, const std::string& title, const double low,
770  const double high, const unsigned long bins, const WEIGHT& weight ) const
771  {
772  // retrieve or book the histogram
773  AIDA::IHistogram1D* h = histo1D( title );
774  if ( !h ) {
775  h = book1D( title, low, high, bins );
776  }
777  while ( first != last && h ) {
778  h = fill( h, func( *first ), weight( *first ), title );
779  ++first;
780  }
781  return h;
782  }
783 
843  template <class FUNCTION, class OBJECT, class WEIGHT>
844  AIDA::IHistogram1D* plot( const FUNCTION& func, OBJECT first, OBJECT last, const HistoID& ID,
845  const std::string& title, const double low, const double high, const unsigned long bins,
846  const WEIGHT& weight ) const
847  {
848  // retrieve or book the histogram
849  AIDA::IHistogram1D* h = histo1D( ID );
850  if ( !h ) {
851  h = book1D( ID, title, low, high, bins );
852  }
853  while ( first != last && h ) {
854  h = fill( h, func( *first ), weight( *first ), title );
855  ++first;
856  }
857  return h;
858  }
859 };
860 
861 #endif // GAUDIALG_IHISTOTOOL_H
AIDA::IHistogram1D * plot(const FUNCTION &func, OBJECT first, OBJECT last, const std::string &title, const double low, const double high, const unsigned long bins, const WEIGHT &weight) const
book and fill the 1D histogram with information from [first,last) sequence with given weight ...
Definition: IHistoTool.h:769
AIDA::IHistogram1D * histo(const HistoID &ID) const
access the EXISTING 1D histogram by ID
Definition: IHistoTool.h:564
AIDA::IHistogram1D * plot(const double value, const HistoID &ID, const std::string &title, const double low, const double high, const unsigned long bins=100, const double weight=1.0) const
fill the 1D histogram with forced ID assignment (book on demand)
Definition: IHistoTool.h:151
AIDA::IHistogram1D * histo(const std::string &title) const
access the EXISTING 1D histogram by title
Definition: IHistoTool.h:540
GAUDI_API void fill(AIDA::IHistogram1D *histo, const double value, const double weight=1.0)
simple function to fill AIDA::IHistogram1D objects
Definition: Fill.cpp:35
AIDA::IHistogram1D * plot(const FUNCTION &func, OBJECT first, OBJECT last, const HistoID &ID, const std::string &title, const double low, const double high, const unsigned long bins=100) const
fill the 1D histogram with forced ID and information from [first,last) sequence
Definition: IHistoTool.h:698
AIDA::IHistogram1D * book(const HistoID &ID, const std::string &title="", const double low=0, const double high=100, const unsigned long bins=100) const
book the 1D histogram with forced ID
Definition: IHistoTool.h:454
GaudiKernel.
Definition: Fill.h:10
AIDA::IHistogram1D * plot(const FUNCTION &func, OBJECT first, OBJECT last, const HistoID &ID, const std::string &title, const double low, const double high, const unsigned long bins, const WEIGHT &weight) const
book and fill the 1D histogram with forced ID and information from [first,last) sequence with given w...
Definition: IHistoTool.h:844
STL class.
AIDA::IHistogram1D * book(const std::string &title, const double low=0, const double high=100, const unsigned long bins=100) const
book the 1D histogram
Definition: IHistoTool.h:382
#define DeclareInterfaceID(iface, major, minor)
Macro to declare the interface ID when using the new mechanism of extending and implementing interfac...
Definition: IInterface.h:13
AIDA::IHistogram1D * plot(const FUNCTION &func, OBJECT first, OBJECT last, const std::string &title, const double low, const double high, const unsigned long bins=100) const
fill the 1D histogram with information from [first,last) sequence
Definition: IHistoTool.h:633
AIDA::IHistogram1D * plot(const double value, const std::string &title, const double low, const double high, const unsigned long bins=100, const double weight=1.0) const
fill the 1D histogram (book on demand)
Definition: IHistoTool.h:87
Histos::HistoID HistoID
the actual type for histogram identifier (HBOOK style)
Definition: IHistoTool.h:38
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:23
#define GAUDI_API
Definition: Kernel.h:104
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
ID class for Histogram and Ntuples.
Definition: GaudiHistoID.h:44
An abstract interface for "histogramming tool".
Definition: IHistoTool.h:31