| The Gaudi Framework v30r0 (c919700c)

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

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

Public Member Functions | Static Public Member Functions | Protected 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
| ~Generic2D () override=default
| Destructor. More...
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...

## 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 19 of file H2D.h.

## Constructor & Destructor Documentation

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

Standard Constructor.

Definition at line 140 of file H2D.cpp.

140 : Base( new TH2D() )
141 {
142 m_rep->Sumw2();
143 m_sumwx = m_sumwy = 0;
144 setTitle( "" );
145 m_rep->SetDirectory( nullptr );
146 }
Gaudi::Generic2D::Base
Generic2D< INTERFACE, IMPLEMENTATION > Base
Definition: Generic2D.h:39
Gaudi::Generic2D::setTitle
bool setTitle(const std::string &title) override
Set the title of the object.
Definition: Generic2D.h:163
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:155
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:45
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:44

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

Standard initializing Constructor with TH2D representation to be adopted.

Definition at line 148 of file H2D.cpp.

149 {
150 adoptRepresentation( rep );
151 m_sumwx = m_sumwy = 0;
152 m_rep->SetDirectory( nullptr );
153 }
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:155
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:45
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:44

## Member Function Documentation

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

Definition at line 40 of file H2D.h.

40 { return CLID_H2D; }

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

Retrieve reference to class defininition identifier.

Reimplemented from DataObject.

Definition at line 39 of file H2D.h.

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

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

Create new histogram from any AIDA based histogram.

Definition at line 208 of file H2D.cpp.

