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 <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 "TGRSIFit.h"
20#include "TPeak.h"
21
22/////////////////////////////////////////////////////////////////
23///
24/// \class TMultiPeak
25///
26/// This Class is used to represent fitted data that is
27/// Gaussian like in nature (ie centroid and area).
28///
29/////////////////////////////////////////////////////////////////
30class TPeak;
31
32class TMultiPeak : public TGRSIFit {
33public:
34 // ctors and dtors
36 // TMultiPeak(int n, ...);
37 // TMultiPeak(double xlow, double xhigh, int n, ...);
38 TMultiPeak(Double_t xlow, Double_t xhigh, const std::vector<Double_t>& centroids, Option_t* type = "gsc");
39 TMultiPeak(const TMultiPeak& copy);
40 TMultiPeak(TMultiPeak&&) noexcept = default;
41 TMultiPeak& operator=(const TMultiPeak&) = default;
42 TMultiPeak& operator=(TMultiPeak&&) noexcept = default;
43 TMultiPeak(); // I might make it so if you call this ctor, the TPeak yells at you since it's a fairly useless call anyway
44
45 Bool_t Fit(TH1* fithist, Option_t* opt = "");
46 bool InitParams(TH1* fithist) override;
47 void SortPeaks(Bool_t (*SortFunction)(const TPeak*, const TPeak*) = TPeak::CompareEnergy);
48 TPeak* GetPeak(UInt_t idx);
49 TPeak* GetPeakClosestTo(Double_t energy);
50 void DrawPeaks();
51 TF1* Background() const { return fBackground; }
52
53 static void SetLogLikelihoodFlag(bool flag) { fLogLikelihoodFlag = flag; }
54 static bool GetLogLikelihoodFlag() { return fLogLikelihoodFlag; }
55
56 void Copy(TObject& obj) const override;
57 void Print(Option_t* opt = "") const override;
58 void Clear(Option_t* opt = "") override;
59
60protected:
61 void InitNames();
62
63private:
64 static bool fLogLikelihoodFlag; //!<!
65 std::vector<TPeak*> fPeakVec;
66 TF1* fBackground{nullptr};
67
68 Double_t MultiPhotoPeakBG(Double_t* dim, Double_t* par);
69 Double_t MultiStepBG(Double_t* dim, Double_t* par);
70 Double_t SinglePeakBG(Double_t* dim, Double_t* par);
71
72 /// \cond CLASSIMP
73 ClassDefOverride(TMultiPeak, 2) // NOLINT(readability-else-after-return)
74 /// \endcond
75};
76/*! @} */
77#endif
TF1 * fBackground
Definition TMultiPeak.h:66
void InitNames()
TPeak * GetPeakClosestTo(Double_t energy)
static bool fLogLikelihoodFlag
!
Definition TMultiPeak.h:64
void Copy(TObject &obj) const override
Double_t MultiPhotoPeakBG(Double_t *dim, Double_t *par)
TF1 * Background() const
Definition TMultiPeak.h:51
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:65
static bool GetLogLikelihoodFlag()
Definition TMultiPeak.h:54
TMultiPeak(TMultiPeak &&) noexcept=default
void Print(Option_t *opt="") const override
bool InitParams(TH1 *fithist) override
static void SetLogLikelihoodFlag(bool flag)
Definition TMultiPeak.h:53
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:28