ATLAS Offline Software
Loading...
Searching...
No Matches
CP::HistHandler_TH3 Class Reference

#include <HistHandler.h>

Inheritance diagram for CP::HistHandler_TH3:
Collaboration diagram for CP::HistHandler_TH3:

Public Member Functions

 HistHandler_TH3 (columnar::ColumnarTool<> *parent, TH1 *hist)
 The HistHandler TH3 handles 3D histograms, since TH3 inhertis from TH1,a TH1* object is parsed avoiding the dynamic cast.
virtual ~HistHandler_TH3 ()
int nBins () const override
 Return the total number of bins in the histogram -> (GetNbins() +2)**n.
int nOverFlowBins () const override
 Return the number of overflow bins.
bool isOverFlowBin (int b) const override
 States whether a bin is overflow or not.
std::string GetBinName (unsigned int bin) const override
 Translates the bin number into the borders and return them as name.
CorrectionCode FindBin (columnar::MuonId muon, int &bin) const override
 Function that changes from Implementation to implementation.
double GetBinContent (int bin) const
void SetBinContent (int bin, float val)
double GetBinError (int bin) const
TH1 * GetHist () const
void SetBinError (int bin, float val)

Private Attributes

std::unique_ptr< AxisHandlerm_x_handler
std::unique_ptr< AxisHandlerm_y_handler
std::unique_ptr< AxisHandlerm_z_handler
std::unique_ptr< TH1 > m_H

Detailed Description

Definition at line 136 of file HistHandler.h.

Constructor & Destructor Documentation

◆ HistHandler_TH3()

CP::HistHandler_TH3::HistHandler_TH3 ( columnar::ColumnarTool<> * parent,
TH1 * hist )

The HistHandler TH3 handles 3D histograms, since TH3 inhertis from TH1,a TH1* object is parsed avoiding the dynamic cast.

Via the GetDimension() method of the TH1 the class ensures that the histogram has actual dimension 3. No specific TH3 method is required in all use-caes of the class.

Definition at line 236 of file HistHandler.cxx.

236 :
237 HistHandler(parent,h),
238 m_x_handler(GetHist() == nullptr ? 0 : AxisHandlerProvider::GetAxisHandler(parent, h->GetXaxis())),
239 m_y_handler(GetHist() == nullptr ? 0 : AxisHandlerProvider::GetAxisHandler(parent, h->GetYaxis())),
240 m_z_handler(GetHist() == nullptr ? 0 : AxisHandlerProvider::GetAxisHandler(parent, h->GetZaxis())) {
241
242 }
static std::unique_ptr< AxisHandler > GetAxisHandler(columnar::ColumnarTool<> *parent, const TAxis *axis)
std::unique_ptr< AxisHandler > m_x_handler
std::unique_ptr< AxisHandler > m_y_handler
std::unique_ptr< AxisHandler > m_z_handler
TH1 * GetHist() const
Definition HistHandler.h:63
HistHandler(columnar::ColumnarTool<> *parent, TH1 *Hist)

◆ ~HistHandler_TH3()

CP::HistHandler_TH3::~HistHandler_TH3 ( )
virtual

Definition at line 243 of file HistHandler.cxx.

243 {
244 }

Member Function Documentation

◆ FindBin()

CorrectionCode CP::HistHandler_TH3::FindBin ( columnar::MuonId muon,
int & bin ) const
overridevirtual

Function that changes from Implementation to implementation.

Implements CP::HistHandler.

Definition at line 258 of file HistHandler.cxx.

258 {
259 if (!GetHist()) return CorrectionCode::Error;
260 float parx = 0;
261 float pary = 0;
262 float parz = 0;
263 if (m_x_handler->GetBinningParameter(muon, parx) == CorrectionCode::Error ||
264 m_y_handler->GetBinningParameter(muon, pary) == CorrectionCode::Error ||
265 m_z_handler->GetBinningParameter(muon, parz) == CorrectionCode::Error) return CorrectionCode::Error;
266 else {
267 int binx = GetHist()->GetXaxis()->FindBin(parx);
268 int biny = GetHist()->GetYaxis()->FindBin(pary);
269 int binz = GetHist()->GetZaxis()->FindBin(parz);
270 if (binx < 1 || binx > GetHist()->GetNbinsX() || biny < 1 || biny > GetHist()->GetNbinsY() || binz < 1 || binz > GetHist()->GetNbinsZ()) {
272 }
273 bin = GetHist()->GetBin(binx, biny, binz);
274 }
275 return CorrectionCode::Ok;
276 }
@ Error
Some error happened during the object correction.
@ OutOfValidityRange
Input object is out of validity range.
@ Ok
The correction was done successfully.

◆ GetBinContent()

