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 {} // no need to build any hits, everything already done in AddFragment
58 void ResetFlags() const;
59
60 TFipps& operator=(const TFipps&); //!<!
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 TFippsHit* GetAddbackHit(const int& i);
74 bool IsAddbackSet() const;
75 void ResetAddback();
76 void ResetSuppressed();
78 UShort_t GetNAddbackFrags(const size_t& idx);
79
80 TFippsHit* 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
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
103
104 // static bool fSetBGOHits; //!<! Flag that determines if BGOHits are being measured
105
106 mutable TTransientBits<UChar_t> fFippsBits; // 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 { fFippsBits = 0; } //!<!
120 void SetBitNumber(EFippsBits bit, Bool_t set) const;
121 Bool_t TestBitNumber(EFippsBits bit) const { return fFippsBits.TestBit(bit); }
122
123 // Cross-Talk stuff
124public:
125 static Double_t CTCorrectedEnergy(const TFippsHit* const hit_to_correct, const TFippsHit* const other_hit,
126 Bool_t time_constraint = true);
127 Bool_t IsCrossTalkSet() const;
128 void FixCrossTalk();
129
130private:
131 // This is where the general untouchable functions live.
132 std::vector<TDetectorHit*>& GetAddbackVector(); //!<!
133 std::vector<UShort_t>& GetAddbackFragVector(); //!<!
134 std::vector<TDetectorHit*>& GetSuppressedVector();
135 std::vector<TDetectorHit*>& GetSuppressedAddbackVector();
136 std::vector<UShort_t>& GetSuppressedAddbackFragVector();
137 void SetAddback(bool flag = true) const;
138 void SetCrossTalk(bool flag = true) const;
139 void SetSuppressed(bool flag = true) const;
140 void SetSuppressedAddback(bool flag = true) const;
141
142public:
143 void Copy(TObject&) const override; //!<!
144 void Clear(Option_t* opt = "all") override; //!<!
145 void Print(Option_t* opt = "") const override; //!<!
146 void Print(std::ostream& out) const override;
147
148 /// \cond CLASSIMP
149 ClassDefOverride(TFipps, 7) // Fipps Physics structure
150 /// \endcond
151};
152/*! @} */
153#endif
Definition TBgo.h:22
std::vector< TDetectorHit * > & GetAddbackVector()
!
Definition TFipps.cxx:190
std::vector< UShort_t > & GetAddbackFragVector()
!
Definition TFipps.cxx:195
UShort_t GetNAddbackFrags(const size_t &idx)
Definition TFipps.cxx:504
TFipps & operator=(const TFipps &)
!
Definition TFipps.cxx:183
Bool_t TestBitNumber(EFippsBits bit) const
Definition TFipps.h:121
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating the addback hit
Definition TFipps.h:109
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetAddbackCriterion() const
Definition TFipps.h:67
static TVector3 GetPosition(int DetNbr, int CryNbr=5, double dist=90.0)
!
Definition TFipps.cxx:430
TFippsHit * GetSuppressedHit(const int &i)
Definition TFipps.cxx:271
std::vector< TDetectorHit * > fSuppressedAddbackHits
! Used to create suppressed addback hits on the fly
Definition TFipps.h:111
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fSuppressionCriterion
Definition TFipps.h:101
bool SuppressionCriterion(const TDetectorHit *hit, const TDetectorHit *bgoHit) override
Definition TFipps.h:91
void SetSuppressionCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TFipps.h:85
std::vector< UShort_t > fSuppressedAddbackFrags
! Number of crystals involved in creating the suppressed addback hit
Definition TFipps.h:112
void Copy(TObject &) const override
!
Definition TFipps.cxx:118
TFippsHit * GetAddbackHit(const int &i)
Definition TFipps.cxx:377
bool AddbackCriterion(const TDetectorHit *hit1, const TDetectorHit *hit2) override
Definition TFipps.h:69
void ResetSuppressed()
Definition TFipps.cxx:484
void SetCrossTalk(bool flag=true) const
Definition TFipps.cxx:240
bool IsAddbackSet() const
Definition TFipps.cxx:215
TFipps()
Definition TFipps.cxx:100
TFippsHit * GetFippsHit(const Int_t &i)
Definition TFipps.cxx:255
Int_t GetSuppressedAddbackMultiplicity(const TBgo *bgo)
Definition TFipps.cxx:345
void ClearStatus() const
!
Definition TFipps.h:119
TTransientBits< UChar_t > fFippsBits
Definition TFipps.h:106
static const char * GetColorFromNumber(int number)
Definition TFipps.cxx:586
bool IsSuppressed() const
Definition TFipps.cxx:225
~TFipps() override
Definition TFipps.cxx:135
std::vector< TDetectorHit * > & GetSuppressedAddbackVector()
Definition TFipps.cxx:205
void ResetSuppressedAddback()
Definition TFipps.cxx:493
TFippsHit * GetSuppressedAddbackHit(const int &i)
Definition TFipps.cxx:393
void SetAddbackCriterion(std::function< bool(const TDetectorHit *, const TDetectorHit *)> criterion)
Definition TFipps.h:63
std::vector< TDetectorHit * > & GetSuppressedVector()
Definition TFipps.cxx:200
void SetBitNumber(EFippsBits bit, Bool_t set) const
Definition TFipps.cxx:514
void SetSuppressedAddback(bool flag=true) const
Definition TFipps.cxx:250
void BuildHits() override
!
Definition TFipps.h:57
bool IsSuppressedAddbackSet() const
Definition TFipps.cxx:230
Bool_t IsCrossTalkSet() const
Definition TFipps.cxx:220
static Double_t CTCorrectedEnergy(const TFippsHit *const hit_to_correct, const TFippsHit *const other_hit, Bool_t time_constraint=true)
Definition TFipps.cxx:521
std::function< bool(const TDetectorHit *, const TDetectorHit *)> GetSuppressionCriterion() const
Definition TFipps.h:89
void SetSuppressed(bool flag=true) const
Definition TFipps.cxx:245
std::vector< TDetectorHit * > fSuppressedHits
! Used to create suppressed hits on the fly
Definition TFipps.h:110
void FixCrossTalk()
Definition TFipps.cxx:562
static TVector3 gCloverPosition[17]
! Position of each HPGe Clover
Definition TFipps.h:43
static std::function< bool(const TDetectorHit *, const TDetectorHit *)> fAddbackCriterion
Definition TFipps.h:100
void ResetFlags() const
Definition TFipps.cxx:468
void SetAddback(bool flag=true) const
Definition TFipps.cxx:235
Int_t GetSuppressedMultiplicity(const TBgo *bgo)
Definition TFipps.cxx:287
void Clear(Option_t *opt="all") override
!
Definition TFipps.cxx:145
void ResetAddback()
Definition TFipps.cxx:473
std::vector< UShort_t > & GetSuppressedAddbackFragVector()
Definition TFipps.cxx:210
EFippsBits
Definition TFipps.h:34
std::vector< TDetectorHit * > fAddbackHits
! Used to create addback hits on the fly
Definition TFipps.h:108
Int_t GetAddbackMultiplicity()
Definition TFipps.cxx:314
void Print(Option_t *opt="") const override
!
Definition TFipps.cxx:162
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Definition TFipps.cxx:409
Bool_t TestBit(T bit) const