SND@LHC Software
Loading...
Searching...
No Matches
UpstreamTagger Class Reference

#include <UpstreamTagger.h>

Inheritance diagram for UpstreamTagger:
Collaboration diagram for UpstreamTagger:

Public Member Functions

 UpstreamTagger (const char *Name, Bool_t Active)
 
 UpstreamTagger ()
 
virtual ~UpstreamTagger ()
 
virtual void Initialize ()
 
virtual Bool_t ProcessHits (FairVolume *v=0)
 
virtual void Register ()
 
virtual TClonesArray * GetCollection (Int_t iColl) const
 
virtual void Reset ()
 
void SetZposition (Double_t z)
 
void SetSizeX_Glass (Double_t xg)
 
void SetSizeY_Glass (Double_t yg)
 
void SetSizeZ_Glass (Double_t zg)
 
void SetSizeX_Glass_Border (Double_t xgB)
 
void SetSizeY_Glass_Border (Double_t ygB)
 
void SetSizeZ_Glass_Border (Double_t zgB)
 
void SetSizeX_PMMA (Double_t xpmma)
 
void SetSizeY_PMMA (Double_t ypmma)
 
void SetSizeZ_PMMA (Double_t zpmma)
 
void SetSizeDX_PMMA (Double_t dxpmma)
 
void SetSizeDY_PMMA (Double_t dypmma)
 
void SetSizeDZ_PMMA (Double_t dzpmma)
 
void SetSizeX_FreonSF6 (Double_t xfSF6)
 
void SetSizeY_FreonSF6 (Double_t yfSF6)
 
void SetSizeZ_FreonSF6 (Double_t zfSF6)
 
void SetSizeX_FreonSF6_2 (Double_t xfSF6_2)
 
void SetSizeY_FreonSF6_2 (Double_t yfSF6_2)
 
void SetSizeZ_FreonSF6_2 (Double_t zfSF6_2)
 
void SetSizeX_FR4 (Double_t xf)
 
void SetSizeY_FR4 (Double_t yf)
 
void SetSizeZ_FR4 (Double_t zf)
 
void SetSizeX_Al (Double_t xal)
 
void SetSizeY_Al (Double_t yal)
 
void SetSizeZ_Al (Double_t zal)
 
void SetSizeDX_Al (Double_t dxal)
 
void SetSizeDY_Al (Double_t dyal)
 
void SetSizeDZ_Al (Double_t dzal)
 
void SetSizeX_Air (Double_t xair)
 
void SetSizeY_Air (Double_t yair)
 
void SetSizeZ_Air (Double_t zair)
 
void SetSizeX_Strip (Double_t xstrip)
 
void SetSizeY_Strip (Double_t ystrip)
 
void SetSizeX_Strip64 (Double_t xstrip64)
 
void SetSizeY_Strip64 (Double_t ystrip64)
 
void SetSizeZ_Strip (Double_t zstrip)
 
void ConstructGeometry ()
 
UpstreamTaggerPointAddHit (Int_t trackID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss, Int_t pdgCode, TVector3 Lpos, TVector3 Lmom)
 
virtual void EndOfEvent ()
 
virtual void FinishPrimary ()
 
virtual void FinishRun ()
 
virtual void BeginPrimary ()
 
virtual void PostTrack ()
 
virtual void PreTrack ()
 
virtual void BeginEvent ()
 

Public Attributes

Double_t module [11][3]
 
Int_t fTrackID
 
Int_t fVolumeID
 track index
 
TLorentzVector fPos
 volume id
 
TLorentzVector fMom
 position at entrance
 
Double_t fTime
 momentum at entrance
 
Double_t fLength
 time
 
Double_t fELoss
 length
 
Double_t det_zPos
 energy loss
 
Double_t det_xGlassPos
 z-position of veto station
 
Double_t det_yGlassPos
 x-size of Active Glass plates
 
Double_t det_zGlassPos
 y-size of Active Glass plates
 
Double_t det_xGlassBorderPos
 z-size of Active Glass plates
 
Double_t det_yGlassBorderPos
 x-size of Inactive Glass plates
 
Double_t det_zGlassBorderPos
 y-size of Inactive Glass plates
 
Double_t det_xPMMAPos
 z-size of Inactive Glass plates
 
Double_t det_yPMMAPos
 x-size of PMMA box
 
Double_t det_zPMMAPos
 y-size of PMMA box
 
Double_t det_dxPMMAPos
 z-size of PMMA box
 
Double_t det_dyPMMAPos
 x-thickness of PMMA box
 
Double_t det_dzPMMAPos
 y-thickness of PMMA box
 
Double_t det_xFreonSF6Pos
 z-thickness of PMMA box
 
Double_t det_yFreonSF6Pos
 x-size of gas gap
 
Double_t det_zFreonSF6Pos
 y-size of gas gap
 
Double_t det_xFreonSF6Pos_2
 z-size of gas gap
 
Double_t det_yFreonSF6Pos_2
 x-size of gas gap
 
Double_t det_zFreonSF6Pos_2
 y-size of gas gap
 
Double_t det_xFR4Pos
 z-size of gas gap
 
Double_t det_yFR4Pos
 x-size of FR4 box
 
Double_t det_zFR4Pos
 y-size of FR4 box
 
Double_t det_xAlPos
 z-size of FR4 box
 
Double_t det_yAlPos
 x-size of Aluminium box
 
Double_t det_zAlPos
 y-size of Aluminium box
 
Double_t det_dxAlPos
 z-size of Aluminium box
 
Double_t det_dyAlPos
 x-thickness of Aluminium box
 
Double_t det_dzAlPos
 y-thickness of Aluminium box
 
Double_t det_xAirPos
 z-thickness of Aluminium box
 
Double_t det_yAirPos
 x-size of Aluminium box
 
Double_t det_zAirPos
 y-size of Aluminium box
 
Double_t det_xStripPos64
 z-size of Aluminium box
 
Double_t det_yStripPos64
 x-size of Strip for modules with 64 strips
 
Double_t det_xStripPos
 y-size of Strip for modules with 64 strips
 
Double_t det_yStripPos
 x-size of Strip for modules with 32 strips
 
Double_t det_zStripPos
 y-size of Strip for modules with 32 strips
 
Double_t xbox_fulldet = 233.4
 z-size of Strip
 
Double_t ybox_fulldet = 507
 
Double_t zbox_fulldet = 17.0024
 
Double_t z_space_layers = 0.2
 
Double_t extra_y = 6.5
 

Private Member Functions

 UpstreamTagger (const UpstreamTagger &)
 
UpstreamTaggeroperator= (const UpstreamTagger &)
 
Int_t InitMedium (const char *name)
 

Private Attributes

TGeoVolume * UpstreamTagger_fulldet
 
TClonesArray * fUpstreamTaggerPointCollection
 

Detailed Description

Definition at line 13 of file UpstreamTagger.h.

Constructor & Destructor Documentation

◆ UpstreamTagger() [1/3]

UpstreamTagger::UpstreamTagger ( const char *  Name,
Bool_t  Active 
)

Name : Detector Name Active: kTRUE for active detectors (ProcessHits() will be called) kFALSE for inactive detectors

Definition at line 101 of file UpstreamTagger.cxx.

