1 #ifndef __JFIT__JENERGYREGRESSOR__
2 #define __JFIT__JENERGYREGRESSOR__
31 namespace JPP {
using namespace JFIT; }
75 typedef JSplineFunction1D_t JFunction1D_t;
76 typedef JPDFTable<JFunction1D_t, JNPEMaplist_t> JPDF_t;
78 const JPDF_t::JSupervisor supervisor(
new JPDF_t::JDefaultResult(
JMATH::zero));
80 for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
87 const string file_name =
getFilename(fileDescriptor, type);
89 NOTICE(
"loading PDF from file " << file_name <<
"... " << flush);
91 pdf.load(file_name.c_str());
95 pdf.setExceptionHandler(supervisor);
100 YA.push_back(
JNPE_t(pdf));
102 Y1.push_back(
JNPE_t(pdf));
111 if (Y1.size() == 2) { Y1[1].add(Y1[0]); Y1.erase(Y1.begin()); }
112 if (YA.size() == 2) { YA[1].add(YA[0]); YA.erase(YA.begin()); }
113 if (YB.size() == 2) { YB[1].add(YB[0]); YB.erase(YB.begin()); }
127 const double E = x.
getE();
130 return estimator->getRho(u);
144 const double R_Hz)
const
149 const double x = axis.
getX();
150 const double y = axis.
getY();
151 const double R = sqrt(
x*
x +
y*
y);
154 const double theta = axis.
getTheta();
155 const double phi = fabs(axis.
getPhi());
157 const double y1 =
getNPE(Y1,
R, theta, phi);
158 const double yA =
getNPE(YA,
R, theta, phi);
159 const double yB =
getNPE(YB,
R, theta, phi);
161 return JNPE(
getN(T_ns, R_Hz * 1.0e-9), y1, yA, yB, z);
172 return std::max(getRmax(Y1), std::max(getRmax(YA), getRmax(YB)));
183 static const int NUMBER_OF_PDFS = 6;
202 if (!i->empty() && i->getXmax() >
xmax) {
231 if (R <= i->getXmax()) {
235 const double y =
get_value((*i)(std::max(R, i->getXmin()), theta, phi));
242 ERROR(error << std::endl);
Template definition of a data regressor of given model.
JPHYSICS::JNPETable< double, double, JNPEMaplist_t > JNPE_t
double getE() const
Get energy.
General purpose data regression method.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
std::vector< JNPE_t > YA
light from delta-rays
static double getNPE(const std::vector< JNPE_t > &NPE, const double R, const double theta, const double phi)
Get number of photo-electrons.
direct light from EM showers
static const JZero zero
Function object to assign zero value.
double getChi2(const double E_GeV) const
Get chi2.
double getPhi() const
Get phi angle.
Various implementations of functional maps.
Numbering scheme for PDF types.
The template JSinglePointer class can be used to hold a pointer to an object.
bool is_bremsstrahlung(const int pdf)
Test if given PDF type corresponds to Cherenkov light from Bremsstrahlung.
JNPE getNPE(const JAxis3D &axis, const double R_Hz) const
Create data structure for handling light yields for PMT.
scattered light from muon
JLANG::JSinglePointer< JMEstimator > estimator
M-Estimator function.
JRegressor(const std::string &fileDescriptor)
Constructor.
std::vector< JNPE_t > Y1
light from muon
static JTimeRange T_ns
Time window with respect to Cherenkov hypothesis [ns].
double operator()(const JEnergy &x, const JNPEHit &npe) const
Fit function.
double getTheta() const
Get theta angle.
scattered light from delta-rays
Auxiliary class for handling various light yields.
Auxiliary class for simultaneously handling light yields and response of PMT.
scattered light from EM showers
double getY() const
Get y position.
General purpose messaging.
direct light from delta-rays
double getRmax() const
Get maximal road width of NPE.
then JCookie sh JDataQuality D $DETECTOR_ID R
virtual const char * what() const override
Get error message.
static double getRmax(const std::vector< JNPE_t > &NPE)
Get maximal road width of PDF.
JTOOLS::JMAPLIST< JTOOLS::JPolint1FunctionalMap, JTOOLS::JPolint1FunctionalGridMap, JTOOLS::JPolint1FunctionalGridMap >::maplist JNPEMaplist_t
bool is_deltarays(const int pdf)
Test if given PDF type corresponds to Cherenkov light from delta-rays.
double getX() const
Get x position.
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
Data structure for fit of energy.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
double getNPE(const Hit &hit)
Get true charge of hit.
Abstract class for global fit method.
double getZ() const
Get z position.
Maximum likelihood estimator (M-estimators).
JTOOLS::JRange< double > JTimeRange
Type definition for time range (unit [s]).
Auxiliary class for handling debug parameter within a class.
std::vector< JNPE_t > YB
light from EM showers