| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
GaudiHistos< PBASE > Class Template Reference

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

`#include <GaudiAlg/GaudiHistos.h>`

Inheritance diagram for GaudiHistos< PBASE >:
[legend]
Collaboration diagram for GaudiHistos< PBASE >:
[legend]

## Public Types
typedef GaudiAlg::HistoID | HistoID
| the actual type for histogram identifier
typedef GaudiAlg::Histo1DMapID | Histo1DMapID
| the actual type for (ID)->(1D histogram) mapping
typedef GaudiAlg::Histo1DMapTitle | Histo1DMapTitle
| the actual type for title->(1D histogram) mapping
typedef GaudiAlg::Histo2DMapID | Histo2DMapID
| the actual type for (ID)->(2D histogram) mapping
typedef GaudiAlg::Histo2DMapTitle | Histo2DMapTitle
| the actual type for title->(2D histogram) mapping
typedef GaudiAlg::Histo3DMapID | Histo3DMapID
| the actual type for (ID)->(3D histogram) mapping
typedef GaudiAlg::Histo3DMapTitle | Histo3DMapTitle
| the actual type for title->(3D histogram) mapping
typedef GaudiAlg::Profile1DMapID | Profile1DMapID
| the actual type for (ID)->(1D profile histogram) mapping
typedef GaudiAlg::Profile1DMapTitle | Profile1DMapTitle
| the actual type for title->(1D profile histogram) mapping
typedef GaudiAlg::Profile2DMapID | Profile2DMapID
| the actual type for (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::string & | histoTopDir () const
| get top-level histogram directory (property "HistoTopDir")
const std::string & | histoDir () const
| get histogram directory (property "HistoDir")
std::string | histoPath () const
| get the constructed histogram path
bool | histosPrint () const
| print histograms at finalization ?
bool | histoCountersPrint () const
| print histogram counters 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 Histo1DMapTitle & | histo1DMapTitle () const
| get access to the map of all 1D histograms indexed via their title
const Histo1DMapID & | histo1DMapID () const
| get access to the map of all 1D histograms index via ID
const Histo2DMapTitle & | histo2DMapTitle () const
| get access to the map of all 2D histograms indexed via their title
const Histo2DMapID & | histo2DMapID () const
| get access to the map of 2D histograms index via ID
const Histo3DMapTitle & | histo3DMapTitle () const
| get access to the map of all 3D histograms indexed via their title
const Histo3DMapID & | histo3DMapID () const
| get access to the map of all 3D histograms index via a ID
const Profile1DMapTitle & | profile1DMapTitle () const
| get access to the map of all 1D profile histograms indexed via their title
const Profile1DMapID & | profile1DMapID () const
| get access to the map of 1D profile histograms index via a ID
const Profile2DMapTitle & | profile2DMapTitle () const
| get access to the map of all 2D profile histograms indexed via their title
const Profile2DMapID & | profile2DMapID () const
| get access to the map of 2D profile histograms index via a 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_histoCountersPrint
| print histogram counters 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
Histo1DMapID | m_histo1DMapID
| the actual storage/access of 1D histograms by unique ID
Histo2DMapTitle | m_histo2DMapTitle
| the actual storage/access of 2D histograms by unique title
Histo2DMapID | m_histo2DMapID
| the actual storage/access of 2D histograms by unique ID
Histo3DMapTitle | m_histo3DMapTitle
| the actual storage/access of 3D histograms by unique title
Histo3DMapID | m_histo3DMapID
| the actual storage/access of 3D histograms by unique ID
Profile1DMapTitle | m_profile1DMapTitle
| the actual storage/access of 1D profile histograms by unique title
Profile1DMapID | m_profile1DMapID
| the actual storage/access of 1D profile histograms by unique ID
Profile2DMapTitle | m_profile2DMapTitle
| the actual storage/access of 2D profile histograms by unique title
Profile2DMapID | m_profile2DMapID
| the actual storage/access of 2D profile histograms by unique 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.

## Detailed Description

### template<class PBASE>
class GaudiHistos< PBASE >

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

Author
  Chris Jones Chris.nosp@m.toph.nosp@m.er.Ro.nosp@m.b.Jo.nosp@m.nes@c.nosp@m.ern..nosp@m.ch
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru

Date
  2005-08-08

Definition at line 50 of file GaudiHistos.h.

## Member Typedef Documentation

template<class PBASE>

typedef GaudiAlg::Histo1DMapID GaudiHistos< PBASE >::Histo1DMapID

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

Definition at line 58 of file GaudiHistos.h.

template<class PBASE>

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

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

Definition at line 60 of file GaudiHistos.h.

template<class PBASE>

typedef GaudiAlg::Histo2DMapID GaudiHistos< PBASE >::Histo2DMapID

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

Definition at line 63 of file GaudiHistos.h.

template<class PBASE>

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

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

Definition at line 65 of file GaudiHistos.h.

template<class PBASE>

typedef GaudiAlg::Histo3DMapID GaudiHistos< PBASE >::Histo3DMapID

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

Definition at line 68 of file GaudiHistos.h.

template<class PBASE>

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

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

Definition at line 70 of file GaudiHistos.h.

template<class PBASE>

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

Edges for variable binning.

Definition at line 83 of file GaudiHistos.h.

template<class PBASE>

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

the actual type for histogram identifier

Definition at line 55 of file GaudiHistos.h.

template<class PBASE>

typedef GaudiAlg::Profile1DMapID GaudiHistos< PBASE >::Profile1DMapID

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

Definition at line 73 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 75 of file GaudiHistos.h.

template<class PBASE>

typedef GaudiAlg::Profile2DMapID GaudiHistos< PBASE >::Profile2DMapID

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

Definition at line 78 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 80 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>

virtual GaudiHistos< PBASE >::~GaudiHistos | ( |  | ) |
| inline virtual

Destructor.

Definition at line 3028 of file GaudiHistos.h.

{}

## Member Function Documentation

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 2031 of file GaudiHistos.h.

{
return book1D( title, low, high, bins );
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::book | ( | const Gaudi::Histo1DDef & | hdef | ) | const

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 186 of file GaudiHistos_1DFixedBinning.icpp.

{
return book1D ( hdef.title () ,
hdef.lowEdge () ,
hdef.highEdge () ,
hdef.bins () ) ;
}
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 2081 of file GaudiHistos.h.

{
return book1D( ID, title, low, high, bins );
}
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 199 of file GaudiHistos_1DFixedBinning.icpp.

{
return book1D ( ID ,
hdef.title () ,
hdef.lowEdge () ,
hdef.highEdge () ,
hdef.bins () ) ;
}
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

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

Definition at line 8 of file GaudiHistos_1DFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IHistogram1D* hist = histo1D ( title ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Create a new histogram and return
return this -> book1D ( ID, title, low, high, bins );
}
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

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

Definition at line 33 of file GaudiHistos_1DFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if ( ID.undefined() )
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IHistogram1D* hist = histo1D ( ID ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ? "Unnamed 1D Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> book ( histoPath() ,
ID.numericID() ,
htitle ,
bins ,
low ,
high ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> book ( histoPath()+"/"+
ID.literalID() ,
htitle ,
bins ,
low ,
high ) ;
}
// check OK
if( NULL == hist )
{ this->Error( "IHistogram1D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_histo1DMapID [ ID ] = hist ;
m_histo1DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// Printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 1D Histogram : ID='" << ID
<< "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::book1D | ( | const std::string & | title,
|  | const HistoBinEdges & | edges
| ) |  | const

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IHistogram1D* hist = histo1D ( title ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Create a new histogram and return
return this -> book1D ( ID, title, edges );
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::book1D | ( | const HistoID & | ID,
|  | const std::string & | title,
|  | const HistoBinEdges & | edges
| ) |  | const

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 31 of file GaudiHistos_1DVariableBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IHistogram1D* hist = histo1D ( ID ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ? "Unnamed 1D Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> book ( histoPath() ,
ID.numericID() ,
htitle ,
edges ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> book ( histoPath()+"/"+
ID.literalID() ,
htitle ,
edges ) ;
}
// check OK
if( NULL == hist )
{ this->Error( "IHistogram1D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_histo1DMapID [ ID ] = hist ;
m_histo1DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// Printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 1D Histogram : ID='" << ID
<< "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
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

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

Definition at line 8 of file GaudiHistos_2DFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IHistogram2D* hist = histo2D ( title ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Create a new histogram and return
return this -> book2D ( ID, title, lowX, highX, binsX, lowY, highY, binsY );
}
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

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

Definition at line 36 of file GaudiHistos_2DFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IHistogram2D* hist = histo2D( ID ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ? "Unnamed 2D Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> book ( histoPath() ,
ID.numericID() ,
htitle ,
binsX ,
lowX ,
highX ,
binsY ,
lowY ,
highY ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> book ( histoPath()+"/"+
ID.literalID() ,
htitle ,
binsX ,
lowX ,
highX ,
binsY ,
lowY ,
highY ) ;
}
// Check OK
if( NULL == hist )
{ this->Error( "IHistogram2D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_histo2DMapID [ ID ] = hist ;
m_histo2DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist) , ID );
// Printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 2D Histogram : ID='"
<< ID << "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
// return
return hist ;
}
template<class PBASE >

AIDA::IHistogram2D * GaudiHistos< PBASE >::book2D | ( | const std::string & | title,
|  | const HistoBinEdges & | edgesX,
|  | const HistoBinEdges & | edgesY
| ) |  | const

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IHistogram2D * hist = histo2D ( title ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Create a new histogram and return
return this -> book2D ( ID, title, edgesX, edgesY );
}
template<class PBASE >

AIDA::IHistogram2D * GaudiHistos< PBASE >::book2D | ( | const HistoID & | ID,
|  | const std::string & | title,
|  | const HistoBinEdges & | edgesX,
|  | const HistoBinEdges & | edgesY
| ) |  | const

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 32 of file GaudiHistos_2DVariableBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IHistogram2D * hist = histo2D ( ID ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ? "Unnamed 2D Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> book ( histoPath() ,
ID.numericID() ,
htitle ,
edgesX ,
edgesY ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> book ( histoPath()+"/"+
ID.literalID() ,
htitle ,
edgesX ,
edgesY ) ;
}
// check OK
if( NULL == hist )
{ this->Error( "IHistogram2D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_histo2DMapID [ ID ] = hist ;
m_histo2DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// Printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 2D Histogram : ID='" << ID
<< "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
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

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

Definition at line 8 of file GaudiHistos_3DFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IHistogram3D* hist = histo3D ( title ) ;
// histogram is already booked
if( 0 != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Create a new histogram and return
return this -> book3D ( ID, title,
lowX, highX, binsX,
lowY, highY, binsY,
lowZ, highZ, binsZ );
}
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

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

Definition at line 42 of file GaudiHistos_3DFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IHistogram3D* hist = histo3D( ID ) ;
// histogram is already booked
if( 0 != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ? "Unnamed 3D Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> book ( histoPath() ,
ID.numericID() ,
htitle ,
binsX ,
lowX ,
highX ,
binsY ,
lowY ,
highY ,
binsZ ,
lowZ ,
highZ ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> book ( histoPath()+"/"+
ID.literalID() ,
htitle ,
binsX ,
lowX ,
highX ,
binsY ,
lowY ,
highY ,
binsZ ,
lowZ ,
highZ ) ;
}
// Check OK
if( 0 == hist )
{ this->Error( "IHistogram3D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return 0; } // RETURN !!
// add histogram into histogram storages
m_histo3DMapID [ ID ] = hist ;
m_histo3DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// Printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 3D Histogram : ID='"
<< ID << "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
template<class PBASE >

AIDA::IHistogram3D * GaudiHistos< PBASE >::book3D | ( | const std::string & | title,
|  | const HistoBinEdges & | edgesX,
|  | const HistoBinEdges & | edgesY,
|  | const HistoBinEdges & | edgesZ
| ) |  | const

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IHistogram3D * hist = histo3D ( title ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Create a new histogram and return
return this -> book3D ( ID, title, edgesX, edgesY, edgesZ );
}
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

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 33 of file GaudiHistos_3DVariableBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IHistogram3D * hist = histo3D ( ID ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ? "Unnamed 3D Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> book ( histoPath() ,
ID.numericID() ,
htitle ,
edgesX ,
edgesY ,
edgesZ ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> book ( histoPath()+"/"+
ID.literalID() ,
htitle ,
edgesX ,
edgesY ,
edgesZ ) ;
}
// check OK
if( NULL == hist )
{ this->Error( "IHistogram3D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_histo3DMapID [ ID ] = hist ;
m_histo3DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// Printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 3D Histogram : ID='" << ID
<< "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
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

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IProfile1D* hist = profile1D ( title ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Book the histo and return
return this -> bookProfile1D ( ID, title, low, high, bins , opt , lowY , highY );
}
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

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 34 of file GaudiHistos_1DProfFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IProfile1D* hist = profile1D ( ID ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ?
"Unnamed 1D Profile Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> bookProf ( histoPath() ,
ID.numericID() ,
htitle ,
bins ,
low ,
high ,
lowY ,
highY ,
opt ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
ID.literalID() ,
htitle ,
bins ,
low ,
high ,
lowY ,
highY ,
opt ) ;
}
// test ok
if( NULL == hist )
{ this->Error( "IProfile1D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_profile1DMapID [ ID ] = hist ;
m_profile1DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 1D Profile Histogram : ID='"
<< ID << "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
template<class PBASE >

AIDA::IProfile1D * GaudiHistos< PBASE >::bookProfile1D | ( | const std::string & | title,
|  | const HistoBinEdges & | edges
| ) |  | const

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IProfile1D* hist = profile1D ( title ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// Book the histo and return
return this -> bookProfile1D ( ID, title, edges );
}
template<class PBASE >

AIDA::IProfile1D * GaudiHistos< PBASE >::bookProfile1D | ( | const HistoID & | ID,
|  | const std::string & | title,
|  | const HistoBinEdges & | edges
| ) |  | const

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 29 of file GaudiHistos_1DProfVariableBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IProfile1D* hist = profile1D ( ID ) ;
// histogram is already booked
if ( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ?
"Unnamed 1D Profile Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> bookProf ( histoPath() ,
ID.numericID() ,
htitle ,
edges ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
ID.literalID() ,
htitle ,
edges ) ;
}
// test ok
if( NULL == hist )
{ this->Error( "IProfile1D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_profile1DMapID [ ID ] = hist ;
m_profile1DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 1D Profile Histogram : ID='"
<< ID << "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
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

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IProfile2D* hist = profile2D ( title ) ;
// histogram is already booked
if( 0 != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// book histogram and return
return this -> bookProfile2D ( ID, title, lowX, highX, binsX, lowY, highY, binsY );
}
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

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 34 of file GaudiHistos_2DProfFixedBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IProfile2D* hist = profile2D ( ID ) ;
// histogram is already booked
if( 0 != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ?
"Unnamed 2D Profile Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> bookProf ( histoPath() ,
ID.numericID() ,
htitle ,
binsX ,
lowX ,
highX ,
binsY ,
lowY ,
highY ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
ID.literalID() ,
htitle ,
binsX ,
lowX ,
highX ,
binsY ,
lowY ,
highY ) ;
}
// test OK
if( 0 == hist )
{ this->Error( "IProfile2D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return 0; } // RETURN !!
// add histogram into histogram storages
m_profile2DMapID [ ID ] = hist ;
m_profile2DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 2D Profile Histogram : ID='" << ID
<< "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
template<class PBASE >

AIDA::IProfile2D * GaudiHistos< PBASE >::bookProfile2D | ( | const std::string & | title,
|  | const HistoBinEdges & | edgesX,
|  | const HistoBinEdges & | edgesY
| ) |  | const

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.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// exist?
AIDA::IProfile2D* hist = profile2D ( title ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// propose the histogram ID
HistoID ID;
newHistoID( title, ID );
// book histogram and return
return this -> bookProfile2D ( ID, title, edgesX, edgesY );
}
template<class PBASE >

AIDA::IProfile2D * GaudiHistos< PBASE >::bookProfile2D | ( | const HistoID & | ID,
|  | const std::string & | title,
|  | const HistoBinEdges & | edgesX,
|  | const HistoBinEdges & | edgesY
| ) |  | const

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 30 of file GaudiHistos_2DProfVariableBinning.icpp.

{
//
if ( !produceHistos() ) { return 0 ; } // RETURN
//
// Check ID
if (ID.undefined())
{
this->Error("Undefined Histogram ID : Title='"+title+"'");
return NULL;
}
// exist?
AIDA::IProfile2D* hist = profile2D ( ID ) ;
// histogram is already booked
if( NULL != hist ) { return hist ; } // RETURN !!
// Histogram title
const std::string & htitle =
( title.empty() ?
"Unnamed 2D Profile Histogram ID="+ID.idAsString() : title ) ;
// book the histogram
if ( ID.numeric() )
{
hist = this->histoSvc() -> bookProf ( histoPath() ,
ID.numericID() ,
htitle ,
edgesX ,
edgesY ) ;
}
else if ( ID.literal() )
{
hist = this->histoSvc() -> bookProf ( histoPath()+"/"+
ID.literalID() ,
htitle ,
edgesX ,
edgesY ) ;
}
// test OK
if( NULL == hist )
{ this->Error( "IProfile2D* points to NULL! ID='" + ID.idAsString() +
"' title='"+htitle+"'" ) ; return NULL; } // RETURN !!
// add histogram into histogram storages
m_profile2DMapID [ ID ] = hist ;
m_profile2DMapTitle [ title ] = hist ;
// Declare to monitoring service
monitorHisto( Gaudi::Utils::Histos::toBase ( hist ) , ID );
// printout and return
if ( this->msgLevel(MSG::DEBUG) )
{ this->debug() << "Booked 2D Profile Histogram : ID='" << ID
<< "' Path=" << histoPath()
<< " Title='"
<< Gaudi::Utils::Histos::htitle ( hist )
<< "'" << endmsg; }
return hist ;
}
template<class PBASE>

bool GaudiHistos< PBASE >::checkForNaN | ( |  | ) | const
| inline

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

Definition at line 2697 of file GaudiHistos.h.

{ return m_checkForNaN ; }
template<class PBASE >

std::string GaudiHistos< PBASE >::convertTitleToID | ( | const std::string & | title | ) | const
| protected

Create an ID string from a title string.

Definition at line 509 of file GaudiHistos.icpp.

{
// clean up the ID string for all unwanted characters
std::string tmp_id = title;
for ( std::map<std::string,std::string>::const_iterator i =
m_idReplaceInfo.begin() ; i != m_idReplaceInfo.end(); ++i )
{
stringSearchReplace( tmp_id, i->first, i->second );
}
return tmp_id;
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::fill | ( | AIDA::IHistogram1D * | histo,
|  | const double | value,
|  | const double | weight,
|  | const std::string & | title = `""`
| ) |  | const

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

Definition at line 105 of file GaudiHistos_1DFixedBinning.icpp.

{
if ( 0 == histo ) { return 0 ; } // RETURN
//
if ( !checkForNaN() )
{ Gaudi::Utils::Histos::fill ( histo , value , weight ) ; }
else if ( lfin ( value ) && lfin ( weight ) )
{ Gaudi::Utils::Histos::fill ( histo , value , weight ) ; }
else if ( lnan ( value ) || lnan ( weight ) )
{
this -> Warning
("fill():: 'NaN' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
else
{
this -> Warning
("fill():: 'Infinite' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
// return
return histo ;
}
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

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

Definition at line 117 of file GaudiHistos_2DFixedBinning.icpp.

{
//
if ( NULL == histo ) { return 0 ; } // RETURN
//
if ( !checkForNaN() )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ) ; }
else if ( lfin ( valueX ) && lfin ( valueY ) && lfin ( weight ) )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ) ; }
else if ( lnan ( valueX ) || lnan ( valueY ) || lnan ( weight ) )
{
this -> Warning
("fill():: 'NaN' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
else
{
this -> Warning
("fill():: 'Infinite' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
// return
return histo ;
}
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

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

Definition at line 131 of file GaudiHistos_3DFixedBinning.icpp.

{
if ( 0 == histo ) { return 0 ; } // RETURN
//
if ( !checkForNaN() )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ) ; }
else if ( lfin ( valueX ) && lfin ( valueY ) &&
lfin ( valueZ ) && lfin ( weight ) )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ) ; }
else if ( lnan ( valueX ) || lnan ( valueY ) ||
lnan ( valueZ ) || lnan ( weight ) )
{
this -> Warning
("fill():: 'NaN' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
else
{
this -> Warning
("fill():: 'Infinite' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
// return
return histo ;
}
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

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 115 of file GaudiHistos_1DProfFixedBinning.icpp.

{
//
if ( 0 == histo ) { return 0 ; } // RETURN
//
if ( !checkForNaN() )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ); }
else if ( lfin ( valueX ) && lfin ( valueY ) && lfin ( weight ) )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , weight ); }
else if ( lnan ( valueX ) || lnan ( valueY ) || lnan ( weight ) )
{
this -> Warning
("fill():: 'NaN' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
else
{
this -> Warning
("fill():: 'Infinite' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
// return
return histo ;
}
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

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 114 of file GaudiHistos_2DProfFixedBinning.icpp.

{
if ( 0 == histo ) { return 0 ; } // RETURN
//
if ( !checkForNaN() )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ); }
else if ( lfin ( valueX ) && lfin ( valueY ) &&
lfin ( valueZ ) && lfin ( weight ) )
{ Gaudi::Utils::Histos::fill ( histo , valueX , valueY , valueZ , weight ); }
else if ( lnan ( valueX ) || lnan ( valueY ) ||
lnan ( valueZ ) || lnan ( weight ) )
{
this -> Warning
("fill():: 'NaN' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
else
{
this -> Warning
("fill():: 'Infinite' value is skipped from the histogram '"
+ Gaudi::Utils::Histos::htitle ( histo , title ) + "'" ) ;
}
// return
return histo ;
}
template<class PBASE >

StatusCode GaudiHistos< PBASE >::finalize | ( |  | ) |
| protected virtual

standard finalization method

Returns
  status code

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

Definition at line 178 of file GaudiHistos.icpp.

{
if ( produceHistos() )
{
// Count how many histos of each type
if ( (!noHistos()) && histoCountersPrint() )
{
const unsigned int n1D = histo1DMapID () . size () ;
const unsigned int n2D = histo2DMapID () . size () ;
const unsigned int n3D = histo3DMapID () . size () ;
const unsigned int n1DP = profile1DMapID () . size () ;
const unsigned int n2DP = profile2DMapID () . size () ;
const unsigned int total = n1D+n2D+n3D+n1DP+n2DP;
if ( total>0 )
{
this->always() << "Booked " << total << " Histogram(s) : ";
if ( n1D>0 ) this->always() << "1D=" << n1D << " ";
if ( n2D>0 ) this->always() << "2D=" << n2D << " ";
if ( n3D>0 ) this->always() << "3D=" << n3D << " ";
if ( n1DP>0 ) this->always() << "1DProf=" << n1DP << " ";
if ( n2DP>0 ) this->always() << "2DProf=" << n2DP << " ";
this->always() << endmsg;
}
}
// detailed printing
if ( histosPrint() ) { printHistos() ; }
}
// clear all maps
m_histo1DMapTitle . clear () ;
m_histo2DMapTitle . clear () ;
m_histo3DMapTitle . clear () ;
m_histo1DMapID . clear () ;
m_histo2DMapID . clear () ;
m_histo3DMapID . clear () ;
m_profile1DMapTitle . clear () ;
m_profile2DMapTitle . clear () ;
m_profile1DMapID . clear () ;
m_profile2DMapID . clear () ;
// finalize base class
return PBASE::finalize();
}
template<class PBASE>

bool GaudiHistos< PBASE >::fullDetail | ( |  | ) | const
| inline

get flag to control output level of histograms

Definition at line 2695 of file GaudiHistos.h.

{ return m_fullDetail ; }
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 2584 of file GaudiHistos.h.

{
return histo1D( title );
}
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 2639 of file GaudiHistos.h.

{
return histo1D( ID );
}
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

Definition at line 2571 of file GaudiHistos.h.

{
Histo1DMapTitle::const_iterator found = histo1DMapTitle().find( title ) ;
return ( histo1DMapTitle().end() == found ? 0 : found->second );
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::histo1D | ( | const HistoID & | ID | ) | const

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

Definition at line 399 of file GaudiHistos.icpp.

{
AIDA::IHistogram1D * h(NULL);
//
Histo1DMapID::const_iterator found = histo1DMapID().find( ID ) ;
//
h = ( histo1DMapID().end() == found ? NULL : found->second );
//
return h ;
}
template<class PBASE>

const Histo1DMapID& GaudiHistos< PBASE >::histo1DMapID | ( |  | ) | const
| inline

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

const Histo1DMap& histos = histo1DMap () ;
// iterate over the map!
for ( Histo1DMap::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 ;
}

Definition at line 2774 of file GaudiHistos.h.

{ return m_histo1DMapID ; }
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 2748 of file GaudiHistos.h.

{ return m_histo1DMapTitle; }
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

Definition at line 2592 of file GaudiHistos.h.

{
Histo2DMapTitle::const_iterator found = histo2DMapTitle().find( title ) ;
return ( histo2DMapTitle().end() == found ? 0 : found->second );
}
template<class PBASE >

AIDA::IHistogram2D * GaudiHistos< PBASE >::histo2D | ( | const HistoID & | ID | ) | const

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

Definition at line 413 of file GaudiHistos.icpp.

{
AIDA::IHistogram2D * h(NULL);
//
Histo2DMapID::const_iterator found = histo2DMapID().find( ID ) ;
//
h = ( histo2DMapID().end() == found ? NULL : found->second );
//
return h;
}
template<class PBASE>

const Histo2DMapID& GaudiHistos< PBASE >::histo2DMapID | ( |  | ) | const
| inline

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

const Histo2DMapID& histos = histo2DMapID () ;
// iterate over the map!
for ( Histo2DMapID::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 ;
}

Definition at line 2829 of file GaudiHistos.h.

{ return m_histo2DMapID ; }
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 2803 of file GaudiHistos.h.

{ return m_histo2DMapTitle ; }
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

Definition at line 2601 of file GaudiHistos.h.

{
Histo3DMapTitle::const_iterator found = histo3DMapTitle().find( title ) ;
return ( histo3DMapTitle().end() == found ? 0 : found->second );
}
template<class PBASE >

AIDA::IHistogram3D * GaudiHistos< PBASE >::histo3D | ( | const HistoID & | ID | ) | const

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

Definition at line 427 of file GaudiHistos.icpp.

{
AIDA::IHistogram3D * h(NULL);
//
Histo3DMapID::const_iterator found = histo3DMapID().find( ID ) ;
h = ( histo3DMapID().end() == found ? NULL : found->second );
//
return h;
}
template<class PBASE>

const Histo3DMapID& GaudiHistos< PBASE >::histo3DMapID | ( |  | ) | const
| inline

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

const Histo3DMapID& histos = histo3DMapID() ;
// iterate over the map!
for ( Histo3DMapID::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 ;
}

Definition at line 2884 of file GaudiHistos.h.

{ return m_histo3DMapID; }
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 2858 of file GaudiHistos.h.

{ return m_histo3DMapTitle ; }
template<class PBASE>

bool GaudiHistos< PBASE >::histoCountersPrint | ( |  | ) | const
| inline

print histogram counters at finalization ?

Definition at line 2711 of file GaudiHistos.h.

{ return m_histoCountersPrint ; }
template<class PBASE>

const std::string& GaudiHistos< PBASE >::histoDir | ( |  | ) | const
| inline

get histogram directory (property "HistoDir")

Definition at line 2705 of file GaudiHistos.h.

{ return m_histoDir ; }
template<class PBASE>

bool GaudiHistos< PBASE >::histoExists | ( | const std::string & | title | ) | const
| inline

check the existence AND validity of the histogram with given title

Definition at line 2667 of file GaudiHistos.h.

{
return
( 0 != histo ( title ) ||
0 != histo2D ( title ) ||
0 != histo3D ( title ) ||
0 != profile1D ( title ) ||
0 != profile2D ( title ) );
}
template<class PBASE>

bool GaudiHistos< PBASE >::histoExists | ( | const HistoID & | ID | ) | const
| inline

check the existence AND validity of the histogram with given title

Definition at line 2678 of file GaudiHistos.h.

{
return
( 0 != histo ( ID ) ||
0 != histo2D ( ID ) ||
0 != histo3D ( ID ) ||
0 != profile1D ( ID ) ||
0 != profile2D ( ID ) );
}
template<class PBASE>

HistoID::NumericID GaudiHistos< PBASE >::histoOffSet | ( |  | ) | const
| inline

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

Definition at line 2701 of file GaudiHistos.h.

{ return m_histoOffSet ; }
template<class PBASE >

std::string GaudiHistos< PBASE >::histoPath | ( |  | ) | const

get the constructed histogram path

Definition at line 550 of file GaudiHistos.icpp.

{
const std::string path = histoTopDir() + histoDir();
return ( splitHistoDir() ? dirHbookName(path) : path );
}
template<class PBASE>

bool GaudiHistos< PBASE >::histosPrint | ( |  | ) | const
| inline

print histograms at finalization ?

Definition at line 2709 of file GaudiHistos.h.

{ return m_histosPrint ; }
template<class PBASE>

const std::string& GaudiHistos< PBASE >::histoTopDir | ( |  | ) | const
| inline

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

Definition at line 2703 of file GaudiHistos.h.

{ return m_histoTopDir ; }
template<class PBASE >

void GaudiHistos< PBASE >::initGaudiHistosConstructor | ( |  | ) |
| private

Constructor initialisation and job options.

Definition at line 56 of file GaudiHistos.icpp.

{
// SWITCH ON/OFF the histograms
this->declareProperty
( "HistoProduce" ,
m_produceHistos = true ,
"Switch on/off the production of histograms" ) ;
// print the histograms at finalization
this->declareProperty
( "HistoPrint" ,
m_histosPrint = false ,
"Switch on/off the printout of histograms at finalization" )
-> declareUpdateHandler ( &GaudiHistos<PBASE>::printHistoHandler, this ) ;
this->declareProperty
( "HistoCountersPrint" ,
m_histoCountersPrint = true ,
"Switch on/off the printout of histogram counters at finalization" ) ;
// check for NaN/Finite
this->declareProperty
( "HistoCheckForNaN" ,
m_checkForNaN = true ,
"Switch on/off the checks for NaN and Infinity for histogram fill" ) ;
// for HBOOK persistency, 'true' can be useful
this->declareProperty
( "HistoSplitDir" ,
m_splitHistoDir = false ,
"Split long directory names into short pieces (suitable for HBOOK)" );
// general OffSet for histogram ID
this->declareProperty
( "HistoOffSet" ,
m_histoOffSet = 0 ,
"OffSet for automatically assigned histogram numerical identifiers " ) ;
// top level histogram directory
this->declareProperty
( "HistoTopDir" ,
m_histoTopDir = "" ,
"Top level histogram directory (take care that it ends with '/')" ) ;
// histogram directory
this->declareProperty
( "HistoDir" ,
m_histoDir = this->name() ,
"Histogram Directory" ) ;
// control output level of histograms
this->declareProperty ( "FullDetail" , m_fullDetail = false ) ;
// monitor histograms
this->declareProperty ( "MonitorHistograms" , m_declareMoniHists = true ) ;
// format for 1D-histograms printout
this->declareProperty
( "FormatFor1DHistoTable" ,
m_histo1DTableFormat = Gaudi::Utils::Histos::Formats::format () ,
"Format string for printout of 1D histograms" ) ;
// "short" format for 1D-histograms printout
this->declareProperty
( "ShortFormatFor1DHistoTable" ,
m_histo1DTableFormatShort = " | %1$-25.25s %2%" ,
"Format string for printout of 1D histograms" ) ;
// the header for 1D-histogram table
this->declareProperty
( "HeaderFor1DHistoTable" ,
m_histo1DTableHeader = Gaudi::Utils::Histos::Formats::header () ,
"The table header for printout of 1D histograms " ) ;
this->declareProperty
( "UseSequencialNumericAutoIDs", m_useNumericAutoIDs = false,
"Flag to allow users to switch back to the old style of creating numerical automatic IDs" );
m_idReplaceInfo.clear();
m_idReplaceInfo["/"] = "=SLASH=";
this->declareProperty
( "AutoStringIDPurgeMap", m_idReplaceInfo,
"Map of strings to search and replace when using the title as the basis of automatically generated literal IDs" );
}
template<class PBASE >

StatusCode GaudiHistos< PBASE >::initialize | ( |  | ) |
| protected virtual

standard initialization method

Returns
  status code

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

Definition at line 136 of file GaudiHistos.icpp.

{
// initialize base class
const StatusCode sc = PBASE::initialize();
if ( sc.isFailure() ) return sc;
// produce histograms?
if ( !produceHistos() )
{
this->debug() << "Histogram production is switched OFF" << endmsg;
return sc;
}
// check the validity of histogram service
if ( this->histoSvc() == NULL )
{ return this->Error("initialize():: IHistogramSvc* is invalid"); }
// Warn if the user has decided to use numerical automatic IDs
if ( useNumericAutoIDs() )
{
this ->
Warning( "Using numerical automatic IDs. These are not guaranteed to be totally deterministic. Use with care...",
StatusCode::SUCCESS ).ignore();
}
// Finally, print the location histogram will be written to
this->Print
( "The histogram path is set to be '" + histoPath() + "'",
StatusCode( StatusCode::SUCCESS, true ) , MSG::DEBUG ).ignore();
return sc;
}
template<class PBASE >

void GaudiHistos< PBASE >::monitorHisto | ( | const AIDA::IBaseHistogram * | hist,
|  | const HistoID & | ID
| ) |  | const
| 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 379 of file GaudiHistos.icpp.

{
if ( hist && m_declareMoniHists )
{
if ( this->msgLevel(MSG::DEBUG) )
{
this->debug() << "Monitoring histogram '"
<< ID.idAsString() << "' desc = '"
<< Gaudi::Utils::Histos::htitle(hist) << "'" << endmsg;
}
this->declareInfo ( histoPath()+"/"+ID.idAsString() ,
hist ,
Gaudi::Utils::Histos::htitle(hist) ) ;
}
}
template<class PBASE >

void GaudiHistos< PBASE >::newHistoID | ( | const std::string & | title,
|  | HistoID & | ID
| ) |  | const
| 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 482 of file GaudiHistos.icpp.

{
if ( useNumericAutoIDs() || title.empty() )
{
if ( !useNumericAutoIDs() )
{
this -> Warning( "Cannot generate automatic literal ID from an empty title ! Using numeric ID instead for histogram ID",
StatusCode::SUCCESS );
}
// propose the histogram ID (always numeric)
ID = HistoID( totalNumberOfHistos() + 1 + histoOffSet() );
// adjust the proposed ID
while ( histoExists( ID ) ) { ID = HistoID ( ID.numeric() + 1 ) ; }
}
else
{
// use the title to create a unique literal ID
ID = HistoID( this->convertTitleToID(title) );
// Just in case ...
while ( histoExists( ID ) ) { ID = HistoID(ID.idAsString()+"_"); }
}
}
template<class PBASE >

bool GaudiHistos< PBASE >::noHistos | ( |  | ) | const
| private

Check if all histogram maps are empty.

Definition at line 361 of file GaudiHistos.icpp.

{
return ( histo1DMapTitle () . empty() &&
histo2DMapTitle () . empty() &&
histo3DMapTitle () . empty() &&
profile1DMapTitle () . empty() &&
profile2DMapTitle () . empty() &&
histo1DMapID () . empty() &&
histo2DMapID () . empty() &&
histo3DMapID () . empty() &&
profile1DMapID () . empty() &&
profile2DMapID () . empty() );
}
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 154 of file GaudiHistos.h.

{
return plot1D ( value, title, low, high, bins, weight );
}
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 204 of file GaudiHistos.h.

{
return plot1D ( value, hdef, weight );
}
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 300 of file GaudiHistos.h.

{
return plot1D ( value, ID, title, low, high, bins, weight );
}
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 354 of file GaudiHistos.h.

{
return plot1D ( value, ID, hdef, weight );
}
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 426 of file GaudiHistos.h.

{
AIDA::IHistogram1D* h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( title ) ;
if ( 0 == h ) { h = book1D ( title , low , high , bins ); }
// fill histogram
while( first != last && 0 != h )
{ h = fill ( h , func( *first ) , 1.0 , title ) ; ++first ; }
}
return h ;
}
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 504 of file GaudiHistos.h.

{
AIDA::IHistogram1D* h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( ID ) ;
if ( 0 == h ) { h = book1D ( ID , title , low , high , bins ); }
// fill histogram
while( first != last && 0 != h )
{ h = fill( h , func( *first ) , 1.0 , title ) ; ++first ; }
}
return h;
}
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 596 of file GaudiHistos.h.

{
AIDA::IHistogram1D* h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( title ) ;
if ( 0 == h ) { h = book1D ( title , low , high , bins ); }
// fill histogram
while ( first != last && 0 != h )
{ h = fill ( h ,
func ( *first ) ,
weight ( *first ) , title ) ; ++first ; }
}
return h;
}
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 688 of file GaudiHistos.h.

{
AIDA::IHistogram1D* h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( ID ) ;
if ( 0 == h ) { h = book1D ( ID , title , low , high , bins ); }
// fill histogram
while( first != last && 0 != h )
{ h = fill ( h ,
func ( *first ) ,
weight ( *first ) , title ) ; ++first ; }
}
return h ;
}
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

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

Definition at line 137 of file GaudiHistos_1DFixedBinning.icpp.

{
AIDA::IHistogram1D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( title ) ;
if ( NULL == h ) { h = book1D ( title , low , high , bins ) ; }
// fill the histogram
h = fill ( h , value , weight , title );
}
return h;
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::plot1D | ( | const double | value,
|  | const Gaudi::Histo1DDef & | hdef,
|  | const double | weight = `1.0`
| ) |  | const

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 214 of file GaudiHistos_1DFixedBinning.icpp.

{
return plot1D
( value ,
hdef.title() , hdef.lowEdge() , hdef.highEdge() , hdef.bins() ,
weight ) ;
}
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

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

Definition at line 161 of file GaudiHistos_1DFixedBinning.icpp.

{
AIDA::IHistogram1D* h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( ID ) ;
if ( NULL == h ) { h = book1D ( ID , title , low , high , bins ) ; }
// fill
h = fill ( h , value , weight , title ) ;
}
return h;
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::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)

// 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 229 of file GaudiHistos_1DFixedBinning.icpp.

{
return plot1D
( value , ID ,
hdef.title() , hdef.lowEdge() , hdef.highEdge() , hdef.bins() ,
weight ) ;
}
template<class PBASE >

AIDA::IHistogram1D * GaudiHistos< PBASE >::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)

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 97 of file GaudiHistos_1DVariableBinning.icpp.

{
AIDA::IHistogram1D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( title ) ;
if ( NULL == h ) { h = book1D ( title , edges ) ; }
// fill the histogram
h = fill ( h , value , weight , title );
}
return h;
}
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

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 119 of file GaudiHistos_1DVariableBinning.icpp.

{
AIDA::IHistogram1D* h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo1D ( ID ) ;
if ( NULL == h ) { h = book1D ( ID , title , edges ) ; }
// fill
h = fill ( h , value , weight , title ) ;
}
return h;
}
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

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

Definition at line 150 of file GaudiHistos_2DFixedBinning.icpp.

{
AIDA::IHistogram2D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo2D ( title ) ;
if ( NULL == h )
{ h = book2D ( title , lowX , highX , binsX , lowY , highY , binsY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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

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

Definition at line 178 of file GaudiHistos_2DFixedBinning.icpp.

{
AIDA::IHistogram2D * h(NULL);
// produce histograms ?
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo2D ( ID ) ;
if ( NULL == h ) { h = book2D ( ID , title ,
lowX , highX , binsX ,
lowY , highY , binsY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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

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 101 of file GaudiHistos_2DVariableBinning.icpp.

{
AIDA::IHistogram2D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo2D ( title ) ;
if ( NULL == h ) { h = book2D ( title , edgesX , edgesY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title );
}
return h;
}
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

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 125 of file GaudiHistos_2DVariableBinning.icpp.

{
AIDA::IHistogram2D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo2D ( ID ) ;
if ( NULL == h ) { h = book2D ( ID , title , edgesX , edgesY ) ; }
// fill
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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

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

Definition at line 166 of file GaudiHistos_3DFixedBinning.icpp.

{
AIDA::IHistogram3D * h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo3D ( title ) ;
if ( 0 == h ) { h = book3D ( title ,
lowX , highX , binsX ,
lowY , highY , binsY ,
lowZ , highZ , binsZ ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
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

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

Definition at line 200 of file GaudiHistos_3DFixedBinning.icpp.

{
AIDA::IHistogram3D * h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo3D ( ID ) ;
if ( 0 == h ) { h = book3D ( ID , title ,
lowX , highX , binsX ,
lowY , highY , binsY ,
lowZ , highZ , binsZ ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
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

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 105 of file GaudiHistos_3DVariableBinning.icpp.

{
AIDA::IHistogram3D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo3D ( title ) ;
if ( NULL == h ) { h = book3D ( title , edgesX , edgesY , edgesZ ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title );
}
return h;
}
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

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 131 of file GaudiHistos_3DVariableBinning.icpp.

{
AIDA::IHistogram3D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = histo3D ( ID ) ;
if ( NULL == h ) { h = book3D ( ID , title , edgesX , edgesY , edgesZ ) ; }
// fill
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
template<class PBASE >

void GaudiHistos< PBASE >::printHistoHandler | ( | Property & |  | ) |
| private

the handler for "HistoPrint" property

Definition at line 540 of file GaudiHistos.icpp.

{
// no action if not yet initialized
if ( this -> FSMState() < Gaudi::StateMachine::INITIALIZED ) { return ; }
if ( this -> histosPrint() ) { this -> printHistos ( MSG::ALWAYS ) ; }
}
template<class PBASE >

int GaudiHistos< PBASE >::printHistos | ( | const MSG::Level | level = `MSG::ALWAYS` | ) | const

perform the actual printout of histograms

Parameters

  level | The message level to print at

Returns
  number of active histograms

Definition at line 229 of file GaudiHistos.icpp.

{
using namespace Gaudi::Utils::Histos ;
if ( noHistos() )
{
if ( this->msgLevel(MSG::DEBUG) )
{ this->msgStream(level) << "No histograms are booked" << endmsg ; }
return 0 ; // RETURN
}
MsgStream & msg = this->msgStream(level);
// Printout all histograms
Gaudi::Utils::Histos::Table table
( m_histo1DTableFormat ,
m_histo1DTableHeader ) ;
if ( !histo1DMapID().empty() )
{
msg << "List of booked 1D histograms in directory "
<< "\"" << histoPath() << "\" :-" ;
if ( !table.header().empty() )
{
msg << std::endl << Gaudi::Utils::Histos::format
( "ID" , table.header() , m_histo1DTableFormatShort ) ;
}
// temporary map to keep ordered IDs
typedef std::map<HistoID,const AIDA::IHistogram1D*> OrderedMapType;
OrderedMapType OrderedMap ( histo1DMapID().begin() , histo1DMapID().end() );
//
for ( OrderedMapType::const_iterator entry = OrderedMap.begin() ;
OrderedMap.end() != entry ; ++entry )
{
const AIDA::IHistogram1D* aida = entry->second ;
if ( NULL == aida )
{ this->error() << "IHistogram1D points to NULL" << endmsg ; continue ; }
// format and print the row
msg << std::endl << table.toString
( aida ,
HistoID ( entry->first ) ,
m_histo1DTableFormatShort ) ;
}
msg << endmsg ;
}
// ==========================================================================
if ( !histo2DMapID().empty() )
{
msg << "List of booked 2D histograms in directory "
<< "\"" << histoPath() << "\" :-" ;
// temporary map to keep ordered IDs
typedef std::map<HistoID,const AIDA::IHistogram2D*> OrderedMapType;
OrderedMapType OrderedMap ( histo2DMapID().begin() , histo2DMapID().end() ) ;
//
for ( OrderedMapType::const_iterator entry = OrderedMap.begin() ;
OrderedMap.end() != entry ; ++entry )
{
const AIDA::IHistogram2D* aida = entry->second ;
if ( NULL == aida )
{ this->error() << "IHistogram2D points to NULL" << endmsg ; continue ; }
msg << std::endl
<< GaudiAlg::Print2D::toString ( aida , entry->first );
}
msg << endmsg ;
}
// ==========================================================================
if ( !histo3DMapID().empty() )
{
msg << "List of booked 3D histograms in directory "
<< "\"" << histoPath() << "\" :-" ;
// temporary map to keep ordered IDs
typedef std::map<HistoID,const AIDA::IHistogram3D*> OrderedMapType;
OrderedMapType OrderedMap ( histo3DMapID().begin() , histo3DMapID().end() ) ;
//
for ( OrderedMapType::const_iterator entry = OrderedMap.begin() ;
OrderedMap.end() != entry ; ++entry )
{
const AIDA::IHistogram3D* aida = entry->second ;
if ( NULL == aida )
{ this->error() << "IHistogram3D points to NULL" << endmsg ; continue ; }
msg << std::endl << GaudiAlg::Print3D::toString ( aida , entry->first );
}
msg << endmsg ;
}
// ==========================================================================
if ( !profile1DMapID().empty() )
{
msg << "List of booked 1D profile histograms in directory "
<< "\"" << histoPath() << "\" :-" ;
// temporary map to keep ordered IDs
typedef std::map<HistoID,const AIDA::IProfile1D*> OrderedMapType;
OrderedMapType OrderedMap ( profile1DMapID().begin() , profile1DMapID().end() ) ;
//
for ( OrderedMapType::const_iterator entry = OrderedMap.begin() ;
OrderedMap.end() != entry ; ++entry )
{
const AIDA::IProfile1D* aida = entry->second ;
if ( NULL == aida )
{ this->error() << "IProfile1D points to NULL" << endmsg ; continue ; }
msg << std::endl << GaudiAlg::Print1DProf::toString ( aida , entry->first );
}
msg << endmsg ;
}
// ==========================================================================
if ( !profile2DMapID().empty() )
{
msg << "List of booked 2D profile histograms in directory "
<< "\"" << histoPath() << "\" :-" ;
// temporary map to keep ordered IDs
typedef std::map<HistoID,const AIDA::IProfile2D*> OrderedMapType;
OrderedMapType OrderedMap ( profile2DMapID().begin() , profile2DMapID().end() ) ;
//
for ( OrderedMapType::const_iterator entry = OrderedMap.begin() ;
OrderedMap.end() != entry ; ++entry )
{
const AIDA::IProfile2D* aida = entry->second ;
if ( NULL == aida )
{ this->error() << "IProfile2D points to NULL" << endmsg ; continue ; }
msg << std::endl << GaudiAlg::Print2DProf::toString ( aida , entry->first );
}
msg << endmsg ;
}
//
return this->totalNumberOfHistos() ;
}
template<class PBASE>

bool GaudiHistos< PBASE >::produceHistos | ( |  | ) | const
| inline

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

Definition at line 2693 of file GaudiHistos.h.

{ return m_produceHistos ; }
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

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 148 of file GaudiHistos_1DProfFixedBinning.icpp.

{
AIDA::IProfile1D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile1D ( title ) ;
if ( NULL == h )
{ h = bookProfile1D ( title , lowX , highX , binsX , opt , lowY , highY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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

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 176 of file GaudiHistos_1DProfFixedBinning.icpp.

{
AIDA::IProfile1D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile1D ( ID ) ;
if ( NULL == h )
{ h = bookProfile1D ( ID , title , lowX , highX , binsX , opt , lowY , highY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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

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 95 of file GaudiHistos_1DProfVariableBinning.icpp.

{
AIDA::IProfile1D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile1D ( title ) ;
if ( NULL == h ) { h = bookProfile1D ( title , edges ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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

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 117 of file GaudiHistos_1DProfVariableBinning.icpp.

{
AIDA::IProfile1D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile1D ( ID ) ;
if ( NULL == h ) { h = bookProfile1D ( ID , title , edges ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , weight , title ) ;
}
return h;
}
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 2610 of file GaudiHistos.h.

{
Profile1DMapTitle::const_iterator found = profile1DMapTitle().find( title ) ;
return ( profile1DMapTitle().end() == found ? 0 : found->second );
}
template<class PBASE >

AIDA::IProfile1D * GaudiHistos< PBASE >::profile1D | ( | const HistoID & | ID | ) | const

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

Definition at line 440 of file GaudiHistos.icpp.

{
AIDA::IProfile1D * h(NULL);
//
Profile1DMapID::const_iterator found = profile1DMapID().find( ID ) ;
//
h = ( profile1DMapID().end() == found ? NULL : found->second );
//
return h;
}
template<class PBASE>

const Profile1DMapID& GaudiHistos< PBASE >::profile1DMapID | ( |  | ) | const
| inline

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

const Profile1DMapID& histos = profile1DMapID() ;
// iterate over the map!
for ( Profile1DMapID::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 ;
}

Definition at line 2939 of file GaudiHistos.h.

{ return m_profile1DMapID; }
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 2913 of file GaudiHistos.h.

{ return m_profile1DMapTitle; }
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

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 149 of file GaudiHistos_2DProfFixedBinning.icpp.

{
AIDA::IProfile2D * h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile2D ( title ) ;
if ( 0 == h ) { h = bookProfile2D ( title ,
lowX , highX , binsX ,
lowY , highY , binsY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
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

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 179 of file GaudiHistos_2DProfFixedBinning.icpp.

{
AIDA::IProfile2D * h(0);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile2D ( ID ) ;
if ( 0 == h ) { h = bookProfile2D ( ID , title ,
lowX , highX , binsX ,
lowY , highY , binsY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
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

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 98 of file GaudiHistos_2DProfVariableBinning.icpp.

{
AIDA::IProfile2D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile2D ( title ) ;
if ( NULL == h ) { h = bookProfile2D ( title, edgesX, edgesY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
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

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 122 of file GaudiHistos_2DProfVariableBinning.icpp.

{
AIDA::IProfile2D * h(NULL);
if ( produceHistos() )
{
// retrieve or book the histogram
h = profile2D ( ID ) ;
if ( NULL == h ) { h = bookProfile2D ( ID , title , edgesX , edgesY ) ; }
// fill the histogram
h = fill ( h , valueX , valueY , valueZ , weight , title ) ;
}
return h;
}
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 2619 of file GaudiHistos.h.

{
Profile2DMapTitle::const_iterator found = profile2DMapTitle().find( title ) ;
return ( profile2DMapTitle().end() == found ? 0 : found->second );
}
template<class PBASE >

AIDA::IProfile2D * GaudiHistos< PBASE >::profile2D | ( | const HistoID & | ID | ) | const

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

Definition at line 454 of file GaudiHistos.icpp.

{
AIDA::IProfile2D * h(NULL);
//
Profile2DMapID::const_iterator found = profile2DMapID().find( ID ) ;
//
h = ( profile2DMapID().end() == found ? NULL : found->second );
//
return h;
}
template<class PBASE>

const Profile2DMapID& GaudiHistos< PBASE >::profile2DMapID | ( |  | ) | const
| inline

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

const Profile2DMapID& histos = profile2DMapID() ;
// iterate over the map!
for ( Profile2DMapID::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 ;
}

Definition at line 2994 of file GaudiHistos.h.

{ return m_profile2DMapID; }
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 2968 of file GaudiHistos.h.

{ return m_profile2DMapTitle; }
template<class PBASE>

void GaudiHistos< PBASE >::setCheckForNaN | ( | const bool | val | ) |
| inline

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

Definition at line 3003 of file GaudiHistos.h.

{ m_checkForNaN = val ; }
template<class PBASE>

void GaudiHistos< PBASE >::setFullDetail | ( | const bool | val | ) |
| inline

set flag to control output level of histograms

Definition at line 3001 of file GaudiHistos.h.

{ m_fullDetail = val ; }
template<class PBASE>

void GaudiHistos< PBASE >::setHistoDir | ( | const std::string & | val | ) |
| inline

set histogram directory (property "HistoDir")

Definition at line 3014 of file GaudiHistos.h.

{ m_histoDir = val ; }
template<class PBASE>

void GaudiHistos< PBASE >::setHistoOffSet | ( | const HistoID::NumericID | val | ) |
| inline

set a value for histogram offset (property "HistoOffSet"

Definition at line 3007 of file GaudiHistos.h.

{ 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 3011 of file GaudiHistos.h.

{ m_histoTopDir = val ; }
template<class PBASE>

void GaudiHistos< PBASE >::setProduceHistos | ( | const bool | val | ) |
| inline

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

Definition at line 2999 of file GaudiHistos.h.

{ m_produceHistos = val ; }
template<class PBASE>

void GaudiHistos< PBASE >::setSplitHistoDir | ( | const bool | val | ) |
| inline

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

Definition at line 3005 of file GaudiHistos.h.

{ m_splitHistoDir = val ; }
template<class PBASE>

bool GaudiHistos< PBASE >::splitHistoDir | ( |  | ) | const
| inline

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

Definition at line 2699 of file GaudiHistos.h.

{ return m_splitHistoDir ; }
template<class PBASE >

void GaudiHistos< PBASE >::stringSearchReplace | ( | std::string & | title,
|  | const std::string & | A,
|  | const std::string & | B
| ) |  | const
| private

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

Definition at line 525 of file GaudiHistos.icpp.

{
std::string::size_type slash = title.find_first_of ( A ) ;
while ( std::string::npos != slash )
{
title = title.substr(0,slash) + B + title.substr(slash+A.size());
slash = title.find_first_of( A );
}
}
template<class PBASE >

unsigned int GaudiHistos< PBASE >::totalNumberOfHistos | ( |  | ) | const

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

Definition at line 468 of file GaudiHistos.icpp.

{
return
histo1DMapID () . size () +
histo2DMapID () . size () +
histo3DMapID () . size () +
profile1DMapID () . size () +
profile2DMapID () . size () ;
}
template<class PBASE>

bool GaudiHistos< PBASE >::useNumericAutoIDs | ( |  | ) | const
| inline

Use old style sequencial numerical automatically assigned IDs ?

Definition at line 2713 of file GaudiHistos.h.

{ return m_useNumericAutoIDs; }

## Member Data Documentation

template<class PBASE>

bool GaudiHistos< PBASE >::m_checkForNaN
| private

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

Definition at line 3097 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 3111 of file GaudiHistos.h.

template<class PBASE>

bool GaudiHistos< PBASE >::m_fullDetail
| private

flag to control output level of histograms

Definition at line 3095 of file GaudiHistos.h.

template<class PBASE>

Histo1DMapID GaudiHistos< PBASE >::m_histo1DMapID
| mutable private

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

Definition at line 3116 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 3114 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 3139 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 3141 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 3143 of file GaudiHistos.h.

template<class PBASE>

Histo2DMapID GaudiHistos< PBASE >::m_histo2DMapID
| mutable private

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

Definition at line 3121 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 3119 of file GaudiHistos.h.

template<class PBASE>

Histo3DMapID GaudiHistos< PBASE >::m_histo3DMapID
| mutable private

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

Definition at line 3126 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 3124 of file GaudiHistos.h.

template<class PBASE>

bool GaudiHistos< PBASE >::m_histoCountersPrint
| private

print histogram counters at finalization

Definition at line 3109 of file GaudiHistos.h.

template<class PBASE>

std::string GaudiHistos< PBASE >::m_histoDir
| private

histogram directory

Definition at line 3105 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 3101 of file GaudiHistos.h.

template<class PBASE>

bool GaudiHistos< PBASE >::m_histosPrint
| private

print histograms at finalization

Definition at line 3107 of file GaudiHistos.h.

template<class PBASE>

std::string GaudiHistos< PBASE >::m_histoTopDir
| private

histogram top level directory

Definition at line 3103 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 3149 of file GaudiHistos.h.

template<class PBASE>

bool GaudiHistos< PBASE >::m_produceHistos
| private

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

Definition at line 3093 of file GaudiHistos.h.

template<class PBASE>

Profile1DMapID GaudiHistos< PBASE >::m_profile1DMapID
| mutable private

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

Definition at line 3131 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 3129 of file GaudiHistos.h.

template<class PBASE>

Profile2DMapID GaudiHistos< PBASE >::m_profile2DMapID
| mutable private

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

Definition at line 3136 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 3134 of file GaudiHistos.h.

template<class PBASE>

bool GaudiHistos< PBASE >::m_splitHistoDir
| private

split histogram directory name (very useful for Hbook)

Definition at line 3099 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 3145 of file GaudiHistos.h.

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_1DFixedBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_1DProfFixedBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_1DProfVariableBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_1DVariableBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_2DFixedBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_2DProfFixedBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_2DProfVariableBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_2DVariableBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_3DFixedBinning.icpp
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v25r0/GaudiAlg/GaudiAlg/GaudiHistos_3DVariableBinning.icpp