SND@LHC Software
Loading...
Searching...
No Matches
NuTauMudet.h
Go to the documentation of this file.
1#ifndef NUTAUMUDET_H
2#define NUTAUMUDET_H
3
4#include "FairModule.h" // for FairModule
5#include "FairDetector.h" // for FairDetector
6
7#include "Rtypes.h" // for ShipMuonShield::Class, Bool_t, etc
8
9#include <string> // for string
10
11#include "TVector3.h"
12#include "TLorentzVector.h"
13
14class ShipRpcPoint;
15class FairVolume;
16class TClonesArray;
17
18class NuTauMudet:public FairDetector
19{
20 public:
21 NuTauMudet(const char* name, const Double_t Zcenter, Bool_t Active, const char* Title="NuTauMudet");
22 NuTauMudet();
23 virtual ~NuTauMudet();
24
25 void SetDesign(Int_t Design);
26 void SetTotDimensions(Double_t X, Double_t Y, Double_t Z);
27 void SetFeDimensions(Double_t X, Double_t Y, Double_t Z, Double_t Zthin=0.);
28 void SetRpcDimensions(Double_t X, Double_t Y, Double_t Z);
29 void SetRpcStripDimensions(Double_t X, Double_t Y, Double_t Z);
30 void SetRpcGasDimensions(Double_t X, Double_t Y, Double_t Z);
31 void SetRpcElectrodeDimensions(Double_t X, Double_t Y, Double_t Z);
32 void SetRpcPETDimensions(Double_t X, Double_t Y, Double_t Z);
33 void SetNFeInArm(Int_t N, Int_t Nthin= 0);
34 void SetNRpcInArm(Int_t N);
35 void SetZDimensionArm(Double_t Z);
36 void SetGapDownstream(Double_t Gap);
37 void SetGapMiddle(Double_t Gap);
38 void SetMagneticField(Double_t B);
39 void SetReturnYokeDimensions(Double_t X, Double_t Y, Double_t Z);
40 void SetSmallerYokeDimensions(Double_t X, Double_t Y, Double_t Z);
41 void SetCoilParameters(Double_t CoilH, Double_t CoilW, Int_t N, Double_t CoilG);
42 void SetSupportTransverseDimensions(Double_t UpperSupportX, Double_t UpperSupportY, Double_t LowerSupportX, Double_t LowerSupportY, Double_t LateralSupportX, Double_t LateralSupportY, Double_t YSpacing);
43 void SetLateralCutSize(Double_t CutHeight , Double_t CutLength); //lateral triangular cuts
44 void SetPillarDimensions(Double_t X, Double_t Y, Double_t Z);
45 void SetUpperCoverDimensions(Double_t X, Double_t Y, Double_t Z);
46 void SetLateralCoverDimensions(Double_t X, Double_t Y, Double_t Z);
47 void SetCrossDimensions(Double_t X, Double_t Y, Double_t Z, Double_t WidthArm);
48 void SetRpcOuterDimensions(Double_t X, Double_t Y, Double_t Z);
49 void SetRpcInnerDimensions(Double_t X, Double_t Y, Double_t Z);
50 void SetRpcGapDimensions(Double_t X, Double_t Y, Double_t Z);
51
52 void ConstructGeometry();
53
55 virtual void Initialize();
56
60 virtual Bool_t ProcessHits( FairVolume* v=0);
61
63 virtual void Register();
64
66 virtual TClonesArray* GetCollection(Int_t iColl) const ;
67
69 virtual void Reset();
70
75 ShipRpcPoint* AddHit(Int_t trackID, Int_t detID,
76 TVector3 pos, TVector3 mom,
77 Double_t time, Double_t length,
78 Double_t eLoss, Int_t pdgCode);
79
84 virtual void CopyClones( TClonesArray* cl1, TClonesArray* cl2 ,
85 Int_t offset) {;}
86 virtual void SetSpecialPhysicsCuts() {;}
87 virtual void EndOfEvent();
88 virtual void FinishPrimary() {;}
89 virtual void FinishRun() {;}
90 virtual void BeginPrimary() {;}
91 virtual void PostTrack() {;}
92 virtual void PreTrack() {;}
93 virtual void BeginEvent() {;}
94
95 void DecodeVolumeID(Int_t detID,int &nARM,int &nRPC);
96
97private:
98
102 Int_t fTrackID;
103 Int_t fPdgCode;
104 Int_t fVolumeID;
105 TLorentzVector fPos;
106 TLorentzVector fMom;
107 Double32_t fTime;
108 Double32_t fLength;
109 Double32_t fELoss;
110
113
114 Int_t InitMedium(const char* name);
115
116
117
118protected:
119
120 Int_t fDesign;
121 Double_t fZcenter; //z distance of the center of the spectrometer in cm from the center of the vacuum tube
122 Double_t fXtot;
123 Double_t fYtot;
124 Double_t fZtot; //Dimension of the whole magnetic spectrometr (1st + 2nd arm + HPTs) alogn beam axis
126 Int_t fNRpc;
127 Double_t fXFe;
128 Double_t fXRpc;
129 Double_t fYFe;
130 Double_t fYRpc;
131 Double_t fZFe, fZFethin; // Width of the Iron Slabs
132 Double_t fZRpc; // Width of the Rpc planes
133 Double_t fZArm; // Width of the Spectrometer Arms
134 Double_t fGapDown; //distance between the end of the second arm of the spectrometer and the decay vessel
135 Double_t fGapMiddle; // distance between the two arms of the spectrometer
136 Double_t fField;
137 Double_t fXRyoke;
138 Double_t fYRyoke;
139 Double_t fZRyoke;
140
141 //Dimensions of the smaller part of the yoke
142 Double_t fXRyoke_s;
143 Double_t fYRyoke_s;
144 Double_t fZRyoke_s;
145
146 Double_t fCoilGap;
147 Double_t fCoilH;
148 Double_t fCoilW;
149 Int_t fNCoil;
150
151 //Dimension for detailed RPC simulation:
152 Double_t fXStrip;
153 Double_t fYStrip;
154 Double_t fZStrip;
155 Double_t fXPet;
156 Double_t fYPet;
157 Double_t fZPet;
158 Double_t fXEle;
159 Double_t fYEle;
160 Double_t fZEle;
161 Double_t fXGas;
162 Double_t fYGas;
163 Double_t fZGas;
164 Double_t fUpSuppX, fUpSuppY;//Dimensions of iron support structures
166 Double_t fLatSuppX, fLatSuppY; //lateral supports
167 Double_t fYSpacing;
168
169 Double_t fCutHeight, fCutLength; //Cut dimensions
170 //Dimension of steel pillars
171 Double_t fPillarX;
172 Double_t fPillarY;
173 Double_t fPillarZ;
174 //Dimension of upper cover on the RPC
175 Double_t fXCov;
176 Double_t fYCov;
177 Double_t fZCov;
178 //Dimension of lateral covers on RPC
179 Double_t fXLateral;
180 Double_t fYLateral;
181 Double_t fZLateral;
182 //Dimension of lateral crosses on RPC
183 Double_t fXCross;
184 Double_t fYCross;
185 Double_t fZCross;
186 Double_t fWidthArm;
187 //Dimension of outer frame of RPC
188 Double_t fXRpc_outer;
189 Double_t fYRpc_outer;
190 Double_t fZRpc_outer;
191 //Dimension of inner frame of RPC
192 Double_t fXRpc_inner;
193 Double_t fYRpc_inner;
194 Double_t fZRpc_inner;
195 //Dimension of gaps in RPC
196 Double_t fXRpcGap;
197 Double_t fYRpcGap;
198 Double_t fZRpcGap;
199
200
201
204 ClassDef(NuTauMudet,8)
205
206};
207
208
209
210#endif //NuTauMudet_H
211
void SetRpcDimensions(Double_t X, Double_t Y, Double_t Z)
void SetRpcGapDimensions(Double_t X, Double_t Y, Double_t Z)
void SetTotDimensions(Double_t X, Double_t Y, Double_t Z)
NuTauMudet & operator=(const NuTauMudet &)
Double_t fXCov
Definition NuTauMudet.h:175
Double_t fXLateral
Definition NuTauMudet.h:179
Double_t fYRyoke_s
Definition NuTauMudet.h:143
Double_t fLatSuppY
Definition NuTauMudet.h:166
Double_t fXRyoke
Definition NuTauMudet.h:137
Double_t fYCross
Definition NuTauMudet.h:184
void SetRpcStripDimensions(Double_t X, Double_t Y, Double_t Z)
TLorentzVector fMom
position at entrance
Definition NuTauMudet.h:106
Double_t fZGas
Definition NuTauMudet.h:163
void SetFeDimensions(Double_t X, Double_t Y, Double_t Z, Double_t Zthin=0.)
Int_t fTrackID
Definition NuTauMudet.h:102
Double_t fZEle
Definition NuTauMudet.h:160
Double_t fZCov
Definition NuTauMudet.h:177
Double32_t fELoss
length
Definition NuTauMudet.h:109
Double_t fPillarZ
Definition NuTauMudet.h:173
Double_t fXPet
Definition NuTauMudet.h:155
Double_t fZRpcGap
Definition NuTauMudet.h:198
void SetRpcOuterDimensions(Double_t X, Double_t Y, Double_t Z)
Double_t fYRpc_outer
Definition NuTauMudet.h:189
virtual void Initialize()
virtual void EndOfEvent()
Double_t fZStrip
Definition NuTauMudet.h:154
Double_t fXEle
Definition NuTauMudet.h:158
void SetCoilParameters(Double_t CoilH, Double_t CoilW, Int_t N, Double_t CoilG)
Int_t InitMedium(const char *name)
Double_t fZFe
Definition NuTauMudet.h:131
Int_t fNFethin
Definition NuTauMudet.h:125
Double_t fZRpc
Definition NuTauMudet.h:132
Double_t fCoilH
Definition NuTauMudet.h:147
void SetReturnYokeDimensions(Double_t X, Double_t Y, Double_t Z)
virtual void PreTrack()
Definition NuTauMudet.h:92
void SetLateralCoverDimensions(Double_t X, Double_t Y, Double_t Z)
void SetRpcGasDimensions(Double_t X, Double_t Y, Double_t Z)
Int_t fVolumeID
pdg code
Definition NuTauMudet.h:104
Double_t fGapDown
Definition NuTauMudet.h:134
void SetPillarDimensions(Double_t X, Double_t Y, Double_t Z)
Double_t fPillarY
Definition NuTauMudet.h:172
Double_t fZRyoke_s
Definition NuTauMudet.h:144
Double_t fXRpc_inner
Definition NuTauMudet.h:192
TClonesArray * fShipRpcPointCollection
energy loss
Definition NuTauMudet.h:112
Double_t fLowSuppX
Definition NuTauMudet.h:165
void SetLateralCutSize(Double_t CutHeight, Double_t CutLength)
Double_t fXStrip
Definition NuTauMudet.h:152
Double_t fYRyoke
Definition NuTauMudet.h:138
Double_t fXFe
Definition NuTauMudet.h:127
virtual void SetSpecialPhysicsCuts()
Definition NuTauMudet.h:86
void SetNRpcInArm(Int_t N)
Double_t fYFe
Definition NuTauMudet.h:129
void SetMagneticField(Double_t B)
NuTauMudet(const NuTauMudet &)
Double_t fYRpc
Definition NuTauMudet.h:130
void DecodeVolumeID(Int_t detID, int &nARM, int &nRPC)
Int_t fNCoil
Definition NuTauMudet.h:149
Double_t fZcenter
Definition NuTauMudet.h:121
virtual void BeginPrimary()
Definition NuTauMudet.h:90
Double_t fYRpc_inner
Definition NuTauMudet.h:193
Double32_t fTime
momentum at entrance
Definition NuTauMudet.h:107
virtual Bool_t ProcessHits(FairVolume *v=0)
Double_t fZtot
Definition NuTauMudet.h:124
Double_t fGapMiddle
Definition NuTauMudet.h:135
Double_t fLatSuppX
Definition NuTauMudet.h:166
Double_t fXtot
Definition NuTauMudet.h:122
virtual void FinishPrimary()
Definition NuTauMudet.h:88
Double_t fField
Definition NuTauMudet.h:136
void SetNFeInArm(Int_t N, Int_t Nthin=0)
virtual void Reset()
Double32_t fLength
time
Definition NuTauMudet.h:108
Double_t fZLateral
Definition NuTauMudet.h:181
Double_t fZFethin
Definition NuTauMudet.h:131
Double_t fZArm
Definition NuTauMudet.h:133
Double_t fYEle
Definition NuTauMudet.h:159
Double_t fYCov
Definition NuTauMudet.h:176
Double_t fUpSuppY
Definition NuTauMudet.h:164
Double_t fLowSuppY
Definition NuTauMudet.h:165
Double_t fCutLength
Definition NuTauMudet.h:169
void SetRpcInnerDimensions(Double_t X, Double_t Y, Double_t Z)
Double_t fXCross
Definition NuTauMudet.h:183
Double_t fXRpc_outer
Definition NuTauMudet.h:188
void SetDesign(Int_t Design)
Int_t fDesign
Definition NuTauMudet.h:120
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
Definition NuTauMudet.h:84
void SetSmallerYokeDimensions(Double_t X, Double_t Y, Double_t Z)
Double_t fCutHeight
Definition NuTauMudet.h:169
Double_t fUpSuppX
Definition NuTauMudet.h:164
virtual void PostTrack()
Definition NuTauMudet.h:91
void SetRpcElectrodeDimensions(Double_t X, Double_t Y, Double_t Z)
virtual void Register()
void SetCrossDimensions(Double_t X, Double_t Y, Double_t Z, Double_t WidthArm)
Double_t fYSpacing
Definition NuTauMudet.h:167
Double_t fXRyoke_s
Definition NuTauMudet.h:142
Double_t fPillarX
Definition NuTauMudet.h:171
virtual void BeginEvent()
Definition NuTauMudet.h:93
void SetGapMiddle(Double_t Gap)
TLorentzVector fPos
volume id
Definition NuTauMudet.h:105
void SetGapDownstream(Double_t Gap)
Double_t fCoilW
Definition NuTauMudet.h:148
Double_t fYStrip
Definition NuTauMudet.h:153
Double_t fYLateral
Definition NuTauMudet.h:180
void SetUpperCoverDimensions(Double_t X, Double_t Y, Double_t Z)
void ConstructGeometry()
ShipRpcPoint * AddHit(Int_t trackID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss, Int_t pdgCode)
Double_t fZCross
Definition NuTauMudet.h:185
Double_t fZRpc_inner
Definition NuTauMudet.h:194
virtual TClonesArray * GetCollection(Int_t iColl) const
Double_t fXGas
Definition NuTauMudet.h:161
void SetSupportTransverseDimensions(Double_t UpperSupportX, Double_t UpperSupportY, Double_t LowerSupportX, Double_t LowerSupportY, Double_t LateralSupportX, Double_t LateralSupportY, Double_t YSpacing)
Double_t fZPet
Definition NuTauMudet.h:157
Double_t fZRyoke
Definition NuTauMudet.h:139
Double_t fYGas
Definition NuTauMudet.h:162
Int_t fNRpc
Definition NuTauMudet.h:126
Double_t fYPet
Definition NuTauMudet.h:156
Double_t fWidthArm
Definition NuTauMudet.h:186
void SetZDimensionArm(Double_t Z)
Int_t fPdgCode
track index
Definition NuTauMudet.h:103
Double_t fXRpc
Definition NuTauMudet.h:128
Double_t fZRpc_outer
Definition NuTauMudet.h:190
virtual void FinishRun()
Definition NuTauMudet.h:89
Double_t fXRpcGap
Definition NuTauMudet.h:196
virtual ~NuTauMudet()
Double_t fYtot
Definition NuTauMudet.h:123
Double_t fYRpcGap
Definition NuTauMudet.h:197
Double_t fCoilGap
Definition NuTauMudet.h:146
void SetRpcPETDimensions(Double_t X, Double_t Y, Double_t Z)