9 #ifndef _atm_AnalyticalCherenkovModel_h_
10 #define _atm_AnalyticalCherenkovModel_h_
13 #include <atm/VCherenkovModel.h>
14 #include <atm/Arbeletche2021CherenkovAngularModel.h>
15 #include <utl/TabulatedFunction.h>
16 #include <utl/Point.h>
20 class TabulatedFunction;
56 const double showerAge)
const;
63 const double showerAge)
const;
66 const utl::Point& xEye,
const double showerAge)
const;
70 const utl::Point& xEye,
const double showerAge,
const double wavelength)
const;
72 double AngularCDF(
const double theta,
const double verticalDepth,
73 const double showerAge)
const;
74 double AngularPDF(
const double theta,
const double verticalDepth,
75 const double showerAge)
const;
82 static const double fdE;
117 double dSlant,
double wl1,
double wl2)
const;
121 double meanShowerAge,
double refractiveIndex)
const;
131 double density)
const;
144 double density)
const;
std::vector< double > fNerlingFactor
double fShowerAgePrevious
double CherenkovIntegral(double lowAngle, double highAngle, double meanShowerAge, double refractiveIndex) const
Calculation of the Cherenkov angle integral int(df/dtheta*sin(theta))
utl::TabulatedFunction & EvaluateCherenkovPhotons(const utl::Point &xA, const utl::Point &xB, const double showerAge) const
Calculation of Cherenkov photons produced between two points.
Parametrization fParam
Parametrization to be used in the Cherenkov light calculation.
double AngularPDF(const double theta, const double verticalDepth, const double showerAge) const
REGISTER_MODEL(atm::VCherenkovModel,"Analytical", AnalyticalCherenkovModel)
Class to hold collection (x,y) points and provide interpolation between them.
Base class for a Cherenkov Model.
Parametrization of the angular distribution of Cherenkov photons from L. Arbeletche and V...
bool fCorrectCherenkovAsymmetry
void Init()
Init method of the model.
Arbeletche2021CherenkovAngularModel fArbeletcheAngularDistribution
static const double fjMax
utl::TabulatedFunction fCherenkovPhotons
Number of photons as function of the wavelength.
utl::Point fxAprevious
Keep reference to previous calculation, to prevent re-calculation.
double AngularCDF(const double theta, const double verticalDepth, const double showerAge) const
bool CorrectCherenkovAsymmetry(double age, double theta) const
double fCherenkovAsymmetryMinAge
double fCherenkovAsymmetryMinA
double DeltaPhotons(double nIndex, double eelec, double dSlant, double wl1, double wl2) const
Calculation of Cherenkov Photons between two wavelengths.
double EvaluateDirectCherenkovProbability(const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye, const double showerAge) const
virtual ~AnalyticalCherenkovModel()
Model Destructor.
bool HasData() const
True if a data source is for the given model.
static const double fNerlingMinValidShowerAge
Limits for the shower age in the use of the Nerling parameterizations.
const std::vector< double > & GetWavelengths() const
ParametrizationAngular fParamAngular
double fCherenkovAsymmetryMaxA
double AsymmCorrection(double a, double theta, double sinphi) const
Asymmetry correction as local parametrisation.
Model with analytical calculation of the Cherenkov light.
static const double fNerlingMaxValidShowerAge
double fCherenkovAsymmetryMinAngle
AnalyticalCherenkovModel()
Model Constructor.
utl::TabulatedFunction & EvaluateCherenkovDirect(const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye, const double showerAge) const
Calculation of probability of Cherenkov emission.
std::vector< double > fWavelength
Wavelengths to calculate the light production.
void SetEnergyCutoff(double ecut) const
double AsymmCorrectionOld(double bm, double bp, double sinphi) const
Asymmetry correction with old local parametrisation.
double fCherenkovAsymmetryMaxAge
double CherenkovTrackLength(double energy, double showerAge) const
Calculation of a special track length to be used in the Cherenkov light evaluation.
utl::TabulatedFunction fDirectCherenkovPhotons
double fCherenkovAsymmetryMaxAngle