| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Static Public Member Functions | Protected Attributes | Private Attributes | List of all members
Gaudi::Histogram2D Class Reference

AIDA implementation for 2 D histograms using ROOT THD2. More...

`#include <GaudiCommonSvc/H2D.h>`

Inheritance diagram for Gaudi::Histogram2D:
[legend]
Collaboration diagram for Gaudi::Histogram2D:
[legend]

## Public Member Functions
| Histogram2D ()
| Standard Constructor. More...
| Histogram2D (TH2D *rep)
| Standard initializing Constructor with TH2D representation to be adopted. More...
bool | fill (double x, double y, double weight=1.) override
| Fill the Histogram2D with a value and the. More...
virtual bool | setBinContents (int binIndexX, int binIndexY, int entries, double height, double error, double centreX, double centreY)
| Fast filling method for a given bin. It can be also the over/underflow bin. More...
bool | setRms (double rmsX, double rmsY)
| Sets the rms of the histogram. More...
bool | reset () override
void | copyFromAida (const AIDA::IHistogram2D &h)
| Create new histogram from any AIDA based histogram. More...
const CLID & | clID () const override
| Retrieve reference to class defininition identifier. More...
Public Member Functions inherited from DataObject
| DataObject ()
| Standard Constructor. More...
| DataObject (const DataObject &rhs)
| Copy Constructor. More...
DataObject & | operator= (const DataObject &rhs)
| Assignment Operator. More...
| DataObject (DataObject &&rhs)
| Move Constructor. More...
DataObject & | operator= (DataObject &&rhs)
| Move Assignment Operator. More...
virtual | ~DataObject ()
| Standard Destructor. More...
virtual unsigned long | addRef ()
| Add reference to object. More...
virtual unsigned long | release ()
| release reference to object More...
const std::string & | name () const
| Retreive DataObject name. It is the name when registered in the store. More...
virtual StatusCode | update ()
| Provide empty placeholder for internal object reconfiguration callback. More...
void | setRegistry (IRegistry *pRegistry)
| Set pointer to Registry. More...
IRegistry * | registry () const
| Get pointer to Registry. More...
LinkManager * | linkMgr () const
| Retrieve Link manager. More...
unsigned char | version () const
| Retrieve version number of this object representation. More...
void | setVersion (unsigned char vsn)
| Set version number of this object representation. More...
unsigned long | refCount () const
| Return the refcount. More...
virtual std::ostream & | fillStream (std::ostream &s) const
| Fill the output stream (ASCII) More...
Public Member Functions inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
| Generic2D ()=default
TObject * | representation () const override
| ROOT object implementation. More...
void | adoptRepresentation (TObject *rep) override
| Adopt ROOT histogram representation. More...
std::string | title () const override
| Get the title of the object. More...
bool | setTitle (const std::string &title) override
| Set the title of the object. More...
std::string | name () const
| object name More...
bool | setName (const std::string &newName)
| Set the name of the object. More...
AIDA::IAnnotation & | annotation () override
| Access annotation object. More...
const AIDA::IAnnotation & | annotation () const override
| Access annotation object (cons) More...
const AIDA::IAxis & | xAxis () const override
| Return the X axis. More...
const AIDA::IAxis & | yAxis () const override
| Return the Y axis. More...
virtual int | rIndexX (int index) const
| operator methods More...
virtual int | rIndexY (int index) const
| operator methods More...
int | entries () const override
| Get the number or all the entries. More...
int | allEntries () const override
| Get the number or all the entries, both in range and underflow/overflow bins of the IProfile. More...
int | extraEntries () const override
| Get the number of entries in the underflow and overflow bins. More...
double | sumBinHeights () const override
| Get the sum of in range bin heights in the IProfile. More...
double | sumAllBinHeights () const override
| Get the sum of all the bins heights (including underflow and overflow bin). More...
double | sumExtraBinHeights () const override
| Get the sum of the underflow and overflow bin height. More...
double | minBinHeight () const override
| Get the minimum height of the in-range bins. More...
double | maxBinHeight () const override
| Get the maximum height of the in-range bins. More...
double | binMeanX (int indexX, int indexY) const override
| The weighted mean along x of a given bin. More...
double | binMeanY (int indexX, int indexY) const override
| The weighted mean along y of a given bin. More...
int | binEntries (int indexX, int indexY) const override
| The number of entries (ie the number of times fill was called for this bin). More...
int | binEntriesX (int indexX) const override
| Equivalent to `projectionX().binEntries(indexX)`. More...
int | binEntriesY (int indexY) const override
| Equivalent to `projectionY().binEntries(indexY)`. More...
double | binHeight (int indexX, int indexY) const override
| Total height of the corresponding bin (ie the sum of the weights in this bin). More...
double | binHeightX (int indexX) const override
| Equivalent to `projectionX().binHeight(indexX)`. More...
double | binHeightY (int indexY) const override
| Equivalent to `projectionY().binHeight(indexY)`. More...
double | binError (int indexX, int indexY) const override
| The error on this bin. More...
virtual double | binRms (int indexX, int indexY) const
| The spread (RMS) of this bin. More...
double | meanX () const override
| Returns the mean of the profile, as calculated on filling-time projected on the X axis. More...
double | meanY () const override
| Returns the mean of the profile, as calculated on filling-time projected on the Y axis. More...
double | rmsX () const override
| Returns the rms of the profile as calculated on filling-time projected on the X axis. More...
double | rmsY () const override
| Returns the rms of the profile as calculated on filling-time projected on the Y axis. More...
int | coordToIndexX (double coordX) const override
| Convenience method, equivalent to `xAxis().coordToIndex(coord)`. More...
int | coordToIndexY (double coordY) const override
| Convenience method, equivalent to `yAxis().coordToIndex(coord)`. More...
virtual double | equivalentBinEntries () const
| Number of equivalent entries, i.e. `SUM[ weight ] ^ 2 / SUM[ weight^2 ]` More...
virtual bool | scale (double scaleFactor)
| Scale the weights and the errors of all the IHistogram's bins (in-range and out-of-range ones) by a given scale factor. More...
bool | add (const INTERFACE &h) override
| Modifies this profile by adding the contents of profile to it. More...
bool | reset () override
void * | cast (const std::string &className) const override
| Introspection method. More...
const std::string & | userLevelClassType () const
| The AIDA user-level unterface leaf class type. More...
int | dimension () const override
| Get the Histogram's dimension. More...
std::ostream & | print (std::ostream &s) const override
| Print (ASCII) the histogram into the output stream. More...
std::ostream & | write (std::ostream &s) const override
| Write (ASCII) the histogram table into the output stream. More...
int | write (const char *file_name) const override
| Write (ASCII) the histogram table into a file. More...
template<>
void * | cast (const std::string &className) const
template<>
int | binEntries (int indexX, int indexY) const
template<>
void | adoptRepresentation (TObject *rep)
| Adopt ROOT histogram representation. More...
template<>
void * | cast (const std::string &className) const
template<>
int | binEntries (int idX, int idY) const
template<>
void | adoptRepresentation (TObject *rep)
| Adopt ROOT histogram representation. More...
Public Member Functions inherited from Gaudi::HistogramBase
virtual | ~HistogramBase ()=default

