]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STRUCT/AliFRAMEv1.cxx
Added the entry for the IRST code checking utility
[u/mrichter/AliRoot.git] / STRUCT / AliFRAMEv1.cxx
CommitLineData
fe4da5cc 1///////////////////////////////////////////////////////////////////////////////
2// //
3// Space frame class //
4// //
5//Begin_Html
6/*
1439f98e 7<img src="picts/AliFRAMEClass.gif">
fe4da5cc 8*/
9//End_Html
10// //
11///////////////////////////////////////////////////////////////////////////////
12
13#include "AliFRAMEv1.h"
14#include "AliRun.h"
fe4da5cc 15
16ClassImp(AliFRAMEv1)
17
18//_____________________________________________________________________________
b8032157 19AliFRAMEv1::AliFRAMEv1()
fe4da5cc 20{
21 //
22 // Default constructor for space frame
23 //
24}
25
26//_____________________________________________________________________________
27AliFRAMEv1::AliFRAMEv1(const char *name, const char *title)
28 : AliFRAME(name,title)
29{
30 //
31 // Standard constructor for space frame
32 //
33}
34
35//_____________________________________________________________________________
36void AliFRAMEv1::CreateGeometry()
37{
38 //
39 // Create space frame geometry
40 //
41 //Begin_Html
42 /*
1439f98e 43 <img src="picts/AliFRAME.gif">
fe4da5cc 44 */
45 //End_Html
46 //Begin_Html
47 /*
1439f98e 48 <img src="picts/AliFRAMETree.gif">
fe4da5cc 49 */
50 //End_Html
cfce8870 51
ad51aeb0 52 Int_t *idtmed = fIdtmed->GetArray()-1199;
fe4da5cc 53
54 Float_t dphi, dz_small, zpos, ddphi;
55 Float_t tspar[5];
56 Float_t tsparl[5];
57 Float_t par[50], dz_long;
58
59 // R_IN : INNER RADIUS
60 // R_OU : OUTER RADIUS
61 // DR : WALL THICKNESS
62 // 2*Z_IN : FREE SPACE IN Z FOR PHOS
63 // 2*Z_RI : FREE SPACE IN Z FOR RICH
64 // 2*Z_OU : LENGTH
65 // 2*DZ : WIDTH OF FRAME ELEMENTS
66 Float_t r_in = 395;
67 Float_t r_ou = 420;
68 Float_t dr = 0.3;
69 Float_t z_in = 130;
70 Float_t z_ou = 350;
71 Float_t z_ri = 236.25;
72 Float_t dz = 8.75;
73
74
75 // Space Frame
76
77 par[0] = r_in;
78 par[1] = r_ou;
79 par[2] = z_ou;
cfce8870 80 gMC->Gsvolu("BFMO", "TUBE", idtmed[1214], par, 3);
fe4da5cc 81
82 // Rings perpendicular to the beam
83
84 // full rings at the ends
85
86 par[0] = r_in;
87 par[1] = r_ou;
88 par[2] = dz;
cfce8870 89 gMC->Gsvolu("BRO1", "TUBE", idtmed[1218], par, 3);
fe4da5cc 90 par[0] = r_in +dr;
91 par[1] = r_ou -dr;
92 par[2] = dz - dr;
cfce8870 93 gMC->Gsvolu("BRI1", "TUBE", idtmed[1214], par, 3);
94 gMC->Gspos("BRI1", 1, "BRO1", 0., 0., 0., 0, "ONLY");
fe4da5cc 95 zpos = z_ou - dz;
cfce8870 96 gMC->Gspos("BRO1", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY");
97 gMC->Gspos("BRO1", 2, "BFMO", 0., 0., zpos, 0, "ONLY");
fe4da5cc 98
99 // space for the HMPID
100
101 tspar[0] = r_in;
102 tspar[1] = r_ou;
103 tspar[2] = dz;
104 tspar[3] = -240.;
105 tspar[4] = 60.;
cfce8870 106 gMC->Gsvolu("BRO2", "TUBS", idtmed[1218], tspar, 5);
fe4da5cc 107 tspar[0] = r_in + dr;
108 tspar[1] = r_ou - dr;
109 tspar[2] = dz - dr;
cfce8870 110 gMC->Gsvolu("BRI2", "TUBS", idtmed[1214], tspar, 5);
111 gMC->Gspos("BRI2", 1, "BRO2", 0., 0., 0., 0, "ONLY");
fe4da5cc 112 zpos = z_in + dz;
cfce8870 113 gMC->Gspos("BRO2", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY");
114 gMC->Gspos("BRO2", 2, "BFMO", 0., 0., zpos, 0, "ONLY");
fe4da5cc 115
116
117
118 tspar[0] = r_in;
119 tspar[1] = r_ou;
120 tspar[2] = dz;
121 tspar[3] = 60.;
122 tspar[4] = 120.;
cfce8870 123 gMC->Gsvolu("BRO3", "TUBS", idtmed[1218], tspar, 5);
fe4da5cc 124 tspar[0] = r_in + dr;
125 tspar[1] = r_ou - dr;
126 tspar[2] = dz - dr;
cfce8870 127 gMC->Gsvolu("BRI3", "TUBS", idtmed[1214], tspar, 5);
128 gMC->Gspos("BRI3", 1, "BRO3", 0., 0., 0., 0, "ONLY");
fe4da5cc 129 zpos = 245.;
cfce8870 130 gMC->Gspos("BRO3", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY");
131 gMC->Gspos("BRO3", 2, "BFMO", 0., 0., zpos, 0, "ONLY");
fe4da5cc 132
133 // longitudinal beams
134
135 // outside phi=60-120
136
137 // virtual elements
138
139 dz_small = (z_ou - z_in -4*dz)/2;
140 dz_long = z_in;
141 tsparl[0] = r_in;
142 tsparl[1] = r_ou;
143 tsparl[2] = dz_small;
144
145 // left and right
146
147 tsparl[3] = -240.;
148 tsparl[4] = 60.;
cfce8870 149 gMC->Gsvolu("BLO1", "TUBS", idtmed[1214], tsparl, 5);
150 gMC->Gsdvt("BLD1", "BLO1", 20., 2, idtmed[1214], 15);
fe4da5cc 151
152 // central, leaving space for rich and phos
153
154 tsparl[2] = dz_long;
155 tsparl[3] = -20.;
156 tsparl[4] = 60.;
cfce8870 157 gMC->Gsvolu("BLO2", "TUBS", idtmed[1214], tsparl, 5);
158 gMC->Gsdvt("BLD2", "BLO2", 20., 2, idtmed[1214], 5);
fe4da5cc 159 tsparl[3] = 120.;
160 tsparl[4] = 200.;
cfce8870 161 gMC->Gsvolu("BLO3", "TUBS", idtmed[1214], tsparl, 5);
162 gMC->Gsdvt("BLD3", "BLO3", 20., 2, idtmed[1214], 5);
fe4da5cc 163
164 // real elements
165
166 dphi = dz/(TMath::Pi()*(r_in + r_ou))*360;
167 ddphi = dphi * dr/dz;
168 tspar[0] = tsparl[0];
169 tspar[1] = tsparl[1];
170 tspar[2] = dz_small;
171 tspar[3] = 10. - dphi;
172 tspar[4] = 10.;
cfce8870 173 gMC->Gsvolu("BL01", "TUBS", idtmed[1218], tspar, 5);
fe4da5cc 174
175 tspar[0] = tsparl[0] + dr;
176 tspar[1] = tsparl[1] - dr;
177 tspar[3] = 10. - dphi + ddphi;
178 tspar[4] = 10. - ddphi;
cfce8870 179 gMC->Gsvolu("BL02", "TUBS", idtmed[1214], tspar, 5);
180 gMC->Gspos("BL02", 1, "BL01", 0., 0., 0., 0, "ONLY");
fe4da5cc 181
182
183 tspar[0] = tsparl[0];
184 tspar[1] = tsparl[1];
185 tspar[2] = dz_long;
186 tspar[3] = 10. - dphi;
187 tspar[4] = 10.;
cfce8870 188 gMC->Gsvolu("BL11", "TUBS", idtmed[1218], tspar, 5);
fe4da5cc 189
190 tspar[0] = tsparl[0] + dr;
191 tspar[1] = tsparl[1] - dr;
192 tspar[3] = 10. - dphi + ddphi;
193 tspar[4] = 10. - ddphi;
cfce8870 194 gMC->Gsvolu("BL12", "TUBS", idtmed[1214], tspar, 5);
195 gMC->Gspos("BL12", 1, "BL11", 0., 0., 0., 0, "ONLY");
fe4da5cc 196
cfce8870 197 gMC->Gspos("BL01", 1, "BLD1", 0., 0., 0., 0, "ONLY");
198 gMC->Gspos("BL11", 1, "BLD2", 0., 0., 0., 0, "ONLY");
199 gMC->Gspos("BL11", 2, "BLD3", 0., 0., 0., 0, "ONLY");
fe4da5cc 200
201 zpos = z_in +2*dz + dz_small;
cfce8870 202 gMC->Gspos("BLO1", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY");
203 gMC->Gspos("BLO1", 2, "BFMO", 0., 0., zpos, 0, "ONLY");
204 gMC->Gspos("BLO2", 1, "BFMO", 0., 0., 0., 0, "ONLY");
205 gMC->Gspos("BLO3", 1, "BFMO", 0., 0., 0., 0, "ONLY");
fe4da5cc 206
207 // PHI=60-120 (RICH)
208
209 tsparl[0] = r_in;
210 tsparl[1] = r_ou;
211 tsparl[2] = (z_ou - z_ri -4*dz)/2;
212 tsparl[3] = 60.;
213 tsparl[4] = 120.;
cfce8870 214 gMC->Gsvolu("BLO4", "TUBS", idtmed[1214], tsparl, 5);
215 gMC->Gsdvt("BLD4", "BLO4", 20., 2, idtmed[1214], 3);
fe4da5cc 216 tspar[0] = tsparl[0];
217 tspar[1] = tsparl[1];
218 tspar[2] = tsparl[2];
219 tspar[3] = 10. - dphi;
220 tspar[4] = 10.;
cfce8870 221 gMC->Gsvolu("BL03", "TUBS", idtmed[1218], tspar, 5);
fe4da5cc 222
223 tspar[0] = tsparl[0] + dr;
224 tspar[1] = tsparl[1] - dr;
225 tspar[2] = tsparl[2];
226 tspar[3] = 10. - dphi + ddphi;
227 tspar[4] = 10. - ddphi;
cfce8870 228 gMC->Gsvolu("BL04", "TUBS", idtmed[1214], tspar, 5);
229 gMC->Gspos("BL04", 1, "BL03", 0., 0., 0., 0, "ONLY");
fe4da5cc 230
cfce8870 231 gMC->Gspos("BL03", 1, "BLD4", 0., 0., 0., 0, "ONLY");
fe4da5cc 232
cfce8870 233 gMC->Gspos("BLO4", 1, "BFMO", 0., 0., 293.125, 0, "ONLY");
234 gMC->Gspos("BLO4", 2, "BFMO", 0., 0.,-293.125, 0, "ONLY");
fe4da5cc 235
cfce8870 236 gMC->Gspos("BFMO", 1, "ALIC", 0., 0., 0., 0, "ONLY");
237 gMC->Gsatt("BFMO", "SEEN", 0);
fe4da5cc 238}
239
240//_____________________________________________________________________________
b8032157 241void AliFRAMEv1::DrawModule()
fe4da5cc 242{
243 //
244 // Draw a shaded view of the space frame
245 //
246
fe4da5cc 247 // Set everything unseen
cfce8870 248 gMC->Gsatt("*", "seen", -1);
fe4da5cc 249 //
250 // Set ALIC mother transparent
cfce8870 251 gMC->Gsatt("ALIC","SEEN",0);
fe4da5cc 252 //
253 // Set the volumes visible
cfce8870 254 gMC->Gsatt("BFMO","seen",0);
255 gMC->Gsatt("BRO1","seen",1);
256 gMC->Gsatt("BRI1","seen",0);
257 gMC->Gsatt("BRO2","seen",1);
258 gMC->Gsatt("BRI2","seen",0);
259 gMC->Gsatt("BRO3","seen",1);
260 gMC->Gsatt("BRI3","seen",0);
261 gMC->Gsatt("BLO1","seen",0);
262 gMC->Gsatt("BLD1","seen",0);
263 gMC->Gsatt("BLO2","seen",0);
264 gMC->Gsatt("BLD2","seen",0);
265 gMC->Gsatt("BLO3","seen",0);
266 gMC->Gsatt("BLD3","seen",0);
267 gMC->Gsatt("BL01","seen",1);
268 gMC->Gsatt("BL02","seen",1);
269 gMC->Gsatt("BL11","seen",1);
270 gMC->Gsatt("BL12","seen",1);
271 gMC->Gsatt("BLO4","seen",0);
272 gMC->Gsatt("BLD4","seen",0);
273 gMC->Gsatt("BL03","seen",1);
274 gMC->Gsatt("BL04","seen",1);
fe4da5cc 275 //
cfce8870 276 gMC->Gdopt("hide", "on");
277 gMC->Gdopt("shad", "on");
278 gMC->Gsatt("*", "fill", 7);
279 gMC->SetClipBox(".");
280 gMC->DefaultRange();
281 gMC->Gdraw("alic", 40, 30, 0, 10, 10, .015, .015);
282 gMC->Gdhead(1111, "Space Frame");
283 gMC->Gdman(18, 4, "MAN");
fe4da5cc 284}
285
286//_____________________________________________________________________________
287void AliFRAMEv1::CreateMaterials()
288{
289
290 //
291 // Create materials for the space frame
292 //
293
294 Int_t ISXFLD = gAlice->Field()->Integ();
295 Float_t SXMGMX = gAlice->Field()->Max();
296
297 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
298 Float_t zsteel[4] = { 26.,24.,28.,14. };
299 Float_t wsteel[4] = { .715,.18,.1,.005 };
300
301 Float_t epsil, stmin, deemax, tmaxfd, stemax;
302
303 // STEEL
304
305
306 // --- Define the various materials for GEANT ---
307 AliMaterial(15, "AIR$ ", 14.61, 7.3, .001205, 30423.24, 67500);
308 AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
309
310 // ****************
311 // Defines tracking media parameters.
312 // Les valeurs sont commentees pour laisser le defaut
313 // a GEANT (version 3-21, page CONS200), f.m.
314 epsil = .001; // Tracking precision,
315 stemax = -1.; // Maximum displacement for multiple scat
316 tmaxfd = -20.; // Maximum angle due to field deflection
317 deemax = -.3; // Maximum fractional energy loss, DLS
318 stmin = -.8;
319 // ***************
320 //ifield0 = 0; // Field off
321 //ifield1 = 2; // 1.0 T. FIELD (DIPOLE)
322 //ifield3 = 3;
323
324 // Air
325
326 // 0.2 T. FIELD (L3)
ad51aeb0 327 AliMedium(15, "AIR_L3_US ", 15, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
fe4da5cc 328
329 // Steel
330
ad51aeb0 331 AliMedium(19, "ST_L3_US ", 19, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
fe4da5cc 332}
333
334
335
336
337
338
339
340
341
342
343