1 #ifndef __JRECONSTRUCTION__JMUONENERGY__
2 #define __JRECONSTRUCTION__JMUONENERGY__
68 using JRegressor_t::operator();
82 const std::string& pdfFile,
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);
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) {
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;
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.
JTRIGGER::JHitR1 hit_type
JTOOLS::JRange< JEnergy > JEnergyRange
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
JRegressor< JEnergy > JRegressor_t
Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a functio...
bool hasSummaryFrame(const JDAQModuleIdentifier &module) const
Has summary frame.
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
double getRate() const
Get default rate.
Template specialisation of L0 builder for JHitL0 data type.
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
JAxis3D getAxis(const Trk &track)
Get axis.
JDirection3D getDirection(const Vec &dir)
Get direction.
JPosition3D getPosition(const Vec &pos)
Get position.
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).
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.
Template specialisation of class JModel to match hit with muon trajectory along z-axis.
Auxiliary class for simultaneously handling light yields and response of PMT.
Regressor function object for fit of muon energy.
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.