GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TTdrTigress.h
Go to the documentation of this file.
1#ifndef TTDRTIGRESS_H
2#define TTDRTIGRESS_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 "TTdrTigressHit.h"
19#include "TBgo.h"
20#include "TBgoHit.h"
21#include "TSuppressed.h"
22#include "TRunInfo.h"
23#include "TTransientBits.h"
24#include "TSpline.h"
25
26class TTdrTigress : public TSuppressed {
27public:
28 enum class ETdrTigressBits {
29 kIsAddbackSet = 1<<0,
30 kIsCrossTalkSet = 1<<1,
31 kIsSuppressedSet = 1<<2,
32 kIsSupprAddbSet = 1<<3,
33 kBit4 = 1<<4,
34 kBit5 = 1<<5,
35 kBit6 = 1<<6,
36 kBit7 = 1<<7
37 };
38
41 ~TTdrTigress() override;
42
43public:
44 TDetectorHit* GetTdrTigressHit(const Int_t& i) const { return static_cast<TTdrTigressHit*>(GetHit(i)); }
45
46 static TVector3 GetPosition(int DetNbr, int CryNbr = 5, double dist = 110.0); //!<!
47 static const char* GetColorFromNumber(Int_t number);
48#ifndef __CINT__
49 void AddFragment(const std::shared_ptr<const TFragment>&, TChannel*) override; //!<!
50#endif
51 void ResetFlags() const;
52
53 TTdrTigress& operator=(const TTdrTigress&); //!<!
54
55#if !defined(__CINT__) && !defined(__CLING__)
56 void SetAddbackCriterion(std::function<bool(TTdrTigressHit*, TTdrTigressHit*)> criterion)
57 {
58 fAddbackCriterion = std::move(criterion);
59 }
60 std::function<bool(TTdrTigressHit*, TTdrTigressHit*)> GetAddbackCriterion() const { return fAddbackCriterion; }
61 void SetSuppressionCriterion(std::function<bool(TTdrTigressHit*, TBgoHit*)> criterion)
62 {
63 fSuppressionCriterion = std::move(criterion);
64 }
65 std::function<bool(TTdrTigressHit*, TBgoHit*)> GetSuppressionCriterion() const { return fSuppressionCriterion; }
66#endif
67
69 TDetectorHit* GetAddbackHit(const int& i);
70 bool IsAddbackSet() const;
71 void ResetAddback();
72 UShort_t GetNAddbackFrags(const size_t& idx);
73
75 TDetectorHit* GetSuppressedHit(const int& i);
76 bool IsSuppressedSet() const;
77 void ResetSuppressed();
78
81 bool IsSuppressedAddbackSet() const;
83 UShort_t GetNSuppressedAddbackFrags(const size_t& idx);
84
85private:
86#if !defined(__CINT__) && !defined(__CLING__)
87 static std::function<bool(TTdrTigressHit*, TTdrTigressHit*)> fAddbackCriterion;
88 static std::function<bool(TTdrTigressHit*, TBgoHit*)> fSuppressionCriterion;
89#endif
90 static bool fSetCoreWave; //!<! Flag for Waveforms ON/OFF
91
92 long fCycleStart; //!<! The start of the cycle
93
94 mutable std::vector<TDetectorHit*> fAddbackHits; //!<! Used to create addback hits on the fly
95 mutable std::vector<UShort_t> fAddbackFrags; //!<! Number of crystals involved in creating in the addback hit
96
97 mutable std::vector<TDetectorHit*> fSuppressedHits; //!<! Used to create suppressed hits on the fly
98 mutable std::vector<TDetectorHit*> fSuppressedAddbackHits; //!<! Used to create suppressed addback hits on the fly
99 mutable std::vector<UShort_t> fSuppressedAddbackFrags; //!<! Number of crystals involved in creating in the suppressed addback hit
100public:
101 static bool SetCoreWave() { return fSetCoreWave; } //!<!
102
103private:
104 static TVector3 gTigressPosition[17]; //!<! Position of each HPGe Tigress
106 void ClearStatus() const { fTdrTigressBits = 0; } //!<!
107 void SetBitNumber(ETdrTigressBits bit, Bool_t set) const;
108 Bool_t TestBitNumber(ETdrTigressBits bit) const { return fTdrTigressBits.TestBit(bit); }
109
110 static std::map<int, TSpline*> fEnergyResiduals; //!<!
111
112 // This is where the general untouchable functions live.
113 std::vector<TDetectorHit*>& GetAddbackVector(); //!<!
114 std::vector<UShort_t>& GetAddbackFragVector(); //!<!
115 void SetAddback(bool flag = true) const;
116
117 std::vector<TDetectorHit*>& GetSuppressedVector(); //!<!
118 void SetSuppressed(bool flag = true) const;
119 std::vector<TDetectorHit*>& GetSuppressedAddbackVector(); //!<!
120 std::vector<UShort_t>& GetSuppressedAddbackFragVector(); //!<!
121 void SetSuppressedAddback(bool flag = true) const;
122
123public:
124 void Copy(TObject&) const override; //!<!
125 void Clear(Option_t* opt = "all") override; //!<!
126 void Print(Option_t* opt = "") const override; //!<!
127 void Print(std::ostream& out) const override;
128
129 /// \cond CLASSIMP
130 ClassDefOverride(TTdrTigress, 1) // TdrTigress Physics structure
131 /// \endcond
132};
133/*! @} */
134#endif
Definition TBgo.h:22
virtual TDetectorHit * GetHit(const int &index) const
Definition TDetector.cxx:61
bool IsAddbackSet() const
void SetSuppressed(bool flag=true) const
TDetectorHit * GetSuppressedHit(const int &i)
TTdrTigress & operator=(const TTdrTigress &)
!
void ClearStatus() const
!
std::vector< TDetectorHit * > & GetSuppressedAddbackVector()
!
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
Int_t GetSuppressedMultiplicity(TBgo *)
void SetBitNumber(ETdrTigressBits bit, Bool_t set) const
bool IsSuppressedAddbackSet() const
void SetAddbackCriterion(std::function< bool(TTdrTigressHit *, TTdrTigressHit *)> criterion)
Definition TTdrTigress.h:56
std::vector< TDetectorHit * > fSuppressedHits
! Used to create suppressed hits on the fly
Definition TTdrTigress.h:97
Int_t GetAddbackMultiplicity()
void SetSuppressionCriterion(std::function< bool(TTdrTigressHit *, TBgoHit *)> criterion)
Definition TTdrTigress.h:61
static TVector3 GetPosition(int DetNbr, int CryNbr=5, double dist=110.0)
!
UShort_t GetNAddbackFrags(const size_t &idx)
long fCycleStart
! The start of the cycle
Definition TTdrTigress.h:92
static const char * GetColorFromNumber(Int_t number)
TDetectorHit * GetTdrTigressHit(const Int_t &i) const
Definition TTdrTigress.h:44
void Clear(Option_t *opt="all") override
!
void ResetSuppressedAddback()
std::vector< TDetectorHit * > & GetSuppressedVector()
!
Int_t GetSuppressedAddbackMultiplicity(TBgo *)
void ResetFlags() const
static std::function< bool(TTdrTigressHit *, TBgoHit *)> fSuppressionCriterion
Definition TTdrTigress.h:88
std::vector< UShort_t > fSuppressedAddbackFrags
! Number of crystals involved in creating in the suppressed addback hit
Definition TTdrTigress.h:99
static bool SetCoreWave()
!
TTransientBits< UChar_t > fTdrTigressBits
static bool fSetCoreWave
! Flag for Waveforms ON/OFF
Definition TTdrTigress.h:90
bool IsSuppressedSet() const
std::vector< TDetectorHit * > & GetAddbackVector()
!
void ResetAddback()
std::function< bool(TTdrTigressHit *, TBgoHit *)> GetSuppressionCriterion() const
Definition TTdrTigress.h:65
void SetAddback(bool flag=true) const
TDetectorHit * GetAddbackHit(const int &i)
void Print(Option_t *opt="") const override
!
Bool_t TestBitNumber(ETdrTigressBits bit) const
UShort_t GetNSuppressedAddbackFrags(const size_t &idx)
static std::function< bool(TTdrTigressHit *, TTdrTigressHit *)> fAddbackCriterion
Definition TTdrTigress.h:87
std::vector< UShort_t > & GetAddbackFragVector()
!
std::vector< TDetectorHit * > fSuppressedAddbackHits
! Used to create suppressed addback hits on the fly
Definition TTdrTigress.h:98
static std::map< int, TSpline * > fEnergyResiduals
!
void ResetSuppressed()
~TTdrTigress() override
void Copy(TObject &) const override
!
TDetectorHit * GetSuppressedAddbackHit(const int &i)
void SetSuppressedAddback(bool flag=true) const
std::function< bool(TTdrTigressHit *, TTdrTigressHit *)> GetAddbackCriterion() const
Definition TTdrTigress.h:60
std::vector< UShort_t > & GetSuppressedAddbackFragVector()
!
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating in the addback hit
Definition TTdrTigress.h:95
static TVector3 gTigressPosition[17]
! Position of each HPGe Tigress
Definition TTdrTigress.h:60
std::vector< TDetectorHit * > fAddbackHits
! Used to create addback hits on the fly
Definition TTdrTigress.h:94
Bool_t TestBit(T bit) const