1 #ifndef _CFMatrixCalculator_h_
2 #define _CFMatrixCalculator_h_
8 #include <fevt/FdConstants.h>
9 #include <utl/Vector.h>
12 #include <boost/iterator/filter_iterator.hpp>
17 class TelescopeRecData;
21 class TabulatedFunctionErrors;
22 class TabulatedFunction;
26 namespace FdEnergyDepositFinderKG {
43 void BuildMatrix(
const fevt::Eye& eye,
const bool leavingAtmoIsError =
false,
const unsigned int addDense = 1);
116 const std::vector<double>& waveLengths,
131 std::pair<const TelescopeData*, const TelescopeDataBin*>
GetTelescopeDataBin(
const unsigned int i)
const;
std::vector< TelescopeData > fTelescopeData
LowerTriangularMatrix fRayScatteredCherenkovMatrix
std::vector< std::vector< double > > fCherTransmissionShower
void CalculateDirectCherenkovMatrix()
std::vector< double > fFluoWaveLength
FilteredTelDataIterator TelDataEnd(const TelescopeData::ETelDataType type)
FilteredTelDataIterator TelDataBegin(const TelescopeData::ETelDataType type)
Fluorescence Detector Eye Event.
void SetTelescopeParameters(const fevt::Eye &eye, TelescopeData &telData) const
std::vector< std::vector< double > > fRayScatToTel
Class to hold collection (x,y) points and provide interpolation between them.
unsigned int GetSize() const
DiagonalMatrix GetInverse() const
void AddBinsOutsideFOV(const fevt::Eye &eye)
void CalculateFluorescenceMatrix()
std::vector< double > fZetaDistance
return LowerTriangularMatrix(fNumberOfDepthBins)+fDirectCFMatrix.GetInverse()
LowerTriangularMatrix fCFMatrix
unsigned int GetSize() const
unsigned int GetFOVSize() const
utl::TabulatedFunctionErrors * CalculateLCEff(const fevt::FdConstants::LightSource lightSource, const fevt::TelescopeRecData &telRecData) const
Fetches the light collection efficiency of the given light source from the TelescopeRecData (if avail...
void SetLDFMethod(const LateralLightCalculator::ECalculationMethod m)
ConstTelDataIterator AllTelDataBegin() const
void SetOnlyDirect(const bool od)
DiagonalMatrix fDirectFluorescenceMatrix
void SetVerbosity(const int v)
bool fDoMultipleScattering
unsigned int GetEyeId() const
std::vector< double > fGeometricalFactor
std::vector< TelescopeData >::const_iterator ConstTelDataIterator
std::vector< double > fMeandEdXPerElectron
const LowerTriangularMatrix & GetMieScatteredCherenkovMatrix() const
std::vector< double > fCherWaveLength
double MultipleScatteringFraction(const TelescopeDataBin &telDataBin, const std::vector< double > &waveLengths, const utl::TabulatedFunction &yield, const double zeta, const utl::Point &telescopePosition, const utl::TabulatedFunction &efficiency) const
LightSource
Possible light sources.
ConstTelDataIterator NoiseTelDataEnd() const
unsigned int GetSize() const
const LowerTriangularMatrix & GetCFMatrix() const
LowerTriangularMatrix GetInverse() const
Get the inverse of the matrix.
void CalculateMieAndRayScattCherenkovMatrix()
bool InitCalculation(const fevt::Eye &eye)
std::vector< double > fFluorescenceMultipleScattering
unsigned int fNumberOfDepthBins
std::vector< std::vector< double > > fCherenkovAtTrack
Telescope-specific shower reconstruction data.
std::pair< const TelescopeData *, const TelescopeDataBin * > GetTelescopeDataBin(const unsigned int i) const
std::vector< std::vector< double > > fMieScatToTel
std::vector< double > fCherenkovMultipleScattering
bool IsOverlapBin(const int i, const int j) const
const DiagonalMatrix & GetDirectFluorescenceMatrix() const
double fElectronEnergyThreshold
ConstTelDataIterator NoiseTelDataBegin() const
void CalculateDiagonalParameters()
bool CalculateTelescopeData(const fevt::Eye &eye, const bool leavingAtmoIsError, const unsigned int addDense)
std::vector< double > fCosTheta
LowerTriangularMatrix fMieScatteredCherenkovMatrix
const DiagonalMatrix & GetDirectCFMatrix() const
void SetMethod(ECalculationMethod method)
std::vector< TelescopeData > fNoiseTelescopeData
const LowerTriangularMatrix & GetRayScatteredCherenkovMatrix() const
void SetMethod(const CFMatrixCalculator::EMethod m)
boost::filter_iterator< TelescopeFilter, ConstTelDataIterator > FilteredTelDataIterator
DiagonalMatrix fDirectCFMatrix
DiagonalMatrix fDirectCherenkovMatrix
std::vector< std::vector< double > > fCherTransmissionToTel
ConstTelDataIterator AllTelDataEnd() const
CFMatrixCalculator()=default
const DiagonalMatrix & GetDirectCherenkovMatrix() const
std::vector< std::vector< double > > fFluoTransmissionToTel
bool GetOnlyDirect() const
void BuildMatrix(const fevt::Eye &eye, const bool leavingAtmoIsError=false, const unsigned int addDense=1)
LateralLightCalculator * fLateralLightCalculator