Loading [MathJax]/extensions/tex2jax.js
Go to the documentation of this file.
15 #include <AIDA/IProfile2D.h>
24 # pragma clang diagnostic push
25 # pragma clang diagnostic ignored "-Wsuggest-override"
26 # pragma clang diagnostic ignored "-Winconsistent-missing-override"
27 #elif defined( __GNUC__ )
28 # pragma GCC diagnostic push
29 # pragma GCC diagnostic ignored "-Wsuggest-override"
44 template <
class INTERFACE,
class IMPLEMENTATION>
61 std::string
title()
const override {
return m_annotation.value(
"Title" ); }
63 bool setTitle(
const std::string& title )
override;
65 std::string
name()
const {
return m_annotation.value(
"Name" ); }
67 bool setName(
const std::string& newName );
69 AIDA::IAnnotation&
annotation()
override {
return m_annotation; }
71 const AIDA::IAnnotation&
annotation()
const override {
return m_annotation; }
74 const AIDA::IAxis&
xAxis()
const override {
return m_xAxis; }
76 const AIDA::IAxis&
yAxis()
const override {
return m_yAxis; }
100 double binMeanX(
int indexX,
int indexY )
const override;
102 double binMeanY(
int indexX,
int indexY )
const override;
110 double binHeight(
int indexX,
int indexY )
const override;
116 double binError(
int indexX,
int indexY )
const override;
118 virtual double binRms(
int indexX,
int indexY )
const;
135 virtual bool scale(
double scaleFactor );
137 bool add(
const INTERFACE&
h )
override;
141 void*
cast(
const std::string& className )
const override;
147 std::ostream&
print( std::ostream&
s )
const override;
149 std::ostream&
write( std::ostream&
s )
const override;
151 int write(
const char* file_name )
const override;
161 std::unique_ptr<IMPLEMENTATION>
m_rep;
165 int m_sumEntries = 0;
168 template <
class INTERFACE,
class IMPLEMENTATION>
170 m_rep->SetTitle( title.c_str() );
171 if ( !annotation().addItem(
"Title", title ) ) m_annotation.setValue(
"Title", title );
172 if ( !annotation().addItem(
"title", title ) ) annotation().setValue(
"title", title );
176 template <
class INTERFACE,
class IMPLEMENTATION>
178 m_rep->SetName( newName.c_str() );
179 m_annotation.setValue(
"Name", newName );
183 template <
class INTERFACE,
class IMPLEMENTATION>
185 return m_rep->GetEntries();
188 template <
class INTERFACE,
class IMPLEMENTATION>
190 return m_rep->GetEntries();
193 template <
class INTERFACE,
class IMPLEMENTATION>
195 return m_rep->GetMinimum();
198 template <
class INTERFACE,
class IMPLEMENTATION>
200 return m_rep->GetMaximum();
203 template <
class INTERFACE,
class IMPLEMENTATION>
205 return m_rep->GetSumOfWeights();
208 template <
class INTERFACE,
class IMPLEMENTATION>
210 return m_rep->GetSum();
213 template <
class INTERFACE,
class IMPLEMENTATION>
215 return m_rep->GetBinError( rIndexX( indexX ), rIndexY( indexY ) );
218 template <
class INTERFACE,
class IMPLEMENTATION>
220 return m_rep->GetXaxis()->GetBinCenter( rIndexX( indexX ) );
223 template <
class INTERFACE,
class IMPLEMENTATION>
225 return m_rep->GetYaxis()->GetBinCenter( rIndexY( indexY ) );
228 template <
class INTERFACE,
class IMPLEMENTATION>
231 for (
int iY = -2; iY < yAxis().bins(); ++iY )
n += binEntries(
index, iY );
235 template <
class INTERFACE,
class IMPLEMENTATION>
238 for (
int iX = -2; iX < xAxis().bins(); ++iX )
n += binEntries( iX,
index );
242 template <
class INTERFACE,
class IMPLEMENTATION>
244 return m_rep->GetBinContent( rIndexX( indexX ), rIndexY( indexY ) );
247 template <
class INTERFACE,
class IMPLEMENTATION>
250 for (
int iY = -2; iY < yAxis().bins(); ++iY ) {
s += binHeight(
index, iY ); }
254 template <
class INTERFACE,
class IMPLEMENTATION>
257 for (
int iX = -2; iX < xAxis().bins(); ++iX )
s += binHeight( iX,
index );
261 template <
class INTERFACE,
class IMPLEMENTATION>
263 return m_rep->GetBinError( rIndexX( indexX ), rIndexY( indexY ) );
266 template <
class INTERFACE,
class IMPLEMENTATION>
268 return m_rep->GetMean( 1 );
271 template <
class INTERFACE,
class IMPLEMENTATION>
273 return m_rep->GetMean( 2 );
276 template <
class INTERFACE,
class IMPLEMENTATION>
278 return m_rep->GetRMS( 1 );
281 template <
class INTERFACE,
class IMPLEMENTATION>
283 return m_rep->GetRMS( 2 );
286 template <
class INTERFACE,
class IMPLEMENTATION>
288 return xAxis().coordToIndex( coord );
291 template <
class INTERFACE,
class IMPLEMENTATION>
293 return yAxis().coordToIndex( coord );
296 template <
class INTERFACE,
class IMPLEMENTATION>
298 const Base* p =
dynamic_cast<const Base*
>( &hist );
299 if ( !p )
throw std::runtime_error(
"Cannot add profile histograms of different implementations." );
300 m_rep->Add( p->
m_rep.get() );
304 template <
class INTERFACE,
class IMPLEMENTATION>
306 return binEntries( AIDA::IAxis::UNDERFLOW_BIN, AIDA::IAxis::UNDERFLOW_BIN ) +
307 binEntries( AIDA::IAxis::UNDERFLOW_BIN, AIDA::IAxis::OVERFLOW_BIN ) +
308 binEntries( AIDA::IAxis::OVERFLOW_BIN, AIDA::IAxis::UNDERFLOW_BIN ) +
309 binEntries( AIDA::IAxis::OVERFLOW_BIN, AIDA::IAxis::OVERFLOW_BIN );
312 template <
class INTERFACE,
class IMPLEMENTATION>
314 if ( sumBinHeights() <= 0 )
return 0;
316 m_rep->GetStats( stats );
317 return stats[0] * stats[0] / stats[1];
320 template <
class INTERFACE,
class IMPLEMENTATION>
322 m_rep->Scale( scaleFactor );
326 template <
class INTERFACE,
class IMPLEMENTATION>
333 template <
class INTERFACE,
class IMPLEMENTATION>
336 m_rep->Print(
"all" );
341 template <
class INTERFACE,
class IMPLEMENTATION>
343 s << std::endl <<
"2D Histogram Table: " << std::endl;
344 s <<
"BinX, BinY, Height, Error " << std::endl;
345 for (
int i = 0; i < xAxis().bins(); ++i ) {
346 for (
int j = 0;
j < yAxis().bins(); ++
j ) {
347 s << binMeanX( i,
j ) <<
", " << binMeanY( i,
j ) <<
", " << binHeight( i,
j ) <<
", " << binError( i,
j )
356 template <
class INTERFACE,
class IMPLEMENTATION>
358 TFile* f = TFile::Open( file_name,
"RECREATE" );
359 Int_t nbytes = m_rep->Write();
366 # pragma clang diagnostic pop
367 #elif defined( __GNUC__ )
368 # pragma GCC diagnostic pop
Generic2D< INTERFACE, IMPLEMENTATION > Base
int extraEntries() const override
Get the number of entries in the underflow and overflow bins.
double minBinHeight() const override
Get the minimum height of the in-range bins.
int dimension() const override
Get the Histogram's dimension.
double binMeanX(int indexX, int indexY) const override
The weighted mean along x of a given bin.
bool setName(const std::string &newName)
Set the name of the object.
TObject * representation() const override
ROOT object implementation.
const AIDA::IAxis & xAxis() const override
Return the X axis.
AIDA::Annotation m_annotation
Object annotations.
Implementation of the AIDA IAnnotation interface class.
int coordToIndexY(double coordY) const override
Convenience method, equivalent to yAxis().coordToIndex(coord).
double binHeightY(int indexY) const override
Equivalent to projectionY().binHeight(indexY).
int binEntriesX(int indexX) const override
Equivalent to projectionX().binEntries(indexX).
virtual int rIndexY(int index) const
operator methods
int coordToIndexX(double coordX) const override
Convenience method, equivalent to xAxis().coordToIndex(coord).
int write(const char *file_name) const override
Write (ASCII) the histogram table into a file.
virtual int rIndexX(int index) const
operator methods
int binEntriesY(int indexY) const override
Equivalent to projectionY().binEntries(indexY).
bool setTitle(const std::string &title) override
Set the title of the object.
double rmsY() const override
Returns the rms of the profile as calculated on filling-time projected on the Y axis.
double maxBinHeight() const override
Get the maximum height of the in-range bins.
void * cast(const std::string &className) const override
Introspection method.
double binMeanY(int indexX, int indexY) const override
The weighted mean along y of a given bin.
AIDA::IAnnotation & annotation() override
Access annotation object.
int binEntries(int indexX, int indexY) const override
The number of entries (ie the number of times fill was called for this bin).
Generic2D(IMPLEMENTATION *p)
constructor
void adoptRepresentation(TObject *rep) override
Adopt ROOT histogram representation.
const AIDA::IAnnotation & annotation() const override
Access annotation object (cons)
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 g...
int allEntries() const override
Get the number or all the entries, both in range and underflow/overflow bins of the IProfile.
Axis m_yAxis
Y axis member.
std::string m_classType
class type
bool add(const INTERFACE &h) override
Modifies this profile by adding the contents of profile to it.
double binHeightX(int indexX) const override
Equivalent to projectionX().binHeight(indexX).
const std::string & userLevelClassType() const
The AIDA user-level unterface leaf class type.
double sumAllBinHeights() const override
Get the sum of all the bins heights (including underflow and overflow bin).
const AIDA::IAxis & yAxis() const override
Return the Y axis.
Axis m_xAxis
X axis member.
double meanX() const override
Returns the mean of the profile, as calculated on filling-time projected on the X axis.
std::string title() const override
Get the title of the object.
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
virtual double binRms(int indexX, int indexY) const
The spread (RMS) of this bin.
An IAxis represents a binned histogram axis.
double rmsX() const override
Returns the rms of the profile as calculated on filling-time projected on the X axis.
std::string name() const
object name
std::unique_ptr< IMPLEMENTATION > m_rep
Reference to underlying implementation.
double binHeight(int indexX, int indexY) const override
Total height of the corresponding bin (ie the sum of the weights in this bin).
int entries() const override
Get the number or all the entries.
double binError(int indexX, int indexY) const override
The error on this bin.
double sumExtraBinHeights() const override
Get the sum of the underflow and overflow bin height.
double sumBinHeights() const override
Get the sum of in range bin heights in the IProfile.
std::ostream & write(std::ostream &s) const override
Write (ASCII) the histogram table into the output stream.
size_t index(const Gaudi::ParticleProperty *property, const Gaudi::Interfaces::IParticlePropertySvc *service)
helper utility for mapping of Gaudi::ParticleProperty object into non-negative integral sequential id...
std::ostream & print(std::ostream &s) const override
Print (ASCII) the histogram into the output stream.
double meanY() const override
Returns the mean of the profile, as calculated on filling-time projected on the Y axis.
virtual double equivalentBinEntries() const
Number of equivalent entries, i.e. SUM[ weight ] ^ 2 / SUM[ weight^2 ]