Pid Framework
Loading...
Searching...
No Matches
ParticleFit.h
Go to the documentation of this file.
1
8#ifndef PidParticleFit_H
9#define PidParticleFit_H 1
10
11#include <array>
12#include <vector>
13
14#include "Constants.h"
15#include "TF1.h"
16
17namespace Pid {
18
20 public:
23 explicit ParticleFit(int type) : particle_type_(type){};
24 virtual ~ParticleFit() = default;
25
26 [[nodiscard]] std::vector<double> GetFunctionParams(float p) const;
27 double Eval(double p, double m2);
28
29 void SetParametrization(const std::vector<TF1>& parametrization) { parametrization_ = parametrization; }
30 void SetParametrizationFunction(uint ivar, const TF1& func) { parametrization_.at(ivar) = func; }
31 void SetFitFunction(const TF1& function) { function_ = function; }
32 void SetRange(float min, float max) { minx_ = min, maxx_ = max; }
33 void SetIsFitted(bool is = true) { isfitted_ = is; }
34 void SetIsFixed(const std::vector<bool>& is) { isfixed_ = is; }
35
36 [[nodiscard]] const TF1& GetFunction() const { return function_; }
37 [[nodiscard]] uint GetNpar() const { return function_.GetNpar(); }
38 TF1& GetParametrizationFunction(int ipar) { return parametrization_.at(ipar); }
39 [[nodiscard]] bool GetIsFixed(uint ipar) const {
40 if (ipar >= isfixed_.size())
41 return false;
42 return isfixed_.at(ipar);
43 }
44
45 [[nodiscard]] double GetSigma(float p) const { return parametrization_.at(PidFunction::kSigma).Eval(p); }
46 [[nodiscard]] double GetMean(float p) const { return parametrization_.at(PidFunction::kMean).Eval(p); }
47 [[nodiscard]] double GetIntegral(float p) const { return parametrization_.at(PidFunction::kA).Eval(p) / sqrt(2 * TMath::Pi() / GetSigma(p)); }
48
49 void GetRange(float& min, float& max) const { min = minx_, max = maxx_; }
50
51 private:
52 TF1 function_;
53 std::vector<TF1> parametrization_{};
54 std::vector<bool> isfixed_{};
55
56 float minx_{-1.};
57 float maxx_{-1.};
58
59 int npoints_{-1};
60 int particle_type_{-1};
61
62 bool isfitted_{false};
63
64 ClassDef(ParticleFit, 2);
65};
66
67}// namespace Pid
68#endif// PidParticleFit_H
Some constants and enumerators.
Class to store fit resuls for particle specie.
Definition ParticleFit.h:19