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