Model with analytical calculation of the Cherenkov light. More...
#include <AnalyticalCherenkovModel.h>
Public Types | |
enum | Parametrization { eHillas, eGiller, eNerling } |
enum | ParametrizationAngular { eAngHillas, eAngNerling, eAngGiller, eAngArbeletche } |
Public Member Functions | |
AnalyticalCherenkovModel () | |
Model Constructor. More... | |
double | AngularCDF (const double theta, const double verticalDepth, const double showerAge) const |
double | AngularPDF (const double theta, const double verticalDepth, const double showerAge) const |
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. More... | |
utl::TabulatedFunction & | EvaluateCherenkovPhotons (const utl::Point &xA, const utl::Point &xB, const double showerAge) const |
Calculation of Cherenkov photons produced between two points. More... | |
double | EvaluateDirectCherenkovProbability (const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye, const double showerAge) const |
double | EvaluateDirectCherenkovProbability (const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye, const double showerAge, const double wavelength) const |
virtual double | GetEnergyCutoff () const |
bool | HasData () const |
True if a data source is for the given model. More... | |
void | Init () |
Init method of the model. More... | |
void | SetEnergyCutoff (double ecut) const |
virtual void | SetUncertaintyBound (const double nSigma) const |
alter Model by nSigma standard deviations More... | |
virtual | ~AnalyticalCherenkovModel () |
Model Destructor. More... | |
Protected Attributes | |
double | fEcut = 0 |
electron energy-cutoff More... | |
Private Member Functions | |
double | AsymmCorrection (double a, double theta, double sinphi) const |
Asymmetry correction as local parametrisation. More... | |
double | AsymmCorrection (const utl::Point &emissionPoint, const utl::Vector &v_toeye, const utl::Vector &axis, double density) const |
Asymmetry correction as function of physical geometry. More... | |
double | AsymmCorrection (const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye) const |
Asymmetry correction dependant on input data. More... | |
double | AsymmCorrectionOld (double bm, double bp, double sinphi) const |
Asymmetry correction with old local parametrisation. More... | |
double | AsymmCorrectionOld (const utl::Vector &v_toeye, const utl::Vector &axis, double density) const |
Asymmetry correction with old parametrisation as function of physical geometry. More... | |
double | CherenkovIntegral (double lowAngle, double highAngle, double meanShowerAge, double refractiveIndex) const |
Calculation of the Cherenkov angle integral int(df/dtheta*sin(theta)) More... | |
double | CherenkovTrackLength (double energy, double showerAge) const |
Calculation of a special track length to be used in the Cherenkov light evaluation. More... | |
bool | CorrectCherenkovAsymmetry (double age, double theta) const |
double | DeltaPhotons (double nIndex, double eelec, double dSlant, double wl1, double wl2) const |
Calculation of Cherenkov Photons between two wavelengths. More... | |
const std::vector< double > & | GetWavelengths () const |
REGISTER_MODEL (atm::VCherenkovModel,"Analytical", AnalyticalCherenkovModel) | |
Private Attributes | |
Arbeletche2021CherenkovAngularModel | fArbeletcheAngularDistribution |
double | fCherenkovAsymmetryMaxA |
double | fCherenkovAsymmetryMaxAge |
double | fCherenkovAsymmetryMaxAngle |
double | fCherenkovAsymmetryMinA |
double | fCherenkovAsymmetryMinAge |
double | fCherenkovAsymmetryMinAngle |
utl::TabulatedFunction | fCherenkovPhotons |
Number of photons as function of the wavelength. More... | |
bool | fCorrectCherenkovAsymmetry |
utl::TabulatedFunction | fDirectCherenkovPhotons |
bool | fLowENerling |
std::vector< double > | fNerlingFactor |
Parametrization | fParam |
Parametrization to be used in the Cherenkov light calculation. More... | |
ParametrizationAngular | fParamAngular |
double | fShowerAgePrevious |
std::vector< double > | fWavelength |
Wavelengths to calculate the light production. More... | |
bool | fWlRefrac |
utl::Point | fxAprevious |
Keep reference to previous calculation, to prevent re-calculation. More... | |
utl::Point | fxBprevious |
Static Private Attributes | |
static const double | fdE = 10*MeV |
static const double | fjMax = 800*MeV |
static const double | fNerlingMaxValidShowerAge = 2. |
static const double | fNerlingMinValidShowerAge = 0.1 |
Limits for the shower age in the use of the Nerling parameterizations. More... | |
Model with analytical calculation of the Cherenkov light.
"atm/AnalyticalCherenkovModel.h"
Definition at line 36 of file AnalyticalCherenkovModel.h.
Enumerator | |
---|---|
eHillas | |
eGiller | |
eNerling |
Definition at line 47 of file AnalyticalCherenkovModel.h.
Enumerator | |
---|---|
eAngHillas | |
eAngNerling | |
eAngGiller | |
eAngArbeletche |
Definition at line 50 of file AnalyticalCherenkovModel.h.
AnalyticalCherenkovModel::AnalyticalCherenkovModel | ( | ) |
Model Constructor.
Definition at line 149 of file AnalyticalCherenkovModel.cc.
References utl::MeV, and SetEnergyCutoff().
|
inlinevirtual |
Model Destructor.
Definition at line 42 of file AnalyticalCherenkovModel.h.
|
virtual |
Implements atm::VCherenkovModel.
Definition at line 731 of file AnalyticalCherenkovModel.cc.
References RdGeoCeLDFFitter::c, atm::Arbeletche2021CherenkovAngularModel::CDF(), utl::CherenkovThreshold(), eAngArbeletche, eAngHillas, eAngNerling, ERROR, fArbeletcheAngularDistribution, fNerlingMaxValidShowerAge, fNerlingMinValidShowerAge, fParamAngular, HillasAngle(), utl::kPiOnTwo, utl::RefractionIndex::LorentzLorentz(), utl::MeV, NerlingAngle(), NerlingAngleFactor(), NerlingNormA(), NerlingNormB(), and utl::s.
|
virtual |
Implements atm::VCherenkovModel.
Definition at line 955 of file AnalyticalCherenkovModel.cc.
References RdGeoCeLDFFitter::c, utl::CherenkovThreshold(), eA1, eA2, eAlpha, eAngArbeletche, eAngGiller, eAngHillas, eAngNerling, eC1, eC2, ERROR, eTheta0, fArbeletcheAngularDistribution, fNerlingMaxValidShowerAge, fNerlingMinValidShowerAge, fParamAngular, GetGillerAngularParameter(), HillasAngle(), utl::kPiOnTwo, utl::RefractionIndex::LorentzLorentz(), atm::ProfileResult::MaxX(), utl::MeV, atm::ProfileResult::MinX(), NerlingAngle(), NerlingAngleFactor(), NerlingNormA(), NerlingNormB(), atm::Arbeletche2021CherenkovAngularModel::PDF(), std::pow(), utl::s, and atm::ProfileResult::Y().
|
private |
Asymmetry correction as local parametrisation.
Definition at line 813 of file AnalyticalCherenkovModel.cc.
References bparam(), electrons, and positrons.
Referenced by AsymmCorrection(), and EvaluateDirectCherenkovProbability().
|
private |
Asymmetry correction as function of physical geometry.
Definition at line 865 of file AnalyticalCherenkovModel.cc.
References RdGeoCeLDFFitter::a, Angle(), AsymmCorrection(), RdGeoCeLDFFitter::b, bFieldAt(), fCherenkovAsymmetryMaxA, fCherenkovAsymmetryMinA, galactic::gauss, utl::Vector::GetMag(), utl::kg, utl::m3, perpendicular(), and vectorsine_oriented().
|
private |
Asymmetry correction dependant on input data.
Definition at line 888 of file AnalyticalCherenkovModel.cc.
References AsymmCorrection(), atm::Atmosphere::EvaluateDensityVsHeight(), utl::BasicVector< HepVector >::GetX(), utl::BasicVector< HepVector >::GetY(), utl::BasicVector< HepVector >::GetZ(), utl::Normalized(), and atm::ProfileResult::Y().
|
private |
Asymmetry correction with old local parametrisation.
Definition at line 921 of file AnalyticalCherenkovModel.cc.
Referenced by AsymmCorrectionOld().
|
private |
Asymmetry correction with old parametrisation as function of physical geometry.
Definition at line 931 of file AnalyticalCherenkovModel.cc.
References RdGeoCeLDFFitter::a, Angle(), AsymmCorrectionOld(), RdGeoCeLDFFitter::b, degree, electrons, fparam(), galactic::gauss, utl::Vector::GetMag(), utl::kg, utl::m3, utl::microtesla, perpendicular(), positrons, and vectorsine_oriented().
|
private |
Calculation of the Cherenkov angle integral int(df/dtheta*sin(theta))
Calculation of the Cherenkov integral for direct Cherenkov light calculation
Definition at line 678 of file AnalyticalCherenkovModel.cc.
References RdGeoCeLDFFitter::c, utl::CherenkovThreshold(), utl::deg, eAngArbeletche, eAngHillas, eAngNerling, ERROR, fArbeletcheAngularDistribution, fLowENerling, fNerlingMaxValidShowerAge, fNerlingMinValidShowerAge, fParamAngular, HillasAngle(), atm::Arbeletche2021CherenkovAngularModel::Integral(), IntegralExpSin(), IntegralExpSinExp(), utl::MeV, NerlingAngle(), NerlingAngleFactor(), NerlingNormA(), and NerlingNormB().
Referenced by EvaluateDirectCherenkovProbability().
|
private |
Calculation of a special track length to be used in the Cherenkov light evaluation.
Calculation of the track length for the fraction of particles with energies greater than E divided by the total vertical component of tracks of all charged particles.
Parametrizations: Hillas , Giller , Nerling
Definition at line 578 of file AnalyticalCherenkovModel.cc.
References RdGeoCeLDFFitter::a, RdGeoCeLDFFitter::b, RdGeoCeLDFFitter::c, eGiller, eHillas, eNerling, ERROR, fdE, fNerlingFactor, fNerlingMaxValidShowerAge, fNerlingMinValidShowerAge, fParam, utl::MeV, and std::pow().
Referenced by EvaluateCherenkovPhotons().
|
private |
Definition at line 411 of file AnalyticalCherenkovModel.cc.
References fCherenkovAsymmetryMaxAge, fCherenkovAsymmetryMaxAngle, fCherenkovAsymmetryMinAge, fCherenkovAsymmetryMinAngle, and fCorrectCherenkovAsymmetry.
Referenced by EvaluateDirectCherenkovProbability().
|
private |
Calculation of Cherenkov Photons between two wavelengths.
Calculation for the number of Cherenkov Photons, between wavelengths wl1 and wl2, per shower particle over a length dSlant
Definition at line 659 of file AnalyticalCherenkovModel.cc.
References utl::abs(), utl::kElectronMass, and utl::kTwoPi.
Referenced by EvaluateCherenkovPhotons().
|
virtual |
Calculation of probability of Cherenkov emission.
Calculation of the probability of Cherenkov emission versus wavelength
Implements atm::VCherenkovModel.
Definition at line 224 of file AnalyticalCherenkovModel.cc.
References EvaluateCherenkovPhotons(), EvaluateDirectCherenkovProbability(), fDirectCherenkovPhotons, fWavelength, and fWlRefrac.
|
virtual |
Calculation of Cherenkov photons produced between two points.
Calculation of the Cherenkov photons generated by shower particles between two points
Implements atm::VCherenkovModel.
Definition at line 427 of file AnalyticalCherenkovModel.cc.
References utl::CherenkovThreshold(), CherenkovTrackLength(), utl::RefractionIndex::Ciddor95(), DeltaPhotons(), eGiller, eHillas, eNerling, ERROR, atm::Atmosphere::EvaluateDepthVsHeight(), atm::Atmosphere::EvaluatePressureVsHeight(), atm::Atmosphere::EvaluateTemperatureVsHeight(), atm::Atmosphere::EvaluateVaporPressureVsHeight(), fCherenkovPhotons, fdE, fjMax, fParam, fShowerAgePrevious, fWavelength, fWlRefrac, fxAprevious, fxBprevious, det::Detector::GetAtmosphere(), utl::GeV, utl::RefractionIndex::LorentzLorentz(), atm::ProfileResult::MaxX(), utl::MeV, atm::ProfileResult::MinX(), utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), and atm::ProfileResult::Y().
Referenced by EvaluateCherenkovDirect().
|
virtual |
Calculation of the probability of direct Cherenkov light reaching xEye
Implements atm::VCherenkovModel.
Definition at line 250 of file AnalyticalCherenkovModel.cc.
References Angle(), AsymmCorrection(), CherenkovIntegral(), CorrectCherenkovAsymmetry(), atm::Atmosphere::EvaluateDepthVsHeight(), det::Detector::GetAtmosphere(), det::Detector::GetSiteCoordinateSystem(), utl::BasicVector< HepVector >::GetX(), utl::BasicVector< HepVector >::GetY(), utl::BasicVector< HepVector >::GetZ(), utl::kTwoPi, utl::RefractionIndex::LorentzLorentz(), atm::ProfileResult::MaxX(), atm::ProfileResult::MinX(), utl::Normalized(), utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), and atm::ProfileResult::Y().
Referenced by EvaluateCherenkovDirect().
|
virtual |
Implements atm::VCherenkovModel.
Definition at line 327 of file AnalyticalCherenkovModel.cc.
References Angle(), AsymmCorrection(), CherenkovIntegral(), utl::RefractionIndex::Ciddor95(), CorrectCherenkovAsymmetry(), atm::Atmosphere::EvaluateDepthVsHeight(), atm::Atmosphere::EvaluatePressureVsHeight(), atm::Atmosphere::EvaluateTemperatureVsHeight(), atm::Atmosphere::EvaluateVaporPressureVsHeight(), det::Detector::GetAtmosphere(), det::Detector::GetSiteCoordinateSystem(), utl::BasicVector< HepVector >::GetX(), utl::BasicVector< HepVector >::GetY(), utl::BasicVector< HepVector >::GetZ(), utl::kTwoPi, atm::ProfileResult::MaxX(), atm::ProfileResult::MinX(), utl::Normalized(), utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), and atm::ProfileResult::Y().
|
inlinevirtualinherited |
Definition at line 58 of file VCherenkovModel.h.
References atm::VCherenkovModel::fEcut.
|
inlineprivatevirtual |
Implements atm::VCherenkovModel.
Definition at line 146 of file AnalyticalCherenkovModel.h.
References fWavelength.
|
inlinevirtual |
True if a data source is for the given model.
This method is meant to be checked to determine whether the given model is able to find valid data to evaluate. Typically it will always be true for parametric models which rely on an XML file, and will be true or false for database-based models, depending on whether or not relevant data are found in the DB for the current detector time
Implements atm::VModel.
Definition at line 77 of file AnalyticalCherenkovModel.h.
|
virtual |
Init method of the model.
Init method with reader of parameters from datacard
Implements atm::VModel.
Definition at line 161 of file AnalyticalCherenkovModel.cc.
References eAngArbeletche, eAngGiller, eAngHillas, eAngNerling, eGiller, eHillas, eNerling, ERROR, fCherenkovAsymmetryMaxA, fCherenkovAsymmetryMaxAge, fCherenkovAsymmetryMaxAngle, fCherenkovAsymmetryMinA, fCherenkovAsymmetryMinAge, fCherenkovAsymmetryMinAngle, fCorrectCherenkovAsymmetry, fLowENerling, fParam, fParamAngular, fWavelength, fWlRefrac, utl::Branch::Get(), utl::Branch::GetChild(), utl::Branch::GetData(), and utl::Branch::GetTopBranch().
|
private |
|
virtual |
Implements atm::VCherenkovModel.
Definition at line 1029 of file AnalyticalCherenkovModel.cc.
References atm::VCherenkovModel::fEcut, fNerlingFactor, and utl::MeV.
Referenced by AnalyticalCherenkovModel().
|
virtualinherited |
alter Model by nSigma standard deviations
Reimplemented in atm::MeasuredDBMieModel, and atm::SuperMieModel.
Definition at line 11 of file VModel.cc.
References ERROR.
|
private |
Definition at line 152 of file AnalyticalCherenkovModel.h.
Referenced by AngularCDF(), AngularPDF(), and CherenkovIntegral().
|
private |
Definition at line 103 of file AnalyticalCherenkovModel.h.
Referenced by AsymmCorrection(), and Init().
|
private |
Definition at line 99 of file AnalyticalCherenkovModel.h.
Referenced by CorrectCherenkovAsymmetry(), and Init().
|
private |
Definition at line 101 of file AnalyticalCherenkovModel.h.
Referenced by CorrectCherenkovAsymmetry(), and Init().
|
private |
Definition at line 102 of file AnalyticalCherenkovModel.h.
Referenced by AsymmCorrection(), and Init().
|
private |
Definition at line 98 of file AnalyticalCherenkovModel.h.
Referenced by CorrectCherenkovAsymmetry(), and Init().
|
private |
Definition at line 100 of file AnalyticalCherenkovModel.h.
Referenced by CorrectCherenkovAsymmetry(), and Init().
|
mutableprivate |
Number of photons as function of the wavelength.
Definition at line 89 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovPhotons().
|
private |
Definition at line 97 of file AnalyticalCherenkovModel.h.
Referenced by CorrectCherenkovAsymmetry(), and Init().
|
staticprivate |
Definition at line 82 of file AnalyticalCherenkovModel.h.
Referenced by CherenkovTrackLength(), and EvaluateCherenkovPhotons().
|
mutableprivate |
Definition at line 90 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovDirect().
|
mutableprotectedinherited |
electron energy-cutoff
Definition at line 62 of file VCherenkovModel.h.
Referenced by atm::VCherenkovModel::GetEnergyCutoff(), and SetEnergyCutoff().
|
staticprivate |
Definition at line 83 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovPhotons().
|
private |
Definition at line 93 of file AnalyticalCherenkovModel.h.
Referenced by CherenkovIntegral(), and Init().
|
mutableprivate |
Definition at line 158 of file AnalyticalCherenkovModel.h.
Referenced by CherenkovTrackLength(), and SetEnergyCutoff().
|
staticprivate |
Definition at line 86 of file AnalyticalCherenkovModel.h.
Referenced by AngularCDF(), AngularPDF(), CherenkovIntegral(), and CherenkovTrackLength().
|
staticprivate |
Limits for the shower age in the use of the Nerling parameterizations.
Definition at line 85 of file AnalyticalCherenkovModel.h.
Referenced by AngularCDF(), AngularPDF(), CherenkovIntegral(), and CherenkovTrackLength().
|
private |
Parametrization to be used in the Cherenkov light calculation.
Definition at line 109 of file AnalyticalCherenkovModel.h.
Referenced by CherenkovTrackLength(), EvaluateCherenkovPhotons(), and Init().
|
private |
Definition at line 110 of file AnalyticalCherenkovModel.h.
Referenced by AngularCDF(), AngularPDF(), CherenkovIntegral(), and Init().
|
mutableprivate |
Definition at line 157 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovPhotons().
|
private |
Wavelengths to calculate the light production.
Definition at line 106 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovDirect(), EvaluateCherenkovPhotons(), GetWavelengths(), and Init().
|
private |
Definition at line 92 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovDirect(), EvaluateCherenkovPhotons(), and Init().
|
mutableprivate |
Keep reference to previous calculation, to prevent re-calculation.
Definition at line 155 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovPhotons().
|
mutableprivate |
Definition at line 156 of file AnalyticalCherenkovModel.h.
Referenced by EvaluateCherenkovPhotons().