9#include <cdc/utilities/CDCDedxSigmaPred.h>
18 B2FATAL(
"No dE/dx sigma parameters!");
20 std::vector<double> sigmapar;
22 for (
int i = 0; i < 2; ++i)
m_dedxpars[i] = sigmapar[i];
23 for (
int i = 0; i < 5; ++i)
m_nhitpars[i] = sigmapar[i + 2];
24 for (
int i = 0; i < 10; ++i)
m_cospars[i] = sigmapar[i + 7];
30 B2INFO(
"\n\tWidgetParameterization: Using parameters from file --> " << infile);
33 fin.open(infile.c_str());
35 if (!fin.good()) B2FATAL(
"\tWARNING: CANNOT FIND " << infile);
39 B2INFO(
"\t --> dedx parameters");
40 for (
int i = 0; i < 2; ++i) {
45 B2INFO(
"\t --> nhit parameters");
46 for (
int i = 0; i <= 4; ++i) {
51 B2INFO(
"\t --> cos parameters");
52 for (
int i = 0; i < 10; ++i) {
54 B2INFO(
"\t\t (" << i <<
")" <<
m_cospars[i]);
63 B2INFO(
"\n\tCDCDedxSigmaPred: Printing parameters to file --> " << outfile.c_str());
66 std::ofstream fout(outfile.c_str());
68 for (
int i = 1; i < 3; ++i) fout << i <<
"\t" <<
m_dedxpars[i - 1] << std::endl;
71 for (
int i = 3; i < 8; ++i) fout << i <<
"\t" <<
m_nhitpars[i - 3] << std::endl;
74 for (
int i = 8; i < 18; ++i) fout << i <<
"\t" <<
m_cospars[i - 8] << std::endl;
92 int nhit_min = 8, nhit_max = 37;
97 for (
int i = 0; i < 5; ++i) nhitpar[i + 1] =
m_nhitpars[i];
109 if (nhit < nhit_min) {
111 corNHit = gs.
sigmaCurve(x, std::vector<double>(nhitpar, nhitpar + 6)) * std::sqrt(nhit_min / nhit);
112 }
else if (nhit > nhit_max) {
114 corNHit = gs.
sigmaCurve(x, std::vector<double>(nhitpar, nhitpar + 6)) * std::sqrt(nhit_max / nhit);
116 corNHit = gs.
sigmaCurve(x, std::vector<double>(nhitpar, nhitpar + 6));
127 for (
int i = 0; i < 2; ++i) dedxpar[i + 1] =
m_dedxpars[i];
136 double corDedx = gs.
sigmaCurve(x, std::vector<double>(dedxpar, dedxpar + 3));
149 for (
int i = 0; i < 10; ++i) cospar[i + 1] =
m_cospars[i];
156 corCos = gs.
sigmaCurve(x, std::vector<double>(cospar, cospar + 11));
double ionzPrediction(double dedx)
Return sigma from the ionization parameterization.
void setParameters()
set the parameters
const DBObjPtr< CDCDedxSigmaPars > m_DBSigmaPars
db object for dE/dx resolution parameters
double getSigma(double dedx, double nhit, double cos, double timereso)
Return the predicted resolution depending on dE/dx, nhit, and cos(theta)
double cosPrediction(double cos)
Return sigma from the cos parameterization.
double m_dedxpars[2]
parameters for sigma vs.
double nhitPrediction(double nhit)
Return sigma from the nhit parameterization.
void printParameters(std::string infile)
write the parameters in file
double m_cospars[10]
parameters for sigma vs.
double m_nhitpars[5]
parameters for sigma vs.
Abstract base class for different kinds of events.