SND@LHC Software
Loading...
Searching...
No Matches
Target.h
Go to the documentation of this file.
1//
2// Target.h
3//
4//
5// Created by Annarita Buonaura on 17/01/15.
6//
7//
8
9#ifndef Target_H
10#define Target_H
11
12#include "FairModule.h" // for FairModule
13#include "FairDetector.h"
14
15#include "Rtypes.h" // for ShipMuonShield::Class, Bool_t, etc
16
17#include <string> // for string
18
19#include "TVector3.h"
20#include "TLorentzVector.h"
21
22class TargetPoint;
23class FairVolume;
24class TClonesArray;
25
26class Target : public FairDetector
27{
28public:
29 Target(const char* name, const Double_t Ydist, Bool_t Active, const char* Title = "NuTauTarget");
30 Target();
31 virtual ~Target();
32
35 //Set options for detector contruction (active/passive, which design)
36 void SetDetectorDesign(Int_t Design);
37 void MakeNuTargetPassive(Bool_t a);
38 void MergeTopBot(Bool_t SingleEmFilm);
39
40 void ConstructGeometry();
41
42 void SetTargetWallDimension(Double_t WallXDim, Double_t WallYDim, Double_t WallZDim);
43 void SetDetectorDimension(Double_t xdim, Double_t ydim, Double_t zdim);
44 void SetEmulsionParam(Double_t EmTh, Double_t EmX, Double_t EmY, Double_t PBTh,Double_t EPlW, Double_t LeadTh, Double_t AllPW);
45 void SetBrickParam(Double_t BrX, Double_t BrY, Double_t BrZ, Double_t BrPackX, Double_t BrPackY,Double_t BrPackZ, Int_t number_of_plates_);
46 void SetCESParam(Double_t RohG, Double_t LayerCESW, Double_t CESW, Double_t CESPack);
47 void SetCellParam(Double_t CellW);
48 void SetNumberBricks(Double_t col, Double_t row, Double_t wall);
49 void SetTTzdimension(Double_t TTZ);
50 void SetNumberTargets(Int_t target);
51
52 //Functions to get parameters relative to the magnet in which the detector is placed
53 void SetMagnetConfiguration(Int_t config);//1=TP, 0=new
54 void SetMagnetHeight(Double_t Y);
55 void SetBaseHeight(Double_t Y);
56 void SetColumnHeight(Double_t Y);
57 void SetCoilUpHeight(Double_t H1);
58 void SetCoilDownHeight(Double_t H2);
59 void SetMagneticField(Double_t B);
60 void SetCenterZ(Double_t z);
61
62 //Functions to set dimension of both the base and the pillars in no magnet configuration options. The pillars are defined in EmulsionMagnet class in the option with magnet.
63 void SetBaseDimension(Double_t X, Double_t Y, Double_t Z);
64 void SetPillarDimension(Double_t X, Double_t Y, Double_t Z);
65
66
67 void DecodeBrickID(Int_t detID, Int_t &NWall, Int_t &NRow, Int_t &NColumn, Int_t &NPlate, Bool_t &EmCES, Bool_t &EmBrick, Bool_t &EmTop);
68
69 void SetHpTParam(Int_t n, Double_t dd, Double_t DZ); //other detector's parameters (needed for positioning)
70
72 virtual void Initialize();
73
77 virtual Bool_t ProcessHits( FairVolume* v=0);
78
80 virtual void Register();
81
83 virtual TClonesArray* GetCollection(Int_t iColl) const ;
84
86 virtual void Reset();
87
92 TargetPoint* AddHit(Int_t trackID, Int_t detID,
93 TVector3 pos, TVector3 mom,
94 Double_t time, Double_t length,
95 Double_t eLoss, Int_t pdgCode);
96
97 /*
98 TargetPoint* AddHit(Int_t trackID, Int_t detID,
99 TVector3 pos, TVector3 mom,
100 Double_t time, Double_t length,
101 Double_t eLoss, Int_t pdgCode,
102 Int_t EmTop, Int_t EmBot, Int_t EmCESTop, Int_t EmCESBot, Int_t TT,
103 Int_t NPlate, Int_t NColumn, Int_t NRow, Int_t NWall);
104 */
105
110 virtual void CopyClones( TClonesArray* cl1, TClonesArray* cl2 ,
111 Int_t offset) {;}
112 virtual void SetSpecialPhysicsCuts() {;}
113 virtual void EndOfEvent();
114 virtual void FinishPrimary() {;}
115 virtual void FinishRun() {;}
116 virtual void BeginPrimary() {;}
117 virtual void PostTrack() {;}
118 virtual void PreTrack() {;}
119 virtual void BeginEvent() {;}
120
121
122 Target(const Target&);
124
125 ClassDef(Target,4)
126
127private:
128
132 Int_t fTrackID;
133 Int_t fVolumeID;
134 TLorentzVector fPos;
135 TLorentzVector fMom;
136 Double32_t fTime;
137 Double32_t fLength;
138 Double32_t fELoss;
139
142
143 //switch for building the detector with active layers or with passive material only
144
145
146protected:
147
148 Bool_t fPassive; //0 = with Emulsion, 1 = only lead + rohacell
149 Bool_t fsingleemulsionfilm; //0 = both top and bottom layers active, separated by plastic base; 1 = only one active layer
150 Int_t fDesign; //0=TP, 1=NewMagnet (Davide), 2=No Magnet Config
151
152 //Position of the Center of the Detector
153 Double_t fCenterZ;
154
155 //Some Magnet parameters necessary for target positioning
156 Double_t fMagnetY;
157 Double_t fColumnY;
158 Double_t fMagnetBaseY;
159 Double_t fCoilH1;
160 Double_t fCoilH2;
161
162 //Bricks
163 Double_t fField;
164
165 Int_t fNCol;
166 Int_t fNRow;
167 Int_t fNWall;
168 Int_t fNTarget;
170
171 Double_t XDimension; //dimension of the target box (= 2 x 2 x 1) m^3
172 Double_t YDimension;
173 Double_t ZDimension;
174
175 Double_t WallXDim; //dimension of the wall of bricks
176 Double_t WallYDim;
177 Double_t WallZDim;
178
180 Double_t EmulsionX;
181 Double_t EmulsionY;
182
185 Double_t EmPlateWidth; // Z dimension of the emulsion plates = 2*EmulsionThickness+PlasticBaseThickness
186 Double_t AllPlateWidth; //PlateZ + LeadThickness
187
188
189 Double_t BrickPackageX; //dimension of the brick package along X
190 Double_t BrickPackageY; //dimension of the brick package along Y
191 Double_t BrickPackageZ; //dimension of the brick package along Z
192 Double_t CESPackageZ; //dimension of the CES package along Z
193
194 Double_t Ydistance; //distance in Y between 2 bricks
195
196 Double_t BrickZ; //dimension of the brick + package along the Z axis
197 Double_t BrickY;
198 Double_t BrickX;
199
200 Double_t RohacellGap; //dimension of the Rohacell Gap in CES along Z axis
202 Double_t CESWidth; //dimension of the CES along Z axis
203
204 Double_t CellWidth; //dimension of Brick + CES along Z axis
205
206 //TargetTrackers
207 Double_t TTrackerZ;
208
209 //Base and Pillars for option without magnetic field
210 Double_t fBaseX;
211 Double_t fBaseY;
212 Double_t fBaseZ;
213 Double_t fPillarX;
214 Double_t fPillarY;
215 Double_t fPillarZ;
216
217 //other detector's parameters (needed for positioning)
218 Double_t fHpTDistance;
219 Double_t fHpTDZ;
220 Int_t fnHpT;
221
222 Int_t InitMedium(const char* name);
223
224};
225
226#endif
227
Double_t fCenterZ
Definition Target.h:153
void SetMagnetHeight(Double_t Y)
Definition Target.cxx:215
void DecodeBrickID(Int_t detID, Int_t &NWall, Int_t &NRow, Int_t &NColumn, Int_t &NPlate, Bool_t &EmCES, Bool_t &EmBrick, Bool_t &EmTop)
Definition Target.cxx:734
void SetHpTParam(Int_t n, Double_t dd, Double_t DZ)
Definition Target.cxx:265
Double_t Ydistance
Definition Target.h:194
Double_t CESWidth
Definition Target.h:202
Double_t BrickPackageY
Definition Target.h:190
Int_t fNRow
Definition Target.h:166
Double32_t fLength
time
Definition Target.h:137
Double_t BrickY
Definition Target.h:197
Double_t fHpTDistance
Definition Target.h:218
void SetCESParam(Double_t RohG, Double_t LayerCESW, Double_t CESW, Double_t CESPack)
Definition Target.cxx:197
ClassDef(Target, 4) private Int_t fVolumeID
track index
Definition Target.h:125
Double_t fBaseX
Definition Target.h:210
Double_t CESPackageZ
Definition Target.h:192
Int_t fnHpT
Definition Target.h:220
virtual ~Target()
Definition Target.cxx:95
virtual void Reset()
Definition Target.cxx:796
Double_t BrickX
Definition Target.h:198
virtual Bool_t ProcessHits(FairVolume *v=0)
Definition Target.cxx:605
void MergeTopBot(Bool_t SingleEmFilm)
Definition Target.cxx:141
Int_t fDesign
Definition Target.h:150
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
Definition Target.h:110
virtual void SetSpecialPhysicsCuts()
Definition Target.h:112
virtual void FinishRun()
Definition Target.h:115
Double_t fBaseZ
Definition Target.h:212
Double_t LeadThickness
Definition Target.h:184
Double_t PlasticBaseThickness
Definition Target.h:183
void SetCoilDownHeight(Double_t H2)
Definition Target.cxx:235
virtual void Register()
Definition Target.cxx:777
TClonesArray * fTargetPointCollection
energy loss
Definition Target.h:141
virtual TClonesArray * GetCollection(Int_t iColl) const
Definition Target.cxx:790
virtual void Initialize()
Definition Target.cxx:103
void SetNumberBricks(Double_t col, Double_t row, Double_t wall)
Definition Target.cxx:148
Double_t fField
Definition Target.h:163
Double_t ZDimension
Definition Target.h:173
void SetNumberTargets(Int_t target)
Definition Target.cxx:155
Double_t CellWidth
Definition Target.h:204
Double_t LayerCESWidth
Definition Target.h:201
Double_t WallXDim
Definition Target.h:175
Double_t EmulsionY
Definition Target.h:181
void SetDetectorDesign(Int_t Design)
Definition Target.cxx:130
Target & operator=(const Target &)
Double_t BrickPackageZ
Definition Target.h:191
void SetColumnHeight(Double_t Y)
Definition Target.cxx:220
Double_t RohacellGap
Definition Target.h:200
virtual void BeginEvent()
Definition Target.h:119
Target()
Definition Target.cxx:68
virtual void PostTrack()
Definition Target.h:117
Int_t fNTarget
Definition Target.h:168
void SetBrickParam(Double_t BrX, Double_t BrY, Double_t BrZ, Double_t BrPackX, Double_t BrPackY, Double_t BrPackZ, Int_t number_of_plates_)
Definition Target.cxx:186
Double_t fHpTDZ
Definition Target.h:219
void SetTargetWallDimension(Double_t WallXDim, Double_t WallYDim, Double_t WallZDim)
Definition Target.cxx:160
virtual void PreTrack()
Definition Target.h:118
void SetCenterZ(Double_t z)
Definition Target.cxx:245
Double_t BrickPackageX
Definition Target.h:189
Double_t WallYDim
Definition Target.h:176
virtual void EndOfEvent()
Definition Target.cxx:771
void SetDetectorDimension(Double_t xdim, Double_t ydim, Double_t zdim)
Definition Target.cxx:167
Double_t fPillarX
Definition Target.h:213
Int_t InitMedium(const char *name)
Definition Target.cxx:109
Double_t AllPlateWidth
Definition Target.h:186
Int_t number_of_plates
Definition Target.h:169
void SetEmulsionParam(Double_t EmTh, Double_t EmX, Double_t EmY, Double_t PBTh, Double_t EPlW, Double_t LeadTh, Double_t AllPW)
Definition Target.cxx:174
Double_t fBaseY
Definition Target.h:211
Double_t WallZDim
Definition Target.h:177
void SetPillarDimension(Double_t X, Double_t Y, Double_t Z)
Definition Target.cxx:258
Double_t YDimension
Definition Target.h:172
TLorentzVector fPos
volume id
Definition Target.h:134
Double_t fColumnY
Definition Target.h:157
Double32_t fTime
momentum at entrance
Definition Target.h:136
Double_t fMagnetBaseY
Definition Target.h:158
Target(const Target &)
Double_t BrickZ
Definition Target.h:196
Double_t EmulsionThickness
Definition Target.h:179
Int_t fNWall
Definition Target.h:167
void SetCoilUpHeight(Double_t H1)
Definition Target.cxx:230
void SetTTzdimension(Double_t TTZ)
Definition Target.cxx:210
Double_t fPillarZ
Definition Target.h:215
Double32_t fELoss
length
Definition Target.h:138
TargetPoint * AddHit(Int_t trackID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss, Int_t pdgCode)
Definition Target.cxx:802
void SetMagnetConfiguration(Int_t config)
Bool_t fPassive
Definition Target.h:148
void ConstructGeometry()
Definition Target.cxx:272
TLorentzVector fMom
position at entrance
Definition Target.h:135
void SetCellParam(Double_t CellW)
Definition Target.cxx:205
Double_t fCoilH1
Definition Target.h:159
Int_t fNCol
Definition Target.h:165
Bool_t fsingleemulsionfilm
Definition Target.h:149
void SetBaseHeight(Double_t Y)
Definition Target.cxx:225
Double_t TTrackerZ
Definition Target.h:207
Double_t fPillarY
Definition Target.h:214
Double_t EmPlateWidth
Definition Target.h:185
Double_t XDimension
Definition Target.h:171
void MakeNuTargetPassive(Bool_t a)
Definition Target.cxx:136
virtual void BeginPrimary()
Definition Target.h:116
Double_t fCoilH2
Definition Target.h:160
void SetMagneticField(Double_t B)
Definition Target.cxx:240
Double_t EmulsionX
Definition Target.h:180
virtual void FinishPrimary()
Definition Target.h:114
Double_t fMagnetY
Definition Target.h:156
void SetBaseDimension(Double_t X, Double_t Y, Double_t Z)
Definition Target.cxx:250