GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
TTrific.h
Go to the documentation of this file.
1#ifndef TRIFIC_H
2#define TRIFIC_H
3
4/** \addtogroup Detectors
5 * @{
6 */
7
8#include <vector>
9#include <cstdio>
10
11#include "TBits.h"
12#include "TVector3.h"
14#include "Globals.h"
15#include "TDetector.h"
16#include "TTrificHit.h"
17
18////////////////////////////////////////////////////////////
19///
20/// \class TTrific
21///
22/// The TTrific class defines the observables and algorithms used
23/// when analyzing TIGRESS data.
24///
25////////////////////////////////////////////////////////////
26
27class TTrificHit;
28
29class TTrific : public TDetector {
30public:
31 enum class ETrificBits {
32 kPositionCalculated = BIT(0),
33 kRangeCalculated = BIT(1),
34 kBit2 = BIT(2),
35 kBit3 = BIT(3),
36 kBit4 = BIT(4),
37 kBit5 = BIT(5),
38 kBit6 = BIT(6),
39 kBit7 = BIT(7),
40 };
41
42 TTrific();
43 TTrific(const TTrific&);
44 TTrific(TTrific&&) noexcept = default;
45 TTrific& operator=(const TTrific&); //!<!
46 TTrific& operator=(TTrific&&) noexcept = default;
47 ~TTrific() override = default;
48
49 TTrificHit* GetTrificHit(const int& i) const { return static_cast<TTrificHit*>(GetHit(i)); }
50 TTrificHit* GetTrificXHit(const int& i) const { return fXFragments.at(i); }
51 TTrificHit* GetTrificYHit(const int& i) const { return fYFragments.at(i); }
52 TTrificHit* GetTrificSingHit(const int& i) const { return fSingFragments.at(i); }
53
54#ifndef __CINT__
55 void AddFragment(const std::shared_ptr<const TFragment>&, TChannel* chan) override;
56#endif
57 void BuildHits() override {} // no need to build any hits, everything already done in AddFragment
58
59 void ClearTransients() override
60 {
61 fTrificBits = 0;
63 fParticle.SetXYZ(0, 0, 0);
64 fRange = 0;
65 }
66
67 virtual Short_t GetXMultiplicity() const { return fXFragments.size(); }
68 virtual Short_t GetYMultiplicity() const { return fYFragments.size(); }
69 virtual Short_t GetSingMultiplicity() const { return fSingFragments.size(); }
70
71 //used to set the target to window distance depending on which experiment is running
72 static void SetSharc(Double_t distance = 650.57) { fTargetToWindowCart = distance; } //mm. 640.2mm from ideal target location to start of window housing, then 20.74mm window housing thickness
73 static void SetTip(Double_t distance = 600.) { fTargetToWindowCart = distance; } //mm. THIS IS ONLY A *ROUGH* APPROXIMATION
74 static void SetCustomTargetChamber(Double_t distance) { fTargetToWindowCart = distance; }
75
76 TVector3 GetPosition(Int_t detectorNumber); //!<!
77
78 TVector3 GetPosition(); //!<!
79
80 Int_t GetRange(); //!<!
81
82 //TVector2 GetEdESimple(); //!<!
83
84 void GetXYGrid(); //!<!
85
86 static bool SetCoreWave() { return fSetCoreWave; } //!<!
87
88 void Copy(TObject&) const override; //!<!
89 void Print(Option_t* opt = "") const override; //!<!
90 void Print(std::ostream& out) const override; //!<!
91 void Clear(Option_t* = "") override; //!<!
92
93 static const double fSpacingCart; //!
94 static const double fInitialSpacingCart; //!
95 static double fTargetToWindowCart; //!
96
97private:
98 static bool fSetCoreWave; //!<! Flag for Waveforms ON/OFF
99
100 std::vector<TTrificHit*> fXFragments;
101 std::vector<TTrificHit*> fYFragments;
102 std::vector<TTrificHit*> fSingFragments;
103
105
106 TVector3 fParticle = TVector3(0, 0, 0); //!<!
107
108 Int_t fRange = 0; //!<!
109
110 //physical information on the grids
111 static const std::array<double, 12> fXmm; //!
112 static const std::array<double, 12> fYmm; //!
113
114 //for use in determining the XY grids
115 static Int_t fGridX; //!
116 static Int_t fGridY; //!
117 static const double fAngle; //!
118 static const TVector3 fNormalGridVec; //!
119
120 /// \cond CLASSIMP
121 ClassDefOverride(TTrific, 4) // TRIFIC Physics structure // NOLINT(readability-else-after-return)
122 /// \endcond
123};
124/*! @} */
125#endif
virtual void ClearTransients()
!
Definition TDetector.cxx:54
virtual TDetectorHit * GetHit(const int &index) const
Definition TDetector.cxx:61
TTransientBits< UShort_t > fTrificBits
Definition TTrific.h:104
void Copy(TObject &) const override
!
Definition TTrific.cxx:42
static void SetTip(Double_t distance=600.)
Definition TTrific.h:73
TTrific()
Definition TTrific.cxx:32
std::vector< TTrificHit * > fXFragments
Definition TTrific.h:100
TTrific(TTrific &&) noexcept=default
static Int_t fGridY
Definition TTrific.h:116
Int_t GetRange()
!
Definition TTrific.cxx:287
virtual Short_t GetXMultiplicity() const
Definition TTrific.h:67
void BuildHits() override
!
Definition TTrific.h:57
static void SetCustomTargetChamber(Double_t distance)
Definition TTrific.h:74
void Clear(Option_t *="") override
!
Definition TTrific.cxx:96
static const double fAngle
Definition TTrific.h:117
static void SetSharc(Double_t distance=650.57)
Definition TTrific.h:72
static double fTargetToWindowCart
Definition TTrific.h:95
TVector3 GetPosition()
!
Definition TTrific.cxx:158
static const std::array< double, 12 > fYmm
Definition TTrific.h:14
std::vector< TTrificHit * > fYFragments
Definition TTrific.h:101
static const std::array< double, 12 > fXmm
Definition TTrific.h:13
void AddFragment(const std::shared_ptr< const TFragment > &, TChannel *chan) override
!
Definition TTrific.cxx:75
TTrificHit * GetTrificYHit(const int &i) const
Definition TTrific.h:51
static Int_t fGridX
Definition TTrific.h:115
std::vector< TTrificHit * > fSingFragments
Definition TTrific.h:102
static bool fSetCoreWave
! Flag for Waveforms ON/OFF
Definition TTrific.h:98
TTrificHit * GetTrificSingHit(const int &i) const
Definition TTrific.h:52
void Print(Option_t *opt="") const override
!
Definition TTrific.cxx:53
ETrificBits
Definition TTrific.h:31
TTrificHit * GetTrificXHit(const int &i) const
Definition TTrific.h:50
Int_t fRange
!
Definition TTrific.h:108
TVector3 fParticle
!
Definition TTrific.h:106
static bool SetCoreWave()
!
Definition TTrific.h:86
void GetXYGrid()
!
Definition TTrific.cxx:112
virtual Short_t GetYMultiplicity() const
Definition TTrific.h:68
virtual Short_t GetSingMultiplicity() const
Definition TTrific.h:69
static const double fInitialSpacingCart
Definition TTrific.h:94
static const TVector3 fNormalGridVec
Definition TTrific.h:118
void ClearTransients() override
!
Definition TTrific.h:59
TTrificHit * GetTrificHit(const int &i) const
Definition TTrific.h:49
static const double fSpacingCart
Definition TTrific.h:93