]>
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 | |
a8241b4f | 86 | TGeoRotation* rot000 = new TGeoRotation("rot000", 90., 0.,180., 0., 90., 90.); |
87 | TGeoRotation* rot001 = new TGeoRotation("rot001", 270., 0., 90., 90., 180., 0.); | |
257726e6 | 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"); |
ffb3970c | 93 | |
257726e6 | 94 | // Floor thickness |
95 | Float_t dyFloor = 190.; | |
96 | // Floor width | |
97 | Float_t dxFloor = 1400.; | |
98 | // Floor level | |
99 | Float_t yFloor = -801.; | |
100 | // Pit centre | |
101 | Float_t zPit = 2300.; | |
102 | // Pit radius | |
103 | Float_t rPit = 1140.; | |
104 | // Hall end | |
105 | Float_t zHall24 = 1700.; | |
106 | Float_t zHall26 = 1900.; | |
107 | // Overlap between hall and pit radius | |
108 | Float_t oPit = zHall24 - (zPit - rPit); | |
109 | // Length of the L3 floor | |
110 | Float_t dzL3 = 1700.; | |
111 | // Start of hall roof in y | |
112 | Float_t yHall = 500.; | |
113 | // Radius of the hall roof | |
114 | Float_t rHall = 1070.; | |
115 | // | |
116 | Float_t epsBig = 100.; | |
117 | Float_t epsSmall = 1.; | |
118 | ||
119 | ||
120 | ||
121 | // | |
122 | // RB24/26 Tunnel Floor | |
123 | r = 220.; | |
124 | h = 140.; | |
125 | phi = TMath::ACos(h / r); | |
126 | xl = r * TMath::Sin(phi); | |
127 | dr = 1600.; | |
128 | dh = dr * TMath::Cos(phi); | |
129 | dl = dr * TMath::Sin(phi); | |
130 | if (gAlice->GetModule("ZDC") == 0) { | |
131 | // No ZDC | |
132 | hullen = 370.; | |
133 | } else { | |
134 | ||
135 | // ZDC is present | |
136 | hullen = 6520.; | |
137 | } | |
138 | ||
139 | TGeoVolume* voHUFL = new TGeoVolume("HUFL", | |
140 | new TGeoTrd1(xl +dl, xl, hullen, dh / 2.), | |
141 | kMedCC); | |
142 | r2 = hullen + zHall26; | |
257726e6 | 143 | asHall->AddNode(voHUFL, 1, new TGeoCombiTrans(70., -100. - dh / 2., -r2, rot000)); |
ffb3970c | 144 | |
257726e6 | 145 | // |
146 | // RB24/26 wall | |
ffb3970c | 147 | phid = phi * kRaddeg; |
257726e6 | 148 | TGeoVolume* voHUWA = new TGeoVolume("HUWA", |
149 | new TGeoTubeSeg(r, r+dr, hullen, phid - 90., 270. - phid), | |
150 | kMedCC); | |
151 | asHall->AddNode(voHUWA, 1, new TGeoTranslation(70., 40., -zHall26 - hullen )); | |
ffb3970c | 152 | // |
153 | // Air inside tunnel | |
154 | TGeoTube* shHUWAT1 = new TGeoTube(0., r, hullen); | |
155 | shHUWAT1->SetName("shHUWAT1"); | |
156 | // | |
157 | // Space for ZDC | |
158 | TGeoBBox* shHUWAT2 = new TGeoBBox(70., 110., hullen + 20.); | |
159 | shHUWAT2->SetName("shHUWAT2"); | |
160 | TGeoTranslation* tHUWAT2 = new TGeoTranslation("tHUWAT2", -70., -30., 0.); | |
161 | tHUWAT2->RegisterYourself(); | |
162 | ||
163 | TGeoBBox* shHUWAT3 = new TGeoBBox(270., 110., hullen + 20.); | |
164 | shHUWAT3->SetName("shHUWAT3"); | |
165 | TGeoTranslation* tHUWAT3 = new TGeoTranslation("tHUWAT3", 0., -110. - 140., 0.); | |
166 | tHUWAT3->RegisterYourself(); | |
167 | ||
168 | TGeoCompositeShape* shHUWAT = new TGeoCompositeShape("HUWAT", "(shHUWAT1-shHUWAT2:tHUWAT2)-shHUWAT3:tHUWAT3"); | |
169 | TGeoVolume* voHUWAT = new TGeoVolume("HUWAT", shHUWAT, kMedAir); | |
170 | asHall->AddNode(voHUWAT, 1, new TGeoTranslation(70., 40., -zHall26 - hullen)); | |
171 | ||
257726e6 | 172 | // |
173 | // Hall floor | |
174 | // RB26 side | |
175 | phid = 16.197; | |
176 | Float_t dzFloor26 = zHall26 - dzL3/2.; | |
177 | TGeoBBox* shHHF1 = new TGeoBBox(dxFloor/2. + 470., dyFloor/2., dzFloor26/2.); | |
178 | shHHF1->SetName("shHHF1"); | |
179 | TGeoVolume* voHHF1 = new TGeoVolume("HHF1", shHHF1, kMedCC); | |
180 | asHall->AddNode(voHHF1, 2, new TGeoTranslation(0., yFloor, -(dzL3/2. + dzFloor26/2.))); | |
181 | // RB24 side | |
182 | Float_t dzFloor24 = zHall24 - dzL3/2.; | |
183 | TGeoBBox* shHHF41 = new TGeoBBox(dxFloor/2. + 470., dyFloor/2., dzFloor24/2.); | |
184 | shHHF41->SetName("shHHF41"); | |
185 | TGeoTube* shHHF42 = new TGeoTube(0., rPit + epsBig, dyFloor/2.); | |
186 | shHHF42->SetName("shHHF42"); | |
187 | TGeoCombiTrans* trHHF42 = new TGeoCombiTrans("trHHF42", 0., 0., dzFloor24/2. + rPit - oPit, rot000); | |
188 | trHHF42->RegisterYourself(); | |
189 | ||
190 | TGeoCompositeShape* shHHF4 = new TGeoCompositeShape("HHF4", "shHHF41+shHHF42:trHHF42"); | |
191 | TGeoVolume* voHHF4 = new TGeoVolume("HHF4", shHHF4, kMedCC); | |
192 | asHall->AddNode(voHHF4, 1, new TGeoTranslation(0., yFloor, dzL3/2. + dzFloor24/2.)); | |
193 | ||
194 | ||
195 | // | |
196 | // Hall side walls | |
197 | Float_t trH1 = (1273.78 - dyFloor)/ 2.; | |
198 | Float_t trBL1 = 207.3; | |
199 | Float_t trTL1 = 50.; | |
200 | Float_t trALP1 = TMath::ATan((trBL1 - trTL1) / 2. / trH1) * kRaddeg; | |
201 | dx = 1.5 * trBL1 - 0.5 * trTL1 + dxFloor/2. + dyFloor * TMath::Tan(phid * kDegrad); | |
202 | TGeoVolume* voHHW11 = new TGeoVolume("HHW11", | |
203 | new TGeoTrap(dzFloor26/2., 0., 0., | |
204 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
205 | kMedCC); | |
206 | TGeoVolume* voHHW12 = new TGeoVolume("HHW12", | |
207 | new TGeoTrap(dzFloor24/2., 0., 0., | |
208 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
209 | kMedCC); | |
210 | ||
211 | dy = yFloor + dyFloor/2. + trH1; | |
212 | ||
213 | asHall->AddNode(voHHW12, 1, new TGeoTranslation( dx, dy, (dzL3/2. + dzFloor24/2.))); | |
214 | asHall->AddNode(voHHW12, 2, new TGeoCombiTrans (-dx, dy, (dzL3/2. + dzFloor24/2.), rot001)); | |
215 | asHall->AddNode(voHHW11, 3, new TGeoTranslation( dx, dy, -(dzL3/2. + dzFloor26/2.))); | |
216 | asHall->AddNode(voHHW11, 4, new TGeoCombiTrans (-dx, dy, -(dzL3/2. + dzFloor26/2.), rot001)); | |
217 | ||
218 | Float_t boDY = (yHall - (yFloor + dyFloor/2.) - 2. * trH1)/ 2.; | |
219 | Float_t dzHall = zHall26 + zHall24; | |
220 | ||
221 | TGeoVolume* voHBW1 = new TGeoVolume("HBW1", new TGeoBBox(50., boDY, dzHall / 2.), kMedCC); | |
222 | ||
223 | asHall->AddNode(voHBW1, 1, new TGeoTranslation( 1120., yHall - boDY, (zHall24-zHall26)/2.)); | |
224 | asHall->AddNode(voHBW1, 2, new TGeoTranslation(-1120., yHall - boDY, (zHall24-zHall26)/2.)); | |
225 | ||
226 | // | |
227 | // Slanted wall close to L3 magnet | |
ffb3970c | 228 | // |
257726e6 | 229 | phim = 45.; |
230 | hm = 790.; | |
231 | am = hm * TMath::Tan(phim / 2. * kDegrad); | |
232 | bm = (hm + 76.) / hm * am; | |
233 | cm = bm * 2. / TMath::Sqrt(2.); | |
234 | trH1 = (1273.78 - cm) / 2.; | |
235 | trBL1 = 235. - cm * TMath::Tan(phid * kDegrad) / 2.; | |
236 | trTL1 = 50.; | |
237 | trALP1 = TMath::ATan((trBL1 - trTL1) / 2. / trH1) * kRaddeg; | |
238 | ||
239 | w1 = trBL1; | |
240 | dx = cm * TMath::Tan(phid * kDegrad) + dxFloor/2. + trBL1 * 1.5 - trTL1 * .5; | |
241 | ||
242 | TGeoVolume* voHHW2 = new TGeoVolume("HHW2", | |
243 | new TGeoTrap(dzL3/2., 0., 0., | |
244 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
245 | kMedCC); | |
246 | ||
247 | r2 = cm + yFloor - dyFloor/2. + trH1; | |
248 | ||
249 | asHall->AddNode(voHHW2, 1, new TGeoTranslation(dx, r2, 0.)); | |
250 | asHall->AddNode(voHHW2, 2, new TGeoCombiTrans(-dx, r2, 0., rot001)); | |
251 | ||
252 | trH1 = cm / 2.; | |
253 | trBL1 = w1 + cm / 2.; | |
254 | trTL1 = w1; | |
255 | trALP1 = TMath::ATan(.5) * kRaddeg; | |
256 | dx = 1170. - trBL1 * .5 - trTL1 * .5; | |
257 | ||
258 | TGeoVolume* voHHW3 = new TGeoVolume("HHW3", | |
259 | new TGeoTrap(dzL3/2., 0., 0., | |
260 | trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1), | |
261 | kMedCC); | |
262 | ||
263 | r2 = trH1 - 896.; | |
264 | asHall->AddNode(voHHW3, 1, new TGeoTranslation( dx, r2, 0.)); | |
265 | asHall->AddNode(voHHW3, 2, new TGeoCombiTrans (-dx, r2, 0., rot001)); | |
266 | // | |
267 | // Floor L3 | |
268 | Float_t dyFloorL3 = 76.; | |
269 | Float_t dx1FloorL3 = rHall + epsBig - 2. * trBL1; | |
270 | Float_t dx2FloorL3 = dx1FloorL3 + TMath::Tan(phim * kDegrad) * dyFloorL3; | |
271 | ||
272 | ||
273 | TGeoVolume* voHHF2 = new TGeoVolume("HHF2", | |
274 | new TGeoTrd1(dx1FloorL3, dx2FloorL3, dzL3/2., dyFloorL3/2.), | |
275 | kMedCC); | |
276 | ||
277 | asHall->AddNode(voHHF2, 1, new TGeoCombiTrans(0., yFloor - dyFloor / 2. + dyFloorL3 / 2.,0., rot000)); | |
278 | // | |
279 | // Tunnel roof and pit | |
280 | // Roof | |
281 | TGeoTubeSeg* shHHC11 = new TGeoTubeSeg(rHall, rHall + 100., dzHall / 2., 0., 180.); | |
282 | shHHC11->SetName("shHHC11"); | |
283 | // Pit | |
284 | TGeoTube* shHHC12 = new TGeoTube(rPit, rPit + 100., 1000.); | |
285 | shHHC12->SetName("shHHC12"); | |
286 | // Pit inside | |
287 | TGeoTube* shHHC13 = new TGeoTube( 0, rPit - epsSmall, 1000.); | |
288 | shHHC13->SetName("shHHC13"); | |
289 | // Roof inside | |
290 | TGeoTubeSeg* shHHC14 = new TGeoTubeSeg(0., rHall, dzHall / 2. + epsBig, 0., 180.); | |
291 | shHHC14->SetName("shHHC14"); | |
292 | ||
293 | TGeoCombiTrans* trHHC = new TGeoCombiTrans("trHHC", 0., 1000., dzHall/2. + rPit - oPit, rot000); | |
294 | trHHC->RegisterYourself(); | |
295 | TGeoCompositeShape* shHHC1 = new TGeoCompositeShape("HHC1", "shHHC11+shHHC12:trHHC-(shHHC14+shHHC13:trHHC)"); | |
296 | TGeoVolume* voHHC1 = new TGeoVolume("HHC1", shHHC1, kMedCC); | |
297 | ||
298 | asHall->AddNode(voHHC1, 1, new TGeoTranslation(0., yHall, -(zHall26-zHall24)/2.)); | |
299 | ||
300 | ||
301 | // | |
302 | // Pit wall ground level | |
303 | TGeoTube* shHHCPW1 = new TGeoTube(rPit, rPit + 100., 1206./2.); | |
304 | shHHCPW1->SetName("shHHCPW1"); | |
305 | TGeoCombiTrans* trHHCPW1 = new TGeoCombiTrans("trHHCPW1", 0., 0., 0., rot000); | |
306 | trHHCPW1->RegisterYourself(); | |
307 | ||
308 | TGeoBBox* shHHCPW2 = new TGeoBBox(rPit + 100., 1206./ 2. + 20., rPit + 100.); | |
309 | shHHCPW2->SetName("shHHCPW2"); | |
310 | ||
311 | ||
312 | TGeoTranslation* trHHCPW2 = new TGeoTranslation("trHHCPW2", 0., 0., -(rPit + 100.) - oPit); | |
313 | trHHCPW2->RegisterYourself(); | |
314 | ||
315 | TGeoCompositeShape* shHHCPW = new TGeoCompositeShape("HHCPW", "shHHCPW1:trHHCPW1-shHHCPW2:trHHCPW2"); | |
316 | TGeoVolume* voHHCPW = new TGeoVolume("HHCPW", shHHCPW, kMedCC); | |
317 | dy = yFloor + 1206. / 2. + dyFloor/2.; | |
318 | asHall->AddNode(voHHCPW, 1, new TGeoTranslation(0., dy, 2300.)); | |
319 | // | |
320 | // Foundations of the Muon Spectrometer | |
321 | // Drawing ALIP2A_0110 | |
322 | // | |
323 | TGeoVolumeAssembly* asFMS = new TGeoVolumeAssembly("asFMS"); | |
324 | Float_t zFil = -1465.86 - 60.; | |
325 | // Muon Filter Foundation | |
326 | // Pillars | |
327 | dy = 263.54/2.; | |
328 | Float_t ys = yFloor + dyFloor / 2.; | |
329 | TGeoVolume* voFmsMfPil = new TGeoVolume("FmsMfPil", new TGeoBBox( 50., dy, 165.), kMedCC); | |
330 | ys += dy; | |
331 | asFMS->AddNode(voFmsMfPil, 1, new TGeoTranslation(-330. + 50., ys, zFil + 165. - 90.)); | |
332 | asFMS->AddNode(voFmsMfPil, 2, new TGeoTranslation( 330. - 50., ys, zFil + 165 - 90.)); | |
333 | // | |
334 | // Transverse bars | |
335 | ys += dy; | |
b8bb2f2a | 336 | dy = 91.32/2.; |
257726e6 | 337 | ys += dy; |
338 | TGeoVolume* voFmsMfTb1 = new TGeoVolume("FmsMfTb1", new TGeoBBox(330., dy, 90.), kMedCC); | |
339 | asFMS->AddNode(voFmsMfTb1, 1, new TGeoTranslation(0., ys, zFil)); | |
340 | ys += dy; | |
341 | dy = 41.14/2.; | |
342 | ys += dy; | |
343 | TGeoVolume* voFmsMfTb2 = new TGeoVolume("FmsMfTb2", new TGeoBBox(330., dy, 60.), kMedCC); | |
344 | asFMS->AddNode(voFmsMfTb2, 1, new TGeoTranslation(0., ys, zFil)); | |
345 | // | |
346 | // Dipole foundation | |
347 | ys = yFloor + dyFloor / 2.; | |
348 | dy = 263.54/2; | |
349 | ys += dy; | |
350 | TGeoVolume* voFmsDf1 = new TGeoVolume("FmsDf1", new TGeoBBox(370., dy, 448.0 / 2.), kMedCC); | |
351 | asFMS->AddNode(voFmsDf1, 1, new TGeoTranslation(0., ys, zFil + 240. + 224.)); | |
352 | TGeoVolume* voFmsDf2 = new TGeoVolume("FmsDf2", new TGeoBBox(370., (263.54 + 110.)/2., 112.0 / 2.), kMedCC); | |
353 | asFMS->AddNode(voFmsDf2, 1, new TGeoTranslation(0., ys - 110./2., zFil + 688. + 56.)); | |
354 | ||
355 | // | |
356 | // Shielding in front of L3 magnet in PX24 and UX25 | |
357 | // Drawing ALIP2I__0016 | |
358 | // | |
359 | ||
360 | TGeoVolumeAssembly* asShRb24 = new TGeoVolumeAssembly("ShRb24"); | |
361 | // | |
362 | // Side walls | |
363 | // start 7450 from IP | |
364 | TGeoVolume* voShRb24Sw = new TGeoVolume("ShRb24Sw", new TGeoBBox(80., 420., 520.), kMedCC); | |
365 | asShRb24->AddNode(voShRb24Sw, 1, new TGeoTranslation(+315, -420. + 140., 0.)); | |
366 | asShRb24->AddNode(voShRb24Sw, 2, new TGeoTranslation(-315, -420. + 140., 0.)); | |
367 | // | |
368 | // Roof | |
369 | TGeoVolume* voShRb24Ro = new TGeoVolume("ShRb24Ro", new TGeoBBox(395., 80., 520.), kMedCC); | |
370 | asShRb24->AddNode(voShRb24Ro, 1, new TGeoTranslation(0., +80. + 140., 0.)); | |
371 | // | |
372 | // Plug | |
373 | TGeoBBox* shShRb24Pl1 = new TGeoBBox(235., 140., 40.); | |
374 | shShRb24Pl1->SetName("ShRb24Pl1"); | |
375 | // | |
376 | // Opening for beam pipe | |
377 | TGeoBBox* shShRb24Pl2 = new TGeoBBox(15., 20., 60.); | |
378 | shShRb24Pl2->SetName("ShRb24Pl2"); | |
379 | // | |
380 | // Opening for tubes | |
381 | TGeoBBox* shShRb24Pl3 = new TGeoBBox(20., 60., 60.); | |
382 | shShRb24Pl3->SetName("ShRb24Pl3"); | |
383 | ||
384 | TGeoTranslation* trPl3 = new TGeoTranslation("trPl3", +235. -90., 80., 0.); | |
385 | trPl3->RegisterYourself(); | |
386 | TGeoCompositeShape* shRb24Pl = new TGeoCompositeShape("Rb24Pl", "ShRb24Pl1-(ShRb24Pl2+ShRb24Pl3:trPl3)"); | |
387 | TGeoVolume* voRb24Pl = new TGeoVolume("Rb24Pl", shRb24Pl, kMedCC); | |
388 | asShRb24->AddNode(voRb24Pl, 1, new TGeoTranslation(0., 0., 520. - 40.)); | |
389 | ||
390 | // | |
391 | // Concrete platform and shielding PX24 | |
392 | // Drawing LHCJUX 250014 | |
393 | // | |
394 | TGeoVolumeAssembly* asShPx24 = new TGeoVolumeAssembly("ShPx24"); | |
395 | // Platform | |
396 | TGeoVolume* voShPx24Pl = new TGeoVolume("ShPx24Pl", new TGeoBBox(1613.5/2., 120./2., 1205./2.), kMedCC); | |
397 | asShPx24->AddNode(voShPx24Pl, 1, new TGeoTranslation(55., -140. - 60., 0.)); | |
398 | // Pillars | |
399 | TGeoVolume* voShPx24Pi = new TGeoVolume("ShPx24Pi", new TGeoBBox(160./2., 440./2., 40/2.), kMedCC); | |
400 | asShPx24->AddNode(voShPx24Pi, 1, new TGeoTranslation(-180. - 80., -220. -260., 1205./2. - 20.)); | |
401 | asShPx24->AddNode(voShPx24Pi, 2, new TGeoTranslation(+290. + 80., -220. -260., 1205./2. - 20.)); | |
402 | asShPx24->AddNode(voShPx24Pi, 3, new TGeoTranslation(-180. - 80., -220. -260., -1205./2. + 20. + 120.)); | |
403 | asShPx24->AddNode(voShPx24Pi, 4, new TGeoTranslation(+290. + 80., -220. -260., -1205./2. + 20. + 120.)); | |
404 | asShPx24->AddNode(voShPx24Pi, 5, new TGeoTranslation(-180. - 80., -220. -260., -1205./2. - 20. + 480.)); | |
405 | asShPx24->AddNode(voShPx24Pi, 6, new TGeoTranslation(+290. + 80., -220. -260., -1205./2. - 20. + 480.)); | |
406 | asShPx24->AddNode(voShPx24Pi, 7, new TGeoTranslation(-180. - 80., -220. -260., -1205./2. - 20. + 800.)); | |
407 | asShPx24->AddNode(voShPx24Pi, 8, new TGeoTranslation(+290. + 80., -220. -260., -1205./2. - 20. + 800.)); | |
408 | // Side Walls | |
409 | TGeoVolume* voShPx24Sw = new TGeoVolume("ShPx24Sw", new TGeoBBox(160./2., 280./2., 1205./2.), kMedCC); | |
410 | asShPx24->AddNode(voShPx24Sw, 1, new TGeoTranslation(-180, 0., 0.)); | |
411 | asShPx24->AddNode(voShPx24Sw, 2, new TGeoTranslation(+290, 0., 0.)); | |
412 | // Roof | |
413 | TGeoVolume* voShPx24Ro = new TGeoVolume("ShPx24Ro", new TGeoBBox(630./2., 160./2., 1205./2.), kMedCC); | |
414 | asShPx24->AddNode(voShPx24Ro, 1, new TGeoTranslation(55., 80.+ 140., 0.)); | |
415 | asHall->AddNode(asShRb24, 1, new TGeoTranslation(0., 0., +745. + 520.)); | |
416 | asHall->AddNode(asShPx24, 1, new TGeoTranslation(0., 0., +745. + 1040. + 1205./ 2.)); | |
417 | // Stainless Steel Plug 80 cm thick | |
418 | TGeoBBox* shShPx24Pl1 = new TGeoBBox(155., 140., 40.); | |
419 | shShPx24Pl1->SetName("ShPx24Pl1"); | |
420 | // Opening for beam pipe | |
421 | TGeoBBox* shShPx24Pl2 = new TGeoBBox(15., 20., 60.); | |
422 | shShPx24Pl2->SetName("ShPx24Pl2"); | |
423 | TGeoCompositeShape* shPx24Pl = new TGeoCompositeShape("Px24Pl", "ShPx24Pl1-ShPx24Pl2"); | |
424 | TGeoVolume* voPx24Pl = new TGeoVolume("Px24Pl", shPx24Pl, kMedST); | |
425 | asShPx24->AddNode(voPx24Pl, 1, new TGeoTranslation(55., 0., -1205./2. + 40.)); | |
426 | asHall->AddNode(asFMS, 1, new TGeoTranslation(0., 0., 0.)); | |
427 | ||
428 | // | |
429 | top->AddNode(asHall, 1, gGeoIdentity); | |
430 | ||
431 | } |