#ifndef __JOSCPROB__JOSCPROBINTERFACE__ #define __JOSCPROB__JOSCPROBINTERFACE__ #include "JLang/JClonable.hh" #include "JOscProb/JOscChannel.hh" #include "JOscProb/JOscParameters.hh" #include "JOscProb/JBaselineCalculator.hh" /** * \author bjung, mdejong */ namespace JOSCPROB {} namespace JPP { using namespace JOSCPROB; } namespace JOSCPROB { using JLANG::JClonable; using JIO::JSerialisable; /** * Low-level interface for oscillation probability calculators. */ class JOscProbInterface { public: /** * Default constructor. */ JOscProbInterface() {} /** * Virtual destructor. */ virtual ~JOscProbInterface() {} /** * Set oscillation parameters. * * \param parameters oscillation parameters */ virtual void set(const JOscParameters& parameters) const = 0 ; /** * Get oscillation probability for a given oscillation channel. * * \param channel oscillation channel * \param E neutrino energy [GeV] * \param costh cosine zenith angle * \return oscillation probability */ virtual double operator()(const JOscChannel& channel, const double E, const double costh) const = 0; /** * Get oscillation probability for a given set of oscillation parameters\n * and a given oscillation channel. * * \param channel oscillation channel * \param parameters oscillation parameters * \param E neutrino energy [GeV] * \param costh cosine zenith angle * \return oscillation probability */ virtual double operator()(const JOscParameters& parameters, const JOscChannel& channel, const double E, const double costh) const { set(parameters); return (*this)(channel, E, costh); } }; } #endif