1 #ifndef __JFIT__JSHOWER3EZREGRESSOR__ 
    2 #define __JFIT__JSHOWER3EZREGRESSOR__ 
   74     double Tx = value.
getDX();
 
   75     double Ty = value.
getDY();
 
   76     double E = max(0.0,value.
getE());
 
   77     const double u = hypot(Tx, Ty);
 
  125       const JPDF_t::JSupervisor supervisor(
new JPDF_t::JDefaultResult(
JMATH::zero));
 
  127       for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
 
  133           const string file_name = 
getFilename(fileDescriptor, pdf_t[i]);
 
  135           NOTICE(
"loading PDF from file " << file_name << 
"... " << flush);
 
  137           pdf.
load(file_name.c_str());
 
  151       for (
int i = 1; i < NUMBER_OF_PDFS; i += 2) {
 
  153         npe[ i ].add(npe[i-1]);
 
  157         npe[i-1].swap(buffer);
 
  179       const double x  = D.
getX();
 
  180       const double y  = D.
getY();
 
  197       const bool hit = pmt.
getN() != 0;
 
  200       return estimator->getRho(
u);
 
  228                               const double E)
 const 
  232       for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
 
  234         if (!npe[i].empty() && D <= npe[i].getXmax()) {
 
  250             ERROR(error << std::endl);
 
  262     static const int    NUMBER_OF_PDFS = 2;
 
  309       const JPDF_t::JSupervisor supervisor(
new JPDF_t::JDefaultResult(
JMATH::zero));
 
  311       for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
 
  317           const string file_name = 
getFilename(fileDescriptor, pdf_t[i]);
 
  319           NOTICE(
"loading PDF from file " << file_name << 
"... " << flush);
 
  321           pdf.
load(file_name.c_str());
 
  335       for (
int i = 1; i < NUMBER_OF_PDFS; i += 2) {
 
  337         npe[ i ].add(npe[i-1]);
 
  341         npe[i-1].swap(buffer);
 
  363       const double x  = D.
getX();
 
  364       const double y  = D.
getY();
 
  386       const bool hit = pmt.
getN() != 0;
 
  387       const double u = H1.getChi2(hit) - H0.getChi2(hit);
 
  391       result.chi2     = estimator->getRho(
u);
 
  393       double energy_gradient = signal_npe/shower.
getE(); 
 
  394       if(hit) energy_gradient *= -exp(-expectation)/(1-exp(-expectation)); 
 
  404       result.gradient.mul(estimator->getPsi(
u));
 
  405       static_cast<JShower3Z&
>(
result.gradient).mul(H1.getDerivativeOfChi2(hit) - H0.getDerivativeOfChi2(hit));                    
 
  435                               const double E)
 const 
  439       for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
 
  441         if (!npe[i].empty() && D <= npe[i].getXmax()) {
 
  453             ERROR(error << std::endl);
 
  465     static const int    NUMBER_OF_PDFS = 2;
 
  511       const JPDF_t::JSupervisor supervisor(
new JPDF_t::JDefaultResult(
JMATH::zero));
 
  513       for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
 
  519           const string file_name = 
getFilename(fileDescriptor, pdf_t[i]);
 
  521           NOTICE(
"loading PDF from file " << file_name << 
"... " << flush);
 
  523           pdf.
load(file_name.c_str());
 
  537       for (
int i = 1; i < NUMBER_OF_PDFS; i += 2) {
 
  539         npe[ i ].add(npe[i-1]);
 
  543         npe[i-1].swap(buffer);
 
  565       const double x  = D.
getX();
 
  566       const double y  = D.
getY();
 
  583       const bool hit = pmt.
getN() != 0;
 
  586       return estimator->getRho(
u);
 
  614                               const double E)
 const 
  618       for (
int i = 0; i != NUMBER_OF_PDFS; ++i) {
 
  620         if (!npe[i].empty() && D <= npe[i].getXmax()) {
 
  636             ERROR(error << std::endl);
 
  660       const double x  = D.
getX();
 
  661       const double y  = D.
getY();
 
  680     static const int    NUMBER_OF_PDFS = 2;
 
Various implementations of functional maps.
 
Maximum likelihood estimator (M-estimators).
 
General purpose messaging.
 
Numbering scheme for PDF types.
 
Auxiliary class to define a range between two values.
 
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 fit of straight line in positive z-direction with energy.
 
double getBy() const
Get bjorken y.
 
double getE() const
Get E.
 
Data structure for cascade in positive z-direction.
 
const JVersor3Z & getDirection() const
Get direction.
 
Simple fit method based on Powell's algorithm, see reference: Numerical Recipes in C++,...
 
Data structure for direction in three dimensions.
 
const JDirection3D & getDirection() const
Get direction.
 
JDirection3D & rotate(const JRotation3D &R)
Rotate.
 
Data structure for position in three dimensions.
 
const JPosition3D & getPosition() const
Get position.
 
double getDot(const JAngle3D &angle) const
Get dot product.
 
Data structure for vector in three dimensions.
 
double getY() const
Get y position.
 
double getLength() const
Get length.
 
JVector3D & sub(const JVector3D &vector)
Subtract vector.
 
double getX() const
Get x position.
 
double getTheta() const
Get theta angle.
 
double getPhi() const
Get phi angle.
 
Data structure for normalised vector in positive z-direction.
 
double getDY() const
Get y direction.
 
double getDX() const
Get x direction.
 
virtual const char * what() const override
Get error message.
 
The template JSharedPointer class can be used to share a pointer to an object.
 
multifunction_t::result_type result_type
 
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
 
Auxiliary classes and methods for linear and iterative data regression.
 
double getPMTAngle(const double angle)
Constrain PMT angle to [0,pi].
 
double getChi2(const double P)
Get chi2 corresponding to given probability.
 
void model(JModel_t &value)
Auxiliary function to constrain model during fit.
 
static const JZero zero
Function object to assign zero value.
 
static const double PI
Mathematical constants.
 
@ SCATTERED_LIGHT_FROM_EMSHOWER
scattered light from EM shower
 
@ DIRECT_LIGHT_FROM_EMSHOWER
direct light from EM shower
 
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.
 
Auxiliary class for handling PMT geometry, rate and response.
 
int getN() const
Get number of hits.
 
double getR() const
Get rate.
 
JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap > > > > JNPEMaplist_t
 
static JTimeRange T_ns
Time window with respect to Cherenkov hypothesis [ns].
 
JPHYSICS::JPDFTable< JFunction1D_t, JPDFMaplist_t > JPDF_t
 
JPHYSICS::JNPETable< double, double, JNPEMaplist_t > JNPE_t
 
JNPE_t::result_type getH1(const double D, const double cd, const double theta, const double phi, const double E) const
Get signal hypothesis value for time integrated PDF.
 
static double Vmax_npe
Maximal integral of PDF [npe].
 
double operator()(const JShower3EZ &shower, const JPMTW0 &pmt) const
Fit function.
 
JNPE_t::result_type getH1(const JShower3EZ &shower, const JPMTW0 &pmt) const
Get signal hypothesis value for time integrated PDF.
 
JNPE_t::result_type getH0(const double R_Hz) const
Get background hypothesis value for time integrated PDF.
 
JLANG::JSharedPointer< JMEstimator > estimator
M-Estimator function.
 
JRegressor(const std::string &fileDescriptor)
Parameterized constructor.
 
JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap > > > > JPDFMaplist_t
 
JTOOLS::JSplineFunction1S_t JFunction1D_t
 
static double Vmax_npe
Maximal integral of PDF [npe].
 
JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap > > > > JPDFMaplist_t
 
JTOOLS::JSplineFunction1S_t JFunction1D_t
 
result_type operator()(const JShower3EZ &shower, const JPMTW0 &pmt) const
Fit function.
 
JLANG::JSharedPointer< JMEstimator > estimator
M-Estimator function.
 
JNPE_t::result_type getH0(const double R_Hz) const
Get background hypothesis value for time integrated PDF.
 
JPHYSICS::JNPETable< double, double, JNPEMaplist_t > JNPE_t
 
JTOOLS::JMapList< JTOOLS::JPolint1FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint1FunctionalMapH, JTOOLS::JMapList< JTOOLS::JPolint1FunctionalGridMap, JTOOLS::JMapList< JTOOLS::JPolint1FunctionalGridMap > > > > JNPEMaplist_t
 
static JTimeRange T_ns
Time window with respect to Cherenkov hypothesis [ns].
 
JNPE_t::result_type getH1(const double D, const double cd, const double theta, const double phi, const double E) const
Get signal hypothesis value for time integrated PDF.
 
JPHYSICS::JPDFTable< JFunction1D_t, JPDFMaplist_t > JPDF_t
 
JRegressor(const std::string &fileDescriptor)
Parameterized constructor.
 
JLANG::JSharedPointer< JMEstimator > estimator
M-Estimator function.
 
JPHYSICS::JPDFTable< JFunction1D_t, JPDFMaplist_t > JPDF_t
 
JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap > > > > JPDFMaplist_t
 
static double Vmax_npe
Maximal integral of PDF [npe].
 
JNPE_t::result_type getH0(const double R_Hz) const
Get background hypothesis value for time integrated PDF.
 
JNPE_t::result_type getH1(const double D, const double cd, const double theta, const double phi, const double E) const
Get signal hypothesis value for time integrated PDF.
 
double operator()(const JShower3EZ &shower, const JPMTW0 &pmt) const
Fit function.
 
JTOOLS::JSplineFunction1S_t JFunction1D_t
 
static JTimeRange T_ns
Time window with respect to Cherenkov hypothesis [ns].
 
JPHYSICS::JNPETable< double, double, JNPEMaplist_t > JNPE_t
 
JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap, JTOOLS::JMapList< JTOOLS::JPolint0FunctionalGridMap > > > > JNPEMaplist_t
 
JRegressor(const std::string &fileDescriptor)
Parameterized constructor.
 
Template definition of a data regressor of given model.
 
void load(const char *file_name)
Load from input file.