11#include <framework/logging/Logger.h>
51 B2WARNING(
"1D cell gain parameters do not match, cannot merge!");
54 for (
unsigned int layer = 0; layer <
getSize(); ++layer) {
55 double tempLayer = -1;
56 if (
getSize() == 2)tempLayer = layer * 20;
57 else if (
getSize() == 56)tempLayer = layer;
58 else B2ERROR(
"ERROR! Wrong # of constants vector array");
59 for (
unsigned int bin = 0; bin <
getNBins(layer); ++bin) {
76 unsigned int getNBins(
unsigned int layer)
const
87 B2ERROR(
"ERROR! const vector not found");
93 B2ERROR(
"ERROR! Wrong # of constants vector array: getNBins()");
103 double getMean(
unsigned int layer,
unsigned int bin)
const
105 unsigned int mylayer = 0;
106 if (layer >= 8 &&
m_onedgains.size() == 2) mylayer = 1;
107 else if (
m_onedgains.size() == 56) mylayer = layer;
119 void setMean(
unsigned int layer,
unsigned int bin,
double value)
121 unsigned int mylayer = 0;
122 if (layer >= 8 &&
m_onedgains.size() == 2) mylayer = 1;
123 else if (
m_onedgains.size() == 56) mylayer = layer;
132 double getMean(
unsigned int layer,
double enta)
const
135 B2ERROR(
"No such layer!");
139 unsigned int mylayer = 0;
140 if (layer >= 8 &&
m_onedgains.size() == 2) mylayer = 1;
141 else if (
m_onedgains.size() == 56) mylayer = layer;
145 double piby2 = M_PI / 2.0;
147 if (enta < -piby2) enta += piby2;
148 if (enta > piby2) enta -= piby2;
151 int bin = (binsize != 0.0) ? std::floor((enta + piby2) / binsize) : -1;
152 if (bin < 0 || (
unsigned)bin >=
m_onedgains[mylayer].size()) {
153 B2WARNING(
"Problem with CDC dE/dx 1D binning!");
dE/dx wire gain calibration constants
ClassDef(CDCDedx1DCell, 5)
ClassDef.
short m_version
dE/dx cleanup correction versus entrance angle may be different for different layers,...
CDCDedx1DCell(short version, const std::vector< std::vector< double > > &onedgains)
Constructor.
double getMean(unsigned int layer, unsigned int bin) const
Return dE/dx mean value for the given bin.
CDCDedx1DCell & operator*=(CDCDedx1DCell const &rhs)
Combine payloads.
double getMean(unsigned int layer, double enta) const
Return dE/dx mean value for given entrance angle.
~CDCDedx1DCell()
Destructor.
std::vector< std::vector< double > > m_onedgains
dE/dx means in entrance angle bins
void setMean(unsigned int layer, unsigned int bin, double value)
Reset dE/dx mean value for the given bin.
CDCDedx1DCell()
Default constructor.
unsigned int getNBins(unsigned int layer) const
Get the number of bins for the entrance angle correction.
short getVersion() const
Get the version for the 1D cleanup.
unsigned int getSize() const
Get the number of bins for the entrance angle correction.
Abstract base class for different kinds of events.