1#ifndef __JFIT__JSHOWERBRIGHTPOINTREGRESSOR__
2#define __JFIT__JSHOWERBRIGHTPOINTREGRESSOR__
33namespace JPP {
using namespace JFIT; }
51 double E = max(0.0,value.
getE());
66 static const int NUMBER_OF_PDFS = 2;
91 const JTimeRange& T_ns,
94 const double epsilon = 1.0e-10) :
103 for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
105 const string file_name = getFilename(fileDescriptor, pdf_t[i]);
107 _pdf[i].load(file_name.c_str());
113 for (
int i = 1; i < NUMBER_OF_PDFS; i += 2) {
115 _pdf[ i ].add(_pdf[i-1]);
119 _pdf[i-1].swap(buffer);
141 static const JPDFType_t pdf_t[NUMBER_OF_PDFS];
152 DIRECT_LIGHT_FROM_BRIGHT_POINT,
153 SCATTERED_LIGHT_FROM_BRIGHT_POINT
192 const JTimeRange& T_ns,
195 const double epsilon = 1.0e-10) :
206 pdf(storage.getPDF())
228 template<
class JHit_t>
236 D.
sub(
vx.getPosition());
238 double ct = U.
getDot(D) / length;
240 if (ct > +1.0) { ct = +1.0; }
241 if (ct < -1.0) { ct = -1.0; }
243 const double t =
vx.getT() + (length * getIndexOfRefraction() * getInverseSpeedOfLight());
245 const double dt = T_ns.constrain(
hit.getT() - t);
250 if (get_value(
H1) >= Vmax_npe) {
251 H1 *= Vmax_npe / get_value(
H1);
262 result.chi2 =
HT.getChi2() -
H0.getChi2();
274 -getIndexOfRefraction() * D.
getY() / length,
275 -getIndexOfRefraction() * D.
getZ() / length),
279 static_cast<JPoint4D&
>(result.gradient).mul(getInverseSpeedOfLight() * (
HT.getDerivativeOfChi2() -
280 H0.getDerivativeOfChi2()));
294 const double t1)
const
311 const double t)
const
317 for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
319 if (!pdf[i].empty() && D <= pdf[i].getXmax()) {
339 ERROR(error << std::endl);
358 for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
360 if (!pdf[i].empty() && pdf[i].getXmax() > xmax) {
361 xmax = pdf[i].getXmax();
Maximum likelihood estimator (M-estimators).
General purpose messaging.
Numbering scheme for PDF types.
General purpose data regression method.
This include file containes various data structures that can be used as specific return types for the...
Definition of zero value for any class.
Fit method based on the Levenberg-Marquardt method.
Data structure for vertex fit.
Data structure for vertex fit.
double getE() const
Get energy.
Data structure for direction in three dimensions.
double getDot(const JAngle3D &angle) const
Get dot product.
Data structure for position in three dimensions.
Data structure for vector in three dimensions.
double getY() const
Get y position.
double getLength() const
Get length.
double getZ() const
Get z position.
JVector3D & sub(const JVector3D &vector)
Subtract vector.
double getX() const
Get x position.
Template definition of a multi-dimensional oscillation probability interpolation table.
Multi-dimensional PDF table for arrival time of Cherenkov light.
transformablemultifunction_type::result_type result_type
void blur(const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10, const double quantile=0.99)
Blur PDF.
Auxiliary classes and methods for linear and iterative data regression.
void model(JModel_t &value)
Auxiliary function to constrain model during fit.
static const JZero zero
Function object to assign zero value.
@ SCATTERED_LIGHT_FROM_BRIGHT_POINT
scattered light from bright point
@ DIRECT_LIGHT_FROM_BRIGHT_POINT
direct light from bright point
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Abstract class for global fit method.
Data structure for return value of fit function.
Template specialisation for storage of PDF tables.
JRegressorStorage(const std::string &fileDescriptor, const JTimeRange &T_ns, const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10)
Parameterized constructor.
JTOOLS::JSplineFunction1S_t JFunction1D_t
const JPDFs_t & getPDF() const
Get PDFs.
JPHYSICS::JPDFTable< JFunction1D_t, JPDFMapList_t > JPDF_t
JRegressorStorage()
Default constructor.
JTOOLS::JMAPLIST< JTOOLS::JPolint2FunctionalMap, JTOOLS::JPolint1FunctionalGridMap >::maplist JPDFMapList_t
JTimeRange T_ns
Time window with respect to Cherenkov hypothesis [ns].
std::array< JPDF_t, NUMBER_OF_PDFS > JPDFs_t
PDFs.
Template data structure for storage of internal data.
JPDF_t::result_type getH0(const double R_Hz, const double t1) const
Get background hypothesis value for time differentiated PDF.
double getRmax() const
Get maximal road width of PDF.
static double Vmax_npe
Maximal integral of PDF [npe].
JRegressorStorage< JPoint4E, JGandalf > storage_type
result_type operator()(const JPoint4E &vx, const JHit_t &hit) const
Fit function.
JRegressor(const std::string &fileDescriptor, const JTimeRange &T_ns, const double TTS, const int numberOfPoints=25, const double epsilon=1.0e-10)
Constructor.
JPDF_t::result_type getH1(const double D, const double ct, const double t) const
Get signal hypothesis value per 1 GeV for bright point emission PDF.
JRegressor(const storage_type &storage)
Constructor.
JRegressor()
Default constructor.
Template definition of a data regressor of given model.
Auxiliary class to set-up Hit.