]>
Commit | Line | Data |
---|---|---|
257726e6 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | /* $Id$ */ | |
17 | ||
18 | /////////////////////////////////////////////////////////////////////////////// | |
19 | // // | |
20 | // Experimental Hall // | |
21 | // This class contains the description of the experimental hall // | |
22 | // and the shielding blocks. // | |
23 | // Author: Andreas Morsch // | |
24 | // andreas.morsch@cern.ch // | |
25 | // // | |
26 | /////////////////////////////////////////////////////////////////////////////// | |
27 | ||
28 | #include <TVirtualMC.h> | |
29 | ||
30 | #include "AliConst.h" | |
31 | #include "AliHALLv3.h" | |
32 | #include "AliMagF.h" | |
33 | #include "AliRun.h" | |
34 | #include "AliLog.h" | |
35 | #include <TGeoVolume.h> | |
36 | #include <TGeoManager.h> | |
37 | #include <TGeoMatrix.h> | |
38 | #include <TGeoCompositeShape.h> | |
39 | #include <TGeoBBox.h> | |
40 | #include <TGeoTube.h> | |
41 | #include <TGeoPgon.h> | |
42 | #include <TGeoPcon.h> | |
43 | #include <TGeoCone.h> | |
44 | #include <TGeoTrd1.h> | |
45 | #include <TGeoArb8.h> | |
46 | ||
47 | ClassImp(AliHALL) | |
48 | ||
49 | //_____________________________________________________________________________ | |
50 | AliHALLv3::AliHALLv3() | |
51 | { | |
52 | // | |
53 | // Default constructor for the experimental Hall | |
54 | // | |
55 | } | |
56 | ||
57 | //_____________________________________________________________________________ | |
58 | AliHALLv3::AliHALLv3(const char *name, const char *title) | |
59 | : AliHALL(name,title) | |
60 | { | |
61 | // | |
62 | // Standard constructor for the experimental Hall | |
63 | // | |
64 | ||
65 | } | |
66 | ||
67 | //_____________________________________________________________________________ | |
68 | void AliHALLv3::CreateGeometry() | |
69 | { | |
70 | // | |
71 | // Create the geometry of the exprimental hall | |
72 | // | |
73 | Float_t r2, dy; | |
74 | Float_t phid, phim, h, r; | |
75 | Float_t w1, dh, am, bm, dl,cm, hm, dr, dx, xl; | |
76 | Float_t hullen; | |
77 | Float_t phi; | |
78 | ||
79 | // The top volume | |
80 | // | |
81 | TGeoVolume* top = gGeoManager->GetVolume("ALIC"); | |
82 | TGeoVolumeAssembly* asHall = new TGeoVolumeAssembly("HALL"); | |
83 | ||
84 | // Rotations | |
85 | // rotation by 90 deg in the y-z plane | |
86 | TGeoRotation* rot000 = new TGeoRotation("rot000", 90., 0., 0., 0., 90., 90.); | |
87 | TGeoRotation* rot001 = new TGeoRotation("rot001", 270., 0., 90., 90., 0., 0.); | |
88 | ||
89 | // Materials | |
90 | TGeoMedium* kMedCC = gGeoManager->GetMedium("HALL_CC_C2"); | |
91 | TGeoMedium* kMedST = gGeoManager->GetMedium("HALL_STST_C2"); | |
ffb3970c | 92 | TGeoMedium* kMedAir = gGeoManager->GetMedium("HALL_AIR_C2"); |
93 | kMedST->Dump(); | |
94 | ||
257726e6 | 95 | // Floor thickness |
96 | Float_t dyFloor = 190.; | |
97 | // Floor width | |
98 | Float_t dxFloor = 1400.; | |
99 | // Floor level | |
100 | Float_t yFloor = -801.; | |
101 | // Pit centre | |
102 | Float_t zPit = 2300.; | |
103 | // Pit radius | |
104 | Float_t rPit = 1140.; | |
105 | // Hall end | |
106 | Float_t zHall24 = 1700.; | |
107 | Float_t zHall26 = 1900.; | |
108 | // Overlap between hall and pit radius | |
109 | Float_t oPit = zHall24 - (zPit - rPit); | |
110 | // Length of the L3 floor | |
111 | Float_t dzL3 = 1700.; | |
112 | // Start of hall roof in y | |
113 | Float_t yHall = 500.; | |
114 | // Radius of the hall roof | |
115 | Float_t rHall = 1070.; | |
116 | // | |
117 | Float_t epsBig = 100.; | |
118 | Float_t epsSmall = 1.; | |
119 | ||
120 | ||
121 | ||
122 | // | |
123 | // RB24/26 Tunnel Floor | |
124 | r = 220.; | |
125 | h = 140.; | |
126 | phi = TMath::ACos(h / r); | |
127 | xl = r * TMath::Sin(phi); | |
128 | dr = 1600.; | |
129 | dh = dr * TMath::Cos(phi); | |
130 | dl = dr * TMath::Sin(phi); | |
131 | if (gAlice->GetModule("ZDC") == 0) { | |
132 | // No ZDC | |
133 | hullen = 370.; | |
134 | } else { | |
135 | ||
136 | // ZDC is present | |
137 | hullen = 6520.; | |
138 | } | |
139 | ||
140 | TGeoVolume* voHUFL = new TGeoVolume("HUFL", | |
141 | new TGeoTrd1(xl +dl, xl, hullen, dh / 2.), | |
142 | kMedCC); | |
143 | r2 = hullen + zHall26; | |
257726e6 | 144 | asHall->AddNode(voHUFL, 1, new TGeoCombiTrans(70., -100. - dh / 2., -r2, rot000)); |
ffb3970c | 145 | |
257726e6 | 146 | // |
147 | // RB24/26 wall | |
ffb3970c | 148 | phid = phi * kRaddeg; |
257726e6 | 149 | TGeoVolume* voHUWA = new TGeoVolume("HUWA", |
150 | new TGeoTubeSeg(r, r+dr, hullen, phid - 90., 270. - phid), | |
151 | kMedCC); | |
152 | asHall->AddNode(voHUWA, 1, new TGeoTranslation(70., 40., -zHall26 - hullen )); | |
ffb3970c | 153 | // |
154 | // Air inside tunnel | |
155 | TGeoTube* shHUWAT1 = new TGeoTube(0., r, hullen); | |
156 | shHUWAT1->SetName("shHUWAT1"); | |
157 | // | |
158 | // Space for ZDC | |
159 | TGeoBBox* shHUWAT2 = new TGeoBBox(70., 110., hullen + 20.); | |
160 | shHUWAT2->SetName("shHUWAT2"); | |
161 | TGeoTranslation* tHUWAT2 = new TGeoTranslation("tHUWAT2", -70., -30., 0.); | |
162 | tHUWAT2->RegisterYourself(); | |
163 | ||
164 | TGeoBBox* shHUWAT3 = new TGeoBBox(270., 110., hullen + 20.); | |
165 | shHUWAT3->SetName("shHUWAT3"); | |
166 | TGeoTranslation* tHUWAT3 = new TGeoTranslation("tHUWAT3", 0., -110. - 140., 0.); | |
167 | tHUWAT3->RegisterYourself(); | |
168 | ||
169 | TGeoCompositeShape* shHUWAT = new TGeoCompositeShape("HUWAT", "(shHUWAT1-shHUWAT2:tHUWAT2)-shHUWAT3:tHUWAT3"); | |
170 | TGeoVolume* voHUWAT = new TGeoVolume("HUWAT", shHUWAT, kMedAir); | |
171 | asHall->AddNode(voHUWAT, 1, new TGeoTranslation(70., 40., -zHall26 - hullen)); | |
172 | ||
257726e6 | 173 | // |
174 | // Hall floor | |
175 | // RB26 side | |
176 | phid = 16.197; | |
177 | Float_t dzFloor26 = zHall26 - dzL3/2.; | |
178 | TGeoBBox* shHHF1 = new TGeoBBox(dxFloor/2. + 470., dyFloor/2., dzFloor26/2.); | |
179 | shHHF1->SetName("shHHF1"); | |
180 | TGeoVolume* voHHF1 = new TGeoVolume("HHF1", shHHF1, kMedCC); | |
181 | asHall->AddNode(voHHF1, 2, new TGeoTranslation(0., yFloor, -(dzL3/2. + dzFloor26/2.))); | |
182 | // RB24 side | |
183 | Float_t dzFloor24 = zHall24 - dzL3/2.; | |
184 | TGeoBBox* shHHF41 = new TGeoBBox(dxFloor/2. + 470., dyFloor/2., dzFloor24/2.); | |
185 | shHHF41->SetName("shHHF41"); | |
186 | TGeoTube* shHHF42 = new TGeoTube(0., rPit + epsBig, dyFloor/2.); | |
187 | shHHF42->SetName("shHHF42"); | |
188 | TGeoCombiTrans* trHHF42 = new TGeoCombiTrans("trHHF42", 0., 0., dzFloor24/2. + rPit - oPit, rot000); | |
189 | trHHF42->RegisterYourself(); | |
190 | ||
191 | TGeoCompositeShape* shHHF4 = new TGeoCompositeShape("HHF4", "shHHF41+shHHF42:trHHF42"); | |
192 | TGeoVolume* voHHF4 = new TGeoVolume("HHF4", shHHF4, kMedCC); | |
193 | asHall->AddNode(voHHF4, 1, new TGeoTranslation(0., yFloor, dzL3/2. + dzFloor24/2.)); | |
194 | ||
195 | ||
196 | // | |
197 | // Hall side walls | |
198 | Float_t trH1 = (1273.78 - dyFloor)/ 2.; | |
199 | Float_t trBL1 = 207.3; | |
200 | Float_t trTL1 = 50.; | |
201 | Float_t trALP1 = TMath::ATan((trBL1 - trTL1) / 2. / trH1) * kRaddeg; | |
202 | dx = 1.5 * trBL1 - 0.5 * trTL1 + dxFloor/2. + dyFloor * TMath::Tan(phid * kDegrad); | |
203 | TGeoVolume* voHHW11 = new TGeoVolume("HHW11", | |
204 | new TGeoTrap(dzFloor26/2., 0., 0., | |
205 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
206 | kMedCC); | |
207 | TGeoVolume* voHHW12 = new TGeoVolume("HHW12", | |
208 | new TGeoTrap(dzFloor24/2., 0., 0., | |
209 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
210 | kMedCC); | |
211 | ||
212 | dy = yFloor + dyFloor/2. + trH1; | |
213 | ||
214 | asHall->AddNode(voHHW12, 1, new TGeoTranslation( dx, dy, (dzL3/2. + dzFloor24/2.))); | |
215 | asHall->AddNode(voHHW12, 2, new TGeoCombiTrans (-dx, dy, (dzL3/2. + dzFloor24/2.), rot001)); | |
216 | asHall->AddNode(voHHW11, 3, new TGeoTranslation( dx, dy, -(dzL3/2. + dzFloor26/2.))); | |
217 | asHall->AddNode(voHHW11, 4, new TGeoCombiTrans (-dx, dy, -(dzL3/2. + dzFloor26/2.), rot001)); | |
218 | ||
219 | Float_t boDY = (yHall - (yFloor + dyFloor/2.) - 2. * trH1)/ 2.; | |
220 | Float_t dzHall = zHall26 + zHall24; | |
221 | ||
222 | TGeoVolume* voHBW1 = new TGeoVolume("HBW1", new TGeoBBox(50., boDY, dzHall / 2.), kMedCC); | |
223 | ||
224 | asHall->AddNode(voHBW1, 1, new TGeoTranslation( 1120., yHall - boDY, (zHall24-zHall26)/2.)); | |
225 | asHall->AddNode(voHBW1, 2, new TGeoTranslation(-1120., yHall - boDY, (zHall24-zHall26)/2.)); | |
226 | ||
227 | // | |
228 | // Slanted wall close to L3 magnet | |
ffb3970c | 229 | // |
257726e6 | 230 | phim = 45.; |
231 | hm = 790.; | |
232 | am = hm * TMath::Tan(phim / 2. * kDegrad); | |
233 | bm = (hm + 76.) / hm * am; | |
234 | cm = bm * 2. / TMath::Sqrt(2.); | |
235 | trH1 = (1273.78 - cm) / 2.; | |
236 | trBL1 = 235. - cm * TMath::Tan(phid * kDegrad) / 2.; | |
237 | trTL1 = 50.; | |
238 | trALP1 = TMath::ATan((trBL1 - trTL1) / 2. / trH1) * kRaddeg; | |
239 | ||
240 | w1 = trBL1; | |
241 | dx = cm * TMath::Tan(phid * kDegrad) + dxFloor/2. + trBL1 * 1.5 - trTL1 * .5; | |
242 | ||
243 | TGeoVolume* voHHW2 = new TGeoVolume("HHW2", | |
244 | new TGeoTrap(dzL3/2., 0., 0., | |
245 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
246 | kMedCC); | |
247 | ||
248 | r2 = cm + yFloor - dyFloor/2. + trH1; | |
249 | ||
250 | asHall->AddNode(voHHW2, 1, new TGeoTranslation(dx, r2, 0.)); | |
251 | asHall->AddNode(voHHW2, 2, new TGeoCombiTrans(-dx, r2, 0., rot001)); | |
252 | ||
253 | trH1 = cm / 2.; | |
254 | trBL1 = w1 + cm / 2.; | |
255 | trTL1 = w1; | |
256 | trALP1 = TMath::ATan(.5) * kRaddeg; | |
257 | dx = 1170. - trBL1 * .5 - trTL1 * .5; | |
258 | ||
259 | TGeoVolume* voHHW3 = new TGeoVolume("HHW3", | |
260 | new TGeoTrap(dzL3/2., 0., 0., | |
261 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
262 | kMedCC); | |
263 | ||
264 | r2 = trH1 - 896.; | |
265 | asHall->AddNode(voHHW3, 1, new TGeoTranslation( dx, r2, 0.)); | |
266 | asHall->AddNode(voHHW3, 2, new TGeoCombiTrans (-dx, r2, 0., rot001)); | |
267 | // | |
268 | // Floor L3 | |
269 | Float_t dyFloorL3 = 76.; | |
270 | Float_t dx1FloorL3 = rHall + epsBig - 2. * trBL1; | |
271 | Float_t dx2FloorL3 = dx1FloorL3 + TMath::Tan(phim * kDegrad) * dyFloorL3; | |
272 | ||
273 | ||
274 | TGeoVolume* voHHF2 = new TGeoVolume("HHF2", | |
275 | new TGeoTrd1(dx1FloorL3, dx2FloorL3, dzL3/2., dyFloorL3/2.), | |
276 | kMedCC); | |
277 | ||
278 | asHall->AddNode(voHHF2, 1, new TGeoCombiTrans(0., yFloor - dyFloor / 2. + dyFloorL3 / 2.,0., rot000)); | |
279 | // | |
280 | // Tunnel roof and pit | |
281 | // Roof | |
282 | TGeoTubeSeg* shHHC11 = new TGeoTubeSeg(rHall, rHall + 100., dzHall / 2., 0., 180.); | |
283 | shHHC11->SetName("shHHC11"); | |
284 | // Pit | |
285 | TGeoTube* shHHC12 = new TGeoTube(rPit, rPit + 100., 1000.); | |
286 | shHHC12->SetName("shHHC12"); | |
287 | // Pit inside | |
288 | TGeoTube* shHHC13 = new TGeoTube( 0, rPit - epsSmall, 1000.); | |
289 | shHHC13->SetName("shHHC13"); | |
290 | // Roof inside | |
291 | TGeoTubeSeg* shHHC14 = new TGeoTubeSeg(0., rHall, dzHall / 2. + epsBig, 0., 180.); | |
292 | shHHC14->SetName("shHHC14"); | |
293 | ||
294 | TGeoCombiTrans* trHHC = new TGeoCombiTrans("trHHC", 0., 1000., dzHall/2. + rPit - oPit, rot000); | |
295 | trHHC->RegisterYourself(); | |
296 | TGeoCompositeShape* shHHC1 = new TGeoCompositeShape("HHC1", "shHHC11+shHHC12:trHHC-(shHHC14+shHHC13:trHHC)"); | |
297 | TGeoVolume* voHHC1 = new TGeoVolume("HHC1", shHHC1, kMedCC); | |
298 | ||
299 | asHall->AddNode(voHHC1, 1, new TGeoTranslation(0., yHall, -(zHall26-zHall24)/2.)); | |
300 | ||
301 | ||
302 | // | |
303 | // Pit wall ground level | |
304 | TGeoTube* shHHCPW1 = new TGeoTube(rPit, rPit + 100., 1206./2.); | |
305 | shHHCPW1->SetName("shHHCPW1"); | |
306 | TGeoCombiTrans* trHHCPW1 = new TGeoCombiTrans("trHHCPW1", 0., 0., 0., rot000); | |
307 | trHHCPW1->RegisterYourself(); | |
308 | ||
309 | TGeoBBox* shHHCPW2 = new TGeoBBox(rPit + 100., 1206./ 2. + 20., rPit + 100.); | |
310 | shHHCPW2->SetName("shHHCPW2"); | |
311 | ||
312 | ||
313 | TGeoTranslation* trHHCPW2 = new TGeoTranslation("trHHCPW2", 0., 0., -(rPit + 100.) - oPit); | |
314 | trHHCPW2->RegisterYourself(); | |
315 | ||
316 | TGeoCompositeShape* shHHCPW = new TGeoCompositeShape("HHCPW", "shHHCPW1:trHHCPW1-shHHCPW2:trHHCPW2"); | |
317 | TGeoVolume* voHHCPW = new TGeoVolume("HHCPW", shHHCPW, kMedCC); | |
318 | dy = yFloor + 1206. / 2. + dyFloor/2.; | |
319 | asHall->AddNode(voHHCPW, 1, new TGeoTranslation(0., dy, 2300.)); | |
320 | // | |
321 | // Foundations of the Muon Spectrometer | |
322 | // Drawing ALIP2A_0110 | |
323 | // | |
324 | TGeoVolumeAssembly* asFMS = new TGeoVolumeAssembly("asFMS"); | |
325 | Float_t zFil = -1465.86 - 60.; | |
326 | // Muon Filter Foundation | |
327 | // Pillars | |
328 | dy = 263.54/2.; | |
329 | Float_t ys = yFloor + dyFloor / 2.; | |
330 | TGeoVolume* voFmsMfPil = new TGeoVolume("FmsMfPil", new TGeoBBox( 50., dy, 165.), kMedCC); | |
331 | ys += dy; | |
332 | asFMS->AddNode(voFmsMfPil, 1, new TGeoTranslation(-330. + 50., ys, zFil + 165. - 90.)); | |
333 | asFMS->AddNode(voFmsMfPil, 2, new TGeoTranslation( 330. - 50., ys, zFil + 165 - 90.)); | |
334 | // | |
335 | // Transverse bars | |
336 | ys += dy; | |
337 | dy = 126.46/2.; | |
338 | ys += dy; | |
339 | TGeoVolume* voFmsMfTb1 = new TGeoVolume("FmsMfTb1", new TGeoBBox(330., dy, 90.), kMedCC); | |
340 | asFMS->AddNode(voFmsMfTb1, 1, new TGeoTranslation(0., ys, zFil)); | |
341 | ys += dy; | |
342 | dy = 41.14/2.; | |
343 | ys += dy; | |
344 | TGeoVolume* voFmsMfTb2 = new TGeoVolume("FmsMfTb2", new TGeoBBox(330., dy, 60.), kMedCC); | |
345 | asFMS->AddNode(voFmsMfTb2, 1, new TGeoTranslation(0., ys, zFil)); | |
346 | // | |
347 | // Dipole foundation | |
348 | ys = yFloor + dyFloor / 2.; | |
349 | dy = 263.54/2; | |
350 | ys += dy; | |
351 | TGeoVolume* voFmsDf1 = new TGeoVolume("FmsDf1", new TGeoBBox(370., dy, 448.0 / 2.), kMedCC); | |
352 | asFMS->AddNode(voFmsDf1, 1, new TGeoTranslation(0., ys, zFil + 240. + 224.)); | |
353 | TGeoVolume* voFmsDf2 = new TGeoVolume("FmsDf2", new TGeoBBox(370., (263.54 + 110.)/2., 112.0 / 2.), kMedCC); | |
354 | asFMS->AddNode(voFmsDf2, 1, new TGeoTranslation(0., ys - 110./2., zFil + 688. + 56.)); | |
355 | ||
356 | // | |
357 | // Shielding in front of L3 magnet in PX24 and UX25 | |
358 | // Drawing ALIP2I__0016 | |
359 | // | |
360 | ||
361 | TGeoVolumeAssembly* asShRb24 = new TGeoVolumeAssembly("ShRb24"); | |
362 | // | |
363 | // Side walls | |
364 | // start 7450 from IP | |
365 | TGeoVolume* voShRb24Sw = new TGeoVolume("ShRb24Sw", new TGeoBBox(80., 420., 520.), kMedCC); | |
366 | asShRb24->AddNode(voShRb24Sw, 1, new TGeoTranslation(+315, -420. + 140., 0.)); | |
367 | asShRb24->AddNode(voShRb24Sw, 2, new TGeoTranslation(-315, -420. + 140., 0.)); | |
368 | // | |
369 | // Roof | |
370 | TGeoVolume* voShRb24Ro = new TGeoVolume("ShRb24Ro", new TGeoBBox(395., 80., 520.), kMedCC); | |
371 | asShRb24->AddNode(voShRb24Ro, 1, new TGeoTranslation(0., +80. + 140., 0.)); | |
372 | // | |
373 | // Plug | |
374 | TGeoBBox* shShRb24Pl1 = new TGeoBBox(235., 140., 40.); | |
375 | shShRb24Pl1->SetName("ShRb24Pl1"); | |
376 | // | |
377 | // Opening for beam pipe | |
378 | TGeoBBox* shShRb24Pl2 = new TGeoBBox(15., 20., 60.); | |
379 | shShRb24Pl2->SetName("ShRb24Pl2"); | |
380 | // | |
381 | // Opening for tubes | |
382 | TGeoBBox* shShRb24Pl3 = new TGeoBBox(20., 60., 60.); | |
383 | shShRb24Pl3->SetName("ShRb24Pl3"); | |
384 | ||
385 | TGeoTranslation* trPl3 = new TGeoTranslation("trPl3", +235. -90., 80., 0.); | |
386 | trPl3->RegisterYourself(); | |
387 | TGeoCompositeShape* shRb24Pl = new TGeoCompositeShape("Rb24Pl", "ShRb24Pl1-(ShRb24Pl2+ShRb24Pl3:trPl3)"); | |
388 | TGeoVolume* voRb24Pl = new TGeoVolume("Rb24Pl", shRb24Pl, kMedCC); | |
389 | asShRb24->AddNode(voRb24Pl, 1, new TGeoTranslation(0., 0., 520. - 40.)); | |
390 | ||
391 | // | |
392 | // Concrete platform and shielding PX24 | |
393 | // Drawing LHCJUX 250014 | |
394 | // | |
395 | TGeoVolumeAssembly* asShPx24 = new TGeoVolumeAssembly("ShPx24"); | |
396 | // Platform | |
397 | TGeoVolume* voShPx24Pl = new TGeoVolume("ShPx24Pl", new TGeoBBox(1613.5/2., 120./2., 1205./2.), kMedCC); | |
398 | asShPx24->AddNode(voShPx24Pl, 1, new TGeoTranslation(55., -140. - 60., 0.)); | |
399 | // Pillars | |
400 | TGeoVolume* voShPx24Pi = new TGeoVolume("ShPx24Pi", new TGeoBBox(160./2., 440./2., 40/2.), kMedCC); | |
401 | asShPx24->AddNode(voShPx24Pi, 1, new TGeoTranslation(-180. - 80., -220. -260., 1205./2. - 20.)); | |
402 | asShPx24->AddNode(voShPx24Pi, 2, new TGeoTranslation(+290. + 80., -220. -260., 1205./2. - 20.)); | |
403 | asShPx24->AddNode(voShPx24Pi, 3, new TGeoTranslation(-180. - 80., -220. -260., -1205./2. + 20. + 120.)); | |
404 | asShPx24->AddNode(voShPx24Pi, 4, new TGeoTranslation(+290. + 80., -220. -260., -1205./2. + 20. + 120.)); | |
405 | asShPx24->AddNode(voShPx24Pi, 5, new TGeoTranslation(-180. - 80., -220. -260., -1205./2. - 20. + 480.)); | |
406 | asShPx24->AddNode(voShPx24Pi, 6, new TGeoTranslation(+290. + 80., -220. -260., -1205./2. - 20. + 480.)); | |
407 | asShPx24->AddNode(voShPx24Pi, 7, new TGeoTranslation(-180. - 80., -220. -260., -1205./2. - 20. + 800.)); | |
408 | asShPx24->AddNode(voShPx24Pi, 8, new TGeoTranslation(+290. + 80., -220. -260., -1205./2. - 20. + 800.)); | |
409 | // Side Walls | |
410 | TGeoVolume* voShPx24Sw = new TGeoVolume("ShPx24Sw", new TGeoBBox(160./2., 280./2., 1205./2.), kMedCC); | |
411 | asShPx24->AddNode(voShPx24Sw, 1, new TGeoTranslation(-180, 0., 0.)); | |
412 | asShPx24->AddNode(voShPx24Sw, 2, new TGeoTranslation(+290, 0., 0.)); | |
413 | // Roof | |
414 | TGeoVolume* voShPx24Ro = new TGeoVolume("ShPx24Ro", new TGeoBBox(630./2., 160./2., 1205./2.), kMedCC); | |
415 | asShPx24->AddNode(voShPx24Ro, 1, new TGeoTranslation(55., 80.+ 140., 0.)); | |
416 | asHall->AddNode(asShRb24, 1, new TGeoTranslation(0., 0., +745. + 520.)); | |
417 | asHall->AddNode(asShPx24, 1, new TGeoTranslation(0., 0., +745. + 1040. + 1205./ 2.)); | |
418 | // Stainless Steel Plug 80 cm thick | |
419 | TGeoBBox* shShPx24Pl1 = new TGeoBBox(155., 140., 40.); | |
420 | shShPx24Pl1->SetName("ShPx24Pl1"); | |
421 | // Opening for beam pipe | |
422 | TGeoBBox* shShPx24Pl2 = new TGeoBBox(15., 20., 60.); | |
423 | shShPx24Pl2->SetName("ShPx24Pl2"); | |
424 | TGeoCompositeShape* shPx24Pl = new TGeoCompositeShape("Px24Pl", "ShPx24Pl1-ShPx24Pl2"); | |
425 | TGeoVolume* voPx24Pl = new TGeoVolume("Px24Pl", shPx24Pl, kMedST); | |
426 | asShPx24->AddNode(voPx24Pl, 1, new TGeoTranslation(55., 0., -1205./2. + 40.)); | |
427 | asHall->AddNode(asFMS, 1, new TGeoTranslation(0., 0., 0.)); | |
428 | ||
429 | // | |
430 | top->AddNode(asHall, 1, gGeoIdentity); | |
431 | ||
432 | } |