102 : FairDetector(name, active, kUpstreamTagger),
103 fTrackID(-1),
104 fVolumeID(-1),
105 fPos(),
106 fMom(),
107 fTime(-1.),
108 fLength(-1.),
109 fELoss(-1),
110 //
111 det_zPos(0),
112
113 det_xGlassPos(0),
114 det_yGlassPos(0),
115 det_zGlassPos(0),
116
120
121 det_xPMMAPos(0),
122 det_yPMMAPos(0),
123 det_zPMMAPos(0),
124
125 det_dxPMMAPos(0),
126 det_dyPMMAPos(0),
127 det_dzPMMAPos(0),
128
132
133 det_xFR4Pos(0),
134 det_yFR4Pos(0),
135 det_zFR4Pos(0),
136
137 det_xAlPos(0),
138 det_yAlPos(0),
139 det_zAlPos(0),
140
141 det_dxAlPos(0),
142 det_dyAlPos(0),
143 det_dzAlPos(0),
144
145 det_xAirPos(0),
146 det_yAirPos(0),
147 det_zAirPos(0),
148
149 det_xStripPos64(0),
151 det_xStripPos(0),
152 det_yStripPos(0),
153 det_zStripPos(0),
154
155 //
157 //
158 fUpstreamTaggerPointCollection(new TClonesArray("UpstreamTaggerPoint"))
159{
160}
@ kUpstreamTagger
TClonesArray * fUpstreamTaggerPointCollection
Double_t det_dzPMMAPos
y-thickness of PMMA box
Double_t fTime
momentum at entrance
Double_t det_yAlPos
x-size of Aluminium box
Double_t det_dxAlPos
z-size of Aluminium box
Double_t det_yFreonSF6Pos
x-size of gas gap
Double_t det_xGlassBorderPos
z-size of Active Glass plates
Double_t det_xAirPos
z-thickness of Aluminium box
TLorentzVector fPos
volume id
Double_t det_zStripPos
y-size of Strip for modules with 32 strips
Double_t det_zFreonSF6Pos
y-size of gas gap
Double_t fLength
time
Double_t det_yAirPos
x-size of Aluminium box
Double_t det_yGlassBorderPos
x-size of Inactive Glass plates
Int_t fVolumeID
track index
Double_t det_zAlPos
y-size of Aluminium box
Double_t det_dzAlPos
y-thickness of Aluminium box
Double_t det_zAirPos
y-size of Aluminium box
Double_t det_xStripPos
y-size of Strip for modules with 64 strips
Double_t det_xAlPos
z-size of FR4 box
Double_t det_dyAlPos
x-thickness of Aluminium box
TLorentzVector fMom
position at entrance
Double_t det_xPMMAPos
z-size of Inactive Glass plates
Double_t det_zGlassPos
y-size of Active Glass plates
Double_t det_xGlassPos
z-position of veto station
Double_t det_zFR4Pos
y-size of FR4 box
Double_t det_xStripPos64
z-size of Aluminium box
Double_t det_yStripPos
x-size of Strip for modules with 32 strips
Double_t fELoss
length
Double_t det_dxPMMAPos
z-size of PMMA box
Double_t det_zPos
energy loss
Double_t det_dyPMMAPos
x-thickness of PMMA box
TGeoVolume * UpstreamTagger_fulldet
Double_t det_yStripPos64
x-size of Strip for modules with 64 strips
Double_t det_yGlassPos
x-size of Active Glass plates
Double_t det_xFR4Pos
z-size of gas gap
Double_t det_yFR4Pos
x-size of FR4 box
Double_t det_yPMMAPos
x-size of PMMA box
Double_t det_zGlassBorderPos
y-size of Inactive Glass plates
Double_t det_xFreonSF6Pos
z-thickness of PMMA box
Double_t det_zPMMAPos
y-size of PMMA box

◆ UpstreamTagger() [2/3]

UpstreamTagger::UpstreamTagger ( )

default constructor

Definition at line 40 of file UpstreamTagger.cxx.

41 : FairDetector("UpstreamTagger", kTRUE, kUpstreamTagger),
42 fTrackID(-1),
43 fVolumeID(-1),
44 fPos(),
45 fMom(),
46 fTime(-1.),
47 fLength(-1.),
48 fELoss(-1),
49 //
50 det_zPos(0),
51
52 det_xGlassPos(0),
53 det_yGlassPos(0),
54 det_zGlassPos(0),
55
59
60 det_xPMMAPos(0),
61 det_yPMMAPos(0),
62 det_zPMMAPos(0),
63
64 det_dxPMMAPos(0),
65 det_dyPMMAPos(0),
66 det_dzPMMAPos(0),
67
71
72 det_xFR4Pos(0),
73 det_yFR4Pos(0),
74 det_zFR4Pos(0),
75
76 det_xAlPos(0),
77 det_yAlPos(0),
78 det_zAlPos(0),
79
80 det_dxAlPos(0),
81 det_dyAlPos(0),
82 det_dzAlPos(0),
83
84 det_xAirPos(0),
85 det_yAirPos(0),
86 det_zAirPos(0),
87
90 det_xStripPos(0),
91 det_yStripPos(0),
92 det_zStripPos(0),
93
94 //
96 //
97 fUpstreamTaggerPointCollection(new TClonesArray("UpstreamTaggerPoint"))
98{
99}

◆ ~UpstreamTagger()

UpstreamTagger::~UpstreamTagger ( )
virtual

destructor

Definition at line 169 of file UpstreamTagger.cxx.

◆ UpstreamTagger() [3/3]

UpstreamTagger::UpstreamTagger ( const UpstreamTagger )
private

Member Function Documentation

◆ AddHit()

UpstreamTaggerPoint * UpstreamTagger::AddHit ( Int_t  trackID,
Int_t  detID,
TVector3  pos,
TVector3  mom,
Double_t  time,
Double_t  length,
Double_t  eLoss,
Int_t  pdgCode,
TVector3  Lpos,
TVector3  Lmom 
)

This method is an example of how to add your own point of type TimeRpcPoint to the clones array

Definition at line 570 of file UpstreamTagger.cxx.

574{
575 TClonesArray& clref = *fUpstreamTaggerPointCollection;
576 Int_t size = clref.GetEntriesFast();
577
578 return new(clref[size]) UpstreamTaggerPoint(trackID, detID, pos, mom,
579 time, length, eLoss, pdgCode,Lpos,Lmom);
580}

◆ BeginEvent()

virtual void UpstreamTagger::BeginEvent ( )
inlinevirtual

Definition at line 102 of file UpstreamTagger.h.

102{;}

◆ BeginPrimary()

virtual void UpstreamTagger::BeginPrimary ( )
inlinevirtual

Definition at line 99 of file UpstreamTagger.h.

99{;}

◆ ConstructGeometry()

void UpstreamTagger::ConstructGeometry ( )

Create the detector geometry

Definition at line 299 of file UpstreamTagger.cxx.