## Static Public Member Functions
static const CLID & | classID ()
Static Public Member Functions inherited from DataObject
static const CLID & | classID ()
| Retrieve reference to class definition structure (static access) More...

## Protected Attributes
double | m_sumwx = 0
double | m_sumwy = 0
Protected Attributes inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
Axis | m_xAxis
| X axis member. More...
Axis | m_yAxis
| Y axis member. More...
AIDA::Annotation | m_annotation
| Object annotations. More...
std::unique_ptr< IMPLEMENTATION > | m_rep
| Reference to underlying implementation. More...
std::string | m_classType
| class type More...
int | m_sumEntries = 0
| cache sumEntries (allEntries) when setting contents since Root can't compute by himself More...

## Private Attributes
std::mutex | m_fillSerialization

## Additional Inherited Members
Public Types inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
typedef Generic2D< INTERFACE, IMPLEMENTATION > | Base
Protected Member Functions inherited from Gaudi::Generic2D< INTERFACE, IMPLEMENTATION >
| Generic2D (IMPLEMENTATION *p)
| constructor More...

## Detailed Description

AIDA implementation for 2 D histograms using ROOT THD2.

Author
  M.Frank

Definition at line 18 of file H2D.h.

## Constructor & Destructor Documentation

## ◆ Histogram2D() [1/2]