double CP::HistHandler::GetBinContent ( int bin) const
inlineinherited

Definition at line 51 of file HistHandler.h.

51 {
52 if (!m_H) return DBL_MAX;
53 return m_H->GetBinContent(bin);
54 }
std::unique_ptr< TH1 > m_H
Definition HistHandler.h:86

◆ GetBinError()

double CP::HistHandler::GetBinError ( int bin) const
inlineinherited

Definition at line 58 of file HistHandler.h.

58 {
59 if (!m_H) return DBL_MAX;
60 return m_H->GetBinError(bin);
61 }

◆ GetBinName()

std::string CP::HistHandler_TH3::GetBinName ( unsigned int bin) const
overridevirtual

Translates the bin number into the borders and return them as name.

Implements CP::HistHandler.

Definition at line 278 of file HistHandler.cxx.

278 {
279 int x(0), y(0), z(0);
280 GetHist()->GetBinXYZ(bin, x, y, z);
281 TAxis* xAx = GetHist()->GetXaxis();
282 TAxis* yAx = GetHist()->GetYaxis();
283 TAxis* zAx = GetHist()->GetZaxis();
284 return Form("%s_%.2f_to_%.2f_times_%s_%.2f_to_%.2f_times_%s_%.2f_to_%.2f",
285 //xAxis
286 xAx->GetTitle(), xAx->GetBinLowEdge(x), xAx->GetBinUpEdge(x),
287 //yAxis
288 yAx->GetTitle(), yAx->GetBinLowEdge(y), yAx->GetBinUpEdge(y),
289 //zAxis
290 zAx->GetTitle(), zAx->GetBinLowEdge(z), zAx->GetBinUpEdge(z));
291 }
#define y
#define x
#define z

◆ GetHist()

TH1 * CP::HistHandler::GetHist ( ) const
inlineinherited

Definition at line 63 of file HistHandler.h.

63 {
64 return m_H.get();
65 }

◆ isOverFlowBin()

bool CP::HistHandler_TH3::isOverFlowBin ( int b) const
overridevirtual

States whether a bin is overflow or not.

Implements CP::HistHandler.

Definition at line 251 of file HistHandler.cxx.

251 {
252 int x(-1),y(-1), z(-1);
253 GetHist()->GetBinXYZ(b,x,y,z);
254 return x == 0 || x == GetHist()->GetXaxis()->GetNbins() + 1 ||
255 y == 0 || y == GetHist()->GetYaxis()->GetNbins() + 1 ||
256 z == 0 || z == GetHist()->GetZaxis()->GetNbins() + 1;
257 }

◆ nBins()

int CP::HistHandler_TH3::nBins ( ) const
overridevirtual

Return the total number of bins in the histogram -> (GetNbins() +2)**n.

Implements CP::HistHandler.

Definition at line 245 of file HistHandler.cxx.

245 {
246 return (GetHist()->GetNbinsX() + 2) * (GetHist()->GetNbinsY() + 2) * (GetHist()->GetNbinsZ() + 2);
247 }

◆ nOverFlowBins()

int CP::HistHandler_TH3::nOverFlowBins ( ) const
overridevirtual

Return the number of overflow bins.

Implements CP::HistHandler.

Definition at line 248 of file HistHandler.cxx.

248 {return 2*(GetHist()->GetNbinsX()*GetHist()->GetNbinsY() +
249 GetHist()->GetNbinsX()*GetHist()->GetNbinsZ() +
250 GetHist()->GetNbinsY()*GetHist()->GetNbinsZ()) + 8; }

◆ SetBinContent()

void HistHandler::SetBinContent ( int bin,
float val )
inherited

Definition at line 140 of file HistHandler.cxx.

140 {
141 if (m_H) {
142 m_H->SetBinContent(bin, val);
143 }
144 }

◆ SetBinError()

void HistHandler::SetBinError ( int bin,
float val )
inherited

Definition at line 145 of file HistHandler.cxx.

145 {
146 if (m_H) {
147 m_H->SetBinError(bin, val);
148 }
149 }

Member Data Documentation

◆ m_H

std::unique_ptr<TH1> CP::HistHandler::m_H
privateinherited

Definition at line 86 of file HistHandler.h.

◆ m_x_handler

std::unique_ptr<AxisHandler> CP::HistHandler_TH3::m_x_handler
private

Definition at line 157 of file HistHandler.h.

◆ m_y_handler

std::unique_ptr<AxisHandler> CP::HistHandler_TH3::m_y_handler
private

Definition at line 158 of file HistHandler.h.

◆ m_z_handler

std::unique_ptr<AxisHandler> CP::HistHandler_TH3::m_z_handler
private

Definition at line 159 of file HistHandler.h.


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