GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
GPeak.h
Go to the documentation of this file.
1#ifndef GPEAK_H
2#define GPEAK_H
3
4#include "TF1.h"
5#include "TFitResultPtr.h"
6#include "TFitResult.h"
7
8#include <string>
9#include <algorithm>
10
11class GPeak : public TF1 {
12public:
13 GPeak();
14 GPeak(Double_t cent, Double_t xlow, Double_t xhigh, Option_t* opt = "gsc");
15 GPeak(Double_t cent, Double_t xlow, Double_t xhigh, TF1* bg, Option_t* opt = "gsc");
16 GPeak(const GPeak&);
17 GPeak(GPeak&&) noexcept = default;
18 GPeak& operator=(const GPeak&) = default;
19 GPeak& operator=(GPeak&&) noexcept = default;
20 ~GPeak() = default;
21
22 void Copy(TObject&) const override;
23 void Print(Option_t* opt = "") const override;
24 void Clear(Option_t* opt = "") override;
25
26 void InitNames();
27 bool InitParams(TH1* fithist = nullptr);
28 bool Fit(TH1*, Option_t* opt = "");
29 void DrawResiduals(TH1*) const;
30
31 TF1* Background(Option_t* = "TF1") { return &fBGFit; }
32
33 Double_t GetCentroid() const { return GetParameter("centroid"); }
34 Double_t GetCentroidErr() const { return GetParError(GetParNumber("centroid")); }
35 Double_t GetArea() const { return fArea; }
36 Double_t GetAreaErr() const { return fDArea; }
37 Double_t GetSum() const { return fSum; }
38 Double_t GetSumErr() const { return fDSum; }
39 Double_t GetFWHM() const { return GetParameter("sigma") * 2.3548; }
40 Double_t GetFWHMErr() const { return GetParError(GetParNumber("sigma")) * 2.3548; }
41
42 Double_t Centroid() const { return GetCentroid(); }
43 Double_t CentroidErr() const { return GetCentroidErr(); }
44 Double_t Area() const { return GetArea(); }
45 Double_t AreaErr() const { return GetAreaErr(); }
46 Double_t Sum() const { return GetSum(); }
47 Double_t SumErr() const { return GetSumErr(); }
48 Double_t FWHM() const { return GetFWHM(); }
49 Double_t FWHMErr() const { return GetFWHMErr(); }
50
51protected:
52 void SetArea(Double_t a) { fArea = a; }
53 void SetAreaErr(Double_t d_a) { fDArea = d_a; }
54 void SetSum(Double_t a) { fSum = a; }
55 void SetSumErr(Double_t d_a) { fDSum = d_a; }
56 void SetArea(Double_t a, Double_t dA)
57 {
58 SetArea(a);
59 SetAreaErr(dA);
60 }
61 void SetChi2(Double_t chi2) { fChi2 = chi2; }
62 void SetNdf(Double_t Ndf) { fNdf = Ndf; }
63
64public:
65 static Bool_t CompareEnergy(const GPeak& lhs, const GPeak& rhs) { return lhs.GetCentroid() < rhs.GetCentroid(); }
66 static Bool_t CompareArea(const GPeak& lhs, const GPeak& rhs) { return lhs.GetArea() < rhs.GetArea(); }
67
68 static GPeak* GetLastFit() { return fLastFit; }
69
70private:
71 double fArea{0.};
72 double fDArea{0.};
73 double fSum{0.};
74 double fDSum{0.};
75 double fChi2{0.};
76 double fNdf{0.};
77
78 Bool_t IsInitialized() const { return fInitFlag; }
79 void SetInitialized(Bool_t flag = true) { fInitFlag = flag; }
80 bool fInitFlag{false};
81
82 static GPeak* fLastFit;
83
84 TF1 fBGFit;
85
86 /// /cond CLASSIMP
87 ClassDefOverride(GPeak, 3) // NOLINT(readability-else-after-return)
88 /// /endcond
89};
90
91#endif
Definition GPeak.h:11
GPeak()
Definition GPeak.cxx:88
void Copy(TObject &) const override
Definition GPeak.cxx:125
double fDArea
Definition GPeak.h:72
void SetArea(Double_t a)
Definition GPeak.h:52
Bool_t IsInitialized() const
Definition GPeak.h:78
GPeak(GPeak &&) noexcept=default
Double_t GetFWHM() const
Definition GPeak.h:39
TF1 * Background(Option_t *="TF1")
Definition GPeak.h:31
Double_t AreaErr() const
Definition GPeak.h:45
void SetInitialized(Bool_t flag=true)
Definition GPeak.h:79
Double_t FWHMErr() const
Definition GPeak.h:49
bool fInitFlag
Definition GPeak.h:80
double fArea
Definition GPeak.h:71
Double_t GetCentroidErr() const
Definition GPeak.h:34
TF1 fBGFit
Definition GPeak.h:84
Double_t FWHM() const
Definition GPeak.h:48
void Clear(Option_t *opt="") override
Definition GPeak.cxx:347
static GPeak * GetLastFit()
Definition GPeak.h:68
double fSum
Definition GPeak.h:73
void SetSumErr(Double_t d_a)
Definition GPeak.h:55
Double_t GetFWHMErr() const
Definition GPeak.h:40
Double_t CentroidErr() const
Definition GPeak.h:43
Double_t SumErr() const
Definition GPeak.h:47
void SetAreaErr(Double_t d_a)
Definition GPeak.h:53
void SetSum(Double_t a)
Definition GPeak.h:54
Double_t GetSumErr() const
Definition GPeak.h:38
void DrawResiduals(TH1 *) const
Definition GPeak.cxx:380
static Bool_t CompareArea(const GPeak &lhs, const GPeak &rhs)
Definition GPeak.h:66
void Print(Option_t *opt="") const override
Definition GPeak.cxx:363
Double_t Area() const
Definition GPeak.h:44
Double_t GetCentroid() const
Definition GPeak.h:33
bool Fit(TH1 *, Option_t *opt="")
Definition GPeak.cxx:223
static GPeak * fLastFit
Definition GPeak.h:82
Double_t Centroid() const
Definition GPeak.h:42
Double_t GetArea() const
Definition GPeak.h:35
double fNdf
Definition GPeak.h:76
void SetNdf(Double_t Ndf)
Definition GPeak.h:62
Double_t GetAreaErr() const
Definition GPeak.h:36
double fChi2
Definition GPeak.h:75
bool InitParams(TH1 *fithist=nullptr)
Definition GPeak.cxx:139
void SetChi2(Double_t chi2)
Definition GPeak.h:61
static Bool_t CompareEnergy(const GPeak &lhs, const GPeak &rhs)
Definition GPeak.h:65
void InitNames()
Definition GPeak.cxx:114
void SetArea(Double_t a, Double_t dA)
Definition GPeak.h:56
Double_t GetSum() const
Definition GPeak.h:37
Double_t Sum() const
Definition GPeak.h:46
double fDSum
Definition GPeak.h:74