ATLAS Offline Software
Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
PixelHistoConverter Class Reference

#include <PixelHistoConverter.h>

Collaboration diagram for PixelHistoConverter:

Classes

struct  Axis
 

Public Member Functions

 PixelHistoConverter ()
 
virtual ~PixelHistoConverter ()=default
 
StatusCode setHisto1D (const TH1 *histo)
 
StatusCode setHisto2D (const TH2 *histo)
 
StatusCode setHisto3D (const TH3 *histo)
 
float getContent (std::size_t x) const
 
float getContent (std::size_t x, std::size_t y) const
 
float getContent (std::size_t x, std::size_t y, std::size_t z) const
 
bool isOverflowZ (const float value) const
 
bool isFirstZ (const float value) const
 
template<typename... Args>
std::size_t getBinX (Args &&...args) const
 
template<typename... Args>
std::size_t getBinY (Args &&...args) const
 
template<typename... Args>
std::size_t getBinZ (Args &&...args) const
 

Private Member Functions

std::size_t findBin (const Axis &axis, const float value) const
 

Static Private Member Functions

static bool setAxis (Axis &axis, const TAxis *rootAxis)
 

Private Attributes

Axis m_xAxis {}
 
Axis m_yAxis {}
 
Axis m_zAxis {}
 
std::vector< float > m_content
 

Detailed Description

Definition at line 25 of file PixelHistoConverter.h.

Constructor & Destructor Documentation

◆ PixelHistoConverter()

PixelHistoConverter::PixelHistoConverter ( )
default

◆ ~PixelHistoConverter()

virtual PixelHistoConverter::~PixelHistoConverter ( )
virtualdefault

Member Function Documentation

◆ findBin()

std::size_t PixelHistoConverter::findBin ( const Axis axis,
const float  value 
) const
inlineprivate

Definition at line 65 of file PixelHistoConverter.h.

65  {
66  if (value <= axis.min) return 0;
67  if (value >= axis.max) return (axis.nBins - 1);
68  return ((value - axis.min) * axis.width);
69  }

◆ getBinX()

template<typename... Args>
std::size_t PixelHistoConverter::getBinX ( Args &&...  args) const
inline

Definition at line 74 of file PixelHistoConverter.h.

74  {
75  return findBin(m_xAxis, std::forward<Args>(args)...);
76  }

◆ getBinY()

template<typename... Args>
std::size_t PixelHistoConverter::getBinY ( Args &&...  args) const
inline

Definition at line 79 of file PixelHistoConverter.h.

79  {
80  return findBin(m_yAxis, std::forward<Args>(args)...);
81  }

◆ getBinZ()

template<typename... Args>
std::size_t PixelHistoConverter::getBinZ ( Args &&...  args) const
inline

Definition at line 84 of file PixelHistoConverter.h.

84  {
85  return findBin(m_zAxis, std::forward<Args>(args)...);
86  }

◆ getContent() [1/3]

float PixelHistoConverter::getContent ( std::size_t  x) const
inline

Definition at line 34 of file PixelHistoConverter.h.

34  {
35  return m_content[x];
36  }

◆ getContent() [2/3]

float PixelHistoConverter::getContent ( std::size_t  x,
std::size_t  y 
) const
inline

Definition at line 37 of file PixelHistoConverter.h.

37  {
38  return m_content[x + y*(m_xAxis.nBins)];
39  }

◆ getContent() [3/3]

float PixelHistoConverter::getContent ( std::size_t  x,
std::size_t  y,
std::size_t  z 
) const
inline

Definition at line 40 of file PixelHistoConverter.h.

40  {
41  return m_content[x + m_xAxis.nBins*(y + (m_yAxis.nBins * z))];
42  }

◆ isFirstZ()

bool PixelHistoConverter::isFirstZ ( const float  value) const

Definition at line 101 of file PixelHistoConverter.cxx.

101  {
102  return (getBinZ(value) == 0);
103 }

◆ isOverflowZ()

bool PixelHistoConverter::isOverflowZ ( const float  value) const
inline

Definition at line 44 of file PixelHistoConverter.h.

44  {
45  return (value >= m_zAxis.max);
46  }

◆ setAxis()

bool PixelHistoConverter::setAxis ( Axis axis,
const TAxis *  rootAxis 
)
staticprivate

check if the histogram has equidistant bins

use a threshold for imperfect binning

storing as 1/width to avoid (slow) division in retrieving

Definition at line 105 of file PixelHistoConverter.cxx.

105  {
106 
107  if (!rootAxis) {
108  return false;
109  }
110 
111  axis.nBins = rootAxis->GetNbins();
112  axis.min = rootAxis->GetXmin();
113  axis.max = rootAxis->GetXmax();
114 
115  if (axis.nBins < 1) {
116  return false;
117  }
118 
120  const float width = rootAxis->GetBinWidth(1);
121  for (std::size_t ibin = 2; ibin <= axis.nBins; ++ibin) {
123  if (std::abs(rootAxis->GetBinWidth(ibin) - width) > 0.01*width) {
124  return false;
125  }
126  }
127 
129  axis.width = 1.*axis.nBins/(axis.max - axis.min);
130 
131  return true;
132 }

