GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TIfin.h
Go to the documentation of this file.
1#ifndef TIFIN_H
2#define TIFIN_H
3
4/** \addtogroup Detectors
5 * @{
6 */
7
8#include <utility>
9#include <vector>
10#include <cstdio>
11#include <functional>
12//#include <tuple>
13
14#include "TBits.h"
15#include "TVector3.h"
16
17#include "Globals.h"
18#include "TIfinHit.h"
19#include "TSuppressed.h"
20#include "TTransientBits.h"
21
22////////////////////////////////////////////////////////////
23///
24/// \class TIfin
25///
26/// The TIfin class defines the observables and algorithms used
27/// when analyzing IFIN data. It includes detector positions,
28/// add-back methods, etc.
29///
30////////////////////////////////////////////////////////////
31
32class TIfin : public TSuppressed {
33public:
34 enum class EIfinBits {
35 kIsAddbackSet = 1<<0,
36 kIsCrossTalkSet = 1<<1,
37 kIsSuppressedSet = 1<<2,
39 kBit4 = 1<<4,
40 kBit5 = 1<<5,
41 kBit6 = 1<<6,
42 kBit7 = 1<<7
43 };
44
45 TIfin();
46 TIfin(const TIfin&);
47 ~TIfin() override;
48
49public:
50 TIfinHit* GetIfinHit(const Int_t& i);
51
52 static TVector3 GetPosition(int DetNbr, int CryNbr = 5, double dist = 90.0); //!<!
53 static const char* GetColorFromNumber(int number);
54#ifndef __CINT__
55 void AddFragment(const std::shared_ptr<const TFragment>&, TChannel*) override; //!<!
56#endif
57 void BuildHits() override {} // no need to build any hits, everything already done in AddFragment
58 void ResetFlags() const;
59
60 TIfin& operator=(const TIfin&); //!<!
61
62#if !defined(__CINT__) && !defined(__CLING__)
63 void SetAddbackCriterion(std::function<bool(const TDetectorHit*, const TDetectorHit*)> criterion)
64 {
65 fAddbackCriterion = std::move(criterion);
66 }
67 std::function<bool(const TDetectorHit*, const TDetectorHit*)> GetAddbackCriterion() const { return fAddbackCriterion; }
68
69 bool AddbackCriterion(const TDetectorHit* hit1, const TDetectorHit* hit2) override { return fAddbackCriterion(hit1, hit2); }
70#endif
71
73 TIfinHit* GetAddbackHit(const int& i);
74 bool IsAddbackSet() const;
75 void ResetAddback();
76 void ResetSuppressed();
78 UShort_t GetNAddbackFrags(const size_t& idx);
79
80 TIfinHit* GetSuppressedHit(const int& i);
81 Int_t GetSuppressedMultiplicity( const TBgo* bgo );
82 bool IsSuppressed() const;
83
84#if !defined(__CINT__) && !defined(__CLING__)
85 void SetSuppressionCriterion(std::function<bool(const TDetectorHit*, const TDetectorHit*)> criterion)
86 {
87 fSuppressionCriterion = std::move(criterion);
88 }
89 std::function<bool(const TDetectorHit*, const TDetectorHit*)> GetSuppressionCriterion() const { return fSuppressionCriterion; }
90
91 bool SuppressionCriterion(const TDetectorHit* hit, const TDetectorHit* bgoHit) override { return fSuppressionCriterion(hit, bgoHit); }
92#endif
93
94 TIfinHit* GetSuppressedAddbackHit( const int& i );
95 Int_t GetSuppressedAddbackMultiplicity(const TBgo* bgo);
96 bool IsSuppressedAddbackSet() const;
97
98private:
99#if !defined(__CINT__) && !defined(__CLING__)
100 static std::function<bool(const TDetectorHit*, const TDetectorHit*)> fAddbackCriterion;
101 static std::function<bool(const TDetectorHit*, const TDetectorHit*)> fSuppressionCriterion;
102#endif
104 // static bool fSetBGOHits; //!<! Flag that determines if BGOHits are being measured
105
106 mutable TTransientBits<UChar_t> fIfinBits; // Transient member flags
107
108 mutable std::vector<TDetectorHit*> fAddbackHits; //!<! Used to create addback hits on the fly
109 mutable std::vector<UShort_t> fAddbackFrags; //!<! Number of crystals involved in creating the addback hit
110 mutable std::vector<TDetectorHit*> fSuppressedHits; //!<! Used to create suppressed hits on the fly
111 mutable std::vector<TDetectorHit*> fSuppressedAddbackHits; //!<! Used to create suppressed addback hits on the fly
112 mutable std::vector<UShort_t> fSuppressedAddbackFrags; //!<! Number of crystals involved in creating the suppressed addback hit
113
114public:
115 // static bool SetBGOHits() { return fSetBGOHits; } //!<!
116
117private:
118 static TVector3 gCloverPosition[17]; //!<! Position of each HPGe Clover
119 void ClearStatus() const { fIfinBits = 0; } //!<!
120 void SetBitNumber(EIfinBits bit, Bool_t set) const;
121 Bool_t TestBitNumber(EIfinBits bit) const { return fIfinBits.TestBit(bit); }
122
123 // Cross-Talk stuff
124public:
125 static const Double_t gStrongCT[2]; //!<!
126 static const Double_t gWeakCT[2]; //!<!
127 static const Double_t gCrossTalkPar[2][4][4]; //!<!
128 static Double_t CTCorrectedEnergy(const TIfinHit* const hit_to_correct, const TIfinHit* const other_hit,
129 Bool_t time_constraint = true);
130 Bool_t IsCrossTalkSet() const;
131 void FixCrossTalk();
132
133private:
134 // This is where the general untouchable functions live.
135 std::vector<TDetectorHit*>& GetAddbackVector(); //!<!
136 std::vector<UShort_t>& GetAddbackFragVector(); //!<!
137 std::vector<TDetectorHit*>& GetSuppressedVector();
138 std::vector<TDetectorHit*>& GetSuppressedAddbackVector();
139 std::vector<UShort_t>& GetSuppressedAddbackFragVector();
140 void SetAddback(bool flag = true) const;
141 void SetCrossTalk(bool flag = true) const;
142 void SetSuppressed(bool flag = true) const;
143 void SetSuppressedAddback(bool flag = true) const;
144
145public:
146 void Copy(TObject&) const override; //!<!
147 void Clear(Option_t* opt = "all") override; //!<!
148 void Print(Option_t* opt = "") const override; //!<!
149 void Print(std::ostream& out) const override;
150
151 /// \cond CLASSIMP
152 ClassDefOverride(TIfin, 2) // Ifin Physics structure
153 /// \endcond
154};
155/*! @} */
156#endif
Definition TBgo.h:22
Definition TIfin.h:32
void BuildHits() override
!
Definition TIfin.h:57
std::vector< TDetectorHit * > fAddbackHits
! Used to create addback hits on the fly
Definition TIfin.h:108
TIfin()
Definition TIfin.cxx:112
std::vector< TDetectorHit * > & GetAddbackVector()
!
Definition TIfin.cxx:203
void ResetSuppressed()
Definition TIfin.cxx:498
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating the addback hit
Definition TIfin.h:109
void ResetAddback()
Definition TIfin.cxx:487
std::vector< UShort_t > & GetSuppressedAddbackFragVector()
Definition TIfin.cxx:223
std::vector< TDetectorHit * > & GetSuppressedAddbackVector()
Definition TIfin.cxx:218
EIfinBits
Definition TIfin.h:34
static const char * GetColorFromNumber(int number)
Definition TIfin.cxx:597
bool IsAddbackSet() const
Definition TIfin.cxx:228
UShort_t GetNAddbackFrags(const size_t &idx)
Definition TIfin.cxx:518
~TIfin() override
Definition TIfin.cxx:147
Int_t GetSuppressedAddbackMultiplicity(const TBgo *bgo)
Definition TIfin.cxx:359
std::vector< UShort_t > & GetAddbackFragVector()
!
Definition TIfin.cxx:208
Bool_t IsCrossTalkSet() const
Definition TIfin.cxx:233
TIfin & operator=(const TIfin &)
!
Definition TIfin.cxx:196
TIfinHit * GetSuppressedAddbackHit(const int &i)
Definition TIfin.cxx:407
std::vector< TDetectorHit * > fSuppressedAddbackHits
! Used to create suppressed addback hits on the fly
Definition TIfin.h:111
void SetBitNumber(EIfinBits bit, Bool_t set) const
Definition TIfin.cxx:528
TTransientBits< UChar_t > fIfinBits
Definition TIfin.h:106
static TVector3 gCloverPosition[17]
! Position of each HPGe Clover
Definition TIfin.h:43
bool IsSuppressed() const
Definition TIfin.cxx:238
void ClearStatus() const
!
Definition TIfin.h:119
std::vector< TDetectorHit * > fSuppressedHits
! Used to create suppressed hits on the fly
Definition TIfin.h:110
bool IsSuppressedAddbackSet() const
Definition TIfin.cxx:243
void ResetFlags() const
Definition TIfin.cxx:482
TIfinHit * GetAddbackHit(const int &i)
Definition TIfin.cxx:391
bool SuppressionCriterion(const TDetectorHit *hit, const TDetectorHit *bgoHit) override
Definition TIfin.h:91
void ResetSuppressedAddback()
Definition TIfin.cxx:507
Int_t GetAddbackMultiplicity()
Definition TIfin.cxx:328
void SetSuppressionCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TIfin.h:85
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetSuppressionCriterion() const
Definition TIfin.h:89
void SetSuppressedAddback(bool flag=true) const
Definition TIfin.cxx:263
std::vector< TDetectorHit * > & GetSuppressedVector()
Definition TIfin.cxx:213
void FixCrossTalk()
Definition TIfin.cxx:575
Int_t GetSuppressedMultiplicity(const TBgo *bgo)
Definition TIfin.cxx:300
Bool_t TestBitNumber(EIfinBits bit) const
Definition TIfin.h:121
static Double_t CTCorrectedEnergy(const TIfinHit *const hit_to_correct, const TIfinHit *const other_hit, Bool_t time_constraint=true)
Definition TIfin.cxx:534
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fSuppressionCriterion
Definition TIfin.h:101
TIfinHit * GetSuppressedHit(const int &i)
Definition TIfin.cxx:284
static const Double_t gCrossTalkPar[2][4][4]
!
Definition TIfin.h:103
static TVector3 GetPosition(int DetNbr, int CryNbr=5, double dist=90.0)
!
Definition TIfin.cxx:444
bool AddbackCriterion(const TDetectorHit *hit1, const TDetectorHit *hit2) override
Definition TIfin.h:69
std::vector< UShort_t > fSuppressedAddbackFrags
! Number of crystals involved in creating the suppressed addback hit
Definition TIfin.h:112
TIfinHit * GetIfinHit(const Int_t &i)
Definition TIfin.cxx:268
static const Double_t gStrongCT[2]
!
Definition TIfin.h:101
void SetAddback(bool flag=true) const
Definition TIfin.cxx:248
void Clear(Option_t *opt="all") override
!
Definition TIfin.cxx:158
static const Double_t gWeakCT[2]
!
Definition TIfin.h:102
void SetSuppressed(bool flag=true) const
Definition TIfin.cxx:258
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Definition TIfin.cxx:423
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fAddbackCriterion
Definition TIfin.h:100
void SetAddbackCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TIfin.h:63
void SetCrossTalk(bool flag=true) const
Definition TIfin.cxx:253
void Copy(TObject &) const override
!
Definition TIfin.cxx:130
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetAddbackCriterion() const
Definition TIfin.h:67
void Print(Option_t *opt="") const override
!
Definition TIfin.cxx:175
Bool_t TestBit(T bit) const