FdEnergyDepositFinderKG/ProfileFitter.h
Go to the documentation of this file.
1 #ifndef _FdEnergyDepositFinderKG_ProfileFitter_h_
2 #define _FdEnergyDepositFinderKG_ProfileFitter_h_
3 
4 #include "ProfileFitFunctions.h"
5 #include "GHShapeParameters.h"
6 #include "CFMatrixCalculator.h"
7 
8 #include <fdet/Telescope.h>
9 
10 #include <utl/Function.h>
11 
12 #include <cmath>
13 #include <vector>
14 
15 
16 class TMinuit;
17 namespace utl {
18  class TabulatedFunctionErrors;
19 }
20 
21 namespace evt {
22  class GaisserHillas4Parameter;
23 }
24 
25 
26 namespace FdEnergyDepositFinderKG {
27 
28  class CFMatrixCalculator;
29 
30 
31  class ProfileFitter {
32 
33  public:
34  enum EFitMode {
37  };
38 
39  public:
40  ProfileFitter();
41  void Init();
42 
43  void SetVerbosity(const int v) { fVerbosity = v;};
44 
45  void SetFunctionType(const EFitFunctionType type) { fFunctionType = type; }
46 
47  void SetFitMode(const EFitMode mode) { fFitMode = mode; }
48 
50 
51  bool Fit();
52 
54  void SetLightFluxData(const CFMatrixCalculator& cfMatrixData) { SetLightFluxData(cfMatrixData, cfMatrixData); }
55  void SetLightFluxData(const CFMatrixCalculator& cfMatrixData, const CFMatrixCalculator& cfMatrixDataDense);
57  void SetUnivConstrained(const bool constrained, const utl::Function& func, const double ksigma);
58  void SetShapePars(const GHShapeParameters&);
60 
61  void GetEnergy(double& energy, double& energyError) const;
62 
63  double GetShapeConstraint1Chi2() const { return fShapeConstraintChi2[0]; }
64  double GetShapeConstraint2Chi2() const { return fShapeConstraintChi2[1]; }
65  double GetShapeConstraint3Chi2() const { return fShapeConstraintChi2[2]; }
66 
67  unsigned int GetNDof() const { return fDepth.size() - (fFunctionType == eGH2dEdXChi2 ? 2 : 4); }
68 
69  void SetAafCorrection(const int aaf = 1, const bool useNoiseBins = true) { fAafCorrection = aaf; fUseNoiseBins = useNoiseBins; }
70  double GetLHChi2() const { return fLHChi2; }
71 
72  private:
73  bool GHFit();
74  void InitMinuit(TMinuit&) const;
75  bool Minimize(TMinuit&);
76 
77  double CorrCoeff(const EGHFunctionPar i, const EGHFunctionPar j) const
78  { return fCovariance[i][j] / std::sqrt(fCovariance[i][i]*fCovariance[j][j]); }
79 
80  static void GHFitFunction(int&,double* const,double&, double* const, const int);
81 
82  static double GaisserHillasLogLike(const double* const par);
83  static double GaisserHillasLogLikeConvoluted(const double* const par);
84  static double GaisserHillasChi2(const double* const par);
85 
86  static void PrepareTimeConvolution(const fdet::Telescope& detTel);
87  static void DoTimeConvolution(const std::vector<double>& originalTrace,
88  std::vector<double>& convolutedTrace,
89  unsigned int timeOffset,
90  unsigned int ErrFuncFactorsIndex,
91  const TelescopeData& telData,
92  const ColumnVector& predictedLightFlux,
93  const std::vector<double>& predLF,
94  const int startBinDense,
95  const int startBin);
96 
97  static std::vector<std::vector<double>> fErrFuncFactorsBuf;
98 
101  static std::vector<double> fDepth;
102  static std::vector<double> fSize;
103  static std::vector<double> fSizeVariance;
104  static bool fIsConstrained;
105 
106  static std::string fGaisserHillasType;
107 
108  static bool fIsUnivConstrained;
110  static double fVarK;
111 
112  static bool fEMGLConstrained;
113  static double fTauOverSigma;
114 
115  static int fAafCorrection;
116  static bool fUseNoiseBins;
117 
120 
121  // GaisserHillas shape parameters, constraints etc
123 
124  // fit result
125  std::vector<double> fFitParameters;
126  std::vector<double> fStartParameters;
128  double fChi2;
129  double fLHChi2;
130  int fStatus;
131  static unsigned int fNdof;
133 
134  static double fShapeConstraintChi2[3];
135 
136  };
137 
138 }
139 
140 
141 #endif
static void PrepareTimeConvolution(const fdet::Telescope &detTel)
static double GaisserHillasLogLikeConvoluted(const double *const par)
double CorrCoeff(const EGHFunctionPar i, const EGHFunctionPar j) const
static std::vector< std::vector< double > > fErrFuncFactorsBuf
static double GaisserHillasLogLike(const double *const par)
void SetProfileData(const utl::TabulatedFunctionErrors &)
void SetAafCorrection(const int aaf=1, const bool useNoiseBins=true)
static void GHFitFunction(int &, double *const, double &, double *const, const int)
void SetUnivConstrained(const bool constrained, const utl::Function &func, const double ksigma)
void SetStartParameters(const evt::GaisserHillas4Parameter &)
void SetLightFluxData(const CFMatrixCalculator &cfMatrixData)
Evaluate functions given in a string. The real work is done by the ExpressionParser class...
Definition: Function.h:27
Detector description interface for Telescope-related data.
static void DoTimeConvolution(const std::vector< double > &originalTrace, std::vector< double > &convolutedTrace, unsigned int timeOffset, unsigned int ErrFuncFactorsIndex, const TelescopeData &telData, const ColumnVector &predictedLightFlux, const std::vector< double > &predLF, const int startBinDense, const int startBin)
static double GaisserHillasChi2(const double *const par)
void GetEnergy(double &energy, double &energyError) const
Gaisser Hillas with 4 parameters.
void FillGHParameters(evt::GaisserHillas4Parameter &ghPars) const

, generated on Tue Sep 26 2023.