◆ setHisto1D()

StatusCode PixelHistoConverter::setHisto1D ( const TH1 histo)

fill the content

Definition at line 20 of file PixelHistoConverter.cxx.

20  {
21 
22  if (!histo) {
23  return StatusCode::FAILURE;
24  }
25 
26  if (!setAxis(m_xAxis, histo->GetXaxis())) {
27  return StatusCode::FAILURE;
28  }
29 
31  const std::size_t xSize = m_xAxis.nBins;
32  m_content.resize(xSize);
33 
34  for (std::size_t x = 0; x < xSize; ++x) {
35  m_content.at(x) = histo->GetBinContent(x+1);
36  }
37 
38  return StatusCode::SUCCESS;
39 }

◆ setHisto2D()

StatusCode PixelHistoConverter::setHisto2D ( const TH2 histo)

fill the content use linearized version for performance reasons

Definition at line 41 of file PixelHistoConverter.cxx.

41  {
42  if (!histo) {
43  return StatusCode::FAILURE;
44  }
45 
46  if (!setAxis(m_xAxis, histo->GetXaxis())) {
47  return StatusCode::FAILURE;
48  }
49  if (!setAxis(m_yAxis, histo->GetYaxis())) {
50  return StatusCode::FAILURE;
51  }
52 
54  const std::size_t xSize = m_xAxis.nBins;
55  const std::size_t ySize = m_yAxis.nBins;
56  m_content.resize(xSize*ySize);
57 
58  for (std::size_t x = 0; x < xSize; ++x) {
59  for (std::size_t y = 0; y < ySize; ++y) {
60  const std::size_t position = x + y*xSize;
61  m_content.at(position) = histo->GetBinContent(x+1,y+1);
62  }
63  }
64 
65  return StatusCode::SUCCESS;
66 }

◆ setHisto3D()

StatusCode PixelHistoConverter::setHisto3D ( const TH3 histo)

fill the content use linearized version for performance reasons

Definition at line 68 of file PixelHistoConverter.cxx.

68  {
69  if (!histo) {
70  return StatusCode::FAILURE;
71  }
72 
73  if (!setAxis(m_xAxis, histo->GetXaxis())) {
74  return StatusCode::FAILURE;
75  }
76  if (!setAxis(m_yAxis, histo->GetYaxis())) {
77  return StatusCode::FAILURE;
78  }
79  if (!setAxis(m_zAxis, histo->GetZaxis())) {
80  return StatusCode::FAILURE;
81  }
82 
84  const std::size_t xSize = m_xAxis.nBins;
85  const std::size_t ySize = m_yAxis.nBins;
86  const std::size_t zSize = m_zAxis.nBins;
87  m_content.resize(xSize*ySize*zSize);
88 
89  for (std::size_t x = 0; x < xSize; ++x) {
90  for (std::size_t y = 0; y < ySize; ++y) {
91  for (std::size_t z = 0; z < zSize; ++z) {
92  const std::size_t position = x + xSize*(y + (ySize * z));
93  m_content.at(position) = histo->GetBinContent(x+1,y+1,z+1);
94  }
95  }
96  }
97 
98  return StatusCode::SUCCESS;
99 }

Member Data Documentation

◆ m_content

std::vector<float> PixelHistoConverter::m_content
private

Definition at line 61 of file PixelHistoConverter.h.

◆ m_xAxis

Axis PixelHistoConverter::m_xAxis {}
private

Definition at line 57 of file PixelHistoConverter.h.

◆ m_yAxis

Axis PixelHistoConverter::m_yAxis {}
private

Definition at line 58 of file PixelHistoConverter.h.

◆ m_zAxis

Axis PixelHistoConverter::m_zAxis {}
private

Definition at line 59 of file PixelHistoConverter.h.


The documentation for this class was generated from the following files:
PixelHistoConverter::m_zAxis
Axis m_zAxis
Definition: PixelHistoConverter.h:59
PixelHistoConverter::findBin
std::size_t findBin(const Axis &axis, const float value) const
Definition: PixelHistoConverter.h:65
PixelHistoConverter::setAxis
static bool setAxis(Axis &axis, const TAxis *rootAxis)
Definition: PixelHistoConverter.cxx:105
yodamerge_tmp.axis
list axis
Definition: yodamerge_tmp.py:241
athena.value
value
Definition: athena.py:122
x
#define x
PixelHistoConverter::m_content
std::vector< float > m_content
Definition: PixelHistoConverter.h:61
PixelHistoConverter::getBinZ
std::size_t getBinZ(Args &&...args) const
Definition: PixelHistoConverter.h:84
z
#define z
y
#define y
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
PixelHistoConverter::Axis::nBins
std::size_t nBins
Definition: PixelHistoConverter.h:51
PixelHistoConverter::m_yAxis
Axis m_yAxis
Definition: PixelHistoConverter.h:58
plotBeamSpotCompare.histo
histo
Definition: plotBeamSpotCompare.py:415
PixelHistoConverter::Axis::max
float max
Definition: PixelHistoConverter.h:53
PixelHistoConverter::m_xAxis
Axis m_xAxis
Definition: PixelHistoConverter.h:57
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80