1#ifndef __JRECONSTRUCTION__JMUONENERGY__ 
    2#define __JRECONSTRUCTION__JMUONENERGY__ 
   68    using JRegressor_t::operator();
 
   82                const std::string&             pdfFile,
 
   92      JRegressor_t::debug  = 
debug;
 
  101      if (!this->estimator.is_valid()) {
 
  102        FATAL(
"Invalid M-Estimator." << endl);
 
 
  118              const double   chi2 = std::numeric_limits<double>::max())
 
 
  129      operator bool()
 const 
  131        return chi2 != std::numeric_limits<double>::max();
 
 
 
  162      for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
 
  172        for (JDataL0_t::const_iterator i = dataL0.begin(); i !=dataL0.end(); ++i) {
 
  179            top.insert(i->getPMTIdentifier());
 
  191        for (JDetector::const_iterator module = subdetector.begin(); module != subdetector.end(); ++module) {
 
  197            for (
size_t i = 0; i != 
module->size(); ++i) {
 
  207                const size_t count   = top.count(
id);
 
  209                data.push_back(
JNPEHit(this->
getNPE(module->getPMT(i), rate_Hz), count));
 
  215        const int NDF = 
distance(data.begin(), data.end()) - 1;
 
  225          for (
int i = 0; i != N; ++i) {
 
  235            for (
int i = 0; i != N; ++i) {
 
  240                const double  chi2 = (*this)(x, data.begin(), data.end());
 
  243                buffer[chi2]   = x.getE();
 
  252            for (
int i = 0; i != N; ++i) {
 
  298            result[2].chi2  = (*this)(
result[2].x, data.begin(), data.end());
 
  302          const double chi2 = 
result[2].chi2;
 
  303          const double E    = 
result[2].x.getE();
 
  307          double Emin = numeric_limits<double>::max();
 
  308          double Emax = numeric_limits<double>::lowest();
 
  311            if (i->second < Emin) { Emin = i->second; }
 
  312            if (i->second > Emax) { Emax = i->second; }
 
  315          const double mu_range   = 
gWater(E);           
 
  317          double noise_likelihood = 0.0;                 
 
  318          int    number_of_hits   = 0;                   
 
  320          for (vector<JNPEHit>::const_iterator i = data.begin(); i != data.end(); ++i) {
 
  321            noise_likelihood += log10(
getP(i->getY0(), i->getN()));       
 
  322            number_of_hits   += i->getN();                                
 
  327          out.rbegin()->setE(E);
 
  329          out.rbegin()->setW(track->getW());
 
 
 
Auxiliary class to extract a subset of optical modules from a detector.
 
Data structure for detector geometry and calibration.
 
Data regression method for JFIT::JEnergy.
 
Basic data structure for L0 hit.
 
Reduced data structure for L1 hit.
 
#define DEBUG(A)
Message macros.
 
Direct access to module in detector data structure.
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Detector subset without binary search functionality.
 
Router for direct addressing of module data in detector data structure.
 
Data structure for fit of energy.
 
Data structure for set of track fit results.
 
JFit & add(const int type)
Add event to history.
 
Data structure for fit of straight line paralel to z-axis.
 
JPosition3D & rotate(const JRotation3D &R)
Rotate.
 
const JClass_t & getReference() const
Get reference to object.
 
Auxiliary class to to determine muon energy.
 
JTOOLS::JRange< JEnergy > JEnergyRange
 
JTRIGGER::JHitR1 hit_type
 
JRegressor< JEnergy > JRegressor_t
 
JMuonEnergy(const JMuonEnergyParameters_t ¶meters, const JModuleRouter &router, const JSummaryRouter &summary, const std::string &pdfFile, const int debug=0)
Constructor.
 
std::vector< hit_type > buffer_type
 
const JModuleRouter & router
 
JEvt operator()(const KM3NETDAQ::JDAQEvent &event, const JEvt &in)
Fit function.
 
const JSummaryRouter & summary
 
Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a functio...
 
bool hasSummaryFrame(const JDAQModuleIdentifier &module) const
Has summary frame.
 
double getRate() const
Get default rate.
 
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
 
Reduced data structure for L1 hit.
 
Data storage class for rate measurements of all PMTs in one module.
 
static const int JMUONENERGY
 
static const int JENERGY_NDF
number of degrees of freedom from JEnergy.cc
 
static const int JENERGY_ENERGY
uncorrected energy [GeV] from JEnergy.cc
 
static const int JENERGY_NOISE_LIKELIHOOD
log likelihood of every hit being K40 from JEnergy.cc
 
static const int JENERGY_CHI2
chi2 from JEnergy.cc
 
static const int JENERGY_MUON_RANGE_METRES
range of a muon with the reconstructed energy [m] from JEnergy.cc
 
static const int JENERGY_NUMBER_OF_HITS
number of hits from JEnergy.cc
 
static const int JSTART_LENGTH_METRES
distance between first and last hits in metres from JStart.cc
 
static const int JENERGY_MINIMAL_ENERGY
minimal energy [GeV] from JEnergy.cc
 
static const int JENERGY_MAXIMAL_ENERGY
maximal energy [GeV] from JEnergy.cc
 
double getNPE(const Hit &hit)
Get true charge of hit.
 
JMEstimator * getMEstimator(const int type)
Get M-Estimator.
 
double getP(const double expval, bool hit)
Get Poisson probability to observe a hit or not for given expectation value for the number of hits.
 
static const JGeaneWater gWater
Function object for energy loss of muon in sea water.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
JPosition3D getPosition(const JFit &fit)
Get position.
 
JAxis3D getAxis(const JFit &fit)
Get axis.
 
JDirection3D getDirection(const JFit &fit)
Get direction.
 
bool is_valid(const json &js)
Check validity of JSon data.
 
bool getDAQStatus(const JDAQFrameStatus &frame, const JStatus &status)
Test status of DAQ.
 
bool getPMTStatus(const JStatus &status)
Test status of PMT.
 
static const int PMT_DISABLE
KM3NeT Data Definitions v3.4.0-8-ge14cb17 https://git.km3net.de/common/km3net-dataformat.
 
Auxiliary data structure for floating point format specification.
 
Auxiliary class to match data points with given model.
 
Auxiliary class for simultaneously handling light yields and response of PMT.
 
Template definition of a data regressor of given model.
 
Data structure for fit parameters.
 
double roadWidth_m
road width [m]
 
double TMin_ns
minimal time w.r.t. Cherenkov hypothesis [ns]
 
double resolution
energy resolution [log10(GeV)]
 
int mestimator
M-estimator.
 
double EMin_log
minimal energy [log10(GeV)]
 
double TMax_ns
maximal time w.r.t. Cherenkov hypothesis [ns]
 
double ZMin_m
minimal z-position [m]
 
double EMax_log
maximal energy [log10(GeV)]
 
Auxiliary class for energy estimation.
 
JResult(const JEnergy &x=0.0, const double chi2=std::numeric_limits< double >::max())
Constructor.