300{
301 TGeoVolume *top = gGeoManager->GetTopVolume();
302
304
305 InitMedium("aluminium");
306 TGeoMedium *rpc_al =gGeoManager->GetMedium("aluminium");
307
308 InitMedium("TimeRpc_gas");
309 TGeoMedium *rpc_gas =gGeoManager->GetMedium("TimeRpc_gas");
310
311 InitMedium("air");
312 TGeoMedium *rpc_air =gGeoManager->GetMedium("air");
313
314 InitMedium("copper");
315 TGeoMedium *rpc_strip =gGeoManager->GetMedium("copper");
316
317 InitMedium("TimeRpc_glass");
318 TGeoMedium *rpc_glass =gGeoManager->GetMedium("TimeRpc_glass");
319
320 InitMedium("TimeRpc_pmma");
321 TGeoMedium *rpc_pmma =gGeoManager->GetMedium("TimeRpc_pmma");
322
323 InitMedium("TimeRpc_FR4");
324 TGeoMedium *rpc_FR4 =gGeoManager->GetMedium("TimeRpc_FR4");
325
327
328 TGeoVolume *vol_al1 = gGeoManager->MakeBox("Al1", rpc_al, (det_xAlPos + (2*det_dxAlPos))/2.0, (det_yAlPos + (2*det_dyAlPos))/2.0, det_dzAlPos/2.0);
329 vol_al1->SetLineColor(kBlue);//Gray);
330
331 TGeoVolume *vol_al2 = gGeoManager->MakeBox("Al2", rpc_al, (det_xAlPos + (2*det_dxAlPos))/2.0, det_dyAlPos/2.0, det_zAlPos/2.0);
332 vol_al2->SetLineColor(kRed);//Gray);
333
334 TGeoVolume *vol_al3 = gGeoManager->MakeBox("Al3", rpc_al, (det_dxAlPos)/2.0, (det_yAlPos + (2*det_dyAlPos))/2.0, det_zAlPos/2.0);
335 vol_al3->SetLineColor(kRed);//);
336
337 TGeoVolume *vol_strip = gGeoManager->MakeBox("strip", rpc_strip, (det_xStripPos)/2.0, (det_yStripPos)/2.0, det_zStripPos/2.0);
338 vol_strip->SetLineColor(42);
339
340 TGeoVolume *vol_strip64 = gGeoManager->MakeBox("strip64", rpc_strip, (det_xStripPos64)/2.0, (det_yStripPos64)/2.0, det_zStripPos/2.0);
341 vol_strip->SetLineColor(42);
342
343 TGeoVolume *vol_pmma1 = gGeoManager->MakeBox("pmma1", rpc_pmma, (det_xPMMAPos+(2*det_dxPMMAPos))/2.0, (det_yPMMAPos + (2*det_dyPMMAPos))/2.0, det_dzPMMAPos/2.0);
344 vol_pmma1->SetLineColor(kYellow);
345
346 TGeoVolume *vol_pmma2 = gGeoManager->MakeBox("pmma2", rpc_pmma, (det_xPMMAPos+(2*det_dxPMMAPos))/2.0, (det_dyPMMAPos)/2.0, det_zPMMAPos/2.0);
347 vol_pmma2->SetLineColor(kYellow);
348
349 TGeoVolume *vol_pmma3 = gGeoManager->MakeBox("pmma3", rpc_pmma, (det_dxPMMAPos)/2.0, (det_yPMMAPos + (2*det_dyPMMAPos))/2.0, det_zPMMAPos/2.0);
350 vol_pmma3->SetLineColor(kYellow);
351
352 TGeoVolume *vol_glass = gGeoManager->MakeBox("glass_upstreamtagger", rpc_glass, det_xGlassPos/2.0, det_yGlassPos/2.0, det_zGlassPos/2.0);
353 vol_glass->SetLineColor(kBlue);
354 AddSensitiveVolume(vol_glass);
355
356 TGeoVolume *vol_glass_border = gGeoManager->MakeBox("glassB", rpc_glass, (det_xGlassPos + (det_xGlassBorderPos*2.0))/2.0, det_yGlassBorderPos/2.0, det_zGlassBorderPos/2.0);
357 vol_glass_border->SetLineColor(kRed);
358
359 TGeoVolume *vol_glass_border1 = gGeoManager->MakeBox("glassB1", rpc_glass, det_xGlassBorderPos/2.0, det_yGlassPos/2.0, det_zGlassBorderPos/2.0);
360 vol_glass_border1->SetLineColor(kRed);
361
362 TGeoVolume *vol_FR4 = gGeoManager->MakeBox("FR4", rpc_FR4, det_xFR4Pos/2.0, det_yFR4Pos/2.0, det_zFR4Pos/2.0);
363 vol_FR4->SetLineColor(kBlack);
364
365 TGeoVolume *vol_air = gGeoManager->MakeBox("air", rpc_air, (det_xPMMAPos + (2*det_dxPMMAPos))/2.0, det_yAirPos/2.0, det_zAirPos/2.0);
366 vol_air->SetLineColor(kWhite);
367
368 TGeoVolume *vol_FrSF6 = gGeoManager->MakeBox("gas1", rpc_gas, det_xFreonSF6Pos/2.0, det_yFreonSF6Pos/2.0, det_zFreonSF6Pos/2.0);
369 vol_FrSF6->SetLineColor(kGreen);
370
371 TGeoVolume *vol_FrSF6_2 = gGeoManager->MakeBox("gas2", rpc_gas, det_xPMMAPos/2.0, det_yFreonSF6Pos_2/2.0, det_zFreonSF6Pos_2/2.0);
372 vol_FrSF6_2->SetLineColor(kGreen);
373
374 TGeoVolume *vol_FrSF6_3 = gGeoManager->MakeBox("gas3", rpc_gas, det_xFreonSF6Pos_2/2.0, (det_yPMMAPos/2.0 - (2*det_yFreonSF6Pos_2)/2.0), det_zFreonSF6Pos_2/2.0);
375 vol_FrSF6_2->SetLineColor(kGreen);
376
377
379
380 InitMedium("vacuum");
381 TGeoMedium *Vacuum_box =gGeoManager->GetMedium("vacuum");
382 double xbox=233.4; double ybox = 113; double zbox = 1.3503;
383
384 //RPC Module with 32 horizontal strips
385 TGeoVolume *Rpc_module_upstream = gGeoManager->MakeBox("UpstreamTagger",Vacuum_box, xbox/2.0, ybox/2.0, zbox/2.0);
386 Rpc_module_upstream->SetLineColor(kRed);
387
388 Rpc_module_upstream->AddNode(vol_al1, 145, new TGeoTranslation(0, 0, (-(det_zAlPos/2.0) - (det_dzAlPos/2.0)) ));
389 Rpc_module_upstream->AddNode(vol_al2, 146, new TGeoTranslation(0, ((-det_yAlPos/2.0) - (det_dyAlPos/2.0)), 0));
390 Rpc_module_upstream->AddNode(vol_al2, 147, new TGeoTranslation(0, ((det_yAlPos/2.0) + (det_dyAlPos/2.0)), 0));
391 Rpc_module_upstream->AddNode(vol_al3, 148, new TGeoTranslation(((-det_xAlPos/2.0) - (det_dxAlPos/2.0)), 0, 0));
392 Rpc_module_upstream->AddNode(vol_al3, 149, new TGeoTranslation(((det_xAlPos/2.0) + (det_dxAlPos/2.0)), 0, 0));
393 Rpc_module_upstream->AddNode(vol_al1, 150, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) + (det_dzAlPos/2.0)) ));
394
395 Rpc_module_upstream->AddNode(vol_pmma1, 151, new TGeoTranslation(0, 0, -((det_zAlPos/2.0) - (det_dzPMMAPos/2.0))));
396 Rpc_module_upstream->AddNode(vol_pmma2, 152, new TGeoTranslation(0, ((-det_yPMMAPos/2.0) - (det_dyPMMAPos/2.0)), 0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
397 Rpc_module_upstream->AddNode(vol_pmma2, 153, new TGeoTranslation(0, ((det_yPMMAPos/2.0) + (det_dyPMMAPos/2.0)),0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
398 Rpc_module_upstream->AddNode(vol_pmma3, 154, new TGeoTranslation(((-det_xPMMAPos/2.0) - (det_dxPMMAPos/2.0)), 0, 0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
399 Rpc_module_upstream->AddNode(vol_pmma3, 155, new TGeoTranslation(((det_xPMMAPos/2.0) + (det_dxPMMAPos/2.0)), 0, 0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
400 Rpc_module_upstream->AddNode(vol_pmma1, 156, new TGeoTranslation(0, 0, -(det_zAlPos/2.0) + det_dzPMMAPos + det_zPMMAPos + (det_dzPMMAPos/2.0) ));
401
402 Rpc_module_upstream->AddNode(vol_glass_border, 157, new TGeoTranslation(0, ((det_yGlassPos/2.0) + (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
403 Rpc_module_upstream->AddNode(vol_glass_border, 158, new TGeoTranslation(0, (-(det_yGlassPos/2.0) - (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
404 Rpc_module_upstream->AddNode(vol_glass_border1, 159, new TGeoTranslation(((det_xGlassPos/2.0) + (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
405 Rpc_module_upstream->AddNode(vol_glass_border1, 160, new TGeoTranslation((-(det_xGlassPos/2.0) - (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
406
407 Rpc_module_upstream->AddNode(vol_glass_border, 161, new TGeoTranslation(0, ((det_yGlassPos/2.0) + (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
408 Rpc_module_upstream->AddNode(vol_glass_border, 162, new TGeoTranslation(0, (-(det_yGlassPos/2.0) - (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
409 Rpc_module_upstream->AddNode(vol_glass_border1, 163, new TGeoTranslation(((det_xGlassPos/2.0) + (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
410 Rpc_module_upstream->AddNode(vol_glass_border1, 164, new TGeoTranslation((-(det_xGlassPos/2.0) - (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
411
412 Rpc_module_upstream->AddNode(vol_glass_border, 165, new TGeoTranslation(0, ((det_yGlassPos/2.0) + (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
413 Rpc_module_upstream->AddNode(vol_glass_border, 166, new TGeoTranslation(0, (-(det_yGlassPos/2.0) - (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
414 Rpc_module_upstream->AddNode(vol_glass_border1, 167, new TGeoTranslation(((det_xGlassPos/2.0) + (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0 - det_zFR4Pos - det_zStripPos) - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
415 Rpc_module_upstream->AddNode(vol_glass_border1, 168, new TGeoTranslation((-(det_xGlassPos/2.0) - (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
416
417 Rpc_module_upstream->AddNode(vol_glass, 169, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
418 Rpc_module_upstream->AddNode(vol_glass, 170, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
419 Rpc_module_upstream->AddNode(vol_glass, 171, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
420
421 Rpc_module_upstream->AddNode(vol_FrSF6, 172, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*1.0) - (det_zFreonSF6Pos/2.0))));
422 Rpc_module_upstream->AddNode(vol_FrSF6, 173, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*1.0) - (det_zFreonSF6Pos/2.0))));
423
424 Rpc_module_upstream->AddNode(vol_FrSF6_2, 174, new TGeoTranslation(0, ((-det_yGlassPos/2.0) - det_yGlassBorderPos - (det_yFreonSF6Pos_2/2.0)), (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
425 Rpc_module_upstream->AddNode(vol_FrSF6_2, 175, new TGeoTranslation(0, ((det_yGlassPos/2.0) + det_yGlassBorderPos + (det_yFreonSF6Pos_2/2.0)), (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
426 Rpc_module_upstream->AddNode(vol_FrSF6_3, 176, new TGeoTranslation(((det_xGlassPos/2.0) + det_xGlassBorderPos + (det_xFreonSF6Pos_2/2.0)), 0, (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
427 Rpc_module_upstream->AddNode(vol_FrSF6_3, 177, new TGeoTranslation(((-det_xGlassPos/2.0) - det_xGlassBorderPos - (det_xFreonSF6Pos_2/2.0)), 0, (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
428
429 Rpc_module_upstream->AddNode(vol_FR4, 178, new TGeoTranslation(0, 0, -(det_zAlPos/2.0) + det_dzPMMAPos + det_zPMMAPos + det_dzPMMAPos + det_zFR4Pos/2.0));
430
431 Rpc_module_upstream->AddNode(vol_air, 179, new TGeoTranslation(0, ((-det_yAlPos/2.0) + (det_yAirPos/2.0)), 0));
432 Rpc_module_upstream->AddNode(vol_air, 180, new TGeoTranslation(0, ((det_yAlPos/2.0) - (det_yAirPos/2.0)), 0));
433
434 Int_t interval = 0;
435
436 //Add 32 copper strips to the Rpc module
437 for(int i = 181; i < 213; i++){
438
439 Rpc_module_upstream->AddNode(vol_strip, i, new TGeoTranslation(0, (-det_yGlassPos/2.0) - det_yGlassBorderPos + 1.5 + (interval*det_yStripPos) + (interval*0.15) + ((det_yStripPos/2.0)), -(det_zAlPos/2.0) + det_dzPMMAPos + det_zPMMAPos + det_dzPMMAPos + det_zFR4Pos + (det_zStripPos/2.0) ));
440 interval++;
441 }
442
443 //RPC Module with 64 vertical strips
444 TGeoVolume *Rpc_module_upstream1 = gGeoManager->MakeBox("UpstreamTagger1",Vacuum_box, xbox/2.0, ybox/2.0, zbox/2.0);
445 Rpc_module_upstream1->SetLineColor(kRed);
446
447 Rpc_module_upstream1->AddNode(vol_al1, 214, new TGeoTranslation(0, 0, (-(det_zAlPos/2.0) - (det_dzAlPos/2.0)) ));
448 Rpc_module_upstream1->AddNode(vol_al2, 215, new TGeoTranslation(0, ((-det_yAlPos/2.0) - (det_dyAlPos/2.0)), 0));
449 Rpc_module_upstream1->AddNode(vol_al2, 216, new TGeoTranslation(0, ((det_yAlPos/2.0) + (det_dyAlPos/2.0)), 0));
450 Rpc_module_upstream1->AddNode(vol_al3, 217, new TGeoTranslation(((-det_xAlPos/2.0) - (det_dxAlPos/2.0)), 0, 0));
451 Rpc_module_upstream1->AddNode(vol_al3, 218, new TGeoTranslation(((det_xAlPos/2.0) + (det_dxAlPos/2.0)), 0, 0));
452 Rpc_module_upstream1->AddNode(vol_al1, 219, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) + (det_dzAlPos/2.0)) ));
453
454 Rpc_module_upstream1->AddNode(vol_pmma1, 220, new TGeoTranslation(0, 0, -((det_zAlPos/2.0) - (det_dzPMMAPos/2.0))));
455 Rpc_module_upstream1->AddNode(vol_pmma2, 221, new TGeoTranslation(0, ((-det_yPMMAPos/2.0) - (det_dyPMMAPos/2.0)), 0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
456 Rpc_module_upstream1->AddNode(vol_pmma2, 222, new TGeoTranslation(0, ((det_yPMMAPos/2.0) + (det_dyPMMAPos/2.0)),0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
457 Rpc_module_upstream1->AddNode(vol_pmma3, 223, new TGeoTranslation(((-det_xPMMAPos/2.0) - (det_dxPMMAPos/2.0)), 0, 0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
458 Rpc_module_upstream1->AddNode(vol_pmma3, 224, new TGeoTranslation(((det_xPMMAPos/2.0) + (det_dxPMMAPos/2.0)), 0, 0 - (det_zFR4Pos + det_zStripPos)/2.0 ));
459 Rpc_module_upstream1->AddNode(vol_pmma1, 225, new TGeoTranslation(0, 0, -(det_zAlPos/2.0) + det_dzPMMAPos + det_zPMMAPos + (det_dzPMMAPos/2.0) ));
460
461 Rpc_module_upstream1->AddNode(vol_glass_border, 226, new TGeoTranslation(0, ((det_yGlassPos/2.0) + (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
462 Rpc_module_upstream1->AddNode(vol_glass_border, 227, new TGeoTranslation(0, (-(det_yGlassPos/2.0) - (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
463 Rpc_module_upstream1->AddNode(vol_glass_border1, 228, new TGeoTranslation(((det_xGlassPos/2.0) + (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
464 Rpc_module_upstream1->AddNode(vol_glass_border1, 229, new TGeoTranslation((-(det_xGlassPos/2.0) - (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
465
466 Rpc_module_upstream1->AddNode(vol_glass_border, 230, new TGeoTranslation(0, ((det_yGlassPos/2.0) + (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
467 Rpc_module_upstream1->AddNode(vol_glass_border, 231, new TGeoTranslation(0, (-(det_yGlassPos/2.0) - (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
468 Rpc_module_upstream1->AddNode(vol_glass_border1, 232, new TGeoTranslation(((det_xGlassPos/2.0) + (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
469 Rpc_module_upstream1->AddNode(vol_glass_border1, 233, new TGeoTranslation((-(det_xGlassPos/2.0) - (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos- det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
470
471 Rpc_module_upstream1->AddNode(vol_glass_border, 234, new TGeoTranslation(0, ((det_yGlassPos/2.0) + (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
472 Rpc_module_upstream1->AddNode(vol_glass_border, 235, new TGeoTranslation(0, (-(det_yGlassPos/2.0) - (det_yGlassBorderPos/2.0)), ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
473 Rpc_module_upstream1->AddNode(vol_glass_border1, 236, new TGeoTranslation(((det_xGlassPos/2.0) + (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
474 Rpc_module_upstream1->AddNode(vol_glass_border1, 237, new TGeoTranslation((-(det_xGlassPos/2.0) - (det_xGlassBorderPos/2.0)), 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
475
476 Rpc_module_upstream1->AddNode(vol_glass, 238, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos/2.0))));
477 Rpc_module_upstream1->AddNode(vol_glass, 239, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - det_zGlassPos - det_zFreonSF6Pos - (det_zGlassPos/2.0))));
478 Rpc_module_upstream1->AddNode(vol_glass, 240, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*2.0) - (det_zGlassPos/2.0))));
479
480 Rpc_module_upstream1->AddNode(vol_FrSF6, 241, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*1.0) - (det_zFreonSF6Pos/2.0))));
481 Rpc_module_upstream1->AddNode(vol_FrSF6, 243, new TGeoTranslation(0, 0, ((det_zAlPos/2.0) - det_zFR4Pos - det_zStripPos - det_dzPMMAPos - (det_zGlassPos*2.0) - (det_zFreonSF6Pos*1.0) - (det_zFreonSF6Pos/2.0))));
482
483 Rpc_module_upstream1->AddNode(vol_FrSF6_2, 243, new TGeoTranslation(0, ((-det_yGlassPos/2.0) - det_yGlassBorderPos - (det_yFreonSF6Pos_2/2.0)), (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
484 Rpc_module_upstream1->AddNode(vol_FrSF6_2, 244, new TGeoTranslation(0, ((det_yGlassPos/2.0) + det_yGlassBorderPos + (det_yFreonSF6Pos_2/2.0)), (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
485 Rpc_module_upstream1->AddNode(vol_FrSF6_3, 245, new TGeoTranslation(((det_xGlassPos/2.0) + det_xGlassBorderPos + (det_xFreonSF6Pos_2/2.0)), 0, (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
486 Rpc_module_upstream1->AddNode(vol_FrSF6_3, 246, new TGeoTranslation(((-det_xGlassPos/2.0) - det_xGlassBorderPos - (det_xFreonSF6Pos_2/2.0)), 0, (-(det_zAlPos/2.0) + (det_dzPMMAPos) + (det_zFreonSF6Pos_2/2.0))));
487
488 Rpc_module_upstream1->AddNode(vol_FR4, 247, new TGeoTranslation(0, 0, -(det_zAlPos/2.0) + det_dzPMMAPos + det_zPMMAPos + det_dzPMMAPos + det_zFR4Pos/2.0));
489
490 Rpc_module_upstream1->AddNode(vol_air, 248, new TGeoTranslation(0, ((-det_yAlPos/2.0) + (det_yAirPos/2.0)), 0));
491 Rpc_module_upstream1->AddNode(vol_air, 249, new TGeoTranslation(0, ((det_yAlPos/2.0) - (det_yAirPos/2.0)), 0));
492
493 interval = 0;
494
495 //Add 64 copper strips to the Rpc module
496 for(int i = 250; i < 314; i++){
497
498 Rpc_module_upstream1->AddNode(vol_strip64, i, new TGeoTranslation((-det_xGlassPos/2.0) - det_xGlassBorderPos + 2.175 + (interval*det_xStripPos64) + (interval*0.15) + ((det_xStripPos64/2.0)), 0, -(det_zAlPos/2.0) + det_dzPMMAPos + det_zPMMAPos + det_dzPMMAPos + det_zFR4Pos + (det_zStripPos/2.0) ));
499 interval++;
500 }
501
502
504
505 //UpstreamTagger_fulldet = new TGeoVolumeAssembly("Upstream_Tagger");
506 UpstreamTagger_fulldet = gGeoManager->MakeBox("Upstream_Tagger", Vacuum_box, xbox_fulldet/2.0, ybox_fulldet/2.0, zbox_fulldet/2.0);
507 UpstreamTagger_fulldet->SetLineColor(kWhite);
508
509 ybox_fulldet = 499; //resize box to define the modules position from active area of the detectors (discounting the aluminium box + acrilic)
510
511 //First Layer of full Rpc detector covering 2.23 x 4.99 meters with 32 strips
512 module[1][0] = 0; module[1][1] = ((ybox_fulldet/2.0) - ((det_yGlassPos)/2.0)); module[1][2] = (-(zbox_fulldet/2.0) + (det_zAlPos/2.0) + det_dzAlPos);
513 module[2][0] = 0; module[2][1] = 0; module[2][2] = (-(zbox_fulldet/2.0) + (det_zAlPos/2.0) + det_dzAlPos);
514 module[3][0] = 0; module[3][1] = -((ybox_fulldet/2.0) - ((det_yGlassPos)/2.0)); module[3][2] = (-(zbox_fulldet/2.0) + (det_zAlPos/2.0) + det_dzAlPos);
515
516 //Second Layer of full Rpc detector covering 2.23 x 4.99 meters with 32 strips
517 module[4][0] = 0; module[4][1] = ((ybox_fulldet/2.0) - ((det_yGlassPos)) - ((det_yGlassPos)/2.0) + extra_y); module[4][2] = (-(zbox_fulldet/2.0) + det_zAlPos + det_dzAlPos*3.0 + z_space_layers + (det_zAlPos/2.0));
518 module[5][0] = 0; module[5][1] = -((ybox_fulldet/2.0) - ((det_yGlassPos)) - ((det_yGlassPos)/2.0) + extra_y); module[5][2] = (-(zbox_fulldet/2.0) + det_zAlPos + det_dzAlPos*3.0 + z_space_layers + (det_zAlPos/2.0));
519
520 //Third Layer of full Rpc detector covering 2.23 x 4.99 meters with 64 strips
521 module[6][0] = 0; module[6][1] = ((ybox_fulldet/2.0) - ((det_yGlassPos)/2.0)); module[6][2] = (-(zbox_fulldet/2.0) + (det_zAlPos*2.0) + det_dzAlPos*5.0 + (z_space_layers*2.0) + (det_zAlPos/2.0));
522 module[7][0] = 0; module[7][1] = 0; module[7][2] = (-(zbox_fulldet/2.0) + (det_zAlPos*2.0) + det_dzAlPos*5.0 + (z_space_layers*3.0) + (det_zAlPos/2.0));
523 module[8][0] = 0; module[8][1] = -((ybox_fulldet/2.0) - ((det_yGlassPos)/2.0)); module[8][2] = (-(zbox_fulldet/2.0) + (det_zAlPos*2.0) + det_dzAlPos*5.0 + (z_space_layers*2.0) + (det_zAlPos/2.0));
524
525 //Fourth Layer of full Rpc detector covering 2.23 x 4.99 meters with 64 strips
526 module[9][0] = 0; module[9][1] = ((ybox_fulldet/2.0) - ((det_yGlassPos)) - ((det_yGlassPos)/2.0) + extra_y); module[9][2] = (-(zbox_fulldet/2.0) + (det_zAlPos*3.0) + det_dzAlPos*7.0 + (z_space_layers*3.0) + (det_zAlPos/2.0));
527 module[10][0] = 0; module[10][1] = -((ybox_fulldet/2.0) - ((det_yGlassPos)) - ((det_yGlassPos)/2.0) + extra_y); module[10][2] = (-(zbox_fulldet/2.0) + (det_zAlPos*3.0) + det_dzAlPos*7.0 + (z_space_layers*3.0) + (det_zAlPos/2.0));
528
529 //First Layer of full Rpc detector1 covering 2.23 x 4.99 meters
530 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 1, new TGeoTranslation(module[1][0], module[1][1], module[1][2]));
531 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 2, new TGeoTranslation(module[2][0], module[2][1], module[2][2]));
532 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 3, new TGeoTranslation(module[3][0], module[3][1], module[3][2]));
533 //Second Layer of full Rpc detector1 covering 2.23 x 4.99 meters
534 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 4, new TGeoTranslation(module[4][0], module[4][1], module[4][2]));
535 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 5, new TGeoTranslation(module[5][0], module[5][1], module[5][2]));
536 //Third Layer of full Rpc detector1 covering 2.23 x 4.99 meters
537 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 6, new TGeoTranslation(module[6][0], module[6][1], module[6][2]));
538 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 7, new TGeoTranslation(module[7][0], module[7][1], module[7][2]));
539 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 8, new TGeoTranslation(module[8][0], module[8][1], module[8][2]));
540 //Fourth Layer of full Rpc detector1 covering 2.23 x 4.99 meters
541 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 9, new TGeoTranslation(module[9][0], module[9][1], module[9][2]));
542 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 10, new TGeoTranslation(module[10][0], module[10][1], module[10][2]));
543
544
545 //First Layer of full Rpc detector2 covering 2.23 x 4.99 meters
546 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 11, new TGeoTranslation(module[1][0], module[1][1], -module[9][2]));
547 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 12, new TGeoTranslation(module[2][0], module[2][1], -module[9][2]));
548 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 13, new TGeoTranslation(module[3][0], module[3][1], -module[9][2]));
549 //Second Layer of full Rpc detector2 covering 2.23 x 4.99 meters
550 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 14, new TGeoTranslation(module[4][0], module[4][1], -module[6][2]));
551 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream, 15, new TGeoTranslation(module[5][0], module[5][1], -module[6][2]));
552 //Third Layer of full Rpc detector2 covering 2.23 x 4.99 meters
553 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 16, new TGeoTranslation(module[6][0], module[6][1], -module[4][2]));
554 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 17, new TGeoTranslation(module[7][0], module[7][1], -module[4][2]));
555 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 18, new TGeoTranslation(module[8][0], module[8][1], -module[4][2]));
556 //Fourth Layer of full Rpc detector2 covering 2.23 x 4.99 meters
557 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 19, new TGeoTranslation(module[9][0], module[9][1], -module[1][2]));
558 UpstreamTagger_fulldet->AddNode(Rpc_module_upstream1, 20, new TGeoTranslation(module[10][0], module[10][1], -module[1][2]));
559
560 top->AddNode(UpstreamTagger_fulldet, 1, new TGeoTranslation(0.0, 0.0, det_zPos));
561
562 cout << " Z Position (Upstream Tagger1) " << det_zPos << endl;
564
565 return;
566}
Double_t det_zFreonSF6Pos_2
y-size of gas gap
Double_t module[11][3]
Double_t ybox_fulldet
Int_t InitMedium(const char *name)
Double_t xbox_fulldet
z-size of Strip
Double_t det_xFreonSF6Pos_2
z-size of gas gap
Double_t zbox_fulldet
Double_t det_yFreonSF6Pos_2
x-size of gas gap
int i
Definition ShipAna.py:86

◆ EndOfEvent()

void UpstreamTagger::EndOfEvent ( )
virtual

Definition at line 262 of file UpstreamTagger.cxx.

263{
265}

◆ FinishPrimary()

virtual void UpstreamTagger::FinishPrimary ( )
inlinevirtual

Definition at line 97 of file UpstreamTagger.h.

97{;}

◆ FinishRun()

virtual void UpstreamTagger::FinishRun ( )
inlinevirtual

Definition at line 98 of file UpstreamTagger.h.

98{;}

◆ GetCollection()

TClonesArray * UpstreamTagger::GetCollection ( Int_t  iColl) const
virtual

Gets the produced collections

Definition at line 284 of file UpstreamTagger.cxx.

285{
286 if (iColl == 0) { return fUpstreamTaggerPointCollection; }
287 else { return NULL; }
288}

◆ Initialize()

void UpstreamTagger::Initialize ( )
virtual

Initialization of the detector is done here

Definition at line 163 of file UpstreamTagger.cxx.

164{
165 FairDetector::Initialize();
166}

◆ InitMedium()

Int_t UpstreamTagger::InitMedium ( const char *  name)
private

Definition at line 179 of file UpstreamTagger.cxx.

180{
181
182 static FairGeoLoader *geoLoad=FairGeoLoader::Instance();
183 static FairGeoInterface *geoFace=geoLoad->getGeoInterface();
184 static FairGeoMedia *media=geoFace->getMedia();
185 static FairGeoBuilder *geoBuild=geoLoad->getGeoBuilder();
186
187 FairGeoMedium *ShipMedium=media->getMedium(name);
188
189 if (!ShipMedium)
190 {
191 Fatal("InitMedium","Material %s not defined in media file.", name);
192 return -1111;
193 }
194 TGeoMedium* medium=gGeoManager->GetMedium(name);
195 if (medium!=NULL)
196 return ShipMedium->getMediumIndex();
197
198 return geoBuild->createMedium(ShipMedium);
199
200 return 0;
201}

◆ operator=()

UpstreamTagger & UpstreamTagger::operator= ( const UpstreamTagger )
private

◆ PostTrack()

virtual void UpstreamTagger::PostTrack ( )
inlinevirtual

Definition at line 100 of file UpstreamTagger.h.

100{;}

◆ PreTrack()

virtual void UpstreamTagger::PreTrack ( )
inlinevirtual

Definition at line 101 of file UpstreamTagger.h.

101{;}

◆ ProcessHits()

Bool_t UpstreamTagger::ProcessHits ( FairVolume *  v = 0)
virtual

this method is called for each step during simulation (see FairMCApplication::Stepping())

This method is called from the MC stepping

Definition at line 205 of file UpstreamTagger.cxx.

206{
208 //Set parameters at entrance of volume. Reset ELoss.
209 if ( gMC->IsTrackEntering() ) {
210 fELoss = 0.;
211 fTime = gMC->TrackTime() * 1.0e09;
212 fLength = gMC->TrackLength();
213 gMC->TrackPosition(fPos);
214 gMC->TrackMomentum(fMom);
215 }
216
217 // Sum energy loss for all steps in the active volume
218 fELoss += gMC->Edep();
219
220 // Create vetoPoint at exit of active volume
221 if ( gMC->IsTrackExiting() ||
222 gMC->IsTrackStop() ||
223 gMC->IsTrackDisappeared() ) {
224 if (fELoss == 0. ) { return kFALSE; }
225
226 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
227
228 Int_t uniqueId;
229 gMC->CurrentVolID(uniqueId);
230 if (uniqueId>1000000) //Solid scintillator case
231 {
232 Int_t vcpy;
233 gMC->CurrentVolOffID(1, vcpy);
234 if (vcpy==5) uniqueId+=4; //Copy of half
235 }
236
237 TParticle* p = gMC->GetStack()->GetCurrentTrack();
238 Int_t pdgCode = p->GetPdgCode();
239 TLorentzVector Pos;
240 gMC->TrackPosition(Pos);
241 TLorentzVector Mom;
242 gMC->TrackMomentum(Mom);
243 Double_t xmean = (fPos.X()+Pos.X())/2. ;
244 Double_t ymean = (fPos.Y()+Pos.Y())/2. ;
245 Double_t zmean = (fPos.Z()+Pos.Z())/2. ;
246
247 AddHit(fTrackID, uniqueId, TVector3(xmean, ymean, zmean),
248 TVector3(fMom.Px(), fMom.Py(), fMom.Pz()), fTime, fLength,
249 fELoss,pdgCode,TVector3(Pos.X(), Pos.Y(), Pos.Z()),
250 TVector3(Mom.Px(), Mom.Py(), Mom.Pz()) );
251
252 // Increment number of veto det points in TParticle
253 ShipStack* stack = (ShipStack*) gMC->GetStack();
254 stack->AddPoint(kUpstreamTagger);
255 }
256
257 return kTRUE;
258}
UpstreamTaggerPoint * AddHit(Int_t trackID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss, Int_t pdgCode, TVector3 Lpos, TVector3 Lmom)

◆ Register()

void UpstreamTagger::Register ( )
virtual

Registers the produced collections in FAIRRootManager.

This will create a branch in the output tree called UpstreamTaggerPoint, setting the last parameter to kFALSE means: this collection will not be written to the file, it will exist only during the simulation.

Definition at line 269 of file UpstreamTagger.cxx.

270{
271
278 FairRootManager::Instance()->Register("UpstreamTaggerPoint", "UpstreamTagger",
280}

◆ Reset()

void UpstreamTagger::Reset ( )
virtual

has to be called after each event to reset the containers

Definition at line 292 of file UpstreamTagger.cxx.

293{
295}

◆ SetSizeDX_Al()

void UpstreamTagger::SetSizeDX_Al ( Double_t  dxal)
inline

Definition at line 73 of file UpstreamTagger.h.

73{det_dxAlPos = dxal;}

◆ SetSizeDX_PMMA()

void UpstreamTagger::SetSizeDX_PMMA ( Double_t  dxpmma)
inline

Definition at line 58 of file UpstreamTagger.h.

58{det_dxPMMAPos = dxpmma;}

◆ SetSizeDY_Al()

void UpstreamTagger::SetSizeDY_Al ( Double_t  dyal)
inline

Definition at line 74 of file UpstreamTagger.h.

74{det_dyAlPos = dyal;}

◆ SetSizeDY_PMMA()

void UpstreamTagger::SetSizeDY_PMMA ( Double_t  dypmma)
inline

Definition at line 59 of file UpstreamTagger.h.

59{det_dyPMMAPos = dypmma;}

◆ SetSizeDZ_Al()

void UpstreamTagger::SetSizeDZ_Al ( Double_t  dzal)
inline

Definition at line 75 of file UpstreamTagger.h.

75{det_dzAlPos = dzal;}

◆ SetSizeDZ_PMMA()

void UpstreamTagger::SetSizeDZ_PMMA ( Double_t  dzpmma)
inline

Definition at line 60 of file UpstreamTagger.h.

60{det_dzPMMAPos = dzpmma;}

◆ SetSizeX_Air()

void UpstreamTagger::SetSizeX_Air ( Double_t  xair)
inline

Definition at line 76 of file UpstreamTagger.h.

76{det_xAirPos = xair;}

◆ SetSizeX_Al()

void UpstreamTagger::SetSizeX_Al ( Double_t  xal)
inline

Definition at line 70 of file UpstreamTagger.h.

70{det_xAlPos = xal;}

◆ SetSizeX_FR4()

void UpstreamTagger::SetSizeX_FR4 ( Double_t  xf)
inline

Definition at line 67 of file UpstreamTagger.h.

67{det_xFR4Pos = xf;}

◆ SetSizeX_FreonSF6()

void UpstreamTagger::SetSizeX_FreonSF6 ( Double_t  xfSF6)
inline

Definition at line 61 of file UpstreamTagger.h.

61{det_xFreonSF6Pos = xfSF6;}

◆ SetSizeX_FreonSF6_2()

void UpstreamTagger::SetSizeX_FreonSF6_2 ( Double_t  xfSF6_2)
inline

Definition at line 64 of file UpstreamTagger.h.

64{det_xFreonSF6Pos_2 = xfSF6_2;}

◆ SetSizeX_Glass()

void UpstreamTagger::SetSizeX_Glass ( Double_t  xg)
inline

Definition at line 49 of file UpstreamTagger.h.

49{det_xGlassPos = xg;}

◆ SetSizeX_Glass_Border()

void UpstreamTagger::SetSizeX_Glass_Border ( Double_t  xgB)
inline

Definition at line 52 of file UpstreamTagger.h.

◆ SetSizeX_PMMA()

void UpstreamTagger::SetSizeX_PMMA ( Double_t  xpmma)
inline

Definition at line 55 of file UpstreamTagger.h.

55{det_xPMMAPos = xpmma;}

◆ SetSizeX_Strip()

void UpstreamTagger::SetSizeX_Strip ( Double_t  xstrip)
inline

Definition at line 79 of file UpstreamTagger.h.

79{det_xStripPos = xstrip;}

◆ SetSizeX_Strip64()

void UpstreamTagger::SetSizeX_Strip64 ( Double_t  xstrip64)
inline

Definition at line 81 of file UpstreamTagger.h.

81{det_xStripPos64 = xstrip64;}

◆ SetSizeY_Air()

void UpstreamTagger::SetSizeY_Air ( Double_t  yair)
inline

Definition at line 77 of file UpstreamTagger.h.

77{det_yAirPos = yair;}

◆ SetSizeY_Al()

void UpstreamTagger::SetSizeY_Al ( Double_t  yal)
inline

Definition at line 71 of file UpstreamTagger.h.

71{det_yAlPos = yal;}

◆ SetSizeY_FR4()

void UpstreamTagger::SetSizeY_FR4 ( Double_t  yf)
inline

Definition at line 68 of file UpstreamTagger.h.

68{det_yFR4Pos = yf;}

◆ SetSizeY_FreonSF6()

void UpstreamTagger::SetSizeY_FreonSF6 ( Double_t  yfSF6)
inline

Definition at line 62 of file UpstreamTagger.h.

62{det_yFreonSF6Pos = yfSF6;}

◆ SetSizeY_FreonSF6_2()

void UpstreamTagger::SetSizeY_FreonSF6_2 ( Double_t  yfSF6_2)
inline

Definition at line 65 of file UpstreamTagger.h.

65{det_yFreonSF6Pos_2 = yfSF6_2;}

◆ SetSizeY_Glass()

void UpstreamTagger::SetSizeY_Glass ( Double_t  yg)
inline

Definition at line 50 of file UpstreamTagger.h.

50{det_yGlassPos = yg;}

◆ SetSizeY_Glass_Border()

void UpstreamTagger::SetSizeY_Glass_Border ( Double_t  ygB)
inline

Definition at line 53 of file UpstreamTagger.h.

◆ SetSizeY_PMMA()

void UpstreamTagger::SetSizeY_PMMA ( Double_t  ypmma)
inline

Definition at line 56 of file UpstreamTagger.h.

56{det_yPMMAPos = ypmma;}

◆ SetSizeY_Strip()

void UpstreamTagger::SetSizeY_Strip ( Double_t  ystrip)
inline

Definition at line 80 of file UpstreamTagger.h.

80{det_yStripPos = ystrip;}

◆ SetSizeY_Strip64()

void UpstreamTagger::SetSizeY_Strip64 ( Double_t  ystrip64)
inline

Definition at line 82 of file UpstreamTagger.h.

82{det_yStripPos64 = ystrip64;}

◆ SetSizeZ_Air()

void UpstreamTagger::SetSizeZ_Air ( Double_t  zair)
inline

Definition at line 78 of file UpstreamTagger.h.

78{det_zAirPos = zair;}

◆ SetSizeZ_Al()

void UpstreamTagger::SetSizeZ_Al ( Double_t  zal)
inline

Definition at line 72 of file UpstreamTagger.h.

72{det_zAlPos = zal;}

◆ SetSizeZ_FR4()

void UpstreamTagger::SetSizeZ_FR4 ( Double_t  zf)
inline

Definition at line 69 of file UpstreamTagger.h.

69{det_zFR4Pos = zf;}

◆ SetSizeZ_FreonSF6()

void UpstreamTagger::SetSizeZ_FreonSF6 ( Double_t  zfSF6)
inline

Definition at line 63 of file UpstreamTagger.h.

63{det_zFreonSF6Pos = zfSF6;}

◆ SetSizeZ_FreonSF6_2()

void UpstreamTagger::SetSizeZ_FreonSF6_2 ( Double_t  zfSF6_2)
inline

Definition at line 66 of file UpstreamTagger.h.

66{det_zFreonSF6Pos_2 = zfSF6_2;}

◆ SetSizeZ_Glass()

void UpstreamTagger::SetSizeZ_Glass ( Double_t  zg)
inline

Definition at line 51 of file UpstreamTagger.h.

51{det_zGlassPos = zg;}

◆ SetSizeZ_Glass_Border()

void UpstreamTagger::SetSizeZ_Glass_Border ( Double_t  zgB)
inline

Definition at line 54 of file UpstreamTagger.h.

◆ SetSizeZ_PMMA()

void UpstreamTagger::SetSizeZ_PMMA ( Double_t  zpmma)
inline

Definition at line 57 of file UpstreamTagger.h.

57{det_zPMMAPos = zpmma;}

◆ SetSizeZ_Strip()

void UpstreamTagger::SetSizeZ_Strip ( Double_t  zstrip)
inline

Definition at line 83 of file UpstreamTagger.h.

83{det_zStripPos = zstrip;}

◆ SetZposition()

void UpstreamTagger::SetZposition ( Double_t  z)
inline

Sets detector position and sizes

Definition at line 48 of file UpstreamTagger.h.

Member Data Documentation

◆ det_dxAlPos

Double_t UpstreamTagger::det_dxAlPos

z-size of Aluminium box

Definition at line 150 of file UpstreamTagger.h.

◆ det_dxPMMAPos

Double_t UpstreamTagger::det_dxPMMAPos

z-size of PMMA box

Definition at line 130 of file UpstreamTagger.h.

◆ det_dyAlPos

Double_t UpstreamTagger::det_dyAlPos

x-thickness of Aluminium box

Definition at line 151 of file UpstreamTagger.h.

◆ det_dyPMMAPos

Double_t UpstreamTagger::det_dyPMMAPos

x-thickness of PMMA box

Definition at line 131 of file UpstreamTagger.h.

◆ det_dzAlPos

Double_t UpstreamTagger::det_dzAlPos

y-thickness of Aluminium box

Definition at line 152 of file UpstreamTagger.h.

◆ det_dzPMMAPos

Double_t UpstreamTagger::det_dzPMMAPos

y-thickness of PMMA box

Definition at line 132 of file UpstreamTagger.h.

◆ det_xAirPos

Double_t UpstreamTagger::det_xAirPos

z-thickness of Aluminium box

Definition at line 154 of file UpstreamTagger.h.

◆ det_xAlPos

Double_t UpstreamTagger::det_xAlPos

z-size of FR4 box

Definition at line 146 of file UpstreamTagger.h.

◆ det_xFR4Pos

Double_t UpstreamTagger::det_xFR4Pos

z-size of gas gap

Definition at line 142 of file UpstreamTagger.h.

◆ det_xFreonSF6Pos

Double_t UpstreamTagger::det_xFreonSF6Pos

z-thickness of PMMA box

Definition at line 134 of file UpstreamTagger.h.

◆ det_xFreonSF6Pos_2

Double_t UpstreamTagger::det_xFreonSF6Pos_2

z-size of gas gap

Definition at line 138 of file UpstreamTagger.h.

◆ det_xGlassBorderPos

Double_t UpstreamTagger::det_xGlassBorderPos

z-size of Active Glass plates

Definition at line 122 of file UpstreamTagger.h.

◆ det_xGlassPos

Double_t UpstreamTagger::det_xGlassPos

z-position of veto station

Definition at line 118 of file UpstreamTagger.h.

◆ det_xPMMAPos

Double_t UpstreamTagger::det_xPMMAPos

z-size of Inactive Glass plates

Definition at line 126 of file UpstreamTagger.h.

◆ det_xStripPos

Double_t UpstreamTagger::det_xStripPos

y-size of Strip for modules with 64 strips

Definition at line 160 of file UpstreamTagger.h.

◆ det_xStripPos64

Double_t UpstreamTagger::det_xStripPos64

z-size of Aluminium box

Definition at line 158 of file UpstreamTagger.h.

◆ det_yAirPos

Double_t UpstreamTagger::det_yAirPos

x-size of Aluminium box

Definition at line 155 of file UpstreamTagger.h.

◆ det_yAlPos

Double_t UpstreamTagger::det_yAlPos

x-size of Aluminium box

Definition at line 147 of file UpstreamTagger.h.

◆ det_yFR4Pos

Double_t UpstreamTagger::det_yFR4Pos

x-size of FR4 box

Definition at line 143 of file UpstreamTagger.h.

◆ det_yFreonSF6Pos

Double_t UpstreamTagger::det_yFreonSF6Pos

x-size of gas gap

Definition at line 135 of file UpstreamTagger.h.

◆ det_yFreonSF6Pos_2

Double_t UpstreamTagger::det_yFreonSF6Pos_2

x-size of gas gap

Definition at line 139 of file UpstreamTagger.h.

◆ det_yGlassBorderPos

Double_t UpstreamTagger::det_yGlassBorderPos

x-size of Inactive Glass plates

Definition at line 123 of file UpstreamTagger.h.

◆ det_yGlassPos

Double_t UpstreamTagger::det_yGlassPos

x-size of Active Glass plates

Definition at line 119 of file UpstreamTagger.h.

◆ det_yPMMAPos

Double_t UpstreamTagger::det_yPMMAPos

x-size of PMMA box

Definition at line 127 of file UpstreamTagger.h.

◆ det_yStripPos

Double_t UpstreamTagger::det_yStripPos

x-size of Strip for modules with 32 strips

Definition at line 161 of file UpstreamTagger.h.

◆ det_yStripPos64

Double_t UpstreamTagger::det_yStripPos64

x-size of Strip for modules with 64 strips

Definition at line 159 of file UpstreamTagger.h.

◆ det_zAirPos

Double_t UpstreamTagger::det_zAirPos

y-size of Aluminium box

Definition at line 156 of file UpstreamTagger.h.

◆ det_zAlPos

Double_t UpstreamTagger::det_zAlPos

y-size of Aluminium box

Definition at line 148 of file UpstreamTagger.h.

◆ det_zFR4Pos

Double_t UpstreamTagger::det_zFR4Pos

y-size of FR4 box

Definition at line 144 of file UpstreamTagger.h.

◆ det_zFreonSF6Pos

Double_t UpstreamTagger::det_zFreonSF6Pos

y-size of gas gap

Definition at line 136 of file UpstreamTagger.h.

◆ det_zFreonSF6Pos_2

Double_t UpstreamTagger::det_zFreonSF6Pos_2

y-size of gas gap

Definition at line 140 of file UpstreamTagger.h.

◆ det_zGlassBorderPos

Double_t UpstreamTagger::det_zGlassBorderPos

y-size of Inactive Glass plates

Definition at line 124 of file UpstreamTagger.h.

◆ det_zGlassPos

Double_t UpstreamTagger::det_zGlassPos

y-size of Active Glass plates

Definition at line 120 of file UpstreamTagger.h.

◆ det_zPMMAPos

Double_t UpstreamTagger::det_zPMMAPos

y-size of PMMA box

Definition at line 128 of file UpstreamTagger.h.

◆ det_zPos

Double_t UpstreamTagger::det_zPos

energy loss

Detector parameters.

Definition at line 117 of file UpstreamTagger.h.

◆ det_zStripPos

Double_t UpstreamTagger::det_zStripPos

y-size of Strip for modules with 32 strips

Definition at line 162 of file UpstreamTagger.h.

◆ extra_y

Double_t UpstreamTagger::extra_y = 6.5

Definition at line 168 of file UpstreamTagger.h.

◆ fELoss

Double_t UpstreamTagger::fELoss

length

Definition at line 113 of file UpstreamTagger.h.

◆ fLength

Double_t UpstreamTagger::fLength

time

Definition at line 112 of file UpstreamTagger.h.

◆ fMom

TLorentzVector UpstreamTagger::fMom

position at entrance

Definition at line 110 of file UpstreamTagger.h.

◆ fPos

TLorentzVector UpstreamTagger::fPos

volume id

Definition at line 109 of file UpstreamTagger.h.

◆ fTime

Double_t UpstreamTagger::fTime

momentum at entrance

Definition at line 111 of file UpstreamTagger.h.

◆ fTrackID

Int_t UpstreamTagger::fTrackID

Track information to be stored until the track leaves the active volume.

Definition at line 107 of file UpstreamTagger.h.

◆ fUpstreamTaggerPointCollection

TClonesArray* UpstreamTagger::fUpstreamTaggerPointCollection
private

container for data points

Definition at line 175 of file UpstreamTagger.h.

◆ fVolumeID

Int_t UpstreamTagger::fVolumeID

track index

Definition at line 108 of file UpstreamTagger.h.

◆ module

Double_t UpstreamTagger::module[11][3]

Definition at line 104 of file UpstreamTagger.h.

◆ UpstreamTagger_fulldet

TGeoVolume* UpstreamTagger::UpstreamTagger_fulldet
private

Definition at line 172 of file UpstreamTagger.h.

◆ xbox_fulldet

Double_t UpstreamTagger::xbox_fulldet = 233.4

z-size of Strip

Definition at line 164 of file UpstreamTagger.h.

◆ ybox_fulldet

Double_t UpstreamTagger::ybox_fulldet = 507

Definition at line 165 of file UpstreamTagger.h.

◆ z_space_layers

Double_t UpstreamTagger::z_space_layers = 0.2

Definition at line 167 of file UpstreamTagger.h.

◆ zbox_fulldet

Double_t UpstreamTagger::zbox_fulldet = 17.0024

Definition at line 166 of file UpstreamTagger.h.


The documentation for this class was generated from the following files: