Regressor function object for JShower3EZ fit using JSimplex minimiser.
More...
#include <JShowerEnergyRegressor.hh>
|
| JRegressor (const std::string &fileDescriptor) |
| Parameterized constructor. More...
|
|
double | operator() (const JEnergy &x, const JShowerNPEHit &npe) const |
| Fit function. More...
|
|
JShowerNPE | getNPE (const JAxis3D &axis, const double R_Hz) const |
| Create data structure for handling light yields for PMT. More...
|
|
result_type | operator() (const JEnergy &value, T __begin, T __end) |
| Global fit. More...
|
|
template<class JFunction_t , class T > |
double | operator() (const JFunction_t &fit, T __begin, T __end) |
| Multi-dimensional fit. More...
|
|
template<class JFunction_t , class T > |
double | operator() (const JFunction_t &fit, T __begin, T __end, const JModel_t &step) |
| 1D fit. More...
|
|
|
template<class JFunction_t , class T > |
double | evaluate (const JFunction_t &fit, T __begin, T __end) const |
| Evaluate chi2 for given data set. More...
|
|
Regressor function object for JShower3EZ fit using JSimplex minimiser.
Definition at line 50 of file JShowerEnergyRegressor.hh.
◆ JFunction1D_t
◆ JMapList_t
◆ JPDF_t
◆ JNPE_t
◆ minimiser_type
◆ regressor_type
◆ result_type
◆ JRegressor()
Parameterized constructor.
The PDF file descriptor should contain the wild card character JPHYSICS::WILDCARD which will be replaced by the corresponding PDF types listed in JRegressor<JEnergy, JSimplex>::pdf_t.
- Parameters
-
fileDescriptor | PDF file descriptor |
Definition at line 71 of file JShowerEnergyRegressor.hh.
78 const JPDF_t::JSupervisor supervisor(
new JPDF_t::JDefaultResult(
JMATH::zero));
88 NOTICE(
"loading PDF from file " << file_name <<
"... " << flush);
90 pdf.load(file_name.c_str());
94 pdf.setExceptionHandler(supervisor);
virtual const char * what() const override
Get error message.
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
static const JZero zero
Function object to assign zero value.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
static const int NUMBER_OF_PDFS
static const JPDFType_t pdf_t[NUMBER_OF_PDFS]
PDF types.
JPHYSICS::JNPETable< double, double, JMapList_t > JNPE_t
JPHYSICS::JPDFTable< JFunction1D_t, JMapList_t > JPDF_t
std::vector< JNPE_t > Y
light from EM showers
JLANG::JSharedPointer< JMEstimator > estimator
M-Estimator function.
◆ operator()() [1/4]
Fit function.
This method is used to determine the chi2 of given PMT with respect to shower hypothesis.
- Parameters
-
x | energy |
npe | number of photoelectrons |
- Returns
- chi2
Definition at line 120 of file JShowerEnergyRegressor.hh.
124 const double E =
x.getE();
double getChi2(const double E_GeV) const
Get chi2.
◆ getNPE() [1/2]
Create data structure for handling light yields for PMT.
- Parameters
-
axis | PMT axis |
R_Hz | singles rate [Hz] |
- Returns
- light yields
Definition at line 137 of file JShowerEnergyRegressor.hh.
145 const double U_length = std::sqrt(U.getDX()*U.getDX() +
146 U.getDY()*U.getDY() +
147 U.getDZ()*U.getDZ());
149 const double ct = U.getDot(D) / (D.getLength()*U_length);
151 const double y =
getNPE(
Y, D.getLength(), ct);
Data structure for direction in three dimensions.
const JDirection3D & getDirection() const
Get direction.
Data structure for position in three dimensions.
const JPosition3D & getPosition() const
Get position.
static JTimeRange T_ns
Time window with respect to Cherenkov hypothesis [ns].
JShowerNPE getNPE(const JAxis3D &axis, const double R_Hz) const
Create data structure for handling light yields for PMT.
Auxiliary class for handling EM shower light yield.
◆ getNPE() [2/2]
Get number of photo-electrons.
- Parameters
-
NPE | NPE tables |
D | PMT distance from shower [m] |
cd | cosine of the PMT angle wrt the photon direction |
- Returns
- number of photo-electrons
Definition at line 165 of file JShowerEnergyRegressor.hh.
173 if (D <= i->getXmax()) {
177 const double y =
get_value((*i)(std::max(D, i->getXmin()), cd));
184 ERROR(error << std::endl);
◆ operator()() [2/4]
Global fit.
- Parameters
-
value | start value |
__begin | begin of data set |
__end | end of data set |
- Returns
- chi2
Definition at line 94 of file JRegressor.hh.
JSimplex< JEnergy > minimiser_type
JRegressor< JEnergy, JSimplex > regressor_type
◆ operator()() [3/4]
template<class JModel_t >
template<class JFunction_t , class T >
Multi-dimensional fit.
The given fit function should return the equivalent of chi2 for the current value of the given model and a given data point.
- Parameters
-
fit | fit function |
__begin | begin of data |
__end | end of data |
- Returns
- chi2
Definition at line 71 of file JSimplex.hh.
76 double chi2_old =
evaluate(fit, __begin, __end);
78 const int N =
step.size();
92 DEBUG(
"old: " <<
FIXED(12,5) << chi2_old << endl);
96 for (
int i = 0; i != N; ++i) {
100 chi2[i] = (*this)(fit, __begin, __end,
step[i]);
108 const double chi2_new = (*this)(fit, __begin, __end,
wall);
110 DEBUG(
"new: " <<
FIXED(12,5) << chi2_new << endl);
113 if (fabs(chi2_old - chi2_new) <
EPSILON*fabs(chi2_old)) {
123 const double fe =
evaluate(fit, __begin, __end);
128 for (
int i = N-1; i != 0; --i) {
129 chi2[i] = chi2[i-1] - chi2[i];
132 chi2[0] = chi2_old - chi2[0];
137 for (
int i = 0; i != N; ++i) {
143 const double fn = chi2_new;
144 const double f0 = chi2_old;
145 const double ff = f0 - fn - df;
149 if (fe < f0 && 2.0*(f0 - 2.0*fn + fe)*ff*ff < (f0-fe)*(f0-fe)*df) {
151 for (
int i = 0; i != N - 1; ++i) {
#define DEBUG(A)
Message macros.
static int MAXIMUM_ITERATIONS
maximal number of iterations
std::vector< JModel_t > step
static double EPSILON
maximal distance to minimum
double evaluate(const JFunction_t &fit, T __begin, T __end) const
Evaluate chi2 for given data set.
Auxiliary data structure for floating point format specification.
◆ operator()() [4/4]
template<class JModel_t >
template<class JFunction_t , class T >
1D fit.
The given fit function should return the equivalent of chi2 for the current value of the given model and a given data point.
- Parameters
-
fit | fit function |
__begin | begin of data |
__end | end of data |
step | step direction |
Definition at line 178 of file JSimplex.hh.
186 double chi2_old =
evaluate(fit, __begin, __end);
194 const double chi2_new =
evaluate(fit, __begin, __end);
196 DEBUG(
"step: " << setw(3) << i <<
' ' <<
FIXED(12,5) << chi2_old <<
' ' <<
FIXED(12,5) << chi2_new <<
' ' <<
FIXED(5,2) << lambda << endl);
198 if (fabs(chi2_old - chi2_new) <
EPSILON*fabs(chi2_old)) {
200 if (chi2_new > chi2_old) {
214 if (chi2_new < chi2_old) {
230 lambda = factor * lambda;
◆ evaluate()
template<class JModel_t >
template<class JFunction_t , class T >
Evaluate chi2 for given data set.
- Parameters
-
fit | fit function |
__begin | begin of data |
__end | end of data |
Definition at line 253 of file JSimplex.hh.
257 for (T hit = __begin; hit != __end; ++hit) {
258 chi2 += fit(
value, *hit);
◆ T_ns
◆ Vmax_npe
◆ NUMBER_OF_PDFS
◆ pdf_t
Initial value:
@ SCATTERED_LIGHT_FROM_BRIGHT_POINT
scattered light from bright point
@ DIRECT_LIGHT_FROM_BRIGHT_POINT
direct light from bright point
PDF types.
Definition at line 198 of file JShowerEnergyRegressor.hh.
◆ estimator
◆ MAXIMUM_ITERATIONS
template<class JModel_t >
maximal number of iterations
maximal number of iterations.
Definition at line 237 of file JSimplex.hh.
◆ EPSILON
template<class JModel_t >
maximal distance to minimum
maximal distance to minimum.
Definition at line 238 of file JSimplex.hh.
◆ value
template<class JModel_t >
◆ step
template<class JModel_t >
◆ numberOfIterations
template<class JModel_t >
◆ p0
template<class JModel_t >
◆ p1
template<class JModel_t >
◆ wall
template<class JModel_t >
◆ debug
debug level (default is off).
Definition at line 45 of file JMessage.hh.
The documentation for this struct was generated from the following file: