#ifndef __JAANET__JATMOSPHERICNEUTRINOFLUX__ #define __JAANET__JATMOSPHERICNEUTRINOFLUX__ #include "flux/Flux.hh" #include "JAAnet/JOscFlux.hh" #include "JAAnet/JDiffuseFluxHelper.hh" #include "JAAnet/JEvtWeightFactorFunction.hh" #include "JOscProb/JOscProbHelper.hh" #include "JOscProb/JOscProbFunction.hh" #include "JOscProb/JOscProbInterface.hh" #include "JOscProb/JOscProbInterpolator.hh" #include "JOscProb/JOscParametersInterface.hh" /** * \author bjung */ namespace JAANET {} namespace JPP { using namespace JAANET; } namespace JAANET { using JOSCPROB::JOscProbFunction; using JOSCPROB::JOscProbInterface; using JOSCPROB::JOscProbInterpolator; using JOSCPROB::JOscParametersInterface; /** * Implementation of atmospheric neutrino flux using official KM3NeT atmospheric flux function. **/ struct JAtmosphericNeutrinoFlux final : public JOscFlux { /** * Constructor. * * \param pOscProb shared pointer to oscillation probability interface */ JAtmosphericNeutrinoFlux(const JOscProbHelper& pOscProb) : JOscFlux(pFlux, pOscProb) {} /** * Constructor. * * \param oscProbInterface oscillation probability interface */ JAtmosphericNeutrinoFlux(const JOscProbInterface& oscProbInterface) : JOscFlux(pFlux, oscProbInterface) {} /** * Constructor. * * The template argument refers to an oscillation probability function object or pointer. * * \param oscProbCalculator oscillation probability calculator */ template JAtmosphericNeutrinoFlux(const JOscProbFunction_t& oscProbCalculator) : JAtmosphericNeutrinoFlux(make_oscProbFunction(oscProbCalculator)) {} private: static const JDiffuseFluxHelper pFlux; }; const JDiffuseFluxHelper JAtmosphericNeutrinoFlux::pFlux = JDiffuseFluxHelper(JFluxAtmospheric()); //!< Initialisation of atmospheric neutrino flux function } #endif