1 #ifndef _CherenkovFluorescenceMatrix_h_
2 #define _CherenkovFluorescenceMatrix_h_
6 #include <utl/TabulatedFunction.h>
16 namespace FdProfileReconstructorKG {
57 const std::deque<std::vector<utl::Point>>& showerGeometry,
59 const std::deque<double>& depth,
const double eCut,
60 const double zeta,
const double Cfac,
const double Ffac,
63 const bool cherenkovCone,
86 const std::deque<std::vector<utl::Point>>&
GetGeometry()
const
98 void Print(
const int iwhat)
const;
138 const double xVert,
const double showerAge)
const;
double AngularCherenkovCDFWithCone(const double maxEmissionAngle, const double xVert, const double showerAge) const
double GetEcut() const
get lower energy cutoff
std::vector< double > fCWaveLength
const oBLAS::lowerTriangularMatrix * GetMieScatteredCherenkovMatrix() const
returns Mie scattered Cherenkov light matrix
std::vector< std::vector< double > > fMieScat2eye
const oBLAS::diagonalMatrix * GetDirectCherenkovMatrix() const
returns direct Cherenkov light matrix
oBLAS::lowerTriangularMatrix * fRayleighScatteredCherenkovMatrix
std::vector< double > fFWaveLength
void CalculateWaveLengths()
eMultipleScatteringLDF fMultScatLDF
std::vector< double > fCherenkovMultipleScattering
std::vector< double > fMeandEdX
Class to hold collection (x,y) points and provide interpolation between them.
double RobertsFraction(const int, const std::vector< double > &, const utl::TabulatedFunction &) const
const utl::Point & fEyePosition
const oBLAS::lowerTriangularMatrix * GetRayleighScatteredCherenkovMatrix() const
returns Rayleigh scattered Cherenkov light matrix
double ScatteredCherenkovLDFFraction(const int, const int) const
void CalculateMeanEnergyDeposit()
void SetZeta(const double z)
set zeta
std::vector< double > fGfac
std::vector< std::vector< double > > fFT2eye
~CherenkovFluorescenceMatrix()
void CalculateAttenuationAlongTrack()
std::vector< std::vector< double > > fCT2eye
oBLAS::lowerTriangularMatrix * fCherenkovFluorescenceMatrix
double SpotFraction() const
void CalculateMieAndRayScattCherenkovMatrix()
CherenkovFluorescenceMatrix(const double xMax, const utl::Point &eyePos, const std::deque< std::vector< utl::Point >> &showerGeometry, const utl::TabulatedFunction &relEff, const std::deque< double > &depth, const double eCut, const double zeta, const double Cfac, const double Ffac, const eFluorescenceLDF f, const eDirectCherenkovLDF dc, const eScatteredCherenkovLDF sc, const eMultipleScatteringLDF ms, const bool cherenkovCone, const OpticalHalo::EHaloType spotHalo)
void UpdateXmax(const double)
update matrices for new xmax value
const std::deque< std::vector< utl::Point > > & fShowerGeometry
std::vector< std::vector< double > > fRayScat2eye
double GetZetaDistance(const int) const
get distance to shower axis corresponding to zeta
const std::deque< double > & fDepth
double ExponentialFraction(const int) const
void CalculateDirectCherenkovMatrix()
std::vector< std::vector< double > > fTShower
void CalculateCherenkovAtTrack()
const oBLAS::lowerTriangularMatrix * GetCherenkovFluorescenceMatrix() const
returns total light matrix (not const as we eventually want to invert it ...)
void CalculateFluorescenceMatrix()
double GoraFraction(const int) const
void SetYieldFactors(const double fluoFac, const double chkovFac)
set yield factors
std::vector< double > fFluorescenceMultipleScattering
double GetXmax() const
get xmax
const std::deque< std::vector< utl::Point > > & GetGeometry() const
returns shower positions
oBLAS::diagonalMatrix * fDirectCherenkovMatrix
const std::vector< double > & GetFluorescenceMSFactor() const
returns fluorescence multiple scattering factor
oBLAS::diagonalMatrix * fFluorescenceMatrix
eFluorescenceLDF fFluoLDF
eDirectCherenkovLDF fDirCherLDF
const std::deque< double > * GetDepth() const
returns depth
void CalculateGeometricalFactor()
Calculation of Cherenkov and Fluorescence matrix.
double MultipleScatteringFraction(const int, const std::vector< double > &, const utl::TabulatedFunction &) const
void Print(const int iwhat) const
const utl::TabulatedFunction & fRelEff
const std::vector< double > & GetCherenkovMSFactor() const
returns Cherenkov multiple scattering factor
double DirectCherenkovLDFFraction(const int) const
double GillerFraction(const int, const int) const
double FluorescenceLDFFraction(const int) const
const oBLAS::diagonalMatrix * GetFluorescenceMatrix() const
returns fluorescence light matrix
eScatteredCherenkovLDF fScatCherLDF
std::vector< std::vector< double > > fCherAtTrack
calculation of FD optical halo light fraction
std::vector< utl::Point > fShowerPoints
void CalculateAttenuationToEye()
double PekalaFraction(const int, const std::vector< double > &, const utl::TabulatedFunction &) const
oBLAS::lowerTriangularMatrix * fMieScatteredCherenkovMatrix
void CalculateScatteringToEye()