209 {
210 // implement here the copy
211 const char* tit = h.title().c_str();
212 if ( h.xAxis().isFixedBinning() && h.yAxis().isFixedBinning() )
213 m_rep.reset( new TH2D( tit, tit, h.xAxis().bins(), h.xAxis().lowerEdge(), h.xAxis().upperEdge(), h.yAxis().bins(),
214 h.yAxis().lowerEdge(), h.yAxis().upperEdge() ) );
215 else {
216 Edges eX, eY;
217 for ( int i = 0; i < h.xAxis().bins(); ++i ) eX.push_back( h.xAxis().binLowerEdge( i ) );
218 // add also upperedges at the end
219 eX.push_back( h.xAxis().upperEdge() );
220 for ( int i = 0; i < h.yAxis().bins(); ++i ) eY.push_back( h.yAxis().binLowerEdge( i ) );
221 // add also upperedges at the end
222 eY.push_back( h.yAxis().upperEdge() );
223 m_rep.reset( new TH2D( tit, tit, eX.size() - 1, &eX.front(), eY.size() - 1, &eY.front() ) );
224 }
225 m_xAxis.initialize( m_rep->GetXaxis(), true );
226 m_yAxis.initialize( m_rep->GetYaxis(), true );
227 m_rep->Sumw2();
228 m_sumEntries = 0;
229 m_sumwx = 0;
230 m_sumwy = 0;
231 // statistics
232 double sumw = h.sumBinHeights();
233 double sumw2 = 0;
234 if ( h.equivalentBinEntries() != 0 ) sumw2 = ( sumw * sumw ) / h.equivalentBinEntries();
235 double sumwx = h.meanX() * h.sumBinHeights();
236 double sumwx2 = ( h.meanX() * h.meanX() + h.rmsX() * h.rmsX() ) * h.sumBinHeights();
237 double sumwy = h.meanY() * h.sumBinHeights();
238 double sumwy2 = ( h.meanY() * h.meanY() + h.rmsY() * h.rmsY() ) * h.sumBinHeights();
239 double sumwxy = 0;
240
241 // copy the contents in (AIDA underflow/overflow are -2,-1)
242 for ( int i = -2; i < xAxis().bins(); ++i ) {
243 for ( int j = -2; j < yAxis().bins(); ++j ) {
244 // root binning starts from one !
245 m_rep->SetBinContent( rIndexX( i ), rIndexY( j ), h.binHeight( i, j ) );
246 m_rep->SetBinError( rIndexX( i ), rIndexY( j ), h.binError( i, j ) );
247 // calculate statistics
248 if ( i >= 0 && j >= 0 ) {
249 sumwxy += h.binHeight( i, j ) * h.binMeanX( i, j ) * h.binMeanY( i, j );
250 }
251 }
252 }
253 // need to do set entries after setting contents otherwise root will recalculate them
254 // taking into account how many time SetBinContents() has been called
255 m_rep->SetEntries( h.allEntries() );
256 // fill stat vector
257 std::array<double, 11> stat = {{sumw, sumw2, sumwx, sumwx2, sumwy, sumwy2, sumwxy}};
258 m_rep->PutStats( stat.data() );
259 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can&#39;t compute by himself ...
Definition: Generic2D.h:159
Gaudi::Edges
std::vector< double > Edges
Definition: GaudiPI.h:18
Gaudi::Generic2D::rIndexX
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:72
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:149
std::unique_ptr::reset
T reset(T...args)
Gaudi::Axis::initialize
void initialize(TAxis *itaxi, bool)
Definition: Axis.h:67
Gaudi::Generic2D::m_yAxis
Axis m_yAxis
Y axis member.
Definition: Generic2D.h:151
std::array
STL class.
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:155
Gaudi::Generic2D::rIndexY
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:74
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:45
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:44
Gaudi::Generic2D::yAxis
const AIDA::IAxis & yAxis() const override
Return the Y axis.
Definition: Generic2D.h:70
Gaudi::Generic2D::xAxis
const AIDA::IAxis & xAxis() const override
Return the X axis.
Definition: Generic2D.h:68

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

Fill the Histogram2D with a value and the.

Definition at line 182 of file H2D.cpp.

183 {
184 ( weight == 1. ) ? m_rep->Fill( x, y ) : m_rep->Fill( x, y, weight );
185 return true;
186 }
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:155

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

Definition at line 169 of file H2D.cpp.

170 {
171 m_sumwx = 0;
172 m_sumwy = 0;
173 return Base::reset();
174 }
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:45
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:44

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 155 of file H2D.cpp.

157 {
158 m_rep->SetBinContent( rIndexX( i ), rIndexY( j ), height );
159 m_rep->SetBinError( rIndexX( i ), rIndexY( j ), error );
160 // accumulate sumwx for in range bins
161 if ( i >= 0 && j >= 0 ) {
162 m_sumwx += centreX * height;
163 m_sumwy += centreY * height;
164 }
165 m_sumEntries += entries;
166 return true;
167 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can&#39;t compute by himself ...
Definition: Generic2D.h:159
Gaudi::Generic2D::rIndexX
virtual int rIndexX(int index) const
operator methods
Definition: Generic2D.h:72
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:155
Gaudi::Generic2D::entries
int entries() const override
Get the number or all the entries.
Definition: Generic2D.h:180
Gaudi::Generic2D::rIndexY
virtual int rIndexY(int index) const
operator methods
Definition: Generic2D.h:74
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:45
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:44

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

Sets the rms of the histogram.

Definition at line 188 of file H2D.cpp.

189 {
190 m_rep->SetEntries( m_sumEntries );
191 std::vector<double> stat( 11 );
192 stat[0] = sumBinHeights();
193 stat[1] = 0;
194 if ( equivalentBinEntries() != 0 ) stat[1] = ( sumBinHeights() * sumBinHeights() ) / equivalentBinEntries();
195 stat[2] = m_sumwx;
196 double meanX = 0;
197 if ( sumBinHeights() != 0 ) meanX = m_sumwx / sumBinHeights();
198 stat[3] = ( meanX * meanX + rmsX * rmsX ) * sumBinHeights();
199 stat[4] = m_sumwy;
200 double meanY = 0;
201 if ( sumBinHeights() != 0 ) meanY = m_sumwy / sumBinHeights();
202 stat[5] = ( meanY * meanY + rmsY * rmsY ) * sumBinHeights();
203 stat[6] = 0;
204 m_rep->PutStats( &stat.front() );
205 return true;
206 }
Gaudi::Generic2D::m_sumEntries
int m_sumEntries
cache sumEntries (allEntries) when setting contents since Root can&#39;t compute by himself ...
Definition: Generic2D.h:159
Gaudi::Generic2D::equivalentBinEntries
virtual double equivalentBinEntries() const
Number of equivalent entries, i.e. SUM[ weight ] ^ 2 / SUM[ weight^2 ]
Definition: Generic2D.h:334
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:292
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:298
Gaudi::Generic2D::sumBinHeights
double sumBinHeights() const override
Get the sum of in range bin heights in the IProfile.
Definition: Generic2D.h:204
std::vector< double >
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:280
Gaudi::Generic2D::m_rep
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
Definition: Generic2D.h:155
Gaudi::Histogram2D::m_sumwy
double m_sumwy
Definition: H2D.h:45
Gaudi::Histogram2D::m_sumwx
double m_sumwx
Definition: H2D.h:44
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:286

## Member Data Documentation

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

Definition at line 44 of file H2D.h.

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

Definition at line 45 of file H2D.h.

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

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