GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TGainMatch.h
Go to the documentation of this file.
1#ifndef TGAINMATCH_H
2#define TGAINMATCH_H
3
4/** \addtogroup Calibration
5 * @{
6 */
7
8#include "TCal.h"
9#include "TCalManager.h"
10#include "TPeak.h"
11#include "TSpectrum.h"
12#include "TH2.h"
13#include "TF1.h"
14
15class TGainMatch : public TCal {
16public:
18 TGainMatch(const char* name, const char* title) : TCal(name, title), fCoarseRange(fDefaultCoarseRange) { Clear(); }
19 TGainMatch(const TGainMatch&);
20 TGainMatch(TGainMatch&&) noexcept = default;
21 TGainMatch& operator=(const TGainMatch&) = default;
22 TGainMatch& operator=(TGainMatch&&) noexcept = default;
23 ~TGainMatch() = default;
24
25 void Copy(TObject& obj) const override;
26
27 void CalculateGain(Double_t cent1, Double_t cent2, Double_t eng1, Double_t eng2);
28
29 static Bool_t CoarseMatchAll(TCalManager* cm, TH2* mat, Double_t energy1 = 1173.228, Double_t energy2 = 1332.492);
30 static Bool_t FineMatchFastAll(TCalManager* cm, TH2* mat, Double_t energy1, Double_t energy2);
31 static Bool_t FineMatchFastAll(TCalManager* cm, TH2* mat1, Double_t energy1, TH2* mat2, Double_t energy2);
32 static Bool_t FineMatchFastAll(TCalManager* cm, TH2* mat1, TPeak* peak1, TH2* mat2, TPeak* peak2);
33 static Bool_t FineMatchFastAll(TCalManager* cm, TH2* mat, TPeak* peak1, TPeak* peak2);
34
35 static Bool_t FineMatchAll(TCalManager* cm, TH2* charge_mat, TH2* eng_mat, Int_t testchan, Double_t energy1,
36 Double_t energy2, Int_t low_range = 100, Int_t high_range = 600);
37
38 static Bool_t AlignAll(TCalManager* cm, TH1* hist, TH2* mat, Int_t low_range = 100, Int_t high_range = 600);
39
40 Bool_t CoarseMatch(TH1* hist, Int_t chanNum = 9999, Double_t energy1 = 1173.228, Double_t energy2 = 1332.492);
41 Bool_t FineMatchFast(TH1* hist1, TPeak* peak1, TH1* hist2, TPeak* peak2, Int_t channelNum = 9999);
42 Bool_t FineMatchFast(TH1* hist, TPeak* peak1, TPeak* peak2, Int_t channelNum = 9999);
43 Bool_t FineMatchFast(TH1* hist, Double_t energy1, Double_t energy2, Int_t channelNum = 9999);
44 Bool_t FineMatchFast(TH1* hist1, Double_t energy1, TH1* hist2, Double_t energy2, Int_t channelNum = 9999);
45
46 Bool_t FineMatch(TH1* energyHist, TH1* testhist, TH1* chargeHist, Double_t energy1, Double_t energy2,
47 Int_t low_range = 100, Int_t high_range = 600, Int_t channelNum = 9999);
48
49 Bool_t Align(TH1* test, TH1* hist, Int_t low_range = 100, Int_t high_range = 600);
50
51 void Clear(Option_t* opt = "") override;
52 void Print(Option_t* opt = "") const override;
53
54 Bool_t IsGroupable() const override { return false; }
55 void WriteToChannel() const override;
56
57 void SetNucleus(TNucleus*, Option_t* = "") override { Warning("SetNucleus", "Is not used in TGainMatching"); }
58 TNucleus* GetNucleus() const override
59 {
60 Warning("GetNucleus", "Is not used in TGainMatching");
61 return nullptr;
62 }
63
64 void SetHist(TH1*) override { Warning("SetHist", "Is not used in TGainMatching"); }
65 TH1* GetHist() const
66 {
67 Warning("GetHist", "Is not used in TGainMatching");
68 return nullptr;
69 }
70
71 void SetCoarseRange(Double_t coarseRange) { fCoarseRange = coarseRange; }
72 Double_t GetCoarseRange() const { return fCoarseRange; }
73 static void SetDefaultCoarseRange(Double_t coarseRange)
74 {
75 std::cout << "All new TGainMatch objects will have their range set to " << coarseRange << std::endl;
76 fDefaultCoarseRange = coarseRange;
77 }
78 static Double_t GetDefaultCoarseRange() { return fDefaultCoarseRange; }
79
80private:
81 Bool_t fCoarseMatch{false};
82 Bool_t fAligned{false};
83 TH1* fHist{nullptr};
84 std::array<Double_t, 2> fAlignCoeffs{0.};
85 std::array<Double_t, 2> fGainCoeffs{0.};
86 Double_t fCoarseRange{0.};
87 Double_t HistCompare(Double_t* x, Double_t* par);
88
89 static Double_t fDefaultCoarseRange;
90
91 /// \cond CLASSIMP
92 ClassDefOverride(TGainMatch, 1) // NOLINT(readability-else-after-return)
93 /// \endcond
94};
95/*! @} */
96#endif
TH2D * mat
Definition UserFillObj.h:12
TH1D * hist
Definition UserFillObj.h:3
Definition TCal.h:44
std::array< Double_t, 2 > fGainCoeffs
Definition TGainMatch.h:85
Bool_t FineMatchFast(TH1 *hist1, TPeak *peak1, TH1 *hist2, TPeak *peak2, Int_t channelNum=9999)
TH1 * fHist
Definition TGainMatch.h:83
static Double_t fDefaultCoarseRange
Definition TGainMatch.h:89
std::array< Double_t, 2 > fAlignCoeffs
Definition TGainMatch.h:84
static Double_t GetDefaultCoarseRange()
Definition TGainMatch.h:78
TH1 * GetHist() const
Definition TGainMatch.h:65
TNucleus * GetNucleus() const override
Definition TGainMatch.h:58
void Clear(Option_t *opt="") override
static Bool_t FineMatchFastAll(TCalManager *cm, TH2 *mat, Double_t energy1, Double_t energy2)
Double_t HistCompare(Double_t *x, Double_t *par)
void WriteToChannel() const override
TGainMatch(const char *name, const char *title)
Definition TGainMatch.h:18
void SetCoarseRange(Double_t coarseRange)
Definition TGainMatch.h:71
void Copy(TObject &obj) const override
Bool_t CoarseMatch(TH1 *hist, Int_t chanNum=9999, Double_t energy1=1173.228, Double_t energy2=1332.492)
void CalculateGain(Double_t cent1, Double_t cent2, Double_t eng1, Double_t eng2)
Bool_t fCoarseMatch
Definition TGainMatch.h:81
Bool_t Align(TH1 *test, TH1 *hist, Int_t low_range=100, Int_t high_range=600)
static void SetDefaultCoarseRange(Double_t coarseRange)
Definition TGainMatch.h:73
static Bool_t CoarseMatchAll(TCalManager *cm, TH2 *mat, Double_t energy1=1173.228, Double_t energy2=1332.492)
static Bool_t AlignAll(TCalManager *cm, TH1 *hist, TH2 *mat, Int_t low_range=100, Int_t high_range=600)
Bool_t IsGroupable() const override
Definition TGainMatch.h:54
TGainMatch(TGainMatch &&) noexcept=default
static Bool_t FineMatchAll(TCalManager *cm, TH2 *charge_mat, TH2 *eng_mat, Int_t testchan, Double_t energy1, Double_t energy2, Int_t low_range=100, Int_t high_range=600)
void SetHist(TH1 *) override
Definition TGainMatch.h:64
Bool_t FineMatch(TH1 *energyHist, TH1 *testhist, TH1 *chargeHist, Double_t energy1, Double_t energy2, Int_t low_range=100, Int_t high_range=600, Int_t channelNum=9999)
Double_t GetCoarseRange() const
Definition TGainMatch.h:72
void Print(Option_t *opt="") const override
void SetNucleus(TNucleus *, Option_t *="") override
Definition TGainMatch.h:57
Double_t fCoarseRange
Definition TGainMatch.h:86
Bool_t fAligned
Definition TGainMatch.h:82
Definition TPeak.h:28