GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TFipps.h
Go to the documentation of this file.
1#ifndef TFIPPS_H
2#define TFIPPS_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 "TFippsHit.h"
19#include "TSuppressed.h"
20#include "TTransientBits.h"
21
22////////////////////////////////////////////////////////////
23///
24/// \class TFipps
25///
26/// The TFipps class defines the observables and algorithms used
27/// when analyzing FIPPS data. It includes detector positions,
28/// add-back methods, etc.
29///
30////////////////////////////////////////////////////////////
31
32class TFipps : public TSuppressed {
33public:
34 enum class EFippsBits {
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 TFipps();
46 TFipps(const TFipps&);
47 ~TFipps() override;
48
49public:
50 TFippsHit* GetFippsHit(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 TFipps& operator=(const TFipps&); //!<!
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 TFippsHit* GetAddbackHit(const int& i);
75 bool IsAddbackSet() const;
76 void ResetAddback();
77 void ResetSuppressed();
79 UShort_t GetNAddbackFrags(const size_t& idx);
80
81 TFippsHit* 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
96 Int_t GetSuppressedAddbackMultiplicity(const TBgo* bgo);
97 bool IsSuppressedAddbackSet() const;
98
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> fFippsBits; // 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 { fFippsBits = 0; } //!<!
121 void SetBitNumber(EFippsBits bit, Bool_t set) const;
122 Bool_t TestBitNumber(EFippsBits bit) const { return fFippsBits.TestBit(bit); }
123
124 // Cross-Talk stuff
125public:
126 static Double_t CTCorrectedEnergy(const TFippsHit* const hit_to_correct, const TFippsHit* const other_hit,
127 Bool_t time_constraint = true);
128 Bool_t IsCrossTalkSet() const;
129 void FixCrossTalk();
130
131private:
132 // This is where the general untouchable functions live.
133 std::vector<TDetectorHit*>& GetAddbackVector(); //!<!
134 std::vector<UShort_t>& GetAddbackFragVector(); //!<!
135 std::vector<TDetectorHit*>& GetSuppressedVector();
136 std::vector<TDetectorHit*>& GetSuppressedAddbackVector();
137 std::vector<UShort_t>& GetSuppressedAddbackFragVector();
138 void SetAddback(bool flag = true) const;
139 void SetCrossTalk(bool flag = true) const;
140 void SetSuppressed(bool flag = true) const;
141 void SetSuppressedAddback(bool flag = true) const;
142
143public:
144 void Copy(TObject&) const override; //!<!
145 void Clear(Option_t* opt = "all") override; //!<!
146 void Print(Option_t* opt = "") const override; //!<!
147 void Print(std::ostream& out) const override;
148
149 /// \cond CLASSIMP
150 ClassDefOverride(TFipps, 7) // Fipps Physics structure
151 /// \endcond
152};
153/*! @} */
154#endif
Definition TBgo.h:22
std::vector< TDetectorHit * > & GetAddbackVector()
!
Definition TFipps.cxx:186
std::vector< UShort_t > & GetAddbackFragVector()
!
Definition TFipps.cxx:191
UShort_t GetNAddbackFrags(const size_t &idx)
Definition TFipps.cxx:497
TFipps & operator=(const TFipps &)
!
Definition TFipps.cxx:180
Bool_t TestBitNumber(EFippsBits bit) const
Definition TFipps.h:122
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating the addback hit
Definition TFipps.h:110
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetAddbackCriterion() const
Definition TFipps.h:68
static TVector3 GetPosition(int DetNbr, int CryNbr=5, double dist=90.0)
!
Definition TFipps.cxx:423
TFippsHit * GetSuppressedHit(const int &i)
Definition TFipps.cxx:267
std::vector< TDetectorHit * > fSuppressedAddbackHits
! Used to create suppressed addback hits on the fly
Definition TFipps.h:112
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fSuppressionCriterion
Definition TFipps.h:102
bool SuppressionCriterion(const TDetectorHit *hit, const TDetectorHit *bgoHit) override
Definition TFipps.h:92
void SetSuppressionCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TFipps.h:86
std::vector< UShort_t > fSuppressedAddbackFrags
! Number of crystals involved in creating the suppressed addback hit
Definition TFipps.h:113
void Copy(TObject &) const override
!
Definition TFipps.cxx:113
TFippsHit * GetAddbackHit(const int &i)
Definition TFipps.cxx:372
bool AddbackCriterion(const TDetectorHit *hit1, const TDetectorHit *hit2) override
Definition TFipps.h:70
void ResetSuppressed()
Definition TFipps.cxx:477
void SetCrossTalk(bool flag=true) const
Definition TFipps.cxx:236
bool IsAddbackSet() const
Definition TFipps.cxx:211
TFipps()
Definition TFipps.cxx:95
TFippsHit * GetFippsHit(const Int_t &i)
Definition TFipps.cxx:251
Int_t GetSuppressedAddbackMultiplicity(const TBgo *bgo)
Definition TFipps.cxx:341
void ClearStatus() const
!
Definition TFipps.h:120
TTransientBits< UChar_t > fFippsBits
Definition TFipps.h:107
static const char * GetColorFromNumber(int number)
Definition TFipps.cxx:578
bool IsSuppressed() const
Definition TFipps.cxx:221
~TFipps() override
Definition TFipps.cxx:130
std::vector< TDetectorHit * > & GetSuppressedAddbackVector()
Definition TFipps.cxx:201
void ResetSuppressedAddback()
Definition TFipps.cxx:486
TFippsHit * GetSuppressedAddbackHit(const int &i)
Definition TFipps.cxx:388
void SetAddbackCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TFipps.h:64
std::vector< TDetectorHit * > & GetSuppressedVector()
Definition TFipps.cxx:196
void SetBitNumber(EFippsBits bit, Bool_t set) const
Definition TFipps.cxx:507
void SetSuppressedAddback(bool flag=true) const
Definition TFipps.cxx:246
void BuildHits() override
!
Definition TFipps.h:57
bool IsSuppressedAddbackSet() const
Definition TFipps.cxx:226
Bool_t IsCrossTalkSet() const
Definition TFipps.cxx:216
static Double_t CTCorrectedEnergy(const TFippsHit *const hit_to_correct, const TFippsHit *const other_hit, Bool_t time_constraint=true)
Definition TFipps.cxx:513
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetSuppressionCriterion() const
Definition TFipps.h:90
void SetSuppressed(bool flag=true) const
Definition TFipps.cxx:241
std::vector< TDetectorHit * > fSuppressedHits
! Used to create suppressed hits on the fly
Definition TFipps.h:111
void FixCrossTalk()
Definition TFipps.cxx:554
static TVector3 gCloverPosition[17]
! Position of each HPGe Clover
Definition TFipps.h:38
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fAddbackCriterion
Definition TFipps.h:101
void ResetFlags() const
Definition TFipps.cxx:461
void SetAddback(bool flag=true) const
Definition TFipps.cxx:231
Int_t GetSuppressedMultiplicity(const TBgo *bgo)
Definition TFipps.cxx:283
void Clear(Option_t *opt="all") override
!
Definition TFipps.cxx:140
void ResetAddback()
Definition TFipps.cxx:466
std::vector< UShort_t > & GetSuppressedAddbackFragVector()
Definition TFipps.cxx:206
EFippsBits
Definition TFipps.h:34
std::vector< TDetectorHit * > fAddbackHits
! Used to create addback hits on the fly
Definition TFipps.h:109
Int_t GetAddbackMultiplicity()
Definition TFipps.cxx:310
void Print(Option_t *opt="") const override
!
Definition TFipps.cxx:157
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Definition TFipps.cxx:404
Bool_t TestBit(T bit) const