13 #include <framework/logging/Logger.h>
29 class CDCDedx1DCell:
public TObject {
54 B2WARNING(
"1D cell gain parameters do not match, cannot merge!");
57 for (
unsigned int layer = 0; layer <
getSize(); ++layer) {
58 double tempLayer = -1;
59 if (
getSize() == 2)tempLayer = layer * 20;
60 else if (
getSize() == 56)tempLayer = layer;
61 else B2ERROR(
"ERROR! Wrong # of constants vector array");
62 for (
unsigned int bin = 0; bin <
getNBins(layer); ++bin) {
63 m_onedgains[layer][bin] *= rhs.getMean(tempLayer, bin);
79 unsigned int getNBins(
unsigned int layer)
const
90 B2ERROR(
"ERROR! const vector not found");
96 B2ERROR(
"ERROR! Wrong # of constants vector array: getNBins()");
106 double getMean(
unsigned int layer,
unsigned int bin)
const
109 if (layer >= 8 &&
m_onedgains.size() == 2) mylayer = 1;
110 else if (
m_onedgains.size() == 56) mylayer = layer;
122 void setMean(
unsigned int layer,
unsigned int bin,
double value)
125 if (layer >= 8 &&
m_onedgains.size() == 2) mylayer = 1;
126 else if (
m_onedgains.size() == 56) mylayer = layer;
136 double getMean(
unsigned int layer,
double enta)
const
139 B2ERROR(
"No such layer!");
145 else if (
m_onedgains.size() == 56) mylayer = layer;
147 double piby2 = TMath::Pi() / 2.0;
149 if (enta < -piby2) enta += piby2;
150 if (enta > piby2) enta -= piby2;
153 int bin = (binsize != 0.0) ? std::floor((enta + piby2) / binsize) : -1;
154 if (bin < 0 || (
unsigned)bin >=
m_onedgains[mylayer].size()) {
155 B2WARNING(
"Problem with CDC dE/dx 1D binning!");