GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TPeakFitter.h
Go to the documentation of this file.
1#ifndef TPEAKFITTER_H
2#define TPEAKFITTER_H
3
4/** \addtogroup Fitting Fitting & Analysis
5 * @{
6 */
7
8#include <string>
9#include <algorithm>
10#include <vector>
11#include <cstdarg>
12
13#include "TF1.h"
14#include "TFitResultPtr.h"
15#include "TFitResult.h"
16#include "TGraph.h"
17
18#include "TGRSIFunctions.h"
19#include "TSinglePeak.h"
20
21/////////////////////////////////////////////////////////////////
22///
23/// \class TPeakFitter
24///
25/// This class is used to fit things that resemble "peaks" in data
26///
27/////////////////////////////////////////////////////////////////
28class TSinglePeak;
29using MultiplePeak_t = std::list<TSinglePeak*>;
30
31class TPeakFitter : public TObject {
32public:
33 // ctors and dtors
34 TPeakFitter() : TPeakFitter(0., 0.) {}
35 TPeakFitter(const Double_t& rangeLow, const Double_t& rangeHigh);
36 TPeakFitter(const TPeakFitter&) = default;
37 TPeakFitter(TPeakFitter&&) noexcept = default;
38 TPeakFitter& operator=(const TPeakFitter&) = default;
39 TPeakFitter& operator=(TPeakFitter&&) noexcept = default;
40 ~TPeakFitter() = default;
41
42 void AddPeak(TSinglePeak* peak)
43 {
44 fPeaksToFit.push_back(peak);
46 }
48 {
49 fPeaksToFit.remove(peak);
51 }
53 {
54 fPeaksToFit.clear();
56 }
57 // void SetPeakToFit(TMultiplePeak* peaks_to_fit) { fPeaksToFit = peaks_to_fit; }
58 void SetBackground(TF1* bg_to_fit) { fBGToFit = bg_to_fit; }
59 void InitializeParameters(TH1* fit_hist);
60 void InitializeBackgroundParameters(TH1* fit_hist);
61
62 void Print(Option_t* opt = "") const override;
63 void PrintParameters() const;
64
65 TF1* GetBackground() { return fBGToFit; }
67 void SetRange(const Double_t& low, const Double_t& high);
68 Int_t GetNParameters() const;
69 TFitResultPtr Fit(TH1* fit_hist, Option_t* opt = "");
70 void DrawPeaks(Option_t* = "") const;
71
72 void ResetInitFlag() { fInitFlag = false; }
73
74 void SetColorIndex(const int& index) { fColorIndex = index; }
75
76private:
78 void UpdatePeakParameters(const TFitResultPtr& fit_res, TH1* fit_hist);
79 Double_t DefaultBackgroundFunction(Double_t* dim, Double_t* par);
81 {
82 if(fTotalFitFunction != nullptr) {
83 delete fTotalFitFunction;
84 fTotalFitFunction = nullptr;
85 }
86 }
87
89 TF1* fBGToFit{nullptr};
90
91 TF1* fTotalFitFunction{nullptr};
92
93 Double_t fRangeLow{0.};
94 Double_t fRangeHigh{0.};
95
96 Double_t FitFunction(Double_t* dim, Double_t* par);
97 Double_t BackgroundFunction(Double_t* dim, Double_t* par);
98
99 bool fInitFlag{false};
100
101 TH1* fLastHistFit{nullptr};
102
103 int fColorIndex{0}; ///< this index is added to the colors kRed for the total function and kMagenta for the individual peaks
104
105 /// \cond CLASSIMP
106 ClassDefOverride(TPeakFitter, 2) // NOLINT(readability-else-after-return)
107 /// \endcond
108};
109/*! @} */
110#endif
TF1 * GetFitFunction()
Definition TPeakFitter.h:66
void UpdatePeakParameters(const TFitResultPtr &fit_res, TH1 *fit_hist)
void RemovePeak(TSinglePeak *peak)
Definition TPeakFitter.h:47
TF1 * fTotalFitFunction
Definition TPeakFitter.h:91
void RemoveAllPeaks()
Definition TPeakFitter.h:52
void PrintParameters() const
void SetRange(const Double_t &low, const Double_t &high)
void Print(Option_t *opt="") const override
Int_t GetNParameters() const
void InitializeBackgroundParameters(TH1 *fit_hist)
void SetColorIndex(const int &index)
Definition TPeakFitter.h:74
Double_t FitFunction(Double_t *dim, Double_t *par)
Double_t fRangeLow
Definition TPeakFitter.h:93
void InitializeParameters(TH1 *fit_hist)
TF1 * GetBackground()
Definition TPeakFitter.h:65
int fColorIndex
this index is added to the colors kRed for the total function and kMagenta for the individual peaks
TPeakFitter(TPeakFitter &&) noexcept=default
MultiplePeak_t fPeaksToFit
Definition TPeakFitter.h:88
void DrawPeaks(Option_t *="") const
void ResetInitFlag()
Definition TPeakFitter.h:72
Double_t BackgroundFunction(Double_t *dim, Double_t *par)
void SetBackground(TF1 *bg_to_fit)
Definition TPeakFitter.h:58
void ResetTotalFitFunction()
Definition TPeakFitter.h:80
Double_t fRangeHigh
Definition TPeakFitter.h:94
void AddPeak(TSinglePeak *peak)
Definition TPeakFitter.h:42
TFitResultPtr Fit(TH1 *fit_hist, Option_t *opt="")
TPeakFitter(const TPeakFitter &)=default
Double_t DefaultBackgroundFunction(Double_t *dim, Double_t *par)
TH1 * fLastHistFit
TF1 * fBGToFit
Definition TPeakFitter.h:89
void UpdateFitterParameters()
std::list< TSinglePeak * > MultiplePeak_t
Definition TPeakFitter.h:29