GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TMultiPeak.h
Go to the documentation of this file.
1#ifndef TMULTIPEAK_H
2#define TMULTIPEAK_H
3
4/** \addtogroup Fitting Fitting & Analysis
5 * @{
6 */
7
8#include <vector>
9#include <cstdarg>
10
11#include "TF1.h"
12#include "TGraph.h"
13
14#include "TGRSIFit.h"
15#include "TPeak.h"
16
17/////////////////////////////////////////////////////////////////
18///
19/// \class TMultiPeak
20///
21/// This Class is used to represent fitted data that is
22/// Gaussian like in nature (ie centroid and area).
23///
24/////////////////////////////////////////////////////////////////
25class TPeak;
26
27class TMultiPeak : public TGRSIFit {
28public:
29 // ctors and dtors
31 // TMultiPeak(int n, ...);
32 // TMultiPeak(double xlow, double xhigh, int n, ...);
33 TMultiPeak(Double_t xlow, Double_t xhigh, const std::vector<Double_t>& centroids, Option_t* type = "gsc");
34 TMultiPeak(const TMultiPeak& copy);
35 TMultiPeak(TMultiPeak&&) noexcept = default;
36 TMultiPeak& operator=(const TMultiPeak&) = default;
37 TMultiPeak& operator=(TMultiPeak&&) noexcept = default;
38 TMultiPeak(); // I might make it so if you call this ctor, the TPeak yells at you since it's a fairly useless call anyway
39
40 Bool_t Fit(TH1* fithist, Option_t* opt = "");
41 bool InitParams(TH1* fithist) override;
42 void SortPeaks(Bool_t (*SortFunction)(const TPeak*, const TPeak*) = TPeak::CompareEnergy);
43 TPeak* GetPeak(UInt_t idx);
44 TPeak* GetPeakClosestTo(Double_t energy);
45 void DrawPeaks();
46 TF1* Background() const { return fBackground; }
47
48 static void SetLogLikelihoodFlag(bool flag) { fLogLikelihoodFlag = flag; }
49 static bool GetLogLikelihoodFlag() { return fLogLikelihoodFlag; }
50
51 void Copy(TObject& obj) const override;
52 void Print(Option_t* opt = "") const override;
53 void Clear(Option_t* opt = "") override;
54
55protected:
56 void InitNames();
57
58private:
59 static bool fLogLikelihoodFlag; //!<!
60 std::vector<TPeak*> fPeakVec;
61 TF1* fBackground{nullptr};
62
63 Double_t MultiPhotoPeakBG(Double_t* dim, Double_t* par);
64 Double_t MultiStepBG(Double_t* dim, Double_t* par);
65 Double_t SinglePeakBG(Double_t* dim, Double_t* par);
66
67 /// \cond CLASSIMP
68 ClassDefOverride(TMultiPeak, 2) // NOLINT(readability-else-after-return)
69 /// \endcond
70};
71/*! @} */
72#endif
TF1 * fBackground
Definition TMultiPeak.h:61
void InitNames()
TPeak * GetPeakClosestTo(Double_t energy)
static bool fLogLikelihoodFlag
!
Definition TMultiPeak.h:59
void Copy(TObject &obj) const override
Double_t MultiPhotoPeakBG(Double_t *dim, Double_t *par)
TF1 * Background() const
Definition TMultiPeak.h:46
Double_t SinglePeakBG(Double_t *dim, Double_t *par)
Bool_t Fit(TH1 *fithist, Option_t *opt="")
TPeak * GetPeak(UInt_t idx)
std::vector< TPeak * > fPeakVec
Definition TMultiPeak.h:60
static bool GetLogLikelihoodFlag()
Definition TMultiPeak.h:49
TMultiPeak(TMultiPeak &&) noexcept=default
void Print(Option_t *opt="") const override
bool InitParams(TH1 *fithist) override
static void SetLogLikelihoodFlag(bool flag)
Definition TMultiPeak.h:48
void DrawPeaks()
void SortPeaks(Bool_t(*SortFunction)(const TPeak *, const TPeak *)=TPeak::CompareEnergy)
void Clear(Option_t *opt="") override
Double_t MultiStepBG(Double_t *dim, Double_t *par)
Definition TPeak.h:23