1#ifndef __JAANET__JHONDAFLUXINTERPOLATOR__
2#define __JAANET__JHONDAFLUXINTERPOLATOR__
122 if (in >> min >> buffer >> max &&
182 return in >> properties;
194 template<
class JPhiFunction_t = JConstantFunction1D<
double, JArray<4,
double> >,
198 public JMultiFunction <JPhiFunction_t, typename JMAPLIST<JEnergyFunctionalMap_t, JCoszFunctionalMap_t>::maplist>,
199 public JClonable<JFlux, JHondaFluxInterpolator <JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> >,
200 public JObjectStreamIO <JHondaFluxInterpolator <JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> >,
201 public JMessage <JHondaFluxInterpolator <JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> >
272 return (!
table.empty() ?
290 const double phi)
const
298 static const JRange_t mod(0.0, 360.0);
302 const double _costh = min(max(costh, -1.0), 1.0);
303 const double _phi = mod.
mod(180.0 - phi);
435 const double phi)
const
437 return getFactor(type, log10E, costh, phi);
453 const double phi)
const
455 return getFactor(type, log10E, costh, phi);
469 const double log10E =
log10(neutrino.
E);
470 const double costh = neutrino.
dir.
z;
499 if (!
table.empty()) {
501 NOTICE(
"Loading Honda flux table from file " <<
table <<
"... " << flush);
505 this->check_validity();
562 for (
string line; getline(
ifs, line); ) {
570 const double cosz =
binspecs.coszRange.getCentralValue();
571 const double phi =
binspecs.phiRange .getCentralValue();
578 const double log10E =
log10(energy);
580 for (
typename result_type::iterator i =
values.begin(); i !=
values.end(); ++i) {
591 if (
p1 != string::npos && p2 != string::npos) {
622 template<
class JHondaFluxInterpolator_t>
649 public JMultiFunction <JConstantFunction1D<double, JArray<4, double> >, typename JMAPLIST<JEnergyFunctionalMap_t, JCoszFunctionalMap_t>::maplist>,
650 public JClonable<JDiffuseFlux, JHondaFluxInterpolator <JConstantFunction1D<double, JArray<4, double> >, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> >,
651 public JObjectStreamIO <JHondaFluxInterpolator <JConstantFunction1D<double, JArray<4, double> >, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> >,
652 public JMessage <JHondaFluxInterpolator <JConstantFunction1D<double, JArray<4, double> >, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> >
737 const double costh)
const override final
746 const double _costh = min(max(costh, -1.0), 1.0);
801 if (!
table.empty()) {
803 NOTICE(
"Loading Honda flux table from file " <<
table <<
"... " << flush);
807 this->check_validity();
834 return JHondaFluxInterpolatorHelper(*
this,
eqpars);
845 return JHondaFluxInterpolatorHelper(*
this,
eqpars);
864 for (
string line; getline(
ifs, line); ) {
872 const double cosz =
binspecs.coszRange.getCentralValue();
878 const double log10E =
log10(energy);
880 for (
typename result_type::iterator i =
values.begin(); i !=
values.end(); ++i) {
891 if (
p1 != string::npos && p2 != string::npos) {
913 struct JHondaFluxInterpolatorHelper :
922 template<
class JHondaFluxInterpolator_t>
958 template<
class JPhiFunction_t,
970 template<
class JPhiFunction_t,
General purpose class for a collection of sorted elements.
TCanvas * c1
Global variables to handle mouse events.
Various implementations of functional maps.
General purpose messaging.
I/O formatting auxiliaries.
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
Auxiliary class to define a range between two values.
Template specialisation for interpolator of azimuth-averaged Honda flux table.
JConstantFunction1D< double, JArray< 4, double > > JPhiFunction_t
void load()
Load Honda flux table.
JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t > interpolator_type
multifunction_type::multimap_type multimap_type
JHondaFluxInterpolator()
Default constructor.
multifunction_type::value_type value_type
JHondaFluxInterpolator(const interpolator_type &interpolator)
Copy constructor.
multifunction_type::abscissa_type abscissa_type
JMultiFunction< JPhiFunction_t, JFunctionalMaplist_t > multifunction_type
double dNdEdOmega(const int type, const double log10E, const double costh) const override final
Get diffuse flux for given particle PDG-identifier, energy and zenith-angle.
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) const override final
Get properties of this class.
JLoadProperty< interpolator_type, std::string > table
Honda flux table filename.
void load(const char *table)
Load Honda flux table.
JRange_t coszRange
Cosine zenith angle range.
friend std::ifstream & operator>>(std::ifstream &ifs, interpolator_type &interpolator)
Read Honda atmospheric neutrino flux interpolator from file.
multifunction_type::super_iterator super_iterator
JHondaFluxInterpolator(const char *filename)
Constructor.
bool is_valid() const override final
Check whether this interpolator is valid.
multifunction_type::argument_type argument_type
JRange< abscissa_type > JRange_t
multifunction_type::result_type result_type
JMAPLIST< JEnergyFunctionalMap_t, JCoszFunctionalMap_t >::maplist JFunctionalMaplist_t
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) override final
Get properties of this class.
multifunction_type::function_type function_type
multifunction_type::super_const_iterator super_const_iterator
Template definition for Honda flux table interpolator.
bool is_valid() const override final
Check whether this interpolator is valid.
double getFlux(const Evt &event) const
Get flux of given event.
multifunction_type::value_type value_type
JHondaFluxInterpolator(const interpolator_type &interpolator)
Copy constructor.
multifunction_type::argument_type argument_type
double getFactor(const Evt &evt) const override final
Get flux of given event.
void load()
Load Honda flux table.
multifunction_type::abscissa_type abscissa_type
double getFactor(const int type, const double log10E, const double costh, const double phi) const
Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle.
JMAPLIST< JEnergyFunctionalMap_t, JCoszFunctionalMap_t >::maplist JFunctionalMaplist_t
multifunction_type::function_type function_type
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) override final
Get properties of this class.
multifunction_type::super_const_iterator super_const_iterator
double getFlux(const int type, const double log10E, const double costh, const double phi) const
Get flux of given event.
JRange< abscissa_type > JRange_t
friend std::ifstream & operator>>(std::ifstream &ifs, interpolator_type &interpolator)
Read Honda atmospheric neutrino flux interpolator from file.
JHondaFluxInterpolator()
Default constructor.
multifunction_type::result_type result_type
JRange_t phiRange
Azimuth angle range [deg].
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) const override final
Get properties of this class.
JHondaFluxInterpolator(const char *filename)
Constructor.
multifunction_type::multimap_type multimap_type
JRange_t coszRange
Zenith angle range.
void load(const char *table)
Load Honda flux table.
JMultiFunction< JPhiFunction_t, JFunctionalMaplist_t > multifunction_type
multifunction_type::super_iterator super_iterator
double operator()(const int type, const double log10E, const double costh, const double phi) const
Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle.
JLoadProperty< interpolator_type, std::string > table
Table filename.
JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t > interpolator_type
Utility class to parse parameter values.
Simple data structure to support I/O of equations (see class JLANG::JEquation).
Data structure for object properties which require reloading whenever the property is reread.
Template definition of a multi-dimensional oscillation probability interpolation table.
multifunction_type::function_type function_type
multifunction_type::abscissa_type abscissa_type
multifunction_type::multimap_type multimap_type
multifunction_type::super_const_iterator super_const_iterator
multifunction_type::argument_type argument_type
multifunction_type::result_type result_type
JLoadProperty< interpolator_type, std::string > table
Oscillation probability table filename.
multifunction_type::super_iterator super_iterator
multifunction_type::value_type value_type
Extensions to Evt data format.
static const char *const HONDA_MUON_ANTINEUTRINO_FLUX_KEYWORD
static const char *const HONDA_MUON_NEUTRINO_FLUX_KEYWORD
static const char *const HONDA_ENERGY_KEYWORD
static const char *const HONDA_ELECTRON_ANTINEUTRINO_FLUX_KEYWORD
static const char *const HONDA_AZIMUTH_ANGLE_KEYWORD
static const char *const HONDA_ELECTRON_NEUTRINO_FLUX_KEYWORD
static const char *const HONDA_COSINE_ZENITH_ANGLE_KEYWORD
static const char HONDA_BINSPECS_END
static const char *const HONDA_BINSPECS_SEPARATOR
static const char HONDA_BINSPECS_BEGIN
const Trk & get_neutrino(const Evt &evt)
Get incoming neutrino.
General puprpose classes and methods.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
static const char *const getTypeKey()
Get type keyword.
static JEquationParameters & getEquationParameters()
Get equation parameters.
Auxiliary data structure for reading angular binning specifications of Honda flux table.
JHondaBinRange coszRange
Cosine zenith-angle range.
JHondaBinRange phiRange
Azimuthal angle range [deg].
JHondaAngularBinSpecs(const double minCosz, const double maxCosz, const double minPhi, const double maxPhi)
Constructor.
friend std::istream & operator>>(std::istream &in, JHondaAngularBinSpecs &binspecs)
Read bin specifications from input.
JHondaAngularBinSpecs()
Default constructor.
Auxiliary data structure for reading Honda bin ranges.
friend std::istream & operator>>(std::istream &in, JHondaBinRange &object)
Read bin range from input.
JHondaBinRange()
Default constructor.
JHondaBinRange(const double minimum, const double maximum)
Constructor.
double getCentralValue() const
Get central value of this range.
JRange< double > JRange_t
Auxiliary class for I/O of Honda flux interpolator.
JHondaFluxInterpolatorHelper(JHondaFluxInterpolator_t &interpolator, const JEquationParameters &eqpars)
Constructor.
JHondaFluxInterpolatorHelper(JHondaFluxInterpolator_t &interpolator, const JEquationParameters &eqpars)
Constructor.
Auxiliary class for handling debug parameter within a class.
static int debug
debug level (default is off).
Template class for object cloning.
Auxiliary base class for storing and loading a single object to and from an ASCII file,...
void load(const char *file_name)
Load from input file.
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
int type
MC: particle type in PDG encoding.
double E
Energy [GeV] (either MC truth or reconstructed)