GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TTdrClover.h
Go to the documentation of this file.
1#ifndef TTDRCLOVER_H
2#define TTDRCLOVER_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 "TTdrCloverHit.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 TTdrClover : public TSuppressed {
27public:
28 enum class ETdrCloverBits {
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
39 TTdrClover();
40 TTdrClover(const TTdrClover&);
41 ~TTdrClover() override;
42
43public:
44 TTdrCloverHit* GetTdrCloverHit(const Int_t& i) const { return static_cast<TTdrCloverHit*>(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 TTdrClover& operator=(const TTdrClover&); //!<!
54
55#if !defined(__CINT__) && !defined(__CLING__)
56 void SetAddbackCriterion(std::function<bool(TTdrCloverHit*, TTdrCloverHit*)> criterion)
57 {
58 fAddbackCriterion = std::move(criterion);
59 }
60 std::function<bool(TTdrCloverHit*, TTdrCloverHit*)> GetAddbackCriterion() const { return fAddbackCriterion; }
61 void SetSuppressionCriterion(std::function<bool(TTdrCloverHit*, TBgoHit*)> criterion)
62 {
63 fSuppressionCriterion = std::move(criterion);
64 }
65 std::function<bool(TTdrCloverHit*, 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(TTdrCloverHit*, TTdrCloverHit*)> fAddbackCriterion;
88 static std::function<bool(TTdrCloverHit*, TBgoHit*)> fSuppressionCriterion;
89#endif
90 static bool fSetCoreWave; //!<! Flag for Waveforms ON/OFF
91
92 long fCycleStart; //!<! The start of the cycle
93 mutable TTransientBits<UChar_t> fTdrCloverBits; // Transient member flags
94
95 mutable std::vector<TDetectorHit*> fAddbackHits; //!<! Used to create addback hits on the fly
96 mutable std::vector<UShort_t> fAddbackFrags; //!<! Number of crystals involved in creating in the addback hit
97
98 mutable std::vector<TDetectorHit*> fSuppressedHits; //!<! Used to create suppressed hits on the fly
99 mutable std::vector<TDetectorHit*> fSuppressedAddbackHits; //!<! Used to create suppressed addback hits on the fly
100 mutable std::vector<UShort_t> fSuppressedAddbackFrags; //!<! Number of crystals involved in creating in the suppressed addback hit
101public:
102 static bool SetCoreWave() { return fSetCoreWave; } //!<!
103
104private:
105 static TVector3 gCloverPosition[17]; //!<! Position of each HPGe Clover
106 void ClearStatus() const { fTdrCloverBits = 0; } //!<!
107 void SetBitNumber(ETdrCloverBits bit, Bool_t set) const;
108 Bool_t TestBitNumber(ETdrCloverBits bit) const { return fTdrCloverBits.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 std::vector<TDetectorHit*>& GetSuppressedVector(); //!<!
117 void SetSuppressed(bool flag = true) const;
118 std::vector<TDetectorHit*>& GetSuppressedAddbackVector(); //!<!
119 std::vector<UShort_t>& GetSuppressedAddbackFragVector(); //!<!
120 void SetSuppressedAddback(bool flag = true) const;
121
122public:
123 void Copy(TObject&) const override; //!<!
124 void Clear(Option_t* opt = "all") override; //!<!
125 void Print(Option_t* opt = "") const override; //!<!
126 void Print(std::ostream& out) const override;
127
128 /// \cond CLASSIMP
129 ClassDefOverride(TTdrClover, 1) // TdrClover Physics structure
130 /// \endcond
131};
132/*! @} */
133#endif
Definition TBgo.h:22
virtual TDetectorHit * GetHit(const int &index) const
Definition TDetector.cxx:61
UShort_t GetNAddbackFrags(const size_t &idx)
void Clear(Option_t *opt="all") override
!
Int_t GetAddbackMultiplicity()
std::vector< UShort_t > fAddbackFrags
! Number of crystals involved in creating in the addback hit
Definition TTdrClover.h:96
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *) override
!
static bool fSetCoreWave
! Flag for Waveforms ON/OFF
Definition TTdrClover.h:90
void Copy(TObject &) const override
!
std::vector< UShort_t > & GetAddbackFragVector()
!
std::vector< UShort_t > fSuppressedAddbackFrags
! Number of crystals involved in creating in the suppressed addback hit
Definition TTdrClover.h:100
void SetSuppressionCriterion(std::function< bool(TTdrCloverHit *, TBgoHit *)> criterion)
Definition TTdrClover.h:61
void ClearStatus() const
!
Definition TTdrClover.h:106
UShort_t GetNSuppressedAddbackFrags(const size_t &idx)
std::vector< TDetectorHit * > & GetAddbackVector()
!
static std::function< bool(TTdrCloverHit *, TBgoHit *)> fSuppressionCriterion
Definition TTdrClover.h:88
Bool_t TestBitNumber(ETdrCloverBits bit) const
Definition TTdrClover.h:108
void SetSuppressed(bool flag=true) const
void ResetFlags() const
bool IsSuppressedSet() const
void SetAddback(bool flag=true) const
void SetAddbackCriterion(std::function< bool(TTdrCloverHit *, TTdrCloverHit *)> criterion)
Definition TTdrClover.h:56
std::vector< TDetectorHit * > fAddbackHits
! Used to create addback hits on the fly
Definition TTdrClover.h:95
~TTdrClover() override
static bool SetCoreWave()
!
Definition TTdrClover.h:102
TTransientBits< UChar_t > fTdrCloverBits
Definition TTdrClover.h:93
TTdrCloverHit * GetTdrCloverHit(const Int_t &i) const
Definition TTdrClover.h:44
std::vector< TDetectorHit * > fSuppressedAddbackHits
! Used to create suppressed addback hits on the fly
Definition TTdrClover.h:99
bool IsSuppressedAddbackSet() const
static std::map< int, TSpline * > fEnergyResiduals
!
Definition TTdrClover.h:110
std::vector< UShort_t > & GetSuppressedAddbackFragVector()
!
Int_t GetSuppressedMultiplicity(TBgo *)
TTdrClover & operator=(const TTdrClover &)
!
void ResetAddback()
static TVector3 gCloverPosition[17]
! Position of each HPGe Clover
Definition TTdrClover.h:59
std::function< bool(TTdrCloverHit *, TTdrCloverHit *)> GetAddbackCriterion() const
Definition TTdrClover.h:60
long fCycleStart
! The start of the cycle
Definition TTdrClover.h:92
void ResetSuppressed()
static const char * GetColorFromNumber(Int_t number)
static TVector3 GetPosition(int DetNbr, int CryNbr=5, double dist=110.0)
!
std::vector< TDetectorHit * > & GetSuppressedAddbackVector()
!
TDetectorHit * GetAddbackHit(const int &i)
std::function< bool(TTdrCloverHit *, TBgoHit *)> GetSuppressionCriterion() const
Definition TTdrClover.h:65
std::vector< TDetectorHit * > fSuppressedHits
! Used to create suppressed hits on the fly
Definition TTdrClover.h:98
TDetectorHit * GetSuppressedHit(const int &i)
void SetBitNumber(ETdrCloverBits bit, Bool_t set) const
std::vector< TDetectorHit * > & GetSuppressedVector()
!
void ResetSuppressedAddback()
bool IsAddbackSet() const
static std::function< bool(TTdrCloverHit *, TTdrCloverHit *)> fAddbackCriterion
Definition TTdrClover.h:87
void Print(Option_t *opt="") const override
!
TDetectorHit * GetSuppressedAddbackHit(const int &i)
void SetSuppressedAddback(bool flag=true) const
Int_t GetSuppressedAddbackMultiplicity(TBgo *)
Bool_t TestBit(T bit) const