Gaudi Framework, version v21r4

Home   Generated: 7 Sep 2009

GaudiHistos< PBASE > Class Template Reference

#include <GaudiAlg/GaudiHistos.h>

Collaboration diagram for GaudiHistos< PBASE >:

Collaboration graph
[legend]

List of all members.


Detailed Description

template<class PBASE>
class GaudiHistos< PBASE >

Templated base class providing common histogramming methods for GaudiAlgorithm and GaudiTool like classes.

Author:
Chris Jones Christopher.Rob.Jones@cern.ch

Vanya BELYAEV Ivan.Belyaev@itep.ru

Date:
2005-08-08

Definition at line 51 of file GaudiHistos.h.


Public Types

typedef GaudiAlg::HistoID HistoID
 the actual type for histogram identifier
typedef
GaudiAlg::Histo1DMapNumericID 
Histo1DMapNumID
 the actual type for (Numeric ID)->(1D histogram) mapping
typedef
GaudiAlg::Histo1DMapLiteralID 
Histo1DMapLitID
 the actual type for (Literal ID)->(1D histogram) mapping
typedef GaudiAlg::Histo1DMapTitle Histo1DMapTitle
 the actual type for title->(1D histogram) mapping
typedef
GaudiAlg::Histo2DMapNumericID 
Histo2DMapNumID
 the actual type for (Numeric ID)->(2D histogram) mapping
typedef
GaudiAlg::Histo2DMapLiteralID 
Histo2DMapLitID
 the actual type for (Literal ID)->(2D histogram) mapping
typedef GaudiAlg::Histo2DMapTitle Histo2DMapTitle
 the actual type for title->(2D histogram) mapping
typedef
GaudiAlg::Histo3DMapNumericID 
Histo3DMapNumID
 the actual type for (Numeric ID)->(3D histogram) mapping
typedef
GaudiAlg::Histo3DMapLiteralID 
Histo3DMapLitID
 the actual type for (Literal ID)->(3D histogram) mapping
typedef GaudiAlg::Histo3DMapTitle Histo3DMapTitle
 the actual type for title->(3D histogram) mapping
typedef
GaudiAlg::Profile1DMapNumericID 
Profile1DMapNumID
 the actual type for (Numeric ID)->(1D profile histogram) mapping
typedef
GaudiAlg::Profile1DMapLiteralID 
Profile1DMapLitID
 the actual type for (Literal ID)->(1D profile histogram) mapping
typedef GaudiAlg::Profile1DMapTitle Profile1DMapTitle
 the actual type for title->(1D profile histogram) mapping
typedef
GaudiAlg::Profile2DMapNumericID 
Profile2DMapNumID
 the actual type for (Numeric ID)->(2D profile histogram) mapping
typedef
GaudiAlg::Profile2DMapLiteralID 
Profile2DMapLitID
 the actual type for (Literal ID)->(2D profile histogram) mapping
typedef GaudiAlg::Profile2DMapTitle Profile2DMapTitle
 the actual type for title->(2D profile histogram) mapping
typedef GaudiAlg::HistoBinEdges HistoBinEdges
 Edges for variable binning.

Public Member Functions

AIDA::IHistogram1D * plot1D (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)
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)
AIDA::IHistogram1D * plot1D (const double value, const Gaudi::Histo1DDef &hdef, const double weight=1.0) const
 fill the 1D histogram (book on demand)
AIDA::IHistogram1D * plot (const double value, const Gaudi::Histo1DDef &hdef, const double weight=1.0) const
 fill the 1D histogram (book on demand)
AIDA::IHistogram1D * plot1D (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)
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)
AIDA::IHistogram1D * plot1D (const double value, const HistoID &ID, const Gaudi::Histo1DDef &hdef, const double weight=1.0) const
 fill the 1D histogram with forced ID assignment (book on demand)
AIDA::IHistogram1D * plot (const double value, const HistoID &ID, const Gaudi::Histo1DDef &hdef, const double weight=1.0) const
 fill the 1D histogram (book on demand)
template<class FUNCTION, class OBJECT>
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
template<class FUNCTION, class OBJECT>
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
template<class FUNCTION, class OBJECT, class WEIGHT>
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
template<class FUNCTION, class OBJECT, class WEIGHT>
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 weight
AIDA::IHistogram1D * plot1D (const double value, const std::string &title, const HistoBinEdges &edges, const double weight=1.0) const
 Fill the 1D variable binning histogram (book on demand).
AIDA::IHistogram1D * plot1D (const double value, const HistoID &ID, const std::string &title, const HistoBinEdges &edges, const double weight=1.0) const
 fill the 1D variable binning histogram with forced ID assignment (book on demand)
AIDA::IHistogram2D * plot2D (const double valueX, const double valueY, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0) const
 fill the 2D histogram (book on demand)
AIDA::IHistogram2D * plot2D (const double valueX, const double valueY, const HistoID &ID, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0) const
 fill the 2D histogram with forced ID assignment (book on demand)
AIDA::IHistogram2D * plot2D (const double valueX, const double valueY, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const double weight=1.0) const
 Fill the 2D variable binning histogram (book on demand).
AIDA::IHistogram2D * plot2D (const double valueX, const double valueY, const HistoID &ID, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const double weight=1.0) const
 fill the 2D variable histogram with forced ID assignment (book on demand)
AIDA::IHistogram3D * plot3D (const double valueX, const double valueY, const double valueZ, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const double lowZ, const double highZ, const unsigned long binsX=10, const unsigned long binsY=10, const unsigned long binsZ=10, const double weight=1.0) const
 fill the 3D histogram (book on demand)
AIDA::IHistogram3D * plot3D (const double valueX, const double valueY, const double valueZ, const HistoID &ID, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const double lowZ, const double highZ, const unsigned long binsX=10, const unsigned long binsY=10, const unsigned long binsZ=10, const double weight=1.0) const
 fill the 3D histogram with forced ID assignment (book on demand)
AIDA::IHistogram3D * plot3D (const double valueX, const double valueY, const double valueZ, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const HistoBinEdges &edgesZ, const double weight=1.0) const
 Fill the 3D variable binning histogram (book on demand).
AIDA::IHistogram3D * plot3D (const double valueX, const double valueY, const double valueZ, const HistoID &ID, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const HistoBinEdges &edgesZ, const double weight=1.0) const
 fill the 3D histogram with forced ID assignment (book on demand)
AIDA::IProfile1D * profile1D (const double valueX, const double valueY, const std::string &title, const double lowX, const double highX, const unsigned long binsX=100, const std::string &opt="", const double lowY=-std::numeric_limits< double >::max(), const double highY=std::numeric_limits< double >::max(), const double weight=1.0) const
 fill the 1D profile histogram (book on demand)
AIDA::IProfile1D * profile1D (const double valueX, const double valueY, const HistoID &ID, const std::string &title, const double lowX, const double highX, const unsigned long binsX=100, const std::string &opt="", const double lowY=-std::numeric_limits< double >::max(), const double highY=std::numeric_limits< double >::max(), const double weight=1.0) const
 fill the 1D profile histogram with forced ID assignment (book on demand)
AIDA::IProfile1D * profile1D (const double valueX, const double valueY, const std::string &title, const HistoBinEdges &edges, const double weight=1.0) const
 fill the 1D variable binning profile histogram (book on demand)
AIDA::IProfile1D * profile1D (const double valueX, const double valueY, const HistoID &ID, const std::string &title, const HistoBinEdges &edges, const double weight=1.0) const
 fill the 1D variable binning profile histogram with forced ID assignment (book on demand)
AIDA::IProfile2D * profile2D (const double valueX, const double valueY, const double valueZ, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0) const
 fill the 2D profile histogram (book on demand)
AIDA::IProfile2D * profile2D (const double valueX, const double valueY, const double valueZ, const HistoID &ID, const std::string &title, const double lowX, const double highX, const double lowY, const double highY, const unsigned long binsX=50, const unsigned long binsY=50, const double weight=1.0) const
 fill the 2D profile histogram with forced ID assignment (book on demand)
AIDA::IProfile2D * profile2D (const double valueX, const double valueY, const double valueZ, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const double weight=1.0) const
 fill the 2D variable binning profile histogram (book on demand)
AIDA::IProfile2D * profile2D (const double valueX, const double valueY, const double valueZ, const HistoID &ID, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const double weight=1.0) const
 fill the 2D variable binning profile histogram with forced ID assignment (book on demand)
AIDA::IHistogram1D * book1D (const std::string &title, const double low=0, const double high=100, const unsigned long bins=100) const
 book the 1D histogram
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
AIDA::IHistogram1D * book (const Gaudi::Histo1DDef &hdef) const
 book the 1D histogram
AIDA::IHistogram1D * book1D (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
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
AIDA::IHistogram1D * book (const HistoID &ID, const Gaudi::Histo1DDef &hdef) const
 book the 1D histogram with forced ID
AIDA::IHistogram1D * book1D (const std::string &title, const HistoBinEdges &edges) const
 book the 1D variable binning histogram
AIDA::IHistogram1D * book1D (const HistoID &ID, const std::string &title, const HistoBinEdges &edges) const
 book the 1D variable binning histogram with given ID
AIDA::IHistogram2D * book2D (const std::string &title, const double lowX=0, const double highX=100, const unsigned long binsX=50, const double lowY=0, const double highY=100, const unsigned long binsY=50) const
 book the 2D histogram
AIDA::IHistogram2D * book2D (const HistoID &ID, const std::string &title, const double lowX=0, const double highX=100, const unsigned long binsX=50, const double lowY=0, const double highY=100, const unsigned long binsY=50) const
 book the 2D histogram with forced ID
AIDA::IHistogram2D * book2D (const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY) const
 book the 2D variable binning histogram
AIDA::IHistogram2D * book2D (const HistoID &ID, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY) const
 book the 2D variable binning histogram with given ID
AIDA::IHistogram3D * book3D (const std::string &title, const double lowX=0, const double highX=100, const unsigned long binsX=10, const double lowY=0, const double highY=100, const unsigned long binsY=10, const double lowZ=0, const double highZ=100, const unsigned long binsZ=10) const
 book the 3D histogram
AIDA::IHistogram3D * book3D (const HistoID &ID, const std::string &title, const double lowX=0, const double highX=100, const unsigned long binsX=10, const double lowY=0, const double highY=100, const unsigned long binsY=10, const double lowZ=0, const double highZ=100, const unsigned long binsZ=10) const
 book the 3D histogram with forced ID
AIDA::IHistogram3D * book3D (const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const HistoBinEdges &edgesZ) const
 book the 3D variable binning histogram
AIDA::IHistogram3D * book3D (const HistoID &ID, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY, const HistoBinEdges &edgesZ) const
 book the 3D variable binning histogram with given ID
AIDA::IProfile1D * bookProfile1D (const std::string &title, const double low=0, const double high=100, const unsigned long bins=100, const std::string &opt="", const double lowY=-std::numeric_limits< double >::max(), const double highY=std::numeric_limits< double >::max()) const
 book the 1D profile histogram
AIDA::IProfile1D * bookProfile1D (const HistoID &ID, const std::string &title, const double low=0, const double high=100, const unsigned long bins=100, const std::string &opt="", const double lowY=-std::numeric_limits< double >::max(), const double highY=std::numeric_limits< double >::max()) const
 book the 1D profile histogram
AIDA::IProfile1D * bookProfile1D (const std::string &title, const HistoBinEdges &edges) const
 book the 1D profile histogram
AIDA::IProfile1D * bookProfile1D (const HistoID &ID, const std::string &title, const HistoBinEdges &edges) const
 book the 1D profile histogram
AIDA::IProfile2D * bookProfile2D (const std::string &title, const double lowX=0, const double highX=100, const unsigned long binsX=50, const double lowY=0, const double highY=100, const unsigned long binsY=50) const
 book the 2D profile histogram
AIDA::IProfile2D * bookProfile2D (const HistoID &ID, const std::string &title, const double lowX=0, const double highX=100, const unsigned long binsX=50, const double lowY=0, const double highY=100, const unsigned long binsY=50) const
 book the 2D profile histogram with forced ID
AIDA::IProfile2D * bookProfile2D (const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY) const
 book the 2D profile histogram
AIDA::IProfile2D * bookProfile2D (const HistoID &ID, const std::string &title, const HistoBinEdges &edgesX, const HistoBinEdges &edgesY) const
 book the 2D profile histogram with forced ID
AIDA::IHistogram1D * fill (AIDA::IHistogram1D *histo, const double value, const double weight, const std::string &title="") const
 fill the 1D histogram with the value and weight
AIDA::IHistogram2D * fill (AIDA::IHistogram2D *histo, const double valueX, const double valueY, const double weight, const std::string &title="") const
 fill the 2D histogram with the value and weight
AIDA::IHistogram3D * fill (AIDA::IHistogram3D *histo, const double valueX, const double valueY, const double valueZ, const double weight, const std::string &title="") const
 fill the 3D histogram with the value and weight
AIDA::IProfile1D * fill (AIDA::IProfile1D *histo, const double valueX, const double valueY, const double weight, const std::string &title="") const
 fill the 1D profile histogram with the values and weight
AIDA::IProfile2D * fill (AIDA::IProfile2D *histo, const double valueX, const double valueY, const double valueZ, const double weight, const std::string &title="") const
 fill the 2D profile histogram with the values and weight
AIDA::IHistogram1D * histo1D (const std::string &title) const
 access the EXISTING 1D histogram by title return the pointer to existing 1D histogram or NULL
AIDA::IHistogram1D * histo (const std::string &title) const
 access the EXISTING 1D histogram by title
AIDA::IHistogram2D * histo2D (const std::string &title) const
 access the EXISTING 2D histogram by title return the pointer to existing 2D histogram or NULL
AIDA::IHistogram3D * histo3D (const std::string &title) const
 access the EXISTING 3D histogram by title return the pointer to existing 3D histogram or NULL
AIDA::IProfile1D * profile1D (const std::string &title) const
 access the EXISTING 1D profile histogram by title return the pointer to existing 1D profile histogram or NULL
AIDA::IProfile2D * profile2D (const std::string &title) const
 access the EXISTING 2D profile histogram by title return the pointer to existing 2D profile histogram or NULL
AIDA::IHistogram1D * histo1D (const HistoID &ID) const
 access the EXISTING 1D histogram by ID return the pointer to existing 1D histogram or NULL
AIDA::IHistogram1D * histo (const HistoID &ID) const
 access the EXISTING 1D histogram by ID
AIDA::IHistogram2D * histo2D (const HistoID &ID) const
 access the EXISTING 2D histogram by ID return the pointer to existing 2D histogram or NULL
AIDA::IHistogram3D * histo3D (const HistoID &ID) const
 access the EXISTING 3D histogram by ID return the pointer to existing 3D histogram or NULL
AIDA::IProfile1D * profile1D (const HistoID &ID) const
 access the EXISTING 1D profile histogram by ID return the pointer to existing 1D profile histogram or NULL
AIDA::IProfile2D * profile2D (const HistoID &ID) const
 access the EXISTING 2D profile histogram by ID return the pointer to existing 2D profile histogram or NULL
bool histoExists (const std::string &title) const
 check the existence AND validity of the histogram with given title
bool histoExists (const HistoID &ID) const
 check the existence AND validity of the histogram with given title
unsigned int totalNumberOfHistos () const
 Returns the total number of histograms (of all types) currently booked.
bool produceHistos () const
 get the flag for histogram production (property "HistoProduce")
bool fullDetail () const
 get flag to control output level of histograms
bool checkForNaN () const
 get the flag for NaN checks (property "HistoCheckForNan")
bool splitHistoDir () const
 get the flag for histogram path split (property "HistoSplitDir")
HistoID::NumericID histoOffSet () const
 get the value for histogram offset (property "HistoOffSet")
const std::stringhistoTopDir () const
 get top-level histogram directory (property "HistoTopDir")
const std::stringhistoDir () const
 get histogram directory (property "HistoDir")
std::string histoPath () const
 get the constructed histogram path
bool histosPrint () const
 print histograms at finalization ?
bool useNumericAutoIDs () const
 Use old style sequencial numerical automatically assigned IDs ?
int printHistos (const MSG::Level level=MSG::ALWAYS) const
 perform the actual printout of histograms
const Histo1DMapTitlehisto1DMapTitle () const
 get access to the map of all 1D histograms indexed via their title
const Histo1DMapNumIDhisto1DMapNumID () const
 get access to the map of 1D histograms index via a numeric ID
const Histo1DMapLitIDhisto1DMapLitID () const
 get access to the map of all 1D histograms index via a literal (string) ID
const Histo2DMapTitlehisto2DMapTitle () const
 get access to the map of all 2D histograms indexed via their title
const Histo2DMapNumIDhisto2DMapNumID () const
 get access to the map of 2D histograms index via a numeric ID
const Histo2DMapLitIDhisto2DMapLitID () const
 get access to the map of all 2D histograms index via a literal (string) ID
const Histo3DMapTitlehisto3DMapTitle () const
 get access to the map of all 3D histograms indexed via their title
const Histo3DMapNumIDhisto3DMapNumID () const
 get access to the map of 3D histograms index via a numeric ID
const Histo3DMapLitIDhisto3DMapLitID () const
 get access to the map of all 3D histograms index via a literal (string) ID
const Profile1DMapTitleprofile1DMapTitle () const
 get access to the map of all 1D profile histograms indexed via their title
const Profile1DMapNumIDprofile1DMapNumID () const
 get access to the map of 1D profile histograms index via a numeric ID
const Profile1DMapLitIDprofile1DMapLitID () const
 get access to the map of 1D profile histograms index via a literal ID
const Profile2DMapTitleprofile2DMapTitle () const
 get access to the map of all 2D profile histograms indexed via their title
const Profile2DMapNumIDprofile2DMapNumID () const
 get access to the map of 2D profile histograms index via a numeric ID
const Profile2DMapLitIDprofile2DMapLitID () const
 get access to the map of 2D profile histograms index via a literal ID
void setProduceHistos (const bool val)
 set the flag for histogram production (property "HistoProduce")
void setFullDetail (const bool val)
 set flag to control output level of histograms
void setCheckForNaN (const bool val)
 set the flag for NaN checks (property "HistoCheckForNan")
void setSplitHistoDir (const bool val)
 set the flag for histogram path split (property "HistoSplitDir")
void setHistoOffSet (const HistoID::NumericID val)
 set a value for histogram offset (property "HistoOffSet"
void setHistoTopDir (const std::string &val)
 set top-level histogram directory (property "HistoTopDir")
void setHistoDir (const std::string &val)
 set histogram directory (property "HistoDir")
 GaudiHistos (const std::string &name, ISvcLocator *pSvcLocator)
 Algorithm constructor.
 GaudiHistos (const std::string &type, const std::string &name, const IInterface *parent)
 Tool constructor.
virtual ~GaudiHistos ()
 Destructor.

Protected Member Functions

virtual StatusCode initialize ()
 standard initialization method
virtual StatusCode finalize ()
 standard finalization method
std::string convertTitleToID (const std::string &title) const
 Create an ID string from a title string.

Private Member Functions

bool noHistos () const
 Check if all histogram maps are empty.
void initGaudiHistosConstructor ()
 Constructor initialisation and job options.
void monitorHisto (const AIDA::IBaseHistogram *hist, const HistoID &ID) const
 Declare a histogram to the monitor service.
void newHistoID (const std::string &title, HistoID &ID) const
 Create a new histogram ID using the given title.
void stringSearchReplace (std::string &title, const std::string &A, const std::string &B) const
 Searches 'title' for all instancies of 'A' and replaces them with 'B'.
void printHistoHandler (Property &)
 the handler for "HistoPrint" property

Private Attributes

bool m_produceHistos
 flag to SWITCH ON/SWITCH OFF the histogrm fillling and booking
bool m_fullDetail
 flag to control output level of histograms
bool m_checkForNaN
 flag to control check for Nan/Finite while filling the histogram
bool m_splitHistoDir
 split histogram directory name (very useful for Hbook)
HistoID::NumericID m_histoOffSet
 general histogram ID offset (only works for automatically assigned numeric IDs)
std::string m_histoTopDir
 histogram top level directory
std::string m_histoDir
 histogram directory
bool m_histosPrint
 print histograms at finalization
bool m_declareMoniHists
 Flag to turn on/off the registration of histograms to the Monitoring Service.
Histo1DMapTitle m_histo1DMapTitle
 the actual storage/access of 1D histograms by unique title
Histo1DMapNumID m_histo1DMapNumID
 the actual storage/access of 1D histograms by unique numeric ID
Histo1DMapLitID m_histo1DMapLitID
 the actual storage/access of 1D histograms by unique literal ID
Histo2DMapTitle m_histo2DMapTitle
 the actual storage/access of 2D histograms by unique title
Histo2DMapNumID m_histo2DMapNumID
 the actual storage/access of 2D histograms by unique numeric ID
Histo2DMapLitID m_histo2DMapLitID
 the actual storage/access of 2D histograms by unique literal ID
Histo3DMapTitle m_histo3DMapTitle
 the actual storage/access of 3D histograms by unique title
Histo3DMapNumID m_histo3DMapNumID
 the actual storage/access of 3D histograms by unique numeric ID
Histo3DMapLitID m_histo3DMapLitID
 the actual storage/access of 3D histograms by unique literal ID
Profile1DMapTitle m_profile1DMapTitle
 the actual storage/access of 1D profile histograms by unique title
Profile1DMapNumID m_profile1DMapNumID
 the actual storage/access of 1D profile histograms by unique numeric ID
Profile1DMapLitID m_profile1DMapLitID
 the actual storage/access of 1D profile histograms by unique literal ID
Profile2DMapTitle m_profile2DMapTitle
 the actual storage/access of 2D profile histograms by unique title
Profile2DMapNumID m_profile2DMapNumID
 the actual storage/access of 2D profile histograms by unique numeric ID
Profile2DMapLitID m_profile2DMapLitID
 the actual storage/access of 2D profile histograms by unique literal ID
std::string m_histo1DTableFormat
 format for printout of 1D-histograms as a table
std::string m_histo1DTableFormatShort
 format for printout of 1D-histograms as a table
std::string m_histo1DTableHeader
 the header for the table of 1-D historgrams
bool m_useNumericAutoIDs
 Flag to switch back to the old style sequencial numerical automatic IDs.
std::map< std::string,
std::string
m_idReplaceInfo
 Map of strings to search and replace when using the title as the basis of automatically generated literal IDs.

Member Typedef Documentation

template<class PBASE>
typedef GaudiAlg::HistoID GaudiHistos< PBASE >::HistoID

the actual type for histogram identifier

Reimplemented in HistoTool, GaudiTuples< GaudiHistoTool >, and GaudiTuples< GaudiHistoAlg >.

Definition at line 56 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo1DMapNumericID GaudiHistos< PBASE >::Histo1DMapNumID

the actual type for (Numeric ID)->(1D histogram) mapping

Definition at line 59 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo1DMapLiteralID GaudiHistos< PBASE >::Histo1DMapLitID

the actual type for (Literal ID)->(1D histogram) mapping

Definition at line 61 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo1DMapTitle GaudiHistos< PBASE >::Histo1DMapTitle

the actual type for title->(1D histogram) mapping

Definition at line 63 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo2DMapNumericID GaudiHistos< PBASE >::Histo2DMapNumID

the actual type for (Numeric ID)->(2D histogram) mapping

Definition at line 66 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo2DMapLiteralID GaudiHistos< PBASE >::Histo2DMapLitID

the actual type for (Literal ID)->(2D histogram) mapping

Definition at line 68 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo2DMapTitle GaudiHistos< PBASE >::Histo2DMapTitle

the actual type for title->(2D histogram) mapping

Definition at line 70 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo3DMapNumericID GaudiHistos< PBASE >::Histo3DMapNumID

the actual type for (Numeric ID)->(3D histogram) mapping

Definition at line 73 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo3DMapLiteralID GaudiHistos< PBASE >::Histo3DMapLitID

the actual type for (Literal ID)->(3D histogram) mapping

Definition at line 75 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Histo3DMapTitle GaudiHistos< PBASE >::Histo3DMapTitle

the actual type for title->(3D histogram) mapping

Definition at line 77 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Profile1DMapNumericID GaudiHistos< PBASE >::Profile1DMapNumID

the actual type for (Numeric ID)->(1D profile histogram) mapping

Definition at line 80 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Profile1DMapLiteralID GaudiHistos< PBASE >::Profile1DMapLitID

the actual type for (Literal ID)->(1D profile histogram) mapping

Definition at line 82 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Profile1DMapTitle GaudiHistos< PBASE >::Profile1DMapTitle

the actual type for title->(1D profile histogram) mapping

Definition at line 84 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Profile2DMapNumericID GaudiHistos< PBASE >::Profile2DMapNumID

the actual type for (Numeric ID)->(2D profile histogram) mapping

Definition at line 87 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Profile2DMapLiteralID GaudiHistos< PBASE >::Profile2DMapLitID

the actual type for (Literal ID)->(2D profile histogram) mapping

Definition at line 89 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::Profile2DMapTitle GaudiHistos< PBASE >::Profile2DMapTitle

the actual type for title->(2D profile histogram) mapping

Definition at line 91 of file GaudiHistos.h.

template<class PBASE>
typedef GaudiAlg::HistoBinEdges GaudiHistos< PBASE >::HistoBinEdges

Edges for variable binning.

Definition at line 94 of file GaudiHistos.h.


Constructor & Destructor Documentation

template<class PBASE>
GaudiHistos< PBASE >::GaudiHistos ( const std::string name,
ISvcLocator pSvcLocator 
)

Algorithm constructor.

template<class PBASE>
GaudiHistos< PBASE >::GaudiHistos ( const std::string type,
const std::string name,
const IInterface parent 
)

Tool constructor.

template<class PBASE>
GaudiHistos< PBASE >::~GaudiHistos (  )  [inline, virtual]

Destructor.

Definition at line 55 of file GaudiHistos.icpp.

00055 {}


Member Function Documentation

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D ( const double  value,
const std::string title,
const double  low,
const double  high,
const unsigned long  bins = 100,
const double  weight = 1.0 
) const [inline]

fill the 1D histogram (book on demand)

     const double mass = ... ;
     plot1D( mass , "Invariant Mass" , 2.5 , 3.5 , 100 )

This example illustrates the filling of the histogram titled "InvariantMass" with value mass .

If the histogram with given title does not exist yet it will be automatically booked with parameters low equal to 2.5, parameters high equal to 3.5 and bins equal to 100.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IHistogram1D
Parameters:
value value to be filled
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
weight weight
Returns:
pointer to AIDA 1D histogram

Reimplemented in HistoTool.

Definition at line 134 of file GaudiHistos_1DFixedBinning.icpp.

00140 {
00141   AIDA::IHistogram1D * h(NULL);
00142   if ( produceHistos() )
00143   {
00144     // retrieve or book the histogram
00145     h = histo1D ( title ) ;
00146     if ( NULL == h ) { h = book1D  ( title , low , high , bins ) ; }
00147     // fill the histogram
00148     h = fill ( h , value , weight , title );
00149   }
00150   return h;
00151 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::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 [inline]

fill the 1D histogram (book on demand)

Wrapper method for the equivalent plot1D method. Retained for backwards compatibility, please use plot1D instead.

Parameters:
value value to be filled
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 165 of file GaudiHistos.h.

00171   {
00172     return plot1D ( value, title, low, high, bins, weight );
00173   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D ( const double  value,
const Gaudi::Histo1DDef &  hdef,
const double  weight = 1.0 
) const [inline]

fill the 1D histogram (book on demand)

     const Gaudi::Histo1DDef& hdef = ... ;

     const double mass = ... ;
     plot1D ( mass , hdef ) ;

The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title.

The histogram descriptor comes e.g. from the component properties.

See also:
AIDA::IHistogram1D
Parameters:
value value to be filled
hdef histogram descriptor
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 211 of file GaudiHistos_1DFixedBinning.icpp.

00214 {
00215   return plot1D
00216     ( value  ,
00217       hdef.title() , hdef.lowEdge() , hdef.highEdge() , hdef.bins() ,
00218       weight ) ;
00219 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::plot ( const double  value,
const Gaudi::Histo1DDef &  hdef,
const double  weight = 1.0 
) const [inline]

fill the 1D histogram (book on demand)

Wrapper method for the equivalent plot1D method. Retained for backwards compatibility, please use plot1D instead.

Parameters:
value value to be filled
hdef histogram descriptor
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 215 of file GaudiHistos.h.

00218   {
00219     return plot1D ( value, hdef, weight );
00220   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D ( 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 [inline]

fill the 1D histogram with forced ID assignment (book on demand)

     const double mass = ... ;
     plot1D( mass , 15 , "Invariant Mass" , 2.5 , 3.5 , 100 )

This example illustrates the filling of the 1D histogram ID=15 titled "Invariant Mass" with value mass .

If the histogram with given ID does not exist yet it will be automatically booked with parameters low equal to 2.5, parameters high equal to 3.5 and bins equal to 100.

It is also possible to use literal IDs. For example :-

     const double mass = ... ;
     plot1D( mass , "mass" , "Invariant Mass" , 2.5 , 3.5 , 100 )

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const double mass = ... ;
     plot1D( mass , "subdir/mass" , "Invariant Mass" , 2.5 , 3.5 , 100 )

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

Attention:
If the histogram with given ID is already booked through automatic assignment of histogram ID, the error will not be detected. Therefore it is recommended to use non-trivial histogram ID offset (property "HistoOffSet") if one need to combine these techniques together. It is still desirable to use the unique histogram title to avoid a bad interference.
See also:
AIDA::IHistogram1D
Parameters:
value value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
weight weight
Returns:
pointer to AIDA 1D histogram

Reimplemented in HistoTool.

Definition at line 158 of file GaudiHistos_1DFixedBinning.icpp.

00165 {
00166   AIDA::IHistogram1D* h(NULL);
00167   if ( produceHistos() )
00168   {
00169     // retrieve or book the histogram
00170     h = histo1D ( ID ) ;
00171     if ( NULL == h ) {  h = book1D ( ID , title , low , high , bins ) ; }
00172     // fill
00173     h = fill ( h , value , weight , title ) ;
00174   }
00175   return h;
00176 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::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 [inline]

fill the 1D histogram with forced ID assignment (book on demand)

Wrapper method for the equivalent plot1D method. Retained for backwards compatibility, please use plot1D instead.

Parameters:
value value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 311 of file GaudiHistos.h.

00318   {
00319     return plot1D ( value, ID, title, low, high, bins, weight );
00320   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D ( const double  value,
const HistoID ID,
const Gaudi::Histo1DDef &  hdef,
const double  weight = 1.0 
) const [inline]

fill the 1D histogram with forced ID assignment (book on demand)

     // get the histogram descriptor
     const Gaudi::Histo1DDef& hdef = ... ;

     // get the histogram ID
     const HistoID ID = ... ;

     const double mass = ... ;
     plot1D ( mass , ID , hdef  )

See also:
AIDA::IHistogram1D
The histogram descriptor comes e.g. from component properties

Parameters:
value value to be filled
ID histogram identifier
hdef histogram descriptor
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 226 of file GaudiHistos_1DFixedBinning.icpp.

00230 {
00231   return plot1D
00232     ( value  , ID ,
00233       hdef.title() , hdef.lowEdge() , hdef.highEdge() , hdef.bins() ,
00234       weight ) ;
00235 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::plot ( const double  value,
const HistoID ID,
const Gaudi::Histo1DDef &  hdef,
const double  weight = 1.0 
) const [inline]

fill the 1D histogram (book on demand)

Wrapper method for the equivalent plot1D method. Retained for backwards compatibility, please use plot1D instead.

Parameters:
value value to be filled
ID histogram identifier
hdef histogram descriptor
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 365 of file GaudiHistos.h.

00369   {
00370     return plot1D ( value, ID, hdef, weight );
00371   }

template<class PBASE>
template<class FUNCTION, class OBJECT>
AIDA::IHistogram1D* GaudiHistos< PBASE >::plot ( const FUNCTION &  func,
OBJECT  first,
OBJECT  last,
const std::string title,
const double  low,
const double  high,
const unsigned long  bins = 100 
) const [inline]

fill the 1D histogram with information from [first,last) sequence

  std::vector<double> v = ... ;

  plot( sin                 , // function
        v.begin() , v.end() , // sequence
        " bla-bla "         , // title
        -1. , 1.0           , // low and high limits
        100                 ) // number of bins

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
Sequence, objects and function can be non-trivial:
  Particles* p = ... ;

  plot( PT                  , // function
        p->begin()  , p->end() , // sequence
        " bla-bla "         , // title
        -1. , 1.0           , // low and high limits
        100                 ) ; // number of bins
where PT can be any function or function object for which the expression PT(p) , with p of type Particle* have some sense and can be evaluated to the values, which is convertible to double

Attention:
These plot methods using iterator ranges are more efficient than the simplier "value" only methods, since the associated histogram only requires locating from internal storage once per loop, as opposed to once per fill for the simplier functions. It is recommended to use these whenever possible.
See also:
AIDA::IHistogram1D
Parameters:
func function to be plotted
first begin of the sequence
last end of the sequence
title histogram title
low low limit for histogram
high high limit for histogram
bins number of bins for histogram

Definition at line 437 of file GaudiHistos.h.

00444   {
00445     AIDA::IHistogram1D* h(0);
00446     if ( produceHistos() )
00447     {
00448       // retrieve or book the histogram
00449       h = histo1D ( title ) ;
00450       if ( 0 == h )     { h = book1D  ( title , low , high , bins ); }
00451       // fill histogram
00452       while( first != last && 0 != h  )
00453       { h = fill ( h , func( *first ) , 1.0 , title  ) ; ++first ; }
00454     }
00455     return h ;
00456   }

template<class PBASE>
template<class FUNCTION, class OBJECT>
AIDA::IHistogram1D* GaudiHistos< PBASE >::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 [inline]

fill the 1D histogram with forced ID and information from [first,last) sequence

  std::vector<double> v = ... ;

  // Example with numeric ID
  plot( sin                 ,   // function
        v.begin() , v.end() ,   // sequence
        100 , " bla-bla "   ,   // ID and title
        -1. , 1.0           ,   // low and high limits
        100                 );  // number of bins

  // Example with literal ID
  plot( sin                 ,   // function
        v.begin() , v.end() ,   // sequence
        "sin" , " bla-bla " ,   // ID and title
        -1. , 1.0           ,   // low and high limits
        100                 );  // number of bins

Sequence, objects and function can be non-trivial:

  Particles* p = ... ;

  plot( PT                  ,   // function
        p->begin()   , p->end() , // sequence
        100 , " bla-bla "   ,   // ID and title
        -1. , 1.0           ,   // low and high limits
        100                 ) ; // number of bins

Attention:
These plot methods using iterator ranges are more efficient than the simplier "value" only methods, since the associated histogram only requires locating from internal storage once per loop, as opposed to once per fill for the simplier functions. It is recommended to use these whenever possible.
See also:
AIDA::IHistogram1D
Parameters:
func function to be plotted
first begin of the sequence
last end of the sequence
ID histogram identifier
title histogram title
low low limit for histogram
high high limit for histogram
bins number of bins for histogram

Definition at line 515 of file GaudiHistos.h.

00523   {
00524     AIDA::IHistogram1D* h(0);
00525     if ( produceHistos() )
00526     {
00527       // retrieve or book the histogram
00528       h = histo1D ( ID ) ;
00529       if ( 0 == h )     { h = book1D  ( ID , title , low , high , bins ); }
00530       // fill histogram
00531       while( first != last && 0 != h )
00532       { h = fill( h , func( *first ) , 1.0 , title  ) ; ++first ; }
00533     }
00534     return h;
00535   }

template<class PBASE>
template<class FUNCTION, class OBJECT, class WEIGHT>
AIDA::IHistogram1D* GaudiHistos< PBASE >::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 [inline]

book and fill the 1D histogram with information from [first,last) sequence with given weight

  std::vector<double> v = ... ;

  plot( sin                 ,   // function
        v.begin() , v.end() ,   // sequence
        " bla-bla "         ,   // title
        -1. , 1.0           ,   // low and high limits
        100                 ,   // number of bins
        tanh                );  // weight function

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
Sequence, objects and function can be non-trivial:
  Particles* p = ... ;

  plot( PT                  ,  // function
        p->begin()  , p->end() , // sequence
        " bla-bla "         ,   // title
        -1. , 1.0           ,   // low and high limits
        100                 ,   // number of bins
        MASS                ) ; // weight function
where PT and MASS can be any function or function object for which the expressions PT(p) and MASS with p of type Particle* have some sense and can be evaluated to the values, which is convertible to double

Attention:
These plot methods using iterator ranges are more efficient than the simplier "value" only methods, since the associated histogram only requires locating from internal storage once per loop, as opposed to once per fill for the simplier functions. It is recommended to use these whenever possible.
See also:
AIDA::IHistogram1D
Parameters:
first begin of the sequence
last end of the sequence
title histogram title
func function to be plotted
low low limit for histogram
high high limit for histogram
bins number of bins for histogram
weight weight function

Definition at line 607 of file GaudiHistos.h.

00615   {
00616     AIDA::IHistogram1D* h(0);
00617     if ( produceHistos() )
00618     {
00619       // retrieve or book the histogram
00620       h = histo1D ( title ) ;
00621       if ( 0 == h ) { h = book1D  ( title , low , high , bins ); }
00622       // fill histogram
00623       while ( first != last && 0 != h )
00624       { h = fill ( h                 ,
00625                    func   ( *first ) ,
00626                    weight ( *first ) , title  ) ; ++first ; }
00627     }
00628     return h;
00629   }

template<class PBASE>
template<class FUNCTION, class OBJECT, class WEIGHT>
AIDA::IHistogram1D* GaudiHistos< PBASE >::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 [inline]

book and fill the 1D histogram with forced ID and information from [first,last) sequence with given weight

  std::vector<double> v = ... ;

  // example with numerical ID
  plot( sin                 ,   // function
        v.begin() , v.end() ,   // sequence
        100 , " bla-bla "   ,   // ID and title
        -1. , 1.0           ,   // low and high limits
        100                 ,   // number of bins
        sinh                );  // weight function

  // example with literal ID
  plot( sin                 ,   // function
        v.begin() , v.end() ,   // sequence
        "sin" , " bla-bla "   ,   // ID and title
        -1. , 1.0           ,   // low and high limits
        100                 ,   // number of bins
        sinh                );  // weight function

Attention:
no checks for NaN or Finite are performed!
Sequence, objects and function can be non-trivial:

  Particles* p = ... ;

  plot( PT                  ,   // function
        p->begin()   , p->end() , // sequence
        100 , " bla-bla "   ,   // ID and title
        -1. , 1.0           ,   // low and high limits
        100                 ,   // number of bins
        MASS                ) ; // weight function
where PT and MASS can be any function or function object for which the expressions PT(p) and MASS with p of type Particle* have some sense and can be evaluated to the values, which is convertible to double

Attention:
These plot methods using iterator ranges are more efficient than the simplier "value" only methods, since the associated histogram only requires locating from internal storage once per loop, as opposed to once per fill for the simplier functions. It is recommended to use these whenever possible.
See also:
AIDA::IHistogram1D
Parameters:
first begin of the sequence
last end of the sequence
ID histogram identifier
title histogram title
func function to be plotted
low low limit for histogram
high high limit for histogram
bins number of bins for histogram
weight weight function

Definition at line 699 of file GaudiHistos.h.

00708   {
00709     AIDA::IHistogram1D* h(0);
00710     if ( produceHistos() )
00711     {
00712       // retrieve or book the histogram
00713       h = histo1D ( ID ) ;
00714       if ( 0 == h ) { h = book1D  ( ID , title , low , high , bins ); }
00715       // fill histogram
00716       while( first != last && 0 != h )
00717       { h  = fill ( h                 ,
00718                     func   ( *first ) ,
00719                     weight ( *first ) , title  ) ; ++first ; }
00720     }
00721     return h ;
00722   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D ( const double  value,
const std::string title,
const HistoBinEdges edges,
const double  weight = 1.0 
) const [inline]

Fill the 1D variable binning histogram (book on demand).

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass = ... ;
     plot1D( mass , "Invariant Mass" , edges )

This example illustrates the filling of the histogram titled "InvariantMass" with value mass.

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IHistogram1D
Parameters:
value value to be filled
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 94 of file GaudiHistos_1DVariableBinning.icpp.

00098 {
00099   AIDA::IHistogram1D * h(NULL);
00100   if ( produceHistos() )
00101   {
00102     // retrieve or book the histogram
00103     h = histo1D ( title ) ;
00104     if ( NULL == h ) { h = book1D ( title , edges ) ; }
00105     // fill the histogram
00106     h = fill ( h , value , weight , title );
00107   }
00108   return h;
00109 }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D ( const double  value,
const HistoID ID,
const std::string title,
const HistoBinEdges edges,
const double  weight = 1.0 
) const [inline]

fill the 1D variable binning histogram with forced ID assignment (book on demand)

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass = ... ;
     plot1D( mass , 15 , "Invariant Mass" , edges )

This example illustrates the filling of the 1D histogram ID=15 titled "Invariant Mass" with value mass.

If the histogram with given ID does not exist yet it will be automatically booked with the given histogram bin edges.

It is also possible to use literal IDs. For example :-

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass = ... ;
     plot1D( mass , "mass" , "Invariant Mass" , edges )

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass = ... ;
     plot1D( mass , "subdir/mass" , "Invariant Mass" , edges )

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

Attention:
If the histogram with given ID is already booked through automatic assignment of histogram ID, the error will not be detected. Therefore it is recommended to use non-trivial histogram ID offset (property "HistoOffSet") if one need to combine these techniques together. It is still desirable to use the unique histogram title to avoid a bad interference.
See also:
AIDA::IHistogram1D
Parameters:
value value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
weight weight
Returns:
pointer to AIDA 1D histogram

Definition at line 116 of file GaudiHistos_1DVariableBinning.icpp.

00121 {
00122   AIDA::IHistogram1D* h(NULL);
00123   if ( produceHistos() )
00124   {
00125     // retrieve or book the histogram
00126     h = histo1D ( ID ) ;
00127     if ( NULL == h ) {  h = book1D ( ID , title , edges ) ; }
00128     // fill
00129     h = fill ( h , value , weight , title ) ;
00130   }
00131   return h;
00132 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::plot2D ( const double  valueX,
const double  valueY,
const std::string title,
const double  lowX,
const double  highX,
const double  lowY,
const double  highY,
const unsigned long  binsX = 50,
const unsigned long  binsY = 50,
const double  weight = 1.0 
) const [inline]

fill the 2D histogram (book on demand)

     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2,
            "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 4.5, 5.5, 100, 200 );

This example illustrates the filling of the 2D histogram titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, lowY equal to 4.5, highY equal to 5.5, binsX equal to 100 and binsY equal to 200.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IHistogram2D
Parameters:
valueX x value to be filled
valueY y value to be filled
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
lowY low y limit for histogram
highY high y limit for histogram
binsX number of bins in x
binsY number of bins in y
weight weight
Returns:
pointer to AIDA 2D histogram

Reimplemented in HistoTool.

Definition at line 147 of file GaudiHistos_2DFixedBinning.icpp.

00157 {
00158   AIDA::IHistogram2D * h(NULL);
00159   if ( produceHistos() )
00160   {
00161     // retrieve or book the histogram
00162     h = histo2D ( title ) ;
00163     if ( NULL == h )
00164     { h = book2D ( title , lowX , highX , binsX , lowY , highY , binsY ) ; }
00165     // fill the histogram
00166     h = fill ( h , valueX , valueY , weight , title ) ;
00167   }
00168   return h;
00169 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::plot2D ( const double  valueX,
const double  valueY,
const HistoID ID,
const std::string title,
const double  lowX,
const double  highX,
const double  lowY,
const double  highY,
const unsigned long  binsX = 50,
const unsigned long  binsY = 50,
const double  weight = 1.0 
) const [inline]

fill the 2D histogram with forced ID assignment (book on demand)

     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2, 15,
             "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 4.5, 5.5, 100, 200 );

This example illustrates the filling of the 2D histogram ID=15 titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, lowY equal to 4.5, highY equal to 5.5, binsX equal to 100 and binsY equal to 200.

It is also possible to use literal IDs. For example :-

     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2, "mass",
             "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 4.5, 5.5, 100, 200 );

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2, "subdir/mass",
             "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 4.5, 5.5, 100, 200 );

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

Attention:
If the histogram with given ID is already booked through automatic assignment of histogram ID, the error will not be detected. Therefore it is recommended to use non-trivial histogram ID offset (property "HistoOffSet") if one need to combine these techniques together It is still desirable to use the unique histogram title to avoid a bad interference
See also:
AIDA::IHistogram2D
Parameters:
valueX x value to be filled
valueY y value to be filled
ID Histogram ID to use
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
lowY low y limit for histogram
highY high y limit for histogram
binsX number of bins in x
binsY number of bins in y
weight weight
Returns:
pointer to AIDA 2D histogram

Reimplemented in HistoTool.

Definition at line 175 of file GaudiHistos_2DFixedBinning.icpp.

00186 {
00187   AIDA::IHistogram2D * h(NULL);
00188   // produce histograms ?
00189   if ( produceHistos() )
00190   {
00191     // retrieve or book the histogram
00192     h = histo2D ( ID ) ;
00193     if ( NULL == h ) { h = book2D ( ID   , title ,
00194                                  lowX , highX , binsX ,
00195                                  lowY , highY , binsY ) ; }
00196     // fill the histogram
00197     h = fill ( h , valueX , valueY , weight , title ) ;
00198   }
00199   return h;
00200 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::plot2D ( const double  valueX,
const double  valueY,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const double  weight = 1.0 
) const [inline]

Fill the 2D variable binning histogram (book on demand).

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2,
            "Invariant Mass2 versus Mass1" , edgesX, edgesY );

This example illustrates the filling of the 2D histogram titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IHistogram2D
Parameters:
valueX x value to be filled
valueY y value to be filled
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
weight weight
Returns:
pointer to AIDA 2D histogram

Definition at line 98 of file GaudiHistos_2DVariableBinning.icpp.

00104 {
00105   AIDA::IHistogram2D * h(NULL);
00106   if ( produceHistos() )
00107   {
00108     // retrieve or book the histogram
00109     h = histo2D ( title ) ;
00110     if ( NULL == h ) { h = book2D ( title , edgesX , edgesY ) ; }
00111     // fill the histogram
00112     h = fill ( h , valueX , valueY , weight , title );
00113   }
00114   return h;
00115 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::plot2D ( const double  valueX,
const double  valueY,
const HistoID ID,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const double  weight = 1.0 
) const [inline]

fill the 2D variable histogram with forced ID assignment (book on demand)

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2, 15,
             "Invariant Mass2 versus Mass1", edgesX, edgesY );

This example illustrates the filling of the 2D histogram ID=15 titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges.

It is also possible to use literal IDs. For example :-

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2, "mass",
             "Invariant Mass2 versus Mass1", edgesX, edgesY );

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     plot2D( mass1, mass2, "subdir/mass",
             "Invariant Mass2 versus Mass1", edgesX, edgesY );

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

Attention:
If the histogram with given ID is already booked through automatic assignment of histogram ID, the error will not be detected. Therefore it is recommended to use non-trivial histogram ID offset (property "HistoOffSet") if one need to combine these techniques together It is still desirable to use the unique histogram title to avoid a bad interference
See also:
AIDA::IHistogram2D
Parameters:
valueX x value to be filled
valueY y value to be filled
ID Histogram ID to use
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
weight weight
Returns:
pointer to AIDA 2D histogram

Definition at line 122 of file GaudiHistos_2DVariableBinning.icpp.

00129 {
00130   AIDA::IHistogram2D * h(NULL);
00131   if ( produceHistos() )
00132   {
00133     // retrieve or book the histogram
00134     h = histo2D ( ID ) ;
00135     if ( NULL == h ) {  h = book2D ( ID , title , edgesX , edgesY ) ; }
00136     // fill
00137     h = fill ( h , valueX , valueY , weight , title ) ;
00138   }
00139   return h;
00140 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::plot3D ( const double  valueX,
const double  valueY,
const double  valueZ,
const std::string title,
const double  lowX,
const double  highX,
const double  lowY,
const double  highY,
const double  lowZ,
const double  highZ,
const unsigned long  binsX = 10,
const unsigned long  binsY = 10,
const unsigned long  binsZ = 10,
const double  weight = 1.0 
) const [inline]

fill the 3D histogram (book on demand)

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z, "Space Points" ,
            2.5 , 3.5 ,
            4.5 , 5.5 ,
            6.5 , 7.5 ,
            10, 20, 30 );

This example illustrates the filling of the 3D histogram titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, lowY equal to 4.5, highY equal to 5.5, lowZ equal to 6.5, highZ equal to 7.5, binsX equal to 10, binsY equal to 20 and binsZ equal to 30.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IHistogram3D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
lowY low y limit for histogram
highY high y limit for histogram
lowZ low z limit for histogram
highZ high z limit for histogram
binsX number of bins in x
binsY number of bins in y
binsZ number of bins in z
weight weight
Returns:
pointer to AIDA 3D histogram

Reimplemented in HistoTool.

Definition at line 164 of file GaudiHistos_3DFixedBinning.icpp.

00178 {
00179   AIDA::IHistogram3D * h(0);
00180   if ( produceHistos() )
00181   {
00182     // retrieve or book the histogram
00183     h = histo3D ( title ) ;
00184     if ( 0 == h ) { h = book3D ( title ,
00185                                  lowX , highX , binsX ,
00186                                  lowY , highY , binsY ,
00187                                  lowZ , highZ , binsZ ) ; }
00188     // fill the histogram
00189     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00190   }
00191   return h;
00192 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::plot3D ( const double  valueX,
const double  valueY,
const double  valueZ,
const HistoID ID,
const std::string title,
const double  lowX,
const double  highX,
const double  lowY,
const double  highY,
const double  lowZ,
const double  highZ,
const unsigned long  binsX = 10,
const unsigned long  binsY = 10,
const unsigned long  binsZ = 10,
const double  weight = 1.0 
) const [inline]

fill the 3D histogram with forced ID assignment (book on demand)

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z,
            15 , "Space Points" ,
             2.5 ,3.5, 4.5, 5.5, 6.5, 7.5, 10, 20, 30 );

This example illustrates the filling of the 3D histogram ID=15 titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, lowY equal to 4.5, highY equal to 5.5, lowZ equal to 6.5, highZ equal to 7.5, binsX equal to 10, binsY equal to 20 and binsZ equal to 30.

It is also possible to use literal IDs. For example :-

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z,
            "space", "Space Points" ,
              2.5 ,3.5, 4.5, 5.5, 6.5, 7.5, 10, 20, 30 );

Will book the same histogram, using the id "space".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z,
             "subdir/space", "Space Points" ,
             2.5 ,3.5, 4.5, 5.5, 6.5, 7.5, 10, 20, 30 );

Which will create the histogram "space" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

Attention:
If the histogram with given ID is already booked through automatic assignment of histogram ID, the error will not be detected. Therefore it is recommended to use non-trivial histogram ID offset (property "HistoOffSet") if one need to combine these techniques together It is still desirable to use the unique histogram title to avoid a bad interference
See also:
AIDA::IHistogram3D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
ID Histogram ID to use
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
lowY low y limit for histogram
highY high y limit for histogram
lowZ low z limit for histogram
highZ high z limit for histogram
binsX number of bins in x
binsY number of bins in y
binsZ number of bins in z
weight weight
Returns:
pointer to AIDA 3D histogram

Reimplemented in HistoTool.

Definition at line 198 of file GaudiHistos_3DFixedBinning.icpp.

00213 {
00214   AIDA::IHistogram3D * h(0);
00215   if ( produceHistos() )
00216   {
00217     // retrieve or book the histogram
00218     h = histo3D ( ID ) ;
00219     if ( 0 == h ) { h = book3D ( ID , title ,
00220                                  lowX , highX , binsX ,
00221                                  lowY , highY , binsY ,
00222                                  lowZ , highZ , binsZ ) ; }
00223     // fill the histogram
00224     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00225   }
00226   return h;
00227 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::plot3D ( const double  valueX,
const double  valueY,
const double  valueZ,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const HistoBinEdges edgesZ,
const double  weight = 1.0 
) const [inline]

Fill the 3D variable binning histogram (book on demand).

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const GaudiAlg::HistoBinEdges edgesZ = ...;
     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z, "Space Points", edgesX, edgesY, edgesZ );

This example illustrates the filling of the 3D histogram titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IHistogram3D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
edgesZ The histogram z bin edges
weight weight
Returns:
pointer to AIDA 3D histogram

Definition at line 102 of file GaudiHistos_3DVariableBinning.icpp.

00110 {
00111   AIDA::IHistogram3D * h(NULL);
00112   if ( produceHistos() )
00113   {
00114     // retrieve or book the histogram
00115     h = histo3D ( title ) ;
00116     if ( NULL == h ) { h = book3D ( title , edgesX , edgesY , edgesZ ) ; }
00117     // fill the histogram
00118     h = fill ( h , valueX , valueY , valueZ , weight , title );
00119   }
00120   return h;
00121 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::plot3D ( const double  valueX,
const double  valueY,
const double  valueZ,
const HistoID ID,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const HistoBinEdges edgesZ,
const double  weight = 1.0 
) const [inline]

fill the 3D histogram with forced ID assignment (book on demand)

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const GaudiAlg::HistoBinEdges edgesZ = ...;
     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z, "Space Points", edgesX, edgesY, edgesZ );

This example illustrates the filling of the 3D histogram ID=15 titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges and histogram ID.

It is also possible to use literal IDs. For example :-

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const GaudiAlg::HistoBinEdges edgesZ = ...;
     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z,
             "space", "Space Points" ,
             edgesX, edgesY, edgesZ );

Will book the same histogram, using the id "space".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const GaudiAlg::HistoBinEdges edgesZ = ...;
     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     plot3D( X, Y, Z,
             "subdir/space", "Space Points" ,
             edgesX, edgesY, edgesZ );

Which will create the histogram "space" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

Attention:
If the histogram with given ID is already booked through automatic assignment of histogram ID, the error will not be detected. Therefore it is recommended to use non-trivial histogram ID offset (property "HistoOffSet") if one need to combine these techniques together It is still desirable to use the unique histogram title to avoid a bad interference
See also:
AIDA::IHistogram3D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
ID Histogram ID to use
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
edgesZ The histogram z bin edges
weight weight
Returns:
pointer to AIDA 3D histogram

Definition at line 128 of file GaudiHistos_3DVariableBinning.icpp.

00137 {
00138   AIDA::IHistogram3D * h(NULL);
00139   if ( produceHistos() )
00140   {
00141     // retrieve or book the histogram
00142     h = histo3D ( ID ) ;
00143     if ( NULL == h ) {  h = book3D ( ID , title , edgesX , edgesY , edgesZ ) ; }
00144     // fill
00145     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00146   }
00147   return h;
00148 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::profile1D ( const double  valueX,
const double  valueY,
const std::string title,
const double  lowX,
const double  highX,
const unsigned long  binsX = 100,
const std::string opt = "",
const double  lowY = -std::numeric_limits<double>::max(),
const double  highY = std::numeric_limits<double>::max(),
const double  weight = 1.0 
) const [inline]

fill the 1D profile histogram (book on demand)

     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2, "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 100 );

This example illustrates the filling of the 1D profile histogram titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, binsX equal to 100

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IProfile1D
Parameters:
valueX x value to be filled
valueY y value to be filled
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
opt the options, used for evaluation of errors
lowY the min cut-off for y-values
highY the max cut-off for y-values
weight weight
Returns:
pointer to AIDA 1D profile histogram

Definition at line 145 of file GaudiHistos_1DProfFixedBinning.icpp.

00155 {
00156   AIDA::IProfile1D * h(NULL);
00157   if ( produceHistos() )
00158   {
00159     // retrieve or book the histogram
00160     h = profile1D ( title ) ;
00161     if ( NULL == h )
00162     { h = bookProfile1D ( title , lowX , highX , binsX , opt , lowY , highY ) ; }
00163     // fill the histogram
00164     h = fill ( h , valueX , valueY , weight , title ) ;
00165   }
00166   return h;
00167 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::profile1D ( const double  valueX,
const double  valueY,
const HistoID ID,
const std::string title,
const double  lowX,
const double  highX,
const unsigned long  binsX = 100,
const std::string opt = "",
const double  lowY = -std::numeric_limits<double>::max(),
const double  highY = std::numeric_limits<double>::max(),
const double  weight = 1.0 
) const [inline]

fill the 1D profile histogram with forced ID assignment (book on demand)

     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2,
             15, "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 100 );

This example illustrates the filling of the 1D profile histogram with ID=15 titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, binsX equal to 100

It is also possible to use literal IDs. For example :-

     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2,
             "mass", "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 100 );

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2,
        "subdir/mass", "Invariant Mass2 versus Mass1" ,2.5 ,3.5, 100 );

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

See also:
AIDA::IProfile1D
Parameters:
valueX x value to be filled
valueY y value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
opt the options, used for evaluation of errors
lowY the min cut-off for y-values
highY the max cut-off for y-values
weight weight
Returns:
pointer to AIDA 1D profile histogram

Definition at line 173 of file GaudiHistos_1DProfFixedBinning.icpp.

00184 {
00185   AIDA::IProfile1D * h(NULL);
00186   if ( produceHistos() )
00187   {
00188     // retrieve or book the histogram
00189     h = profile1D ( ID ) ;
00190     if ( NULL == h )
00191     { h = bookProfile1D ( ID , title , lowX , highX , binsX , opt , lowY , highY ) ; }
00192     // fill the histogram
00193     h = fill ( h , valueX , valueY , weight , title ) ;
00194   }
00195   return h;
00196 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::profile1D ( const double  valueX,
const double  valueY,
const std::string title,
const HistoBinEdges edges,
const double  weight = 1.0 
) const [inline]

fill the 1D variable binning profile histogram (book on demand)

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2, "Invariant Mass2 versus Mass1", edges );

This example illustrates the filling of the 1D profile histogram titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IProfile1D
Parameters:
valueX x value to be filled
valueY y value to be filled
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
weight weight
Returns:
pointer to AIDA 1D profile histogram

Definition at line 92 of file GaudiHistos_1DProfVariableBinning.icpp.

00097 {
00098   AIDA::IProfile1D * h(NULL);
00099   if ( produceHistos() )
00100   {
00101     // retrieve or book the histogram
00102     h = profile1D ( title ) ;
00103     if ( NULL == h )
00104     { h = bookProfile1D ( title , edges ) ; }
00105     // fill the histogram
00106     h = fill ( h , valueX , valueY , weight , title ) ;
00107   }
00108   return h;
00109 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::profile1D ( const double  valueX,
const double  valueY,
const HistoID ID,
const std::string title,
const HistoBinEdges edges,
const double  weight = 1.0 
) const [inline]

fill the 1D variable binning profile histogram with forced ID assignment (book on demand)

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2,
             15, "Invariant Mass2 versus Mass1", edges );

This example illustrates the filling of the 1D profile histogram with ID=15 titled "Invariant Mass2 versus Mass1" with values mass1 and mass2 .

If the histogram with given ID does not exist yet it will be automatically booked with the given histogram bin edges.

It is also possible to use literal IDs. For example :-

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2,
             "mass", "Invariant Mass2 versus Mass1", edges );

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const GaudiAlg::HistoBinEdges edges = ...;
     const double mass1 = ... ;
     const double mass2 = ... ;
     profile1D( mass1, mass2,
        "subdir/mass", "Invariant Mass2 versus Mass1", edges );

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

See also:
AIDA::IProfile1D
Parameters:
valueX x value to be filled
valueY y value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
weight weight
Returns:
pointer to AIDA 1D profile histogram

Definition at line 115 of file GaudiHistos_1DProfVariableBinning.icpp.

00121 {
00122   AIDA::IProfile1D * h(NULL);
00123   if ( produceHistos() )
00124   {
00125     // retrieve or book the histogram
00126     h = profile1D ( ID ) ;
00127     if ( NULL == h )
00128     { h = bookProfile1D ( ID , title , edges ) ; }
00129     // fill the histogram
00130     h = fill ( h , valueX , valueY , weight , title ) ;
00131   }
00132   return h;
00133 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::profile2D ( const double  valueX,
const double  valueY,
const double  valueZ,
const std::string title,
const double  lowX,
const double  highX,
const double  lowY,
const double  highY,
const unsigned long  binsX = 50,
const unsigned long  binsY = 50,
const double  weight = 1.0 
) const [inline]

fill the 2D profile histogram (book on demand)

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2( X, Y, Z, "Space Points" ,2.5 ,3.5, 4.5, 5.5, 10, 20 );

This example illustrates the filling of the 2D profile histogram titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, lowY equal to 4.5, highY equal to 5.5, binsX equal to 10, binsY equal to 20.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IProfile2D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
lowY low y limit for histogram
highY high y limit for histogram
binsX number of bins in x
binsY number of bins in y
weight weight
Returns:
pointer to AIDA 2D profile histogram

Definition at line 148 of file GaudiHistos_2DProfFixedBinning.icpp.

00159 {
00160   AIDA::IProfile2D * h(0);
00161   if ( produceHistos() )
00162   {
00163     // retrieve or book the histogram
00164     h = profile2D ( title ) ;
00165     if ( 0 == h ) { h = bookProfile2D ( title ,
00166                                         lowX , highX , binsX ,
00167                                         lowY , highY , binsY ) ; }
00168     // fill the histogram
00169     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00170   }
00171   return h;
00172 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::profile2D ( const double  valueX,
const double  valueY,
const double  valueZ,
const HistoID ID,
const std::string title,
const double  lowX,
const double  highX,
const double  lowY,
const double  highY,
const unsigned long  binsX = 50,
const unsigned long  binsY = 50,
const double  weight = 1.0 
) const [inline]

fill the 2D profile histogram with forced ID assignment (book on demand)

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2D( X, Y, Z, 15, "Space Points" ,2.5 ,3.5, 4.5, 5.5, 10, 20 );

This example illustrates the filling of the 2D profile histogram with ID=15 titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with parameters lowX equal to 2.5, highX equal to 3.5, lowY equal to 4.5, highY equal to 5.5, binsX equal to 10, binsY equal to 20.

It is also possible to use literal IDs. For example :-

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2D( X, Y, Z, "space", "Space Points" ,2.5 ,3.5, 4.5, 5.5, 10, 20 );

Will book the same histogram, using the id "space".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2D( X, Y, Z,
                "subdir/space", "Space Points" ,2.5 ,3.5, 4.5, 5.5, 10, 20 );

Which will create the histogram "space" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

See also:
AIDA::IProfile2D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
lowY low y limit for histogram
highY high y limit for histogram
binsX number of bins in x
binsY number of bins in y
weight weight
Returns:
pointer to AIDA 2D profile histogram

Definition at line 178 of file GaudiHistos_2DProfFixedBinning.icpp.

00190 {
00191   AIDA::IProfile2D * h(0);
00192   if ( produceHistos() )
00193   {
00194     // retrieve or book the histogram
00195     h = profile2D ( ID ) ;
00196     if ( 0 == h ) { h = bookProfile2D ( ID , title ,
00197                                         lowX , highX , binsX ,
00198                                         lowY , highY , binsY ) ; }
00199     // fill the histogram
00200     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00201   }
00202   return h;
00203 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::profile2D ( const double  valueX,
const double  valueY,
const double  valueZ,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const double  weight = 1.0 
) const [inline]

fill the 2D variable binning profile histogram (book on demand)

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2D( X, Y, Z, "Space Points", edgesX, edgesY );

This example illustrates the filling of the 2D profile histogram titled "Space Points" with values X, Y and Z.

If the histogram with given title does not exist yet it will be automatically booked with the given histogram bin edges.

Attention:
The histogram will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first histogram booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given histogram will be given when filled under conditional statements, since in these circumstances the order in which the histograms are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given histogram could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
See also:
AIDA::IProfile2D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram x bin edges
weight weight
Returns:
pointer to AIDA 1D profile histogram

Definition at line 96 of file GaudiHistos_2DProfVariableBinning.icpp.

00103 {
00104   AIDA::IProfile2D * h(NULL);
00105   if ( produceHistos() )
00106   {
00107     // retrieve or book the histogram
00108     h = profile2D ( title ) ;
00109     if ( NULL == h ) { h = bookProfile2D ( title, edgesX, edgesY ) ; }
00110     // fill the histogram
00111     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00112   }
00113   return h;
00114 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::profile2D ( const double  valueX,
const double  valueY,
const double  valueZ,
const HistoID ID,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const double  weight = 1.0 
) const [inline]

fill the 2D variable binning profile histogram with forced ID assignment (book on demand)

     const GaudiAlg::HistoBinEdges edgesX = ...;
     const GaudiAlg::HistoBinEdges edgesY = ...;
     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2( X, Y, Z, "Space Points", edgesX, edgesY );

This example illustrates the filling of the 2D profile histogram titled "Space Points" with values X, Y and Z.

If the histogram with given ID does not exist yet it will be automatically booked with the given histogram bin edges.

It is also possible to use literal IDs. For example :-

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2D( X, Y, Z, "space", "Space Points", edgesX, edgesY );

Will book the same histogram, using the id "mass".

It is also possible using literal IDs, to place histograms in sub-directories from the main histogram directory, using for example :-

     const double X = ... ;
     const double Y = ... ;
     const double Z = ... ;
     profile2D( X, Y, Z,
                "subdir/space", "Space Points", edgesX, edgesY );

Which will create the histogram "mass" in the sub-directory "subdir". Histograms can also be created in sub-directories with numeric IDs if IDs such as "subdir/1" are used.

See also:
AIDA::IProfile2D
Parameters:
valueX x value to be filled
valueY y value to be filled
valueZ z value to be filled
ID histogram identifier
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
weight weight
Returns:
pointer to AIDA 1D profile histogram

Definition at line 120 of file GaudiHistos_2DProfVariableBinning.icpp.

00128 {
00129   AIDA::IProfile2D * h(NULL);
00130   if ( produceHistos() )
00131   {
00132     // retrieve or book the histogram
00133     h = profile2D ( ID ) ;
00134     if ( NULL == h ) { h = bookProfile2D ( ID , title , edgesX , edgesY ) ; }
00135                                         
00136     // fill the histogram
00137     h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
00138   }
00139   return h;
00140 }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::book1D ( const std::string title,
const double  low = 0,
const double  high = 100,
const unsigned long  bins = 100 
) const [inline]

book the 1D histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
Returns:
pointer to AIDA 1D histogram

Reimplemented in HistoTool.

Definition at line 8 of file GaudiHistos_1DFixedBinning.icpp.

00012 {
00013   // exist?
00014   AIDA::IHistogram1D* hist = histo1D ( title ) ;
00015   // histogram is already booked
00016   if( NULL != hist      )                    { return hist ; } // RETURN !!
00017 
00018   // propose the histogram ID
00019   HistoID ID;
00020   newHistoID( title, ID );
00021 
00022   // Create a new histogram and return
00023   return this -> book1D ( ID, title, low, high, bins );
00024 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::book ( const std::string title,
const double  low = 0,
const double  high = 100,
const unsigned long  bins = 100 
) const [inline]

book the 1D histogram

Wrapper method for the equivalent book1D method. Retained for backwards compatibility, please use book1D instead.

See also:
IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
Returns:
pointer to AIDA 1D histogram

Definition at line 2042 of file GaudiHistos.h.

02046   {
02047     return book1D( title, low, high, bins );
02048   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::book ( const Gaudi::Histo1DDef &  hdef  )  const [inline]

book the 1D histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IHistogram1D
Parameters:
hdef histogram description/definition
Returns:
pointer to AIDA 1D histogram

Definition at line 183 of file GaudiHistos_1DFixedBinning.icpp.

00184 {
00185   return book1D ( hdef.title    () ,
00186                   hdef.lowEdge  () ,
00187                   hdef.highEdge () ,
00188                   hdef.bins     () ) ;
00189 }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::book1D ( const HistoID ID,
const std::string title,
const double  low = 0,
const double  high = 100,
const unsigned long  bins = 100 
) const [inline]

book the 1D histogram with forced ID

See also:
IHistogram1D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
Returns:
pointer to AIDA histogram

Reimplemented in HistoTool.

Definition at line 30 of file GaudiHistos_1DFixedBinning.icpp.

00035 {
00036   // Check ID
00037   if (ID.undefined())
00038   {
00039     this->Error("Undefined Histogram ID : Title='"+title+"'");
00040     return NULL;
00041   }
00042 
00043   // exist?
00044   AIDA::IHistogram1D* hist = histo1D ( ID ) ;
00045   // histogram is already booked
00046   if ( NULL != hist       )                  { return hist ; } // RETURN !!
00047 
00048   // Histogram title
00049   const std::string & htitle =
00050     ( title.empty() ? "Unnamed 1D Histogram ID="+ID.idAsString() : title ) ;
00051 
00052   // book the histogram
00053   if ( ID.numeric() )
00054   {
00055     hist = this->histoSvc() -> book ( histoPath()  ,
00056                                       ID.numericID() ,
00057                                       htitle       ,
00058                                       bins         ,
00059                                       low          ,
00060                                       high         ) ;
00061   }
00062   else if ( ID.literal() )
00063   {
00064     hist = this->histoSvc() -> book ( histoPath()+"/"+
00065                                       ID.literalID() ,
00066                                       htitle         ,
00067                                       bins           ,
00068                                       low            ,
00069                                       high         ) ;
00070   }
00071 
00072   // check OK
00073   if( NULL == hist )
00074   { this->Error( "IHistogram1D* points to NULL! ID='" + ID.idAsString() +
00075                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00076 
00077   // add histogram into histogram storages
00078   if      ( ID.numeric() )
00079   { m_histo1DMapNumID [ ID.numericID() ] = hist ; }
00080   else if ( ID.literal() )
00081   { m_histo1DMapLitID [ ID.literalID() ] = hist ; }
00082   m_histo1DMapTitle [ title ] = hist ;
00083 
00084   // Declare to monitoring service
00085   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00086 
00087   // Printout and return
00088   if ( this->msgLevel(MSG::DEBUG) )
00089   { this->debug() << "Booked 1D Histogram : ID='" << ID
00090                   << "' Path=" << histoPath()
00091                   << " Title='"
00092                   << Gaudi::Utils::Histos::htitle ( hist )
00093                   << "'" << endmsg; }
00094   return hist ;
00095 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::book ( const HistoID ID,
const std::string title,
const double  low = 0,
const double  high = 100,
const unsigned long  bins = 100 
) const [inline]

book the 1D histogram with forced ID

Wrapper method for the equivalent book1D method. Retained for backwards compatibility, please use book1D instead.

See also:
IHistogram1D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
Returns:
pointer to AIDA histogram

Definition at line 2092 of file GaudiHistos.h.

02097   {
02098     return book1D( ID, title, low, high, bins );
02099   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::book ( const HistoID ID,
const Gaudi::Histo1DDef &  hdef 
) const [inline]

book the 1D histogram with forced ID

See also:
IHistogram1D
Parameters:
ID unique histogram ID
hdef histogram descriptor
Returns:
pointer to AIDA histogram

Definition at line 196 of file GaudiHistos_1DFixedBinning.icpp.

00198 {
00199   return book1D ( ID               ,
00200                   hdef.title    () ,
00201                   hdef.lowEdge  () ,
00202                   hdef.highEdge () ,
00203                   hdef.bins     () ) ;
00204 }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::book1D ( const std::string title,
const HistoBinEdges edges 
) const [inline]

book the 1D variable binning histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
Returns:
pointer to AIDA 1D histogram

Definition at line 8 of file GaudiHistos_1DVariableBinning.icpp.

00010 {
00011   // exist?
00012   AIDA::IHistogram1D* hist = histo1D ( title ) ;
00013   // histogram is already booked
00014   if( NULL != hist      )                      { return hist ; } // RETURN !!
00015 
00016   // propose the histogram ID
00017   HistoID ID;
00018   newHistoID( title, ID );
00019 
00020   // Create a new histogram and return
00021   return this -> book1D ( ID, title, edges );
00022 }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::book1D ( const HistoID ID,
const std::string title,
const HistoBinEdges edges 
) const [inline]

book the 1D variable binning histogram with given ID

See also:
AIDA::IHistogram1D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
Returns:
pointer to AIDA 1D histogram

Definition at line 28 of file GaudiHistos_1DVariableBinning.icpp.

00031 {
00032   // Check ID
00033   if (ID.undefined())
00034   {
00035     this->Error("Undefined Histogram ID : Title='"+title+"'");
00036     return NULL;
00037   }
00038 
00039   // exist?
00040   AIDA::IHistogram1D* hist = histo1D ( ID ) ;
00041   // histogram is already booked
00042   if ( NULL != hist       )                    { return hist ; } // RETURN !!
00043 
00044   // Histogram title
00045   const std::string & htitle =
00046     ( title.empty() ? "Unnamed 1D Histogram ID="+ID.idAsString() : title ) ;
00047 
00048   // book the histogram
00049   if ( ID.numeric() )
00050   {
00051     hist = this->histoSvc() -> book ( histoPath()  ,
00052                                       ID.numericID() ,
00053                                       htitle       ,
00054                                       edges     ) ;
00055   }
00056   else if ( ID.literal() )
00057   {
00058     hist = this->histoSvc() -> book ( histoPath()+"/"+
00059                                       ID.literalID() ,
00060                                       htitle         ,
00061                                       edges        ) ;
00062   }
00063 
00064   // check OK
00065   if( NULL == hist )
00066   { this->Error( "IHistogram1D* points to NULL! ID='" + ID.idAsString() +
00067                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00068 
00069   // add histogram into histogram storages
00070   if      ( ID.numeric() )
00071   { m_histo1DMapNumID [ ID.numericID() ] = hist ; }
00072   else if ( ID.literal() )
00073   { m_histo1DMapLitID [ ID.literalID() ] = hist ; }
00074   m_histo1DMapTitle [ title ] = hist ;
00075 
00076   // Declare to monitoring service
00077   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00078 
00079   // Printout and return
00080   if ( this->msgLevel(MSG::DEBUG) )
00081   { this->debug() << "Booked 1D Histogram : ID='" << ID
00082                   << "' Path=" << histoPath()
00083                   << " Title='"
00084                   << Gaudi::Utils::Histos::htitle ( hist )
00085                   << "'" << endmsg; }
00086   return hist ;
00087 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::book2D ( const std::string title,
const double  lowX = 0,
const double  highX = 100,
const unsigned long  binsX = 50,
const double  lowY = 0,
const double  highY = 100,
const unsigned long  binsY = 50 
) const [inline]

book the 2D histogram

The histogram will be assigned a unique identifier

See also:
IHistogram2D
Parameters:
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
lowY low y limit for histogram
highY high y limit for histogram
binsY number of bins in y
Returns:
pointer to AIDA 2D histogram

Reimplemented in HistoTool.

Definition at line 8 of file GaudiHistos_2DFixedBinning.icpp.

00015 {
00016   // exist?
00017   AIDA::IHistogram2D* hist = histo2D ( title ) ;
00018   // histogram is already booked
00019   if( NULL != hist      )                { return hist ; } // RETURN !!
00020 
00021   // propose the histogram ID
00022   HistoID ID;
00023   newHistoID( title, ID );
00024 
00025   // Create a new histogram and return
00026   return this -> book2D ( ID, title, lowX, highX, binsX, lowY, highY, binsY );
00027 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::book2D ( const HistoID ID,
const std::string title,
const double  lowX = 0,
const double  highX = 100,
const unsigned long  binsX = 50,
const double  lowY = 0,
const double  highY = 100,
const unsigned long  binsY = 50 
) const [inline]

book the 2D histogram with forced ID

See also:
IHistogram2D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
Returns:
pointer to AIDA histogram

Reimplemented in HistoTool.

Definition at line 33 of file GaudiHistos_2DFixedBinning.icpp.

00041 {
00042   // Check ID
00043   if (ID.undefined())
00044   {
00045     this->Error("Undefined Histogram ID : Title='"+title+"'");
00046     return NULL;
00047   }
00048 
00049   // exist?
00050   AIDA::IHistogram2D* hist = histo2D( ID ) ;
00051   // histogram is already booked
00052   if( NULL != hist       )                  { return hist ; } // RETURN !!
00053 
00054   // Histogram title
00055   const std::string & htitle =
00056     ( title.empty() ? "Unnamed 2D Histogram ID="+ID.idAsString() : title ) ;
00057 
00058   // book the histogram
00059   if ( ID.numeric() )
00060   {
00061     hist = this->histoSvc() -> book ( histoPath()  ,
00062                                       ID.numericID() ,
00063                                       htitle       ,
00064                                       binsX        ,
00065                                       lowX         ,
00066                                       highX        ,
00067                                       binsY        ,
00068                                       lowY         ,
00069                                       highY        ) ;
00070   }
00071   else if ( ID.literal() )
00072   {
00073     hist = this->histoSvc() -> book ( histoPath()+"/"+
00074                                       ID.literalID() ,
00075                                       htitle       ,
00076                                       binsX        ,
00077                                       lowX         ,
00078                                       highX        ,
00079                                       binsY        ,
00080                                       lowY         ,
00081                                       highY        ) ;
00082   }
00083 
00084   // Check OK
00085   if( NULL == hist )
00086   { this->Error( "IHistogram2D* points to NULL! ID='" + ID.idAsString() +
00087                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00088 
00089   // add histogram into histogram storages
00090   if      ( ID.numeric() )
00091   { m_histo2DMapNumID [ ID.numericID() ] = hist ; }
00092   else if ( ID.literal() )
00093   { m_histo2DMapLitID [ ID.literalID() ] = hist ; }
00094   m_histo2DMapTitle [ title ] = hist ;
00095 
00096   // Declare to monitoring service
00097   monitorHisto( Gaudi::Utils::Histos::toBase ( hist) , ID );
00098 
00099   // Printout and return
00100   if ( this->msgLevel(MSG::DEBUG) )
00101   { this->debug() << "Booked 2D Histogram : ID='"
00102                   << ID << "' Path=" << histoPath()
00103                   << " Title='"
00104                   << Gaudi::Utils::Histos::htitle ( hist )
00105                   << "'" << endmsg; }
00106   // return
00107   return hist ;
00108 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::book2D ( const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY 
) const [inline]

book the 2D variable binning histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IHistogram2D
Parameters:
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
Returns:
pointer to AIDA 2D histogram

Definition at line 8 of file GaudiHistos_2DVariableBinning.icpp.

00011 {
00012   // exist?
00013   AIDA::IHistogram2D * hist = histo2D ( title ) ;
00014   // histogram is already booked
00015   if ( NULL != hist      )                  { return hist ; } // RETURN !!
00016 
00017   // propose the histogram ID
00018   HistoID ID;
00019   newHistoID( title, ID );
00020 
00021   // Create a new histogram and return
00022   return this -> book2D ( ID, title, edgesX, edgesY );
00023 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::book2D ( const HistoID ID,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY 
) const [inline]

book the 2D variable binning histogram with given ID

See also:
AIDA::IHistogram2D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
Returns:
pointer to AIDA 2D histogram

Definition at line 29 of file GaudiHistos_2DVariableBinning.icpp.

00033 {
00034   // Check ID
00035   if (ID.undefined())
00036   {
00037     this->Error("Undefined Histogram ID : Title='"+title+"'");
00038     return NULL;
00039   }
00040 
00041   // exist?
00042   AIDA::IHistogram2D * hist = histo2D ( ID ) ;
00043   // histogram is already booked
00044   if ( NULL != hist       )                 { return hist ; } // RETURN !!
00045 
00046   // Histogram title
00047   const std::string & htitle =
00048     ( title.empty() ? "Unnamed 2D Histogram ID="+ID.idAsString() : title ) ;
00049 
00050   // book the histogram
00051   if ( ID.numeric() )
00052   {
00053     hist = this->histoSvc() -> book ( histoPath()  ,
00054                                       ID.numericID() ,
00055                                       htitle       ,
00056                                       edgesX       , 
00057                                       edgesY       ) ;
00058   }
00059   else if ( ID.literal() )
00060   {
00061     hist = this->histoSvc() -> book ( histoPath()+"/"+
00062                                       ID.literalID() ,
00063                                       htitle         ,
00064                                       edgesX         ,
00065                                       edgesY         ) ;
00066   }
00067 
00068   // check OK
00069   if( NULL == hist )
00070   { this->Error( "IHistogram2D* points to NULL! ID='" + ID.idAsString() +
00071                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00072 
00073   // add histogram into histogram storages
00074   if      ( ID.numeric() )
00075   { m_histo2DMapNumID [ ID.numericID() ] = hist ; }
00076   else if ( ID.literal() )
00077   { m_histo2DMapLitID [ ID.literalID() ] = hist ; }
00078   m_histo2DMapTitle [ title ] = hist ;
00079 
00080   // Declare to monitoring service
00081   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00082 
00083   // Printout and return
00084   if ( this->msgLevel(MSG::DEBUG) )
00085   { this->debug() << "Booked 2D Histogram : ID='" << ID
00086                   << "' Path=" << histoPath()
00087                   << " Title='"
00088                   << Gaudi::Utils::Histos::htitle ( hist )
00089                   << "'" << endmsg; }
00090   return hist ;
00091 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::book3D ( const std::string title,
const double  lowX = 0,
const double  highX = 100,
const unsigned long  binsX = 10,
const double  lowY = 0,
const double  highY = 100,
const unsigned long  binsY = 10,
const double  lowZ = 0,
const double  highZ = 100,
const unsigned long  binsZ = 10 
) const [inline]

book the 3D histogram

The histogram will be assigned a unique identifier

See also:
IHistogram3D
Parameters:
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
lowY low y limit for histogram
highY high y limit for histogram
binsY number of bins in y
lowZ low y limit for histogram
highZ high y limit for histogram
binsZ number of bins in y
Returns:
pointer to AIDA 3D histogram

Reimplemented in HistoTool.

Definition at line 8 of file GaudiHistos_3DFixedBinning.icpp.

00018 {
00019   // exist?
00020   AIDA::IHistogram3D* hist = histo3D ( title ) ;
00021   // histogram is already booked
00022   if( 0 != hist      )                           { return hist ; } // RETURN !!
00023 
00024   // propose the histogram ID
00025   HistoID ID;
00026   newHistoID( title, ID );
00027 
00028   // Create a new histogram and return
00029   return this -> book3D ( ID, title,
00030                           lowX, highX, binsX,
00031                           lowY, highY, binsY,
00032                           lowZ, highZ, binsZ );
00033 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::book3D ( const HistoID ID,
const std::string title,
const double  lowX = 0,
const double  highX = 100,
const unsigned long  binsX = 10,
const double  lowY = 0,
const double  highY = 100,
const unsigned long  binsY = 10,
const double  lowZ = 0,
const double  highZ = 100,
const unsigned long  binsZ = 10 
) const [inline]

book the 3D histogram with forced ID

See also:
IHistogram3D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
lowY low y limit for histogram
highY high y limit for histogram
binsY number of bins in y
lowZ low y limit for histogram
highZ high y limit for histogram
binsZ number of bins in y
Returns:
pointer to AIDA 3D histogram

Reimplemented in HistoTool.

Definition at line 39 of file GaudiHistos_3DFixedBinning.icpp.

00050 {
00051   // Check ID
00052   if (ID.undefined())
00053   {
00054     this->Error("Undefined Histogram ID : Title='"+title+"'");
00055     return NULL;
00056   }
00057 
00058   // exist?
00059   AIDA::IHistogram3D* hist = histo3D( ID ) ;
00060   // histogram is already booked
00061   if( 0 != hist       )                        { return hist ; } // RETURN !!
00062 
00063   // Histogram title
00064   const std::string & htitle =
00065     ( title.empty() ? "Unnamed 3D Histogram ID="+ID.idAsString() : title ) ;
00066 
00067   // book the histogram
00068   if ( ID.numeric() )
00069   {
00070     hist = this->histoSvc() -> book ( histoPath()  ,
00071                                       ID.numericID() ,
00072                                       htitle       ,
00073                                       binsX        ,
00074                                       lowX         ,
00075                                       highX        ,
00076                                       binsY        ,
00077                                       lowY         ,
00078                                       highY        ,
00079                                       binsZ        ,
00080                                       lowZ         ,
00081                                       highZ        ) ;
00082   }
00083   else if ( ID.literal() )
00084   {
00085     hist = this->histoSvc() -> book ( histoPath()+"/"+
00086                                       ID.literalID() ,
00087                                       htitle       ,
00088                                       binsX        ,
00089                                       lowX         ,
00090                                       highX        ,
00091                                       binsY        ,
00092                                       lowY         ,
00093                                       highY        ,
00094                                       binsZ        ,
00095                                       lowZ         ,
00096                                       highZ        ) ;
00097   }
00098 
00099   // Check OK
00100   if( 0 == hist )
00101   { this->Error( "IHistogram3D* points to NULL! ID='" + ID.idAsString() +
00102                  "' title='"+htitle+"'" ) ; return 0; } // RETURN !!
00103 
00104   // add histogram into histogram storages
00105   if      ( ID.numeric() )
00106   { m_histo3DMapNumID [ ID.numericID() ] = hist ; }
00107   else if ( ID.literal() )
00108   { m_histo3DMapLitID [ ID.literalID() ] = hist ; }
00109   m_histo3DMapTitle [ title ] = hist ;
00110 
00111   // Declare to monitoring service
00112   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00113 
00114   // Printout and return
00115   if ( this->msgLevel(MSG::DEBUG) )
00116   { this->debug() << "Booked 3D Histogram : ID='"
00117                   << ID << "' Path=" << histoPath()
00118                   << " Title='"
00119                   << Gaudi::Utils::Histos::htitle ( hist )
00120                   << "'" << endmsg; }
00121   return hist ;
00122 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::book3D ( const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const HistoBinEdges edgesZ 
) const [inline]

book the 3D variable binning histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IHistogram3D
Parameters:
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
edgesZ The histogram z bin edges
Returns:
pointer to AIDA 3D histogram

Definition at line 8 of file GaudiHistos_3DVariableBinning.icpp.

00012 {
00013   // exist?
00014   AIDA::IHistogram3D * hist = histo3D ( title ) ;
00015   // histogram is already booked
00016   if( NULL != hist      )                   { return hist ; } // RETURN !!
00017 
00018   // propose the histogram ID
00019   HistoID ID;
00020   newHistoID( title, ID );
00021 
00022   // Create a new histogram and return
00023   return this -> book3D ( ID, title, edgesX, edgesY, edgesZ );
00024 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::book3D ( const HistoID ID,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY,
const HistoBinEdges edgesZ 
) const [inline]

book the 3D variable binning histogram with given ID

See also:
AIDA::IHistogram3D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
edgesX The histogram x bin edges
edgesY The histogram y bin edges
edgesZ The histogram z bin edges
Returns:
pointer to AIDA 3D histogram

Definition at line 30 of file GaudiHistos_3DVariableBinning.icpp.

00035 {
00036   // Check ID
00037   if (ID.undefined())
00038   {
00039     this->Error("Undefined Histogram ID : Title='"+title+"'");
00040     return NULL;
00041   }
00042 
00043   // exist?
00044   AIDA::IHistogram3D * hist = histo3D ( ID ) ;
00045   // histogram is already booked
00046   if ( NULL != hist       )                 { return hist ; } // RETURN !!
00047 
00048   // Histogram title
00049   const std::string & htitle =
00050     ( title.empty() ? "Unnamed 3D Histogram ID="+ID.idAsString() : title ) ;
00051 
00052   // book the histogram
00053   if ( ID.numeric() )
00054   {
00055     hist = this->histoSvc() -> book ( histoPath()  ,
00056                                       ID.numericID() ,
00057                                       htitle       ,
00058                                       edgesX       , 
00059                                       edgesY       ,
00060                                       edgesZ       ) ;
00061   }
00062   else if ( ID.literal() )
00063   {
00064     hist = this->histoSvc() -> book ( histoPath()+"/"+
00065                                       ID.literalID() ,
00066                                       htitle         ,
00067                                       edgesX         ,
00068                                       edgesY         ,
00069                                       edgesZ         ) ;
00070   }
00071 
00072   // check OK
00073   if( NULL == hist )
00074   { this->Error( "IHistogram3D* points to NULL! ID='" + ID.idAsString() +
00075                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00076 
00077   // add histogram into histogram storages
00078   if      ( ID.numeric() )
00079   { m_histo3DMapNumID [ ID.numericID() ] = hist ; }
00080   else if ( ID.literal() )
00081   { m_histo3DMapLitID [ ID.literalID() ] = hist ; }
00082   m_histo3DMapTitle [ title ] = hist ;
00083 
00084   // Declare to monitoring service
00085   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00086 
00087   // Printout and return
00088   if ( this->msgLevel(MSG::DEBUG) )
00089   { this->debug() << "Booked 3D Histogram : ID='" << ID
00090                   << "' Path=" << histoPath()
00091                   << " Title='"
00092                   << Gaudi::Utils::Histos::htitle ( hist )
00093                   << "'" << endmsg; }
00094   return hist ;
00095 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::bookProfile1D ( const std::string title,
const double  low = 0,
const double  high = 100,
const unsigned long  bins = 100,
const std::string opt = "",
const double  lowY = -std::numeric_limits<double>::max(),
const double  highY = std::numeric_limits<double>::max() 
) const [inline]

book the 1D profile histogram

The histogram will be assigned a unique identifier

See also:
IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
low low limit for histogram
high high limit for histogram
bins number of bins
opt the options, used for evaluation of errors
lowY the min cut-off for y-values
highY the max cut-off for y-values
Returns:
pointer to AIDA 1D profile histogram

Definition at line 6 of file GaudiHistos_1DProfFixedBinning.icpp.

00013 {
00014   // exist?
00015   AIDA::IProfile1D* hist = profile1D ( title ) ;
00016   // histogram is already booked
00017   if( NULL != hist      )                       { return hist ; } // RETURN !!
00018 
00019   // propose the histogram ID
00020   HistoID ID;
00021   newHistoID( title, ID );
00022 
00023   // Book the histo and return
00024   return this -> bookProfile1D ( ID, title, low, high, bins , opt , lowY , highY );
00025 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::bookProfile1D ( const HistoID ID,
const std::string title,
const double  low = 0,
const double  high = 100,
const unsigned long  bins = 100,
const std::string opt = "",
const double  lowY = -std::numeric_limits<double>::max(),
const double  highY = std::numeric_limits<double>::max() 
) const [inline]

book the 1D profile histogram

The histogram will be assigned a unique identifier

See also:
IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
low low limit for histogram
high high limit for histogram
bins number of bins
opt the options, used for evaluation of errors
lowY the min cut-off for y-values
highY the max cut-off for y-values
Returns:
pointer to AIDA 1D profile histogram

Definition at line 31 of file GaudiHistos_1DProfFixedBinning.icpp.

00039 {
00040   // Check ID
00041   if (ID.undefined())
00042   {
00043     this->Error("Undefined Histogram ID : Title='"+title+"'");
00044     return NULL;
00045   }
00046 
00047   // exist?
00048   AIDA::IProfile1D* hist = profile1D ( ID ) ;
00049   // histogram is already booked
00050   if( NULL != hist       )                  { return hist ; } // RETURN !!
00051 
00052   // Histogram title
00053   const std::string & htitle =
00054     ( title.empty() ?
00055       "Unnamed 1D Profile Histogram ID="+ID.idAsString() : title ) ;
00056 
00057   // book the histogram
00058   if ( ID.numeric() )
00059   {
00060     hist = this->histoSvc() -> bookProf ( histoPath()  ,
00061                                           ID.numericID() ,
00062                                           htitle       ,
00063                                           bins         ,
00064                                           low          ,
00065                                           high         ,
00066                                           lowY         ,
00067                                           highY        ,
00068                                           opt          ) ;
00069   }
00070   else if ( ID.literal() )
00071   {
00072     hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
00073                                           ID.literalID() ,
00074                                           htitle       ,
00075                                           bins         ,
00076                                           low          ,
00077                                           high         ,
00078                                           lowY         ,
00079                                           highY        ,
00080                                           opt          ) ;
00081   }
00082 
00083   // test ok
00084   if( NULL == hist )
00085   { this->Error( "IProfile1D* points to NULL! ID='" + ID.idAsString() +
00086                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00087 
00088   // add histogram into histogram storages
00089   if      ( ID.numeric() )
00090   { m_profile1DMapNumID [ ID.numericID() ] = hist ; }
00091   else if ( ID.literal() )
00092   { m_profile1DMapLitID [ ID.literalID() ] = hist ; }
00093   m_profile1DMapTitle [ title ] = hist ;
00094 
00095   // Declare to monitoring service
00096   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00097 
00098   // printout and return
00099   if ( this->msgLevel(MSG::DEBUG) )
00100   { this->debug() << "Booked 1D Profile Histogram : ID='"
00101                   << ID << "' Path=" << histoPath()
00102                   << " Title='"
00103                   << Gaudi::Utils::Histos::htitle ( hist )
00104                   << "'" << endmsg; }
00105   return hist ;
00106 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::bookProfile1D ( const std::string title,
const HistoBinEdges edges 
) const [inline]

book the 1D profile histogram

The histogram will be assigned a unique identifier

See also:
IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
Returns:
pointer to AIDA 1D profile histogram

Definition at line 6 of file GaudiHistos_1DProfVariableBinning.icpp.

00008 {
00009   // exist?
00010   AIDA::IProfile1D* hist = profile1D ( title ) ;
00011   // histogram is already booked
00012   if ( NULL != hist ) { return hist ; } // RETURN !!
00013 
00014   // propose the histogram ID
00015   HistoID ID;
00016   newHistoID( title, ID );
00017 
00018   // Book the histo and return
00019   return this -> bookProfile1D ( ID, title, edges );
00020 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::bookProfile1D ( const HistoID ID,
const std::string title,
const HistoBinEdges edges 
) const [inline]

book the 1D profile histogram

The histogram will be assigned a unique identifier

See also:
IHistogram1D
Parameters:
title histogram title (must be unique within the algorithm)
edges The histogram bin edges
Returns:
pointer to AIDA 1D profile histogram

Definition at line 26 of file GaudiHistos_1DProfVariableBinning.icpp.

00029 {
00030   // Check ID
00031   if (ID.undefined())
00032   {
00033     this->Error("Undefined Histogram ID : Title='"+title+"'");
00034     return NULL;
00035   }
00036 
00037   // exist?
00038   AIDA::IProfile1D* hist = profile1D ( ID ) ;
00039   // histogram is already booked
00040   if ( NULL != hist ) { return hist ; } // RETURN !!
00041 
00042   // Histogram title
00043   const std::string & htitle =
00044     ( title.empty() ?
00045       "Unnamed 1D Profile Histogram ID="+ID.idAsString() : title ) ;
00046 
00047   // book the histogram
00048   if ( ID.numeric() )
00049   {
00050     hist = this->histoSvc() -> bookProf ( histoPath()    ,
00051                                           ID.numericID() ,
00052                                           htitle         ,
00053                                           edges          ) ;
00054   }
00055   else if ( ID.literal() )
00056   {
00057     hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
00058                                           ID.literalID() ,
00059                                           htitle         ,
00060                                           edges          ) ;
00061   }
00062 
00063   // test ok
00064   if( NULL == hist )
00065   { this->Error( "IProfile1D* points to NULL! ID='" + ID.idAsString() +
00066                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00067 
00068   // add histogram into histogram storages
00069   if      ( ID.numeric() )
00070   { m_profile1DMapNumID [ ID.numericID() ] = hist ; }
00071   else if ( ID.literal() )
00072   { m_profile1DMapLitID [ ID.literalID() ] = hist ; }
00073   m_profile1DMapTitle [ title ] = hist ;
00074 
00075   // Declare to monitoring service
00076   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00077 
00078   // printout and return
00079   if ( this->msgLevel(MSG::DEBUG) )
00080   { this->debug() << "Booked 1D Profile Histogram : ID='"
00081                   << ID << "' Path=" << histoPath()
00082                   << " Title='"
00083                   << Gaudi::Utils::Histos::htitle ( hist )
00084                   << "'" << endmsg; }
00085   return hist ;
00086 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::bookProfile2D ( const std::string title,
const double  lowX = 0,
const double  highX = 100,
const unsigned long  binsX = 50,
const double  lowY = 0,
const double  highY = 100,
const unsigned long  binsY = 50 
) const [inline]

book the 2D profile histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IProfile2D
Parameters:
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
lowY low y limit for histogram
highY high y limit for histogram
binsY number of bins in y
Returns:
pointer to AIDA 2D histogram

Definition at line 6 of file GaudiHistos_2DProfFixedBinning.icpp.

00013 {
00014   // exist?
00015   AIDA::IProfile2D* hist = profile2D ( title ) ;
00016   // histogram is already booked
00017   if( 0 != hist      )                          { return hist ; } // RETURN !!
00018 
00019   // propose the histogram ID
00020   HistoID ID;
00021   newHistoID( title, ID );
00022 
00023   // book histogram and return
00024   return this -> bookProfile2D ( ID, title, lowX, highX, binsX, lowY, highY, binsY );
00025 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::bookProfile2D ( const HistoID ID,
const std::string title,
const double  lowX = 0,
const double  highX = 100,
const unsigned long  binsX = 50,
const double  lowY = 0,
const double  highY = 100,
const unsigned long  binsY = 50 
) const [inline]

book the 2D profile histogram with forced ID

See also:
AIDA::IProfile2D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
lowX low x limit for histogram
highX high x limit for histogram
binsX number of bins in x
lowY low y limit for histogram
highY high y limit for histogram
binsY number of bins in y
Returns:
pointer to AIDA histogram

Definition at line 31 of file GaudiHistos_2DProfFixedBinning.icpp.

00039 {
00040   // Check ID
00041   if (ID.undefined())
00042   {
00043     this->Error("Undefined Histogram ID : Title='"+title+"'");
00044     return NULL;
00045   }
00046 
00047   // exist?
00048   AIDA::IProfile2D* hist = profile2D ( ID ) ;
00049   // histogram is already booked
00050   if( 0 != hist )                               { return hist ; } // RETURN !!
00051 
00052   // Histogram title
00053   const std::string & htitle =
00054     ( title.empty() ?
00055       "Unnamed 2D Profile Histogram ID="+ID.idAsString() : title ) ;
00056 
00057   // book the histogram
00058   if ( ID.numeric() )
00059   {
00060     hist = this->histoSvc() -> bookProf ( histoPath() ,
00061                                           ID.numericID() ,
00062                                           htitle      ,
00063                                           binsX       ,
00064                                           lowX        ,
00065                                           highX       ,
00066                                           binsY       ,
00067                                           lowY        ,
00068                                           highY        ) ;
00069   }
00070   else if ( ID.literal() )
00071   {
00072     hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
00073                                           ID.literalID() ,
00074                                           htitle      ,
00075                                           binsX       ,
00076                                           lowX        ,
00077                                           highX       ,
00078                                           binsY       ,
00079                                           lowY        ,
00080                                           highY        ) ;
00081   }
00082 
00083   // test OK
00084   if( 0 == hist )
00085   { this->Error( "IProfile2D* points to NULL! ID='" + ID.idAsString() +
00086                  "' title='"+htitle+"'" ) ; return 0; } // RETURN !!
00087 
00088   // add histogram into histogram storages
00089   if      ( ID.numeric() )
00090   { m_profile2DMapNumID [ ID.numericID() ] = hist ; }
00091   else if ( ID.literal() )
00092   { m_profile2DMapLitID [ ID.literalID() ] = hist ; }
00093   m_profile2DMapTitle [ title ] = hist ;
00094 
00095   // Declare to monitoring service
00096   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00097 
00098   // printout and return
00099   if ( this->msgLevel(MSG::DEBUG) )
00100   {  this->debug() << "Booked 2D Profile Histogram : ID='" << ID
00101                    << "' Path=" << histoPath()
00102                    << " Title='"
00103                    << Gaudi::Utils::Histos::htitle ( hist )
00104                    << "'" << endmsg; }
00105   return hist ;
00106 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::bookProfile2D ( const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY 
) const [inline]

book the 2D profile histogram

The histogram will be assigned a unique identifier

See also:
AIDA::IProfile2D
Parameters:
title histogram title (must be unique within the algorithm)
edgesX x bin edges
edgesY y bin edges
Returns:
pointer to AIDA 2D histogram

Definition at line 6 of file GaudiHistos_2DProfVariableBinning.icpp.

00009 {
00010   // exist?
00011   AIDA::IProfile2D* hist = profile2D ( title ) ;
00012   // histogram is already booked
00013   if( NULL != hist      )                     { return hist ; } // RETURN !!
00014 
00015   // propose the histogram ID
00016   HistoID ID;
00017   newHistoID( title, ID );
00018 
00019   // book histogram and return
00020   return this -> bookProfile2D ( ID, title, edgesX, edgesY );
00021 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::bookProfile2D ( const HistoID ID,
const std::string title,
const HistoBinEdges edgesX,
const HistoBinEdges edgesY 
) const [inline]

book the 2D profile histogram with forced ID

See also:
AIDA::IProfile2D
Parameters:
ID unique histogram ID
title histogram title (must be unique within the algorithm)
edgesX x bin edges
edgesY y bin edges
Returns:
pointer to AIDA histogram

Definition at line 27 of file GaudiHistos_2DProfVariableBinning.icpp.

00031 {
00032   // Check ID
00033   if (ID.undefined())
00034   {
00035     this->Error("Undefined Histogram ID : Title='"+title+"'");
00036     return NULL;
00037   }
00038 
00039   // exist?
00040   AIDA::IProfile2D* hist = profile2D ( ID ) ;
00041   // histogram is already booked
00042   if( NULL != hist )                         { return hist ; } // RETURN !!
00043 
00044   // Histogram title
00045   const std::string & htitle =
00046     ( title.empty() ?
00047       "Unnamed 2D Profile Histogram ID="+ID.idAsString() : title ) ;
00048 
00049   // book the histogram
00050   if ( ID.numeric() )
00051   {
00052     hist = this->histoSvc() -> bookProf ( histoPath() ,
00053                                           ID.numericID() ,
00054                                           htitle      ,
00055                                           edgesX      ,
00056                                           edgesY      ) ;
00057   }
00058   else if ( ID.literal() )
00059   {
00060     hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
00061                                           ID.literalID() ,
00062                                           htitle      ,
00063                                           edgesX      ,
00064                                           edgesY      ) ;
00065   }
00066 
00067   // test OK
00068   if( NULL == hist )
00069   { this->Error( "IProfile2D* points to NULL! ID='" + ID.idAsString() +
00070                  "' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
00071 
00072   // add histogram into histogram storages
00073   if      ( ID.numeric() )
00074   { m_profile2DMapNumID [ ID.numericID() ] = hist ; }
00075   else if ( ID.literal() )
00076   { m_profile2DMapLitID [ ID.literalID() ] = hist ; }
00077   m_profile2DMapTitle [ title ] = hist ;
00078 
00079   // Declare to monitoring service
00080   monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
00081 
00082   // printout and return
00083   if ( this->msgLevel(MSG::DEBUG) )
00084   {  this->debug() << "Booked 2D Profile Histogram : ID='" << ID
00085                    << "' Path=" << histoPath()
00086                    << " Title='"
00087                    << Gaudi::Utils::Histos::htitle ( hist )
00088                    << "'" << endmsg; }
00089   return hist ;
00090 }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::fill ( AIDA::IHistogram1D *  histo,
const double  value,
const double  weight,
const std::string title = "" 
) const [inline]

fill the 1D histogram with the value and weight

Parameters:
histo 1D histogram to be filled
value value to be put into the histogram
weight weight to be used
title histogram title (to be used for error report)
Returns:
pointer to AIDA 1D histogram

Reimplemented in HistoTool.

Definition at line 101 of file GaudiHistos_1DFixedBinning.icpp.

00105 {
00106   if ( NULL != histo && produceHistos() )
00107   {
00108     if ( !checkForNaN() )
00109     { Gaudi::Utils::Histos::fill ( histo , value , weight ) ; }
00110     else if  ( lfin ( value ) && lfin ( weight ) )
00111     { Gaudi::Utils::Histos::fill ( histo , value , weight ) ; }
00112     else if  ( lnan ( value ) || lnan ( weight ) )
00113     {
00114       this -> Warning
00115         ("fill():: 'NaN'      value is skipped from the histogram '"
00116          + Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
00117     }
00118     else
00119     {
00120       this -> Warning
00121         ("fill():: 'Infinite' value is skipped from the histogram '"
00122          + Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
00123     }
00124   }
00125   // return
00126   return histo ;
00127 }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::fill ( AIDA::IHistogram2D *  histo,
const double  valueX,
const double  valueY,
const double  weight,
const std::string title = "" 
) const [inline]

fill the 2D histogram with the value and weight

Parameters:
histo 2D histogram to be filled
valueX x value to be put into the histogram
valueY y value to be put into the histogram
weight weight to be used
title histogram title (to be used for error report)
Returns:
pointer to AIDA 2D histogram

Reimplemented in HistoTool.

Definition at line 114 of file GaudiHistos_2DFixedBinning.icpp.

00119 {
00120   if ( NULL != histo && produceHistos() )
00121   {
00122     if ( !checkForNaN() )
00123     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ) ; }
00124     else if  ( lfin ( valueX ) && lfin ( valueY ) && lfin ( weight ) )
00125     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ) ; }
00126     else if  ( lnan ( valueX ) || lnan ( valueY ) || lnan ( weight ) )
00127     {
00128       this -> Warning
00129         ("fill():: 'NaN'      value is skipped from the histogram '"
00130          + Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
00131     }
00132     else
00133     {
00134       this -> Warning
00135         ("fill():: 'Infinite' value is skipped from the histogram '"
00136          + Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
00137     }
00138   }
00139   // return
00140   return histo ;
00141 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::fill ( AIDA::IHistogram3D *  histo,
const double  valueX,
const double  valueY,
const double  valueZ,
const double  weight,
const std::string title = "" 
) const [inline]

fill the 3D histogram with the value and weight

Parameters:
histo 3D histogram to be filled
valueX x value to be put into the histogram
valueY y value to be put into the histogram
valueZ z value to be put into the histogram
weight weight to be used
title histogram title (to be used for error report)
Returns:
pointer to AIDA 3D histogram

Reimplemented in HistoTool.

Definition at line 128 of file GaudiHistos_3DFixedBinning.icpp.

00134 {
00135   if ( 0 != histo && produceHistos() )
00136   {
00137     if ( !checkForNaN() )
00138     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ) ; }
00139     else if  ( lfin ( valueX ) && lfin ( valueY ) &&
00140                lfin ( valueZ ) && lfin ( weight ) )
00141     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ) ; }
00142     else if  ( lnan ( valueX ) || lnan ( valueY ) ||
00143                lnan ( valueZ ) || lnan ( weight ) )
00144     {
00145       this -> Warning
00146         ("fill():: 'NaN'      value is skipped from the histogram '"
00147          + Gaudi::Utils::Histos::htitle ( histo , title  ) + "'" ) ;
00148     }
00149     else
00150     {
00151       this -> Warning
00152         ("fill():: 'Infinite' value is skipped from the histogram '"
00153          + Gaudi::Utils::Histos::htitle ( histo , title  ) + "'" ) ;
00154     }
00155   }
00156   // return
00157   return histo ;
00158 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::fill ( AIDA::IProfile1D *  histo,
const double  valueX,
const double  valueY,
const double  weight,
const std::string title = "" 
) const [inline]

fill the 1D profile histogram with the values and weight

Parameters:
histo 1D profile histogram to be filled
valueX x value to be put into the histogram
valueY y value to be put into the histogram
weight weight to be used
title histogram title (to be used for error report)
Returns:
pointer to AIDA 1D histogram

Definition at line 112 of file GaudiHistos_1DProfFixedBinning.icpp.

00117 {
00118   if ( NULL != histo && produceHistos() )
00119   {
00120     if ( !checkForNaN() )
00121     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ); }
00122     else if  ( lfin ( valueX ) && lfin ( valueY ) && lfin ( weight ) )
00123     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ); }
00124     else if  ( lnan ( valueX ) || lnan ( valueY ) || lnan ( weight ) )
00125     {
00126       this -> Warning
00127         ("fill():: 'NaN'      value is skipped from the histogram '"
00128          + Gaudi::Utils::Histos::htitle ( histo , title  ) + "'" ) ;
00129     }
00130     else
00131     {
00132       this -> Warning
00133         ("fill():: 'Infinite' value is skipped from the histogram '"
00134          + Gaudi::Utils::Histos::htitle ( histo , title  ) + "'" ) ;
00135     }
00136   }
00137   // return
00138   return histo ;
00139 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::fill ( AIDA::IProfile2D *  histo,
const double  valueX,
const double  valueY,
const double  valueZ,
const double  weight,
const std::string title = "" 
) const [inline]

fill the 2D profile histogram with the values and weight

Parameters:
histo 2D profile histogram to be filled
valueX x value to be put into the histogram
valueY y value to be put into the histogram
valueZ z value to be put into the histogram
weight weight to be used
title histogram title (to be used for error report)
Returns:
pointer to AIDA 1D histogram

Definition at line 112 of file GaudiHistos_2DProfFixedBinning.icpp.

00118 {
00119   if ( 0 != histo && produceHistos() )
00120   {
00121     if ( !checkForNaN() )
00122     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ); }
00123     else if  ( lfin ( valueX ) && lfin ( valueY ) &&
00124                lfin ( valueZ ) && lfin ( weight ) )
00125     { Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ); }
00126     else if  ( lnan ( valueX ) || lnan ( valueY ) ||
00127                lnan ( valueZ ) || lnan ( weight ) )
00128     {
00129       this -> Warning
00130         ("fill():: 'NaN'      value is skipped from the histogram '"
00131          + Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
00132     }
00133     else
00134     {
00135       this -> Warning
00136         ("fill():: 'Infinite' value is skipped from the histogram '"
00137          + Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
00138     }
00139   }
00140   // return
00141   return histo ;
00142 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::histo1D ( const std::string title  )  const [inline]

access the EXISTING 1D histogram by title return the pointer to existing 1D histogram or NULL

Reimplemented in HistoTool.

Definition at line 2582 of file GaudiHistos.h.

02583   {
02584     Histo1DMapTitle::const_iterator found = histo1DMapTitle().find( title ) ;
02585     return ( histo1DMapTitle().end() == found ? 0 : found->second );
02586   }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::histo ( const std::string title  )  const [inline]

access the EXISTING 1D histogram by title

Wrapper method for the equivalent histo1D method. Retained for backwards compatibility, please use histo1D instead.

return the pointer to existing 1D histogram or NULL

Definition at line 2595 of file GaudiHistos.h.

02596   {
02597     return histo1D( title );
02598   }

template<class PBASE>
AIDA::IHistogram2D* GaudiHistos< PBASE >::histo2D ( const std::string title  )  const [inline]

access the EXISTING 2D histogram by title return the pointer to existing 2D histogram or NULL

Reimplemented in HistoTool.

Definition at line 2603 of file GaudiHistos.h.

02604   {
02605     Histo2DMapTitle::const_iterator found = histo2DMapTitle().find( title ) ;
02606     return ( histo2DMapTitle().end() == found ? 0 : found->second );
02607   }

template<class PBASE>
AIDA::IHistogram3D* GaudiHistos< PBASE >::histo3D ( const std::string title  )  const [inline]

access the EXISTING 3D histogram by title return the pointer to existing 3D histogram or NULL

Reimplemented in HistoTool.

Definition at line 2612 of file GaudiHistos.h.

02613   {
02614     Histo3DMapTitle::const_iterator found = histo3DMapTitle().find( title ) ;
02615     return ( histo3DMapTitle().end() == found ? 0 : found->second );
02616   }

template<class PBASE>
AIDA::IProfile1D* GaudiHistos< PBASE >::profile1D ( const std::string title  )  const [inline]

access the EXISTING 1D profile histogram by title return the pointer to existing 1D profile histogram or NULL

Definition at line 2621 of file GaudiHistos.h.

02622   {
02623     Profile1DMapTitle::const_iterator found = profile1DMapTitle().find( title ) ;
02624     return ( profile1DMapTitle().end() == found ? 0 : found->second );
02625   }

template<class PBASE>
AIDA::IProfile2D* GaudiHistos< PBASE >::profile2D ( const std::string title  )  const [inline]

access the EXISTING 2D profile histogram by title return the pointer to existing 2D profile histogram or NULL

Definition at line 2630 of file GaudiHistos.h.

02631   {
02632     Profile2DMapTitle::const_iterator found = profile2DMapTitle().find( title ) ;
02633     return ( profile2DMapTitle().end() == found ? 0 : found->second );
02634   }

template<class PBASE>
AIDA::IHistogram1D * GaudiHistos< PBASE >::histo1D ( const HistoID ID  )  const [inline]

access the EXISTING 1D histogram by ID return the pointer to existing 1D histogram or NULL

Reimplemented in HistoTool.

Definition at line 485 of file GaudiHistos.icpp.

00486 {
00487   AIDA::IHistogram1D * h(NULL);
00488   if ( ID.numeric() )
00489   {
00490     Histo1DMapNumID::const_iterator found =
00491       histo1DMapNumID().find( ID.numericID() ) ;
00492     h = ( histo1DMapNumID().end() == found ? NULL : found->second );
00493   }
00494   else
00495   {
00496     Histo1DMapLitID::const_iterator found =
00497       histo1DMapLitID().find( ID.literalID() ) ;
00498     h = ( histo1DMapLitID().end() == found ? NULL : found->second );
00499   }
00500   return h;
00501 }

template<class PBASE>
AIDA::IHistogram1D* GaudiHistos< PBASE >::histo ( const HistoID ID  )  const [inline]

access the EXISTING 1D histogram by ID

Wrapper method for the equivalent histo1D method. Retained for backwards compatibility, please use histo1D instead.

return the pointer to existing 1D histogram or NULL

Definition at line 2650 of file GaudiHistos.h.

02651   {
02652     return histo1D( ID );
02653   }

template<class PBASE>
AIDA::IHistogram2D * GaudiHistos< PBASE >::histo2D ( const HistoID ID  )  const [inline]

access the EXISTING 2D histogram by ID return the pointer to existing 2D histogram or NULL

Reimplemented in HistoTool.

Definition at line 506 of file GaudiHistos.icpp.

00507 {
00508   AIDA::IHistogram2D * h(NULL);
00509   if ( ID.numeric() )
00510   {
00511     Histo2DMapNumID::const_iterator found =
00512       histo2DMapNumID().find( ID.numericID() ) ;
00513     h = ( histo2DMapNumID().end() == found ? NULL : found->second );
00514   }
00515   else
00516   {
00517     Histo2DMapLitID::const_iterator found =
00518       histo2DMapLitID().find( ID.literalID() ) ;
00519     h = ( histo2DMapLitID().end() == found ? NULL : found->second );
00520   }
00521   return h;
00522 }

template<class PBASE>
AIDA::IHistogram3D * GaudiHistos< PBASE >::histo3D ( const HistoID ID  )  const [inline]

access the EXISTING 3D histogram by ID return the pointer to existing 3D histogram or NULL

Reimplemented in HistoTool.

Definition at line 527 of file GaudiHistos.icpp.

00528 {
00529   AIDA::IHistogram3D * h(NULL);
00530   if ( ID.numeric() )
00531   {
00532     Histo3DMapNumID::const_iterator found =
00533       histo3DMapNumID().find( ID.numericID() ) ;
00534     h = ( histo3DMapNumID().end() == found ? NULL : found->second );
00535   }
00536   else
00537   {
00538     Histo3DMapLitID::const_iterator found =
00539       histo3DMapLitID().find( ID.literalID() ) ;
00540     h = ( histo3DMapLitID().end() == found ? NULL : found->second );
00541   }
00542   return h;
00543 }

template<class PBASE>
AIDA::IProfile1D * GaudiHistos< PBASE >::profile1D ( const HistoID ID  )  const [inline]

access the EXISTING 1D profile histogram by ID return the pointer to existing 1D profile histogram or NULL

Definition at line 548 of file GaudiHistos.icpp.

00549 {
00550   AIDA::IProfile1D * h(NULL);
00551   if ( ID.numeric() )
00552   {
00553     Profile1DMapNumID::const_iterator found =
00554       profile1DMapNumID().find( ID.numericID() ) ;
00555     h = ( profile1DMapNumID().end() == found ? NULL : found->second );
00556   }
00557   else
00558   {
00559     Profile1DMapLitID::const_iterator found =
00560       profile1DMapLitID().find( ID.literalID() ) ;
00561     h = ( profile1DMapLitID().end() == found ? NULL : found->second );
00562   }
00563   return h;
00564 }

template<class PBASE>
AIDA::IProfile2D * GaudiHistos< PBASE >::profile2D ( const HistoID ID  )  const [inline]

access the EXISTING 2D profile histogram by ID return the pointer to existing 2D profile histogram or NULL

Definition at line 569 of file GaudiHistos.icpp.

00570 {
00571   AIDA::IProfile2D * h(NULL);
00572   if ( ID.numeric() )
00573   {
00574     Profile2DMapNumID::const_iterator found =
00575       profile2DMapNumID().find( ID.numericID() ) ;
00576     h = ( profile2DMapNumID().end() == found ? NULL : found->second );
00577   }
00578   else
00579   {
00580     Profile2DMapLitID::const_iterator found =
00581       profile2DMapLitID().find( ID.literalID() ) ;
00582     h = ( profile2DMapLitID().end() == found ? NULL : found->second );
00583   }
00584   return h;
00585 }

template<class PBASE>
bool GaudiHistos< PBASE >::histoExists ( const std::string title  )  const [inline]

check the existence AND validity of the histogram with given title

Reimplemented in HistoTool.

Definition at line 2678 of file GaudiHistos.h.

02679   {
02680     return
02681       ( 0 != histo     ( title ) ||
02682         0 != histo2D   ( title ) ||
02683         0 != histo3D   ( title ) ||
02684         0 != profile1D ( title ) ||
02685         0 != profile2D ( title ) );
02686   }

template<class PBASE>
bool GaudiHistos< PBASE >::histoExists ( const HistoID ID  )  const [inline]

check the existence AND validity of the histogram with given title

Reimplemented in HistoTool.

Definition at line 2689 of file GaudiHistos.h.

02690   {
02691     return
02692       ( 0 != histo     ( ID ) ||
02693         0 != histo2D   ( ID ) ||
02694         0 != histo3D   ( ID ) ||
02695         0 != profile1D ( ID ) ||
02696         0 != profile2D ( ID ) );
02697   }

template<class PBASE>
unsigned int GaudiHistos< PBASE >::totalNumberOfHistos (  )  const [inline]

Returns the total number of histograms (of all types) currently booked.

Definition at line 590 of file GaudiHistos.icpp.

00591 {
00592   const unsigned int n1D  = histo1DMapNumID().size()+histo1DMapLitID().size();
00593   const unsigned int n2D  = histo2DMapNumID().size()+histo2DMapLitID().size();
00594   const unsigned int n3D  = histo3DMapNumID().size()+histo3DMapLitID().size();
00595   const unsigned int n1DP = profile1DMapNumID().size()+profile1DMapLitID().size();
00596   const unsigned int n2DP = profile2DMapNumID().size()+profile2DMapLitID().size();
00597   return n1D+n2D+n3D+n1DP+n2DP;
00598 }

template<class PBASE>
bool GaudiHistos< PBASE >::produceHistos (  )  const [inline]

get the flag for histogram production (property "HistoProduce")

Definition at line 2704 of file GaudiHistos.h.

02704 { return m_produceHistos ; }

template<class PBASE>
bool GaudiHistos< PBASE >::fullDetail (  )  const [inline]

get flag to control output level of histograms

Definition at line 2706 of file GaudiHistos.h.

02706 { return m_fullDetail    ; }

template<class PBASE>
bool GaudiHistos< PBASE >::checkForNaN (  )  const [inline]

get the flag for NaN checks (property "HistoCheckForNan")

Definition at line 2708 of file GaudiHistos.h.

02708 { return m_checkForNaN   ; }

template<class PBASE>
bool GaudiHistos< PBASE >::splitHistoDir (  )  const [inline]

get the flag for histogram path split (property "HistoSplitDir")

Definition at line 2710 of file GaudiHistos.h.

02710 { return m_splitHistoDir ; }

template<class PBASE>
HistoID::NumericID GaudiHistos< PBASE >::histoOffSet (  )  const [inline]

get the value for histogram offset (property "HistoOffSet")

Definition at line 2712 of file GaudiHistos.h.

02712 { return m_histoOffSet ; }

template<class PBASE>
const std::string& GaudiHistos< PBASE >::histoTopDir (  )  const [inline]

get top-level histogram directory (property "HistoTopDir")

Definition at line 2714 of file GaudiHistos.h.

02714 { return m_histoTopDir   ; }

template<class PBASE>
const std::string& GaudiHistos< PBASE >::histoDir (  )  const [inline]

get histogram directory (property "HistoDir")

Definition at line 2716 of file GaudiHistos.h.

02716 { return m_histoDir      ; }

template<class PBASE>
std::string GaudiHistos< PBASE >::histoPath (  )  const [inline]

get the constructed histogram path

Definition at line 2718 of file GaudiHistos.h.

02719   {
02720     const std::string path = histoTopDir() + histoDir();
02721     return ( splitHistoDir() ? dirHbookName(path) : path );
02722   }

template<class PBASE>
bool GaudiHistos< PBASE >::histosPrint (  )  const [inline]

print histograms at finalization ?

Definition at line 2724 of file GaudiHistos.h.

02724 { return m_histosPrint ; }

template<class PBASE>
bool GaudiHistos< PBASE >::useNumericAutoIDs (  )  const [inline]

Use old style sequencial numerical automatically assigned IDs ?

Definition at line 2726 of file GaudiHistos.h.

02726 { return m_useNumericAutoIDs; }

template<class PBASE>
int GaudiHistos< PBASE >::printHistos ( const MSG::Level  level = MSG::ALWAYS  )  const [inline]

perform the actual printout of histograms

Parameters:
level The message level to print at
Returns:
number of active histograms

Definition at line 222 of file GaudiHistos.icpp.

00223 {
00224   // temporary storage
00225   std::set<const AIDA::IBaseHistogram*> histos   ;
00226   std::set<const AIDA::IBaseHistogram*> profiles ;
00227 
00228   using namespace Gaudi::Utils::Histos ;
00229 
00230   if ( noHistos() )
00231   { if (this->msgLevel(MSG::DEBUG)) this->msgStream(level) << "No histograms are booked" << endmsg ; }
00232   else
00233   {
00234     MsgStream & msg = this->msgStream(level);
00235 
00236     // Printout all histograms
00237     // Note, each must appear in either the numeric or literal map
00238 
00239     Gaudi::Utils::Histos::Table table
00240       ( m_histo1DTableFormat ,
00241         m_histo1DTableHeader ) ;
00242 
00243     if ( !histo1DMapNumID().empty() || !histo1DMapLitID().empty() )
00244     {
00245       msg << "List of booked 1D histograms in directory         "
00246           << "\"" << histoPath() << "\" :-"  ;
00247 
00248       if ( !table.header().empty() )
00249       {
00250         msg << std::endl << Gaudi::Utils::Histos::format
00251           ( "ID" , table.header() , m_histo1DTableFormatShort ) ;
00252       }
00253       {
00254         typedef std::map<Histo1DMapNumID::key_type, Histo1DMapNumID::mapped_type> ordered_map_t;
00255         ordered_map_t ordered_map(histo1DMapNumID().begin(), histo1DMapNumID().end());
00256         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00257               ordered_map.end() != entry ; ++entry )
00258         {
00259           AIDA::IHistogram1D* aida = entry->second ;
00260           if ( NULL == aida )
00261           { this->error() << "IHistogram1D points to NULL" << endmsg ; continue ; }
00262           if ( histos.end() != histos.find( toBase ( aida ) ) ) { continue ; }
00263           histos.insert ( toBase ( aida  ) ) ;
00264           // format and print the row
00265           msg << std::endl << table.toString
00266             ( aida                      ,
00267               HistoID ( entry->first )  ,
00268               m_histo1DTableFormatShort ) ;
00269         }
00270       }
00271       {
00272         typedef std::map<Histo1DMapLitID::key_type, Histo1DMapLitID::mapped_type> ordered_map_t;
00273         ordered_map_t ordered_map(histo1DMapLitID().begin(), histo1DMapLitID().end());
00274         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00275               ordered_map.end() != entry ; ++entry )
00276         {
00277           AIDA::IHistogram1D* aida = entry->second ;
00278           if ( NULL == aida )
00279           { this->error() << "IHistogram1D points to NULL" << endmsg ; continue ; }
00280           if ( histos.end() != histos.find( toBase ( aida ) ) ) { continue ; }
00281           histos.insert ( toBase ( aida  ) ) ;
00282           // format and print the row
00283           msg << std::endl << table.toString
00284             ( aida                      ,
00285               entry->first              ,
00286               m_histo1DTableFormatShort ) ;
00287         }
00288       }
00289       msg << endmsg ;
00290     }
00291     if ( !histo2DMapNumID().empty() || !histo2DMapLitID().empty() )
00292     {
00293       msg << "List of booked 2D histograms in directory         "
00294           << "\"" << histoPath() << "\" :-" ;
00295       {
00296         typedef std::map<Histo2DMapNumID::key_type, Histo2DMapNumID::mapped_type> ordered_map_t;
00297         ordered_map_t ordered_map(histo2DMapNumID().begin(), histo2DMapNumID().end());
00298         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00299               ordered_map.end() != entry ; ++entry )
00300         {
00301           AIDA::IHistogram2D* aida = entry->second ;
00302           if ( NULL == aida )
00303           { this->error() << "IHistogram2D points to NULL" << endmsg ; continue ; }
00304           if ( histos.end() != histos.find( toBase ( aida ) ) ) { continue ; }
00305           histos.insert ( toBase ( aida  ) ) ;
00306           msg << std::endl
00307               << GaudiAlg::Print2D::toString ( aida , entry->first );
00308         }
00309       }
00310       {
00311         typedef std::map<Histo2DMapLitID::key_type, Histo2DMapLitID::mapped_type> ordered_map_t;
00312         ordered_map_t ordered_map(histo2DMapLitID().begin(), histo2DMapLitID().end());
00313         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00314               ordered_map.end() != entry ; ++entry )
00315         {
00316           AIDA::IHistogram2D* aida = entry->second ;
00317           if ( NULL == aida )
00318           { this->error() << "IHistogram2D points to NULL" << endmsg ; continue ; }
00319           if ( histos.end() != histos.find( toBase ( aida ) ) ) { continue ; }
00320           histos.insert ( toBase ( aida  ) ) ;
00321           msg << std::endl
00322               << GaudiAlg::Print2D::toString ( aida , entry->first );
00323         }
00324       }
00325       msg << endmsg ;
00326     }
00327 
00328     if ( !histo3DMapNumID().empty() || !histo3DMapLitID().empty() )
00329     {
00330       msg << "List of booked 3D histograms in directory         "
00331           << "\"" << histoPath() << "\" :-" ;
00332       {
00333         typedef std::map<Histo3DMapNumID::key_type, Histo3DMapNumID::mapped_type> ordered_map_t;
00334         ordered_map_t ordered_map(histo3DMapNumID().begin(), histo3DMapNumID().end());
00335         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00336               ordered_map.end() != entry ; ++entry )
00337         {
00338           AIDA::IHistogram3D* aida = entry->second ;
00339           if ( NULL == aida )
00340           { this->error() << "IHistogram3D points to NULL" << endmsg ; continue ; }
00341           if ( histos.end() != histos.find( toBase ( aida ) ) ) { continue ; }
00342           histos.insert ( toBase ( aida  ) ) ;
00343           msg << std::endl << GaudiAlg::Print3D::toString ( aida , entry->first );
00344         }
00345       }
00346       {
00347         typedef std::map<Histo3DMapLitID::key_type, Histo3DMapLitID::mapped_type> ordered_map_t;
00348         ordered_map_t ordered_map(histo3DMapLitID().begin(), histo3DMapLitID().end());
00349         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00350               ordered_map.end() != entry ; ++entry )
00351         {
00352           AIDA::IHistogram3D* aida = entry->second ;
00353           if ( NULL == aida )
00354           { this->error() << "IHistogram3D points to NULL" << endmsg ; continue ; }
00355           if ( histos.end() != histos.find( toBase ( aida ) ) ) { continue ; }
00356           histos.insert ( toBase ( aida  ) ) ;
00357           msg << std::endl << GaudiAlg::Print3D::toString ( aida , entry->first ) ;
00358         }
00359       }
00360       msg << endmsg ;
00361     }
00362     if ( !profile1DMapNumID().empty() || !profile1DMapLitID().empty() )
00363     {
00364       msg << "List of booked 1D profile histograms in directory "
00365           << "\"" << histoPath() << "\" :-" ;
00366       {
00367         typedef std::map<Profile1DMapNumID::key_type, Profile1DMapNumID::mapped_type> ordered_map_t;
00368         ordered_map_t ordered_map(profile1DMapNumID().begin(), profile1DMapNumID().end());
00369         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00370               ordered_map.end() != entry ; ++entry )
00371         {
00372           AIDA::IProfile1D*   aida = entry->second ;
00373           if ( NULL == aida )
00374           { this->error() << "IProfile1D points to NULL" << endmsg ; continue ; }
00375           if ( profiles.end() != profiles.find( toBase ( aida ) ) ) { continue ; }
00376           profiles.insert ( toBase ( aida  ) ) ;
00377           msg << std::endl << GaudiAlg::Print1DProf::toString  ( aida , entry->first );
00378         }
00379       }
00380       {
00381         typedef std::map<Profile1DMapLitID::key_type, Profile1DMapLitID::mapped_type> ordered_map_t;
00382         ordered_map_t ordered_map(profile1DMapLitID().begin(), profile1DMapLitID().end());
00383         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00384               ordered_map.end() != entry ; ++entry )
00385         {
00386           AIDA::IProfile1D*   aida = entry->second ;
00387           if ( NULL == aida )
00388           { this->error() << "IProfile1D points to NULL" << endmsg ; continue ; }
00389           if ( profiles.end() != profiles.find( toBase ( aida ) ) ) { continue ; }
00390           profiles.insert ( toBase ( aida  ) ) ;
00391           msg << std::endl << GaudiAlg::Print1DProf::toString ( aida , entry->first );
00392         }
00393       }
00394       msg << endmsg ;
00395     }
00396     if ( !profile2DMapNumID().empty() || !profile2DMapLitID().empty() )
00397     {
00398       msg << "List of booked 2D profile histograms in directory "
00399           << "\"" << histoPath() << "\" :-" ;
00400       {
00401         typedef std::map<Profile2DMapNumID::key_type, Profile2DMapNumID::mapped_type> ordered_map_t;
00402         ordered_map_t ordered_map(profile2DMapNumID().begin(), profile2DMapNumID().end());
00403         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00404               ordered_map.end() != entry ; ++entry )
00405         {
00406           AIDA::IProfile2D*   aida = entry->second ;
00407           if ( NULL == aida )
00408           { this->error() << "IProfile2D points to NULL" << endmsg ; continue ; }
00409           if ( profiles.end() != profiles.find( toBase ( aida ) ) ) { continue ; }
00410           profiles.insert ( toBase ( aida  ) ) ;
00411           msg << std::endl << GaudiAlg::Print2DProf::toString ( aida , entry->first );
00412         }
00413       }
00414       {
00415         typedef std::map<Profile2DMapLitID::key_type, Profile2DMapLitID::mapped_type> ordered_map_t;
00416         ordered_map_t ordered_map(profile2DMapLitID().begin(), profile2DMapLitID().end());
00417         for ( ordered_map_t::const_iterator entry = ordered_map.begin() ;
00418               ordered_map.end() != entry ; ++entry )
00419         {
00420           AIDA::IProfile2D*   aida = entry->second ;
00421           if ( NULL == aida )
00422           { this->error() << "IProfile2D points to NULL" << endmsg ; continue ; }
00423           if ( profiles.end() != profiles.find( toBase ( aida ) ) ) { continue ; }
00424           profiles.insert ( toBase ( aida  ) ) ;
00425           msg << std::endl << GaudiAlg::Print2DProf::toString ( aida , entry->first );
00426         }
00427       }
00428       msg << endmsg ;
00429     }
00430 
00431   }
00432   return histos.size() + profiles.size() ;
00433 }

template<class PBASE>
const Histo1DMapTitle& GaudiHistos< PBASE >::histo1DMapTitle (  )  const [inline]

get access to the map of all 1D histograms indexed via their title

Using this method one can inspect e.g. a list of active histograms

  const Histo1DMapTitle& histos = histo1DMapTitle() ;
  // iterate over the map!
  for ( Histo1DMapTitle::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram title
        const std::string&   title = entry->first ;
        // histogram itself
        AIDA::IHistogram1D* hist  = entry->second ;
        if( 0 == hist )  { continue ; }                // ATTENTION!

        std::cout << " Histogram title " << title << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2761 of file GaudiHistos.h.

02761 { return m_histo1DMapTitle; }

template<class PBASE>
const Histo1DMapNumID& GaudiHistos< PBASE >::histo1DMapNumID (  )  const [inline]

get access to the map of 1D histograms index via a numeric ID

Attention:
This map only contains 1D histogram booked via a numeric ID, either forced or automatically assigned.
  const Histo1DMapNumID& histos = histo1DMapNumID() ;
  // iterate over the map!
  for ( Histo1DMapNumID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IHistogram1D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2792 of file GaudiHistos.h.

02792 { return m_histo1DMapNumID; }

template<class PBASE>
const Histo1DMapLitID& GaudiHistos< PBASE >::histo1DMapLitID (  )  const [inline]

get access to the map of all 1D histograms index via a literal (string) ID

Attention:
This map only contains 1D histogram booked via a literal ID.
  const Histo1DMapLitID& histos = histo1DMapLitID() ;
  // iterate over the map!
  for ( Histo1DMapLitID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IHistogram1D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2822 of file GaudiHistos.h.

02822 { return m_histo1DMapLitID; }

template<class PBASE>
const Histo2DMapTitle& GaudiHistos< PBASE >::histo2DMapTitle (  )  const [inline]

get access to the map of all 2D histograms indexed via their title

Using this method one can inspect e.g. a list of active histograms

  const Histo2DMapTitle& histos = histo2DMapTitle() ;
  // iterate over the map!
  for ( Histo2DMapTitle::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram title
        const std::string&   title = entry->first ;
        // histogram itself
        AIDA::IHistogram2D* hist  = entry->second ;
        if( 0 == hist )  { continue ; }                // ATTENTION!

        std::cout << " Histogram title " << title << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2851 of file GaudiHistos.h.

02851 { return m_histo2DMapTitle ; }

template<class PBASE>
const Histo2DMapNumID& GaudiHistos< PBASE >::histo2DMapNumID (  )  const [inline]

get access to the map of 2D histograms index via a numeric ID

Attention:
This map only contains 2D histogram booked via a numeric ID, either forced or automatically assigned.
  const Histo2DMapNumID& histos = histo2DMapNumID() ;
  // iterate over the map!
  for ( Histo2DMapNumID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IHistogram2D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2882 of file GaudiHistos.h.

02882 { return m_histo2DMapNumID; }

template<class PBASE>
const Histo2DMapLitID& GaudiHistos< PBASE >::histo2DMapLitID (  )  const [inline]

get access to the map of all 2D histograms index via a literal (string) ID

Attention:
This map only contains 2D histogram booked via a literal ID.
  const Histo2DMapLitID& histos = histo2DMapLitID() ;
  // iterate over the map!
  for ( Histo2DMapLitID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IHistogram2D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2912 of file GaudiHistos.h.

02912 { return m_histo2DMapLitID; }

template<class PBASE>
const Histo3DMapTitle& GaudiHistos< PBASE >::histo3DMapTitle (  )  const [inline]

get access to the map of all 3D histograms indexed via their title

Using this method one can inspect e.g. a list of active histograms

  const Histo3DMapTitle& histos = histo3DMapTitle() ;
  // iterate over the map!
  for ( Histo3DMapTitle::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram title
        const std::string&   title = entry->first ;
        // histogram itself
        AIDA::IHistogram3D* hist  = entry->second ;
        if( 0 == hist )  { continue ; }                // ATTENTION!

        std::cout << " Histogram title " << title << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2941 of file GaudiHistos.h.

02941 { return m_histo3DMapTitle ; }

template<class PBASE>
const Histo3DMapNumID& GaudiHistos< PBASE >::histo3DMapNumID (  )  const [inline]

get access to the map of 3D histograms index via a numeric ID

Attention:
This map only contains 3D histogram booked via a numeric ID, either forced or automatically assigned.
  const Histo3DMapNumID& histos = histo3DMapNumID() ;
  // iterate over the map!
  for ( Histo3DMapNumID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IHistogram3D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 2972 of file GaudiHistos.h.

02972 { return m_histo3DMapNumID; }

template<class PBASE>
const Histo3DMapLitID& GaudiHistos< PBASE >::histo3DMapLitID (  )  const [inline]

get access to the map of all 3D histograms index via a literal (string) ID

Attention:
This map only contains 3D histogram booked via a literal ID.
  const Histo3DMapLitID& histos = histo3DMapLitID() ;
  // iterate over the map!
  for ( Histo3DMapLitID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IHistogram3D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3002 of file GaudiHistos.h.

03002 { return m_histo3DMapLitID; }

template<class PBASE>
const Profile1DMapTitle& GaudiHistos< PBASE >::profile1DMapTitle (  )  const [inline]

get access to the map of all 1D profile histograms indexed via their title

Using this method one can inspect e.g. a list of active histograms

  const Profile1DMapTitle& histos = profile1DMapTitle() ;
  // iterate over the map!
  for ( Profile1DMapTitle::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram title
        const std::string&   title = entry->first ;
        // histogram itself
        AIDA::IProfile1D* hist  = entry->second ;
        if( 0 == hist )  { continue ; }                // ATTENTION!

        std::cout << " Histogram title " << title << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3031 of file GaudiHistos.h.

03031 { return m_profile1DMapTitle; }

template<class PBASE>
const Profile1DMapNumID& GaudiHistos< PBASE >::profile1DMapNumID (  )  const [inline]

get access to the map of 1D profile histograms index via a numeric ID

Attention:
This map only contains 2D histogram booked via a numeric ID, either forced or automatically assigned.
  const Profile1DMapNumID& histos = profile1DMapNumID() ;
  // iterate over the map!
  for ( Profile1DMapNumID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IProfile1D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3062 of file GaudiHistos.h.

03062 { return m_profile1DMapNumID; }

template<class PBASE>
const Profile1DMapLitID& GaudiHistos< PBASE >::profile1DMapLitID (  )  const [inline]

get access to the map of 1D profile histograms index via a literal ID

Attention:
This map only contains 2D histogram booked via a literal ID, either forced or automatically assigned.
  const Profile1DMapLitID& histos = profile1DMapLitID() ;
  // iterate over the map!
  for ( Profile1DMapLitID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IProfile1D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3093 of file GaudiHistos.h.

03093 { return m_profile1DMapLitID; }

template<class PBASE>
const Profile2DMapTitle& GaudiHistos< PBASE >::profile2DMapTitle (  )  const [inline]

get access to the map of all 2D profile histograms indexed via their title

Using this method one can inspect e.g. a list of active histograms

  const Profile2DMapTitle& histos = profile2DMapTitle() ;
  // iterate over the map!
  for ( Profile2DMapTitle::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram title
        const std::string&   title = entry->first ;
        // histogram itself
        AIDA::IProfile2D* hist  = entry->second ;
        if( 0 == hist )  { continue ; }                // ATTENTION!

        std::cout << " Histogram title " << title << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3122 of file GaudiHistos.h.

03122 { return m_profile2DMapTitle; }

template<class PBASE>
const Profile2DMapNumID& GaudiHistos< PBASE >::profile2DMapNumID (  )  const [inline]

get access to the map of 2D profile histograms index via a numeric ID

Attention:
This map only contains 2D histogram booked via a numeric ID, either forced or automatically assigned.
  const Profile2DMapNumID& histos = profile2DMapNumID() ;
  // iterate over the map!
  for ( Profile2DMapNumID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IProfile2D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3153 of file GaudiHistos.h.

03153 { return m_profile2DMapNumID; }

template<class PBASE>
const Profile2DMapLitID& GaudiHistos< PBASE >::profile2DMapLitID (  )  const [inline]

get access to the map of 2D profile histograms index via a literal ID

Attention:
This map only contains 2D histogram booked via a literal ID, either forced or automatically assigned.
  const Profile2DMapLitID& histos = profile2DMapLitID() ;
  // iterate over the map!
  for ( Profile2DMapLitID::const_iterator entry = histos.begin() ;
        histos.end() != entry ; ++entry  )
     {
        // histogram ID
        const HistoID        ID = entry->first ;
        // histogram itself
        AIDA::IProfile2D* h  = entry->second ;
        if ( 0 == h ) { continue ;}

        std::cout << " Histogram ID    " << ID
                  << " Histogram title " << h->title() << std::endl ;

     }

Attention:
The map *COULD* contains NULL pointers, the check before use is mandatory!

Definition at line 3184 of file GaudiHistos.h.

03184 { return m_profile2DMapLitID; }

template<class PBASE>
void GaudiHistos< PBASE >::setProduceHistos ( const bool  val  )  [inline]

set the flag for histogram production (property "HistoProduce")

Definition at line 3189 of file GaudiHistos.h.

03189 { m_produceHistos = val ; }

template<class PBASE>
void GaudiHistos< PBASE >::setFullDetail ( const bool  val  )  [inline]

set flag to control output level of histograms

Definition at line 3191 of file GaudiHistos.h.

03191 { m_fullDetail    = val ; }

template<class PBASE>
void GaudiHistos< PBASE >::setCheckForNaN ( const bool  val  )  [inline]

set the flag for NaN checks (property "HistoCheckForNan")

Definition at line 3193 of file GaudiHistos.h.

03193 { m_checkForNaN   = val ; }

template<class PBASE>
void GaudiHistos< PBASE >::setSplitHistoDir ( const bool  val  )  [inline]

set the flag for histogram path split (property "HistoSplitDir")

Definition at line 3195 of file GaudiHistos.h.

03195 { m_splitHistoDir = val ; }

template<class PBASE>
void GaudiHistos< PBASE >::setHistoOffSet ( const HistoID::NumericID  val  )  [inline]

set a value for histogram offset (property "HistoOffSet"

Definition at line 3197 of file GaudiHistos.h.

03198   { m_histoOffSet   = val ; }

template<class PBASE>
void GaudiHistos< PBASE >::setHistoTopDir ( const std::string val  )  [inline]

set top-level histogram directory (property "HistoTopDir")

Definition at line 3201 of file GaudiHistos.h.

03201 { m_histoTopDir   = val ; }

template<class PBASE>
void GaudiHistos< PBASE >::setHistoDir ( const std::string val  )  [inline]

set histogram directory (property "HistoDir")

Definition at line 3204 of file GaudiHistos.h.

03204 { m_histoDir      = val ; }

template<class PBASE>
StatusCode GaudiHistos< PBASE >::initialize (  )  [inline, protected, virtual]

standard initialization method

Returns:
status code

Reimplemented in GaudiHistoAlg, GaudiHistoTool, GaudiTupleAlg, GaudiTupleTool, GaudiTuples< GaudiHistoTool >, and GaudiTuples< GaudiHistoAlg >.

Definition at line 130 of file GaudiHistos.icpp.

00131 {
00132   // initialize base class
00133   const StatusCode sc = PBASE::initialize();
00134   if ( sc.isFailure() ) return sc;
00135 
00136   // produce histograms?
00137   if ( !produceHistos() )
00138   {
00139     this->debug() << "Histogram production is switched OFF" << endmsg;
00140     return sc;
00141   }
00142 
00143   // check the validity of histogram service
00144   if ( this->histoSvc() == NULL )
00145   { return this->Error("initialize():: IHistogramSvc* is invalid"); }
00146 
00147   // Warn if the user has decided to use numerical automatic IDs
00148   if ( useNumericAutoIDs() )
00149   {
00150     this ->
00151       Warning( "Using numerical automatic IDs. These are not guaranteed to be totally deterministic. Use with care...",
00152                StatusCode::SUCCESS );
00153   }
00154 
00155   // Finally, print the location histogram will be written to
00156   Print
00157     ( "The histogram path is set to be '" + histoPath() + "'",
00158       StatusCode( StatusCode::SUCCESS, true )  , MSG::DEBUG );
00159 
00160   return sc;
00161 }

template<class PBASE>
StatusCode GaudiHistos< PBASE >::finalize ( void   )  [inline, protected, virtual]

standard finalization method

Returns:
status code

Reimplemented in GaudiHistoAlg, GaudiHistoTool, GaudiTupleAlg, GaudiTupleTool, GaudiTuples< GaudiHistoTool >, and GaudiTuples< GaudiHistoAlg >.

Definition at line 166 of file GaudiHistos.icpp.

00167 {
00168 
00169   if ( produceHistos() )
00170   {
00171 
00172     // Count how many histos of each type
00173     if ( !noHistos() )
00174     {
00175       const unsigned int n1D  = histo1DMapNumID().size()+histo1DMapLitID().size();
00176       const unsigned int n2D  = histo2DMapNumID().size()+histo2DMapLitID().size();
00177       const unsigned int n3D  = histo3DMapNumID().size()+histo3DMapLitID().size();
00178       const unsigned int n1DP = profile1DMapNumID().size()+profile1DMapLitID().size();
00179       const unsigned int n2DP = profile2DMapNumID().size()+profile2DMapLitID().size();
00180       const unsigned int total = n1D+n2D+n3D+n1DP+n2DP;
00181       if ( total>0 )
00182       {
00183         this->always() << "Booked " << total << " Histogram(s) : ";
00184         if ( n1D>0  ) this->always() << "1D=" << n1D << " ";
00185         if ( n2D>0  ) this->always() << "2D=" << n2D << " ";
00186         if ( n3D>0  ) this->always() << "3D=" << n3D << " ";
00187         if ( n1DP>0 ) this->always() << "1DProf=" << n1DP << " ";
00188         if ( n2DP>0 ) this->always() << "2DProf=" << n2DP << " ";
00189         this->always() << endmsg;
00190       }
00191     }
00192 
00193     // detailed printing
00194     if ( histosPrint() ) { printHistos() ; }
00195 
00196   }
00197 
00198   // clear all maps
00199   m_histo1DMapTitle   .clear() ;
00200   m_histo2DMapTitle   .clear() ;
00201   m_histo3DMapTitle   .clear() ;
00202   m_histo1DMapNumID   .clear() ;
00203   m_histo1DMapLitID   .clear() ;
00204   m_histo2DMapNumID   .clear() ;
00205   m_histo2DMapLitID   .clear() ;
00206   m_histo3DMapNumID   .clear() ;
00207   m_histo3DMapLitID   .clear() ;
00208   m_profile1DMapTitle .clear() ;
00209   m_profile2DMapTitle .clear() ;
00210   m_profile1DMapNumID .clear() ;
00211   m_profile1DMapLitID .clear() ;
00212   m_profile2DMapNumID .clear() ;
00213   m_profile2DMapLitID .clear() ;
00214 
00215   // finalize base class
00216   return PBASE::finalize();
00217 }

template<class PBASE>
bool GaudiHistos< PBASE >::noHistos (  )  const [inline, private]

Check if all histogram maps are empty.

Definition at line 438 of file GaudiHistos.icpp.

00439 {
00440   return ( histo1DMapTitle()   .empty() &&
00441            histo2DMapTitle()   .empty() &&
00442            histo3DMapTitle()   .empty() &&
00443            profile1DMapTitle() .empty() &&
00444            profile2DMapTitle() .empty() &&
00445            histo1DMapNumID()   .empty() &&
00446            histo1DMapLitID()   .empty() &&
00447            histo2DMapNumID()   .empty() &&
00448            histo2DMapLitID()   .empty() &&
00449            histo3DMapNumID()   .empty() &&
00450            histo3DMapLitID()   .empty() &&
00451            profile1DMapNumID() .empty() &&
00452            profile1DMapLitID() .empty() &&
00453            profile2DMapNumID() .empty() &&
00454            profile2DMapLitID() .empty() );
00455 }

template<class PBASE>
void GaudiHistos< PBASE >::initGaudiHistosConstructor (  )  [inline, private]

Constructor initialisation and job options.

Definition at line 60 of file GaudiHistos.icpp.

00061 {
00062   // SWITCH ON/OFF the histograms
00063   this->declareProperty
00064     ( "HistoProduce"          ,
00065       m_produceHistos = true  ,
00066       "Swith on/off the production of histograms "   ) ;
00067   // print the histograms at finalization
00068   this->declareProperty
00069     ( "HistoPrint"            ,
00070       m_histosPrint   = false ,
00071       "Switch on/off the printout of histograms at finalization"    )
00072     -> declareUpdateHandler ( &GaudiHistos<PBASE>::printHistoHandler, this ) ;
00073   // check for NaN/Finite
00074   this->declareProperty
00075     ( "HistoCheckForNaN"      ,
00076       m_checkForNaN   = true  ,
00077       "Swicth on/off the checks for NaN and Infinity for histogram fill" ) ;
00078   // for HBOOK persistency, 'true' can be useful
00079   this->declareProperty
00080     ( "HistoSplitDir"         ,
00081       m_splitHistoDir = false ,
00082       "Split long directory names into short pieces (suitable for HBOOK)" );
00083   // general OffSet for histogram ID
00084   this->declareProperty
00085     ( "HistoOffSet"           ,
00086       m_histoOffSet   =   0   ,
00087       "OffSet for automatically assigned histogram numerical identifiers " ) ;
00088   // top level histogram directory
00089   this->declareProperty
00090     ( "HistoTopDir"           ,
00091       m_histoTopDir   =   ""  ,
00092       "Top level histogram directory (take care that it ends with '/')" ) ;
00093   // histogram directory
00094   this->declareProperty
00095     ( "HistoDir"             ,
00096       m_histoDir      = this->name() ,
00097       "Histogram Directory" ) ;
00098   // control output level of histograms
00099   this->declareProperty ( "FullDetail"            , m_fullDetail    = false ) ;
00100   // monitor histograms
00101   this->declareProperty ( "MonitorHistograms"     , m_declareMoniHists = true ) ;
00102   // format for 1D-histograms printout
00103   this->declareProperty
00104     ( "FormatFor1DHistoTable" ,
00105       m_histo1DTableFormat   = Gaudi::Utils::Histos::Formats::format () ,
00106       "Format string for printout of 1D histograms"      ) ;
00107   // "short" format for 1D-histograms printout
00108   this->declareProperty
00109     ( "ShortFormatFor1DHistoTable" ,
00110       m_histo1DTableFormatShort   = " | %1$-25.25s %2%"  ,
00111       "Format string for printout of 1D histograms"      ) ;
00112   // the header for 1D-histogram tabkle
00113   this->declareProperty
00114     ( "HeaderFor1DHistoTable" ,
00115       m_histo1DTableHeader   = Gaudi::Utils::Histos::Formats::header () ,
00116       "The table header for printout of 1D histograms "  ) ;
00117   this->declareProperty
00118     ( "UseSequencialNumericAutoIDs", m_useNumericAutoIDs = false,
00119       "Flag to allow users to switch back to the old style of creating numerical automatic IDs" );
00120   m_idReplaceInfo.clear();
00121   m_idReplaceInfo["/"] = "=SLASH=";
00122   this->declareProperty
00123     ( "AutoStringIDPurgeMap", m_idReplaceInfo,
00124       "Map of strings to search and replace when using the title as the basis of automatically generated literal IDs" );
00125 }

template<class PBASE>
void GaudiHistos< PBASE >::monitorHisto ( const AIDA::IBaseHistogram *  hist,
const HistoID ID 
) const [inline, private]

Declare a histogram to the monitor service.

Uses the histogram ID as the 'name' sent to the monitor service and the histogram title as the long description

Definition at line 463 of file GaudiHistos.icpp.

00465 {
00466   if ( hist && m_declareMoniHists )
00467   {
00468     if ( this->msgLevel(MSG::DEBUG) )
00469     {
00470       this->debug() << "Monitoring histogram '"
00471                     << ID.idAsString() << "' desc = '"
00472                     << Gaudi::Utils::Histos::htitle(hist) << "'" << endmsg;
00473     }
00474     this->declareInfo ( histoPath()+"/"+ID.idAsString() ,
00475                         hist            ,
00476                         Gaudi::Utils::Histos::htitle(hist) ) ;
00477   }
00478 }

template<class PBASE>
void GaudiHistos< PBASE >::newHistoID ( const std::string title,
HistoID ID 
) const [inline, private]

Create a new histogram ID using the given title.

Parameters:
[in] title Histogram title
[out] ID The ID to use for the new histogram

Definition at line 603 of file GaudiHistos.icpp.

00605 {
00606   if ( useNumericAutoIDs() || title.empty() )
00607   {
00608     if ( !useNumericAutoIDs() )
00609     {
00610       this -> Warning( "Cannot generate automatic literal ID from an empty title ! Using numeric ID instead for histogram ID",
00611                        StatusCode::SUCCESS );
00612     }
00613     // propose the histogram ID (always numeric)
00614     ID = HistoID( totalNumberOfHistos() + 1 + histoOffSet() );
00615     // adjust the proposed ID
00616     while ( histoExists( ID ) ) { ID = HistoID( ID.numeric() + 1 ) ; }
00617   }
00618   else
00619   {
00620     // use the title to create a unique literal ID
00621     ID = HistoID( this->convertTitleToID(title) );
00622     // Just in case ...
00623     while ( histoExists( ID ) ) { ID = HistoID(ID.idAsString()+"_"); }
00624   }
00625 }

template<class PBASE>
void GaudiHistos< PBASE >::stringSearchReplace ( std::string title,
const std::string A,
const std::string B 
) const [inline, private]

Searches 'title' for all instancies of 'A' and replaces them with 'B'.

Definition at line 645 of file GaudiHistos.icpp.

00648 {
00649   std::string::size_type slash = title.find_first_of ( A ) ;
00650   while ( std::string::npos != slash )
00651   {
00652     title = title.substr(0,slash) + B + title.substr(slash+A.size());
00653     slash = title.find_first_of( A );
00654   }
00655 }

template<class PBASE>
std::string GaudiHistos< PBASE >::convertTitleToID ( const std::string title  )  const [inline, protected]

Create an ID string from a title string.

Definition at line 630 of file GaudiHistos.icpp.

00631 {
00632   // clean up the ID string for all unwanted characters
00633   std::string tmp_id = title;
00634   for ( std::map<std::string,std::string>::const_iterator i = m_idReplaceInfo.begin();
00635         i != m_idReplaceInfo.end(); ++i )
00636   {
00637     stringSearchReplace( tmp_id, i->first, i->second );
00638   }
00639   return tmp_id;
00640 }

template<class PBASE>
void GaudiHistos< PBASE >::printHistoHandler ( Property  )  [inline, private]

the handler for "HistoPrint" property

Definition at line 660 of file GaudiHistos.icpp.

00661 {
00662   // no action if not yet initialized 
00663   if ( this -> FSMState() < Gaudi::StateMachine::INITIALIZED ) { return ; }
00664   if ( this -> histosPrint() ) { this -> printHistos ( MSG::ALWAYS ) ; } 
00665 }


Member Data Documentation

template<class PBASE>
bool GaudiHistos< PBASE >::m_produceHistos [private]

flag to SWITCH ON/SWITCH OFF the histogrm fillling and booking

Definition at line 3273 of file GaudiHistos.h.

template<class PBASE>
bool GaudiHistos< PBASE >::m_fullDetail [private]

flag to control output level of histograms

Definition at line 3275 of file GaudiHistos.h.

template<class PBASE>
bool GaudiHistos< PBASE >::m_checkForNaN [private]

flag to control check for Nan/Finite while filling the histogram

Definition at line 3277 of file GaudiHistos.h.

template<class PBASE>
bool GaudiHistos< PBASE >::m_splitHistoDir [private]

split histogram directory name (very useful for Hbook)

Definition at line 3279 of file GaudiHistos.h.

template<class PBASE>
HistoID::NumericID GaudiHistos< PBASE >::m_histoOffSet [private]

general histogram ID offset (only works for automatically assigned numeric IDs)

Definition at line 3281 of file GaudiHistos.h.

template<class PBASE>
std::string GaudiHistos< PBASE >::m_histoTopDir [private]

histogram top level directory

Definition at line 3283 of file GaudiHistos.h.

template<class PBASE>
std::string GaudiHistos< PBASE >::m_histoDir [private]

histogram directory

Definition at line 3285 of file GaudiHistos.h.

template<class PBASE>
bool GaudiHistos< PBASE >::m_histosPrint [private]

print histograms at finalization

Definition at line 3287 of file GaudiHistos.h.

template<class PBASE>
bool GaudiHistos< PBASE >::m_declareMoniHists [private]

Flag to turn on/off the registration of histograms to the Monitoring Service.

Definition at line 3289 of file GaudiHistos.h.

template<class PBASE>
Histo1DMapTitle GaudiHistos< PBASE >::m_histo1DMapTitle [mutable, private]

the actual storage/access of 1D histograms by unique title

Definition at line 3292 of file GaudiHistos.h.

template<class PBASE>
Histo1DMapNumID GaudiHistos< PBASE >::m_histo1DMapNumID [mutable, private]

the actual storage/access of 1D histograms by unique numeric ID

Definition at line 3294 of file GaudiHistos.h.

template<class PBASE>
Histo1DMapLitID GaudiHistos< PBASE >::m_histo1DMapLitID [mutable, private]

the actual storage/access of 1D histograms by unique literal ID

Definition at line 3296 of file GaudiHistos.h.

template<class PBASE>
Histo2DMapTitle GaudiHistos< PBASE >::m_histo2DMapTitle [mutable, private]

the actual storage/access of 2D histograms by unique title

Definition at line 3299 of file GaudiHistos.h.

template<class PBASE>
Histo2DMapNumID GaudiHistos< PBASE >::m_histo2DMapNumID [mutable, private]

the actual storage/access of 2D histograms by unique numeric ID

Definition at line 3301 of file GaudiHistos.h.

template<class PBASE>
Histo2DMapLitID GaudiHistos< PBASE >::m_histo2DMapLitID [mutable, private]

the actual storage/access of 2D histograms by unique literal ID

Definition at line 3303 of file GaudiHistos.h.

template<class PBASE>
Histo3DMapTitle GaudiHistos< PBASE >::m_histo3DMapTitle [mutable, private]

the actual storage/access of 3D histograms by unique title

Definition at line 3306 of file GaudiHistos.h.

template<class PBASE>
Histo3DMapNumID GaudiHistos< PBASE >::m_histo3DMapNumID [mutable, private]

the actual storage/access of 3D histograms by unique numeric ID

Definition at line 3308 of file GaudiHistos.h.

template<class PBASE>
Histo3DMapLitID GaudiHistos< PBASE >::m_histo3DMapLitID [mutable, private]

the actual storage/access of 3D histograms by unique literal ID

Definition at line 3310 of file GaudiHistos.h.

template<class PBASE>
Profile1DMapTitle GaudiHistos< PBASE >::m_profile1DMapTitle [mutable, private]

the actual storage/access of 1D profile histograms by unique title

Definition at line 3313 of file GaudiHistos.h.

template<class PBASE>
Profile1DMapNumID GaudiHistos< PBASE >::m_profile1DMapNumID [mutable, private]

the actual storage/access of 1D profile histograms by unique numeric ID

Definition at line 3315 of file GaudiHistos.h.

template<class PBASE>
Profile1DMapLitID GaudiHistos< PBASE >::m_profile1DMapLitID [mutable, private]

the actual storage/access of 1D profile histograms by unique literal ID

Definition at line 3317 of file GaudiHistos.h.

template<class PBASE>
Profile2DMapTitle GaudiHistos< PBASE >::m_profile2DMapTitle [mutable, private]

the actual storage/access of 2D profile histograms by unique title

Definition at line 3320 of file GaudiHistos.h.

template<class PBASE>
Profile2DMapNumID GaudiHistos< PBASE >::m_profile2DMapNumID [mutable, private]

the actual storage/access of 2D profile histograms by unique numeric ID

Definition at line 3322 of file GaudiHistos.h.

template<class PBASE>
Profile2DMapLitID GaudiHistos< PBASE >::m_profile2DMapLitID [mutable, private]

the actual storage/access of 2D profile histograms by unique literal ID

Definition at line 3324 of file GaudiHistos.h.

template<class PBASE>
std::string GaudiHistos< PBASE >::m_histo1DTableFormat [private]

format for printout of 1D-histograms as a table

Definition at line 3327 of file GaudiHistos.h.

template<class PBASE>
std::string GaudiHistos< PBASE >::m_histo1DTableFormatShort [private]

format for printout of 1D-histograms as a table

Definition at line 3329 of file GaudiHistos.h.

template<class PBASE>
std::string GaudiHistos< PBASE >::m_histo1DTableHeader [private]

the header for the table of 1-D historgrams

Definition at line 3331 of file GaudiHistos.h.

template<class PBASE>
bool GaudiHistos< PBASE >::m_useNumericAutoIDs [private]

Flag to switch back to the old style sequencial numerical automatic IDs.

Definition at line 3333 of file GaudiHistos.h.

template<class PBASE>
std::map<std::string,std::string> GaudiHistos< PBASE >::m_idReplaceInfo [private]

Map of strings to search and replace when using the title as the basis of automatically generated literal IDs.

Definition at line 3337 of file GaudiHistos.h.


The documentation for this class was generated from the following files:

Generated at Mon Sep 7 18:18:21 2009 for Gaudi Framework, version v21r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004