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
58 {} // no need to build any hits, everything already done in AddFragment
59 void ResetFlags() const;
60
61 TIfin& operator=(const TIfin&); //!<!
62
63#if !defined(__CINT__) && !defined(__CLING__)
64 void SetAddbackCriterion(std::function<bool(const TDetectorHit*, const TDetectorHit*)> criterion)
65 {
66 fAddbackCriterion = std::move(criterion);
67 }
68 std::function<bool(const TDetectorHit*, const TDetectorHit*)> GetAddbackCriterion() const { return fAddbackCriterion; }
69
70 bool AddbackCriterion(const TDetectorHit* hit1, const TDetectorHit* hit2) override { return fAddbackCriterion(hit1, hit2); }
71#endif
72
74 TIfinHit* GetAddbackHit(const int& i);
75 bool IsAddbackSet() const;
76 void ResetAddback();
77 void ResetSuppressed();
79 UShort_t GetNAddbackFrags(const size_t& idx);
80
81 TIfinHit* GetSuppressedHit(const int& i);
82 Int_t GetSuppressedMultiplicity(const TBgo* bgo);
83 bool IsSuppressed() const;
84
85#if !defined(__CINT__) && !defined(__CLING__)
86 void SetSuppressionCriterion(std::function<bool(const TDetectorHit*, const TDetectorHit*)> criterion)
87 {
88 fSuppressionCriterion = std::move(criterion);
89 }
90 std::function<bool(const TDetectorHit*, const TDetectorHit*)> GetSuppressionCriterion() const { return fSuppressionCriterion; }
91
92 bool SuppressionCriterion(const TDetectorHit* hit, const TDetectorHit* bgoHit) override { return fSuppressionCriterion(hit, bgoHit); }
93#endif
94
95 TIfinHit* GetSuppressedAddbackHit(const int& i);
99private:
100#if !defined(__CINT__) && !defined(__CLING__)
101 static std::function<bool(const TDetectorHit*, const TDetectorHit*)> fAddbackCriterion;
102 static std::function<bool(const TDetectorHit*, const TDetectorHit*)> fSuppressionCriterion;
103#endif
104
105 // static bool fSetBGOHits; //!<! Flag that determines if BGOHits are being measured
106
107 mutable TTransientBits<UChar_t> fIfinBits; // Transient member flags
108
109 mutable std::vector<TDetectorHit*> fAddbackHits; //!<! Used to create addback hits on the fly
110 mutable std::vector<UShort_t> fAddbackFrags; //!<! Number of crystals involved in creating the addback hit
111 mutable std::vector<TDetectorHit*> fSuppressedHits; //!<! Used to create suppressed hits on the fly
112 mutable std::vector<TDetectorHit*> fSuppressedAddbackHits; //!<! Used to create suppressed addback hits on the fly
113 mutable std::vector<UShort_t> fSuppressedAddbackFrags; //!<! Number of crystals involved in creating the suppressed addback hit
114
115public:
116 // static bool SetBGOHits() { return fSetBGOHits; } //!<!
117
118private:
119 static TVector3 gCloverPosition[17]; //!<! Position of each HPGe Clover
120 void ClearStatus() const { fIfinBits = 0; } //!<!
121 void SetBitNumber(EIfinBits bit, Bool_t set) const;
122 Bool_t TestBitNumber(EIfinBits bit) const { return fIfinBits.TestBit(bit); }
123
124 // Cross-Talk stuff
125public:
126 static const Double_t gStrongCT[2]; //!<!
127 static const Double_t gWeakCT[2]; //!<!
128 static const Double_t gCrossTalkPar[2][4][4]; //!<!
129 static Double_t CTCorrectedEnergy(const TIfinHit* const hit_to_correct, const TIfinHit* const other_hit,
130 Bool_t time_constraint = true);
131 Bool_t IsCrossTalkSet() const;
132 void FixCrossTalk();
133
134private:
135 // This is where the general untouchable functions live.
136 std::vector<TDetectorHit*>& GetAddbackVector(); //!<!
137 std::vector<UShort_t>& GetAddbackFragVector(); //!<!
138 std::vector<TDetectorHit*>& GetSuppressedVector();
139 std::vector<TDetectorHit*>& GetSuppressedAddbackVector();
140 std::vector<UShort_t>& GetSuppressedAddbackFragVector();
141 void SetAddback(bool flag = true) const;
142 void SetCrossTalk(bool flag = true) const;
143 void SetSuppressed(bool flag = true) const;
144 void SetSuppressedAddback(bool flag = true) const;
145
146public:
147 void Copy(TObject&) const override; //!<!
148 void Clear(Option_t* opt = "all") override; //!<!
149 void Print(Option_t* opt = "") const override; //!<!
150 void Print(std::ostream& out) const override;
151
152 /// \cond CLASSIMP
153 ClassDefOverride(TIfin, 2) // Ifin Physics structure
154 /// \endcond
155};
156/*! @} */
157#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:109
TIfin()
Definition TIfin.cxx:107
std::vector< TDetectorHit * > & GetAddbackVector()
!
Definition TIfin.cxx:198
void ResetSuppressed()
Definition TIfin.cxx:489
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating the addback hit
Definition TIfin.h:110
void ResetAddback()
Definition TIfin.cxx:478
std::vector< UShort_t > & GetSuppressedAddbackFragVector()
Definition TIfin.cxx:218
std::vector< TDetectorHit * > & GetSuppressedAddbackVector()
Definition TIfin.cxx:213
EIfinBits
Definition TIfin.h:34
static const char * GetColorFromNumber(int number)
Definition TIfin.cxx:588
bool IsAddbackSet() const
Definition TIfin.cxx:223
UShort_t GetNAddbackFrags(const size_t &idx)
Definition TIfin.cxx:509
~TIfin() override
Definition TIfin.cxx:142
Int_t GetSuppressedAddbackMultiplicity(const TBgo *bgo)
Definition TIfin.cxx:353
std::vector< UShort_t > & GetAddbackFragVector()
!
Definition TIfin.cxx:203
Bool_t IsCrossTalkSet() const
Definition TIfin.cxx:228
TIfin & operator=(const TIfin &)
!
Definition TIfin.cxx:192
TIfinHit * GetSuppressedAddbackHit(const int &i)
Definition TIfin.cxx:400
std::vector< TDetectorHit * > fSuppressedAddbackHits
! Used to create suppressed addback hits on the fly
Definition TIfin.h:112
void SetBitNumber(EIfinBits bit, Bool_t set) const
Definition TIfin.cxx:519
TTransientBits< UChar_t > fIfinBits
Definition TIfin.h:107
static TVector3 gCloverPosition[17]
! Position of each HPGe Clover
Definition TIfin.h:38
bool IsSuppressed() const
Definition TIfin.cxx:233
void ClearStatus() const
!
Definition TIfin.h:120
std::vector< TDetectorHit * > fSuppressedHits
! Used to create suppressed hits on the fly
Definition TIfin.h:111
bool IsSuppressedAddbackSet() const
Definition TIfin.cxx:238
void ResetFlags() const
Definition TIfin.cxx:473
TIfinHit * GetAddbackHit(const int &i)
Definition TIfin.cxx:384
bool SuppressionCriterion(const TDetectorHit *hit, const TDetectorHit *bgoHit) override
Definition TIfin.h:92
void ResetSuppressedAddback()
Definition TIfin.cxx:498
Int_t GetAddbackMultiplicity()
Definition TIfin.cxx:322
void SetSuppressionCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TIfin.h:86
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetSuppressionCriterion() const
Definition TIfin.h:90
void SetSuppressedAddback(bool flag=true) const
Definition TIfin.cxx:258
std::vector< TDetectorHit * > & GetSuppressedVector()
Definition TIfin.cxx:208
void FixCrossTalk()
Definition TIfin.cxx:566
Int_t GetSuppressedMultiplicity(const TBgo *bgo)
Definition TIfin.cxx:295
Bool_t TestBitNumber(EIfinBits bit) const
Definition TIfin.h:122
static Double_t CTCorrectedEnergy(const TIfinHit *const hit_to_correct, const TIfinHit *const other_hit, Bool_t time_constraint=true)
Definition TIfin.cxx:525
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fSuppressionCriterion
Definition TIfin.h:102
TIfinHit * GetSuppressedHit(const int &i)
Definition TIfin.cxx:279
static const Double_t gCrossTalkPar[2][4][4]
!
Definition TIfin.h:98
static TVector3 GetPosition(int DetNbr, int CryNbr=5, double dist=90.0)
!
Definition TIfin.cxx:435
bool AddbackCriterion(const TDetectorHit *hit1, const TDetectorHit *hit2) override
Definition TIfin.h:70
std::vector< UShort_t > fSuppressedAddbackFrags
! Number of crystals involved in creating the suppressed addback hit
Definition TIfin.h:113
TIfinHit * GetIfinHit(const Int_t &i)
Definition TIfin.cxx:263
static const Double_t gStrongCT[2]
!
Definition TIfin.h:96
void SetAddback(bool flag=true) const
Definition TIfin.cxx:243
void Clear(Option_t *opt="all") override
!
Definition TIfin.cxx:152
static const Double_t gWeakCT[2]
!
Definition TIfin.h:97
void SetSuppressed(bool flag=true) const
Definition TIfin.cxx:253
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Definition TIfin.cxx:416
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fAddbackCriterion
Definition TIfin.h:101
void SetAddbackCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TIfin.h:64
void SetCrossTalk(bool flag=true) const
Definition TIfin.cxx:248
void Copy(TObject &) const override
!
Definition TIfin.cxx:125
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetAddbackCriterion() const
Definition TIfin.h:68
void Print(Option_t *opt="") const override
!
Definition TIfin.cxx:169
Bool_t TestBit(T bit) const