Gaudi::Histogram2D::Histogram2D | ( |  | ) |

Standard Constructor.

Definition at line 126 of file H2D.cpp.

126 : Base( new TH2D() ) {
127 m_rep->Sumw2();
128 m_sumwx = m_sumwy = 0;
129 setTitle( "" );
130 m_rep->SetDirectory( nullptr );
131 }
Gaudi::Generic2D::Base
Generic2D< INTERFACE, IMPLEMENTATION > Base
Definition: Generic2D.h:37
Gaudi::Generic2D::setTitle
bool setTitle(const std::string &title) override
Set the title of the object.
Definition: Generic2D.h:159
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:151
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:43
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:42

## ◆ Histogram2D() [2/2]

Gaudi::Histogram2D::Histogram2D | ( | TH2D * | rep | ) |

Standard initializing Constructor with TH2D representation to be adopted.

Definition at line 133 of file H2D.cpp.

133 {
134 adoptRepresentation( rep );
135 m_sumwx = m_sumwy = 0;
136 m_rep->SetDirectory( nullptr );
137 }
Gaudi::Generic2D::adoptRepresentation
void adoptRepresentation(TObject *rep) override
Adopt ROOT histogram representation.
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:151
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:43
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:42

## Member Function Documentation

## ◆ classID()

static const CLID& Gaudi::Histogram2D::classID | ( |  | ) |
| inline static

Definition at line 38 of file H2D.h.

38 { return CLID_H2D; }

## ◆ clID()

const CLID& Gaudi::Histogram2D::clID | ( |  | ) | const
| inline override virtual

Retrieve reference to class defininition identifier.

Reimplemented from DataObject.

Definition at line 37 of file H2D.h.

37 { return classID(); }
Gaudi::Histogram2D::classID
static const CLID & classID()
Definition: H2D.h:38

## ◆ copyFromAida()

void Gaudi::Histogram2D::copyFromAida | ( | const AIDA::IHistogram2D & | h | ) |

Create new histogram from any AIDA based histogram.

Definition at line 190 of file H2D.cpp.

190 {
191 // implement here the copy
192 const char* title = h.title().c_str();
193 if ( h.xAxis().isFixedBinning() && h.yAxis().isFixedBinning() )
194 m_rep.reset( new TH2D( title, title, h.xAxis().bins(), h.xAxis().lowerEdge(), h.xAxis().upperEdge(),
195 h.yAxis().bins(), h.yAxis().lowerEdge(), h.yAxis().upperEdge() ) );
196 else {
197 Edges eX, eY;
198 for ( int i = 0; i < h.xAxis().bins(); ++i ) eX.push_back( h.xAxis().binLowerEdge( i ) );
199 // add also upperedges at the end
200 eX.push_back( h.xAxis().upperEdge() );
201 for ( int i = 0; i < h.yAxis().bins(); ++i ) eY.push_back( h.yAxis().binLowerEdge( i ) );
202 // add also upperedges at the end
203 eY.push_back( h.yAxis().upperEdge() );
204 m_rep.reset( new TH2D( title, title, eX.size() - 1, &eX.front(), eY.size() - 1, &eY.front() ) );
205 }
206 m_xAxis.initialize( m_rep->GetXaxis(), true );
207 m_yAxis.initialize( m_rep->GetYaxis(), true );
208 m_rep->Sumw2();
209 m_sumEntries = 0;
210 m_sumwx = 0;
211 m_sumwy = 0;
212 // statistics
213 double sumw = h.sumBinHeights();
214 double sumw2 = 0;
215 if ( h.equivalentBinEntries() != 0 ) sumw2 = ( sumw * sumw ) / h.equivalentBinEntries();
216 double sumwx = h.meanX() * h.sumBinHeights();
217 double sumwx2 = ( h.meanX() * h.meanX() + h.rmsX() * h.rmsX() ) * h.sumBinHeights();
218 double sumwy = h.meanY() * h.sumBinHeights();
219 double sumwy2 = ( h.meanY() * h.meanY() + h.rmsY() * h.rmsY() ) * h.sumBinHeights();
220 double sumwxy = 0;
221
222 // copy the contents in (AIDA underflow/overflow are -2,-1)
223 for ( int i = -2; i < xAxis().bins(); ++i ) {
224 for ( int j = -2; j < yAxis().bins(); ++j ) {
225 // root binning starts from one !
226 m_rep->SetBinContent( rIndexX( i ), rIndexY( j ), h.binHeight( i, j ) );
227 m_rep->SetBinError( rIndexX( i ), rIndexY( j ), h.binError( i, j ) );
228 // calculate statistics
229 if ( i >= 0 && j >= 0 ) { sumwxy += h.binHeight( i, j ) * h.binMeanX( i, j ) * h.binMeanY( i, j ); }
230 }
231 }
232 // need to do set entries after setting contents otherwise root will recalculate them
233 // taking into account how many time SetBinContents() has been called
234 m_rep->SetEntries( h.allEntries() );
235 // fill stat vector
236 std::array<double, 11> stat = {{sumw, sumw2, sumwx, sumwx2, sumwy, sumwy2, sumwxy}};
237 m_rep->PutStats( stat.data() );
238 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself
Definition: Generic2D.h:155
Gaudi::Generic2D::rIndexY
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:70
Gaudi::Edges
std::vector< double > Edges
Definition: GaudiPI.h:17
Gaudi::Generic2D::rIndexX
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:68
Gaudi::Generic2D::yAxis
const AIDA::IAxis & yAxis() const override
Return the Y axis.
Definition: Generic2D.h:66
std::vector::push_back
T push_back(T... args)
std::array::data
T data(T... args)
Gaudi::Generic2D::m_xAxis
Axis m_xAxis
X axis member.
Definition: Generic2D.h:145
Gaudi::Generic2D::xAxis
const AIDA::IAxis & xAxis() const override
Return the X axis.
Definition: Generic2D.h:64
std::unique_ptr::reset
T reset(T... args)
std::string::size
T size(T... args)
Gaudi::Generic2D::title
std::string title() const override
Get the title of the object.
Definition: Generic2D.h:51
Gaudi::Axis::initialize
void initialize(TAxis *itaxi, bool)
Definition: Axis.h:63
std::string::c_str
T c_str(T... args)
Gaudi::Generic2D::m_yAxis
Axis m_yAxis
Y axis member.
Definition: Generic2D.h:147
std::array
STL class.
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:151
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:43
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:42

## ◆ fill()

bool Gaudi::Histogram2D::fill | ( | double | x,
|  | double | y,
|  | double | weight = `1.`
| ) |  |
| override

Fill the Histogram2D with a value and the.

Definition at line 164 of file H2D.cpp.

164 {
165 // avoid race conditiosn when filling the histogram
166 std::lock_guard<std::mutex> guard( m_fillSerialization );
167 ( weight == 1. ) ? m_rep->Fill( x, y ) : m_rep->Fill( x, y, weight );
168 return true;
169 }
std::lock_guard
Gaudi::Histogram2D::m_fillSerialization
std::mutex m_fillSerialization
Definition: H2D.h:46
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:151

## ◆ reset()

bool Gaudi::Histogram2D::reset | ( |  | ) |
| override

Definition at line 152 of file H2D.cpp.

152 {
153 m_sumwx = 0;
154 m_sumwy = 0;
155 return Base::reset();
156 }
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:43
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:42

## ◆ setBinContents()

bool Gaudi::Histogram2D::setBinContents | ( | int | binIndexX,
|  | int | binIndexY,
|  | int | entries,
|  | double | height,
|  | double | error,
|  | double | centreX,
|  | double | centreY
| ) |  |
| virtual

Fast filling method for a given bin. It can be also the over/underflow bin.

Definition at line 139 of file H2D.cpp.

140 {
141 m_rep->SetBinContent( rIndexX( i ), rIndexY( j ), height );
142 m_rep->SetBinError( rIndexX( i ), rIndexY( j ), error );
143 // accumulate sumwx for in range bins
144 if ( i >= 0 && j >= 0 ) {
145 m_sumwx += centreX * height;
146 m_sumwy += centreY * height;
147 }
148 m_sumEntries += entries;
149 return true;
150 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself
Definition: Generic2D.h:155
Gaudi::Generic2D::rIndexY
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:70
Gaudi::Generic2D::entries
int entries() const override
Get the number or all the entries.
Definition: Generic2D.h:174
Gaudi::Generic2D::rIndexX
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:68
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:151
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:43
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:42

## ◆ setRms()

bool Gaudi::Histogram2D::setRms | ( | double | rmsX,
|  | double | rmsY
| ) |  |

Sets the rms of the histogram.

Definition at line 171 of file H2D.cpp.

171 {
172 m_rep->SetEntries( m_sumEntries );
173 std::vector<double> stat( 11 );
174 stat[0] = sumBinHeights();
175 stat[1] = 0;
176 if ( equivalentBinEntries() != 0 ) stat[1] = ( sumBinHeights() * sumBinHeights() ) / equivalentBinEntries();
177 stat[2] = m_sumwx;
178 double meanX = 0;
179 if ( sumBinHeights() != 0 ) meanX = m_sumwx / sumBinHeights();
180 stat[3] = ( meanX * meanX + rmsX * rmsX ) * sumBinHeights();
181 stat[4] = m_sumwy;
182 double meanY = 0;
183 if ( sumBinHeights() != 0 ) meanY = m_sumwy / sumBinHeights();
184 stat[5] = ( meanY * meanY + rmsY * rmsY ) * sumBinHeights();
185 stat[6] = 0;
186 m_rep->PutStats( &stat.front() );
187 return true;
188 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can't compute by himself
Definition: Generic2D.h:155
Gaudi::Generic2D::meanX
double meanX() const override
Returns the mean of the profile, as calculated on filling-time projected on the X axis.
Definition: Generic2D.h:257
Gaudi::Generic2D::sumBinHeights
double sumBinHeights() const override
Get the sum of in range bin heights in the IProfile.
Definition: Generic2D.h:194
std::vector< double >
Gaudi::Generic2D::rmsY
double rmsY() const override
Returns the rms of the profile as calculated on filling-time projected on the Y axis.
Definition: Generic2D.h:272
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:151
Gaudi::Generic2D::equivalentBinEntries
virtual double equivalentBinEntries() const
Number of equivalent entries, i.e. SUM[ weight ] ^ 2 / SUM[ weight^2 ]
Definition: Generic2D.h:303
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:43
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:42
Gaudi::Generic2D::meanY
double meanY() const override
Returns the mean of the profile, as calculated on filling-time projected on the Y axis.
Definition: Generic2D.h:262
Gaudi::Generic2D::rmsX
double rmsX() const override
Returns the rms of the profile as calculated on filling-time projected on the X axis.
Definition: Generic2D.h:267

## Member Data Documentation

## ◆ m_fillSerialization

std::mutex Gaudi::Histogram2D::m_fillSerialization
| private

Definition at line 46 of file H2D.h.

## ◆ m_sumwx

double Gaudi::Histogram2D::m_sumwx = 0
| protected

Definition at line 42 of file H2D.h.

## ◆ m_sumwy

double Gaudi::Histogram2D::m_sumwy = 0
| protected

Definition at line 43 of file H2D.h.

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

- GaudiCommonSvc/GaudiCommonSvc/H2D.h
- GaudiCommonSvc/src/HistogramSvc/H2D.cpp