]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // Zero Degree Calorimeter // | |
4 | // This class contains the basic functions for the Time Of Flight // | |
5 | // detector. Functions specific to one particular geometry are // | |
6 | // contained in the derived classes // | |
7 | // // | |
8 | //Begin_Html | |
9 | /* | |
10 | <img src="gif/AliZDCClass.gif"> | |
11 | </pre> | |
12 | <br clear=left> | |
13 | <font size=+2 color=red> | |
14 | <p>The responsible person for this module is | |
15 | <a href="mailto:Eugenio.Scomparin@cern.ch">Eugenio Scomparin</a>. | |
16 | </font> | |
17 | <pre> | |
18 | */ | |
19 | //End_Html | |
20 | // // | |
21 | // // | |
22 | /////////////////////////////////////////////////////////////////////////////// | |
23 | ||
24 | #include <TBRIK.h> | |
25 | #include <TNode.h> | |
26 | ||
27 | #include "AliZDC.h" | |
28 | #include "AliRun.h" | |
29 | #include "AliCallf77.h" | |
30 | #include "AliConst.h" | |
31 | #include "AliMC.h" | |
32 | ||
33 | #ifndef WIN32 | |
34 | # define zdc_init zdc_init_ | |
35 | # define zdc_step zdc_step_ | |
36 | # define zdc_setbeam zdc_setbeam_ | |
37 | # define zdc_sethijing zdc_sethijing_ | |
38 | # define zdc_setvenus zdc_setvenus_ | |
39 | # define zdc_setkine zdc_setkine_ | |
40 | #else | |
41 | # define zdc_step ZDC_STEP | |
42 | # define zdc_setbeam ZDC_SETBEAM | |
43 | # define zdc_sethijing ZDC_SETHIJING | |
44 | # define zdc_setvenus ZDC_SETVENUS | |
45 | # define zdc_setkine ZDC_SETKINE | |
46 | #endif | |
47 | ||
48 | extern "C" void type_of_call zdc_init(); | |
49 | extern "C" void type_of_call zdc_step(); | |
50 | extern "C" void type_of_call zdc_setbeam(Int_t beam, Float_t fx, Float_t fy, | |
51 | Float_t sx, Float_t sy, Float_t div, | |
52 | Float_t angle, Int_t cross); | |
53 | extern "C" void type_of_call zdc_sethijing(Int_t hij, Int_t hijf, Int_t hijsp, | |
54 | DEFCHARD DEFCHARL); | |
55 | extern "C" void type_of_call zdc_setvenus(Int_t hiv, Int_t hivf, Int_t hivsp, | |
56 | DEFCHARD DEFCHARL); | |
57 | extern "C" void type_of_call zdc_setkine(Int_t code, Float_t pmom, Float_t cx, | |
58 | Float_t cy, Float_t cz, Int_t type, | |
59 | Int_t fermi); | |
60 | ||
61 | ClassImp(AliZDC) | |
62 | ||
63 | //_____________________________________________________________________________ | |
64 | AliZDC::AliZDC() | |
65 | { | |
66 | // | |
67 | // Default constructor for the Zero Degree Calorimeter base class | |
68 | // | |
69 | fIshunt = 0; | |
70 | } | |
71 | ||
72 | //_____________________________________________________________________________ | |
73 | AliZDC::AliZDC(const char *name, const char *title) | |
74 | : AliDetector(name,title) | |
75 | { | |
76 | // | |
77 | // Standard constructor for the Zero Degree Calorimeter base class | |
78 | // | |
79 | ||
80 | // | |
81 | // Allocate the array of hits | |
82 | fHits = new TClonesArray("AliZDChit", 405); | |
83 | ||
84 | fIshunt = 1; | |
85 | } | |
86 | ||
87 | //_____________________________________________________________________________ | |
88 | void AliZDC::AddHit(Int_t track, Int_t *vol, Float_t *hits) | |
89 | { | |
90 | // | |
91 | // Add a Zero Degree Calorimeter hit | |
92 | // | |
93 | TClonesArray &lhits = *fHits; | |
94 | new(lhits[fNhits++]) AliZDChit(fIshunt,track,vol,hits); | |
95 | } | |
96 | ||
97 | //_____________________________________________________________________________ | |
98 | void AliZDC::BuildGeometry() | |
99 | { | |
100 | // | |
101 | // Build the ROOT TNode geometry for event display | |
102 | // in the Zero Degree Calorimeter | |
103 | // This routine is dummy for the moment | |
104 | // | |
105 | ||
106 | // TNode *Node, *Top; | |
107 | // TBRIK *brik; | |
108 | // const int kColorZDC = kRed; | |
109 | ||
110 | // | |
111 | // Top=gAlice->GetGeometry()->GetNode("alice"); | |
112 | ||
113 | // ZDC | |
114 | /* | |
115 | brik = new TBRIK("S_ZDC","ZDC box","void",300,300,5); | |
116 | Top->cd(); | |
117 | Node = new TNode("ZDC","ZDC","S_ZDC",0,0,600,""); | |
118 | Node->SetLineColor(kColorZDC); | |
119 | fNodes->Add(Node); | |
120 | */ | |
121 | } | |
122 | ||
123 | //_____________________________________________________________________________ | |
124 | Int_t AliZDC::DistancetoPrimitive(Int_t , Int_t ) | |
125 | { | |
126 | // | |
127 | // Distance from the mouse to the Zero Degree Calorimeter | |
128 | // Dummy routine | |
129 | // | |
130 | return 9999; | |
131 | } | |
132 | ||
133 | //_____________________________________________________________________________ | |
134 | void AliZDC::SetBeam(Int_t beam, Float_t fx, Float_t fy, Float_t sx, | |
135 | Float_t sy, Float_t div, Float_t angle, Int_t cross) | |
136 | { | |
137 | // | |
138 | // Set beam characteristic | |
139 | // This routine has to be revised as it is disconnected from the | |
140 | // actual generation in this version of AliRoot | |
141 | // | |
142 | ||
143 | // beam : 1 = gaussian beam | |
144 | // : 2 = uniform beam | |
145 | // fx : x-coordinate of beam offset | |
146 | // fy : y-coordinate of beam offset | |
147 | // sx : sigma-x of the beam (gaussian or uniform) | |
148 | // sy : sigma-y of the beam (gaussian or uniform) | |
149 | // div : divergency of the beam (32*10**-6 rad for LHC) | |
150 | // angle : beam crossing angle (100*10**-6 rad for LHC) | |
151 | // cross : 1 = horizontal beam crossing | |
152 | // : 2 = vertical beam crossing | |
153 | zdc_setbeam(beam,fx,fy,sx,sy,div,angle,cross); | |
154 | } | |
155 | ||
156 | //_____________________________________________________________________________ | |
157 | void AliZDC::SetHijing(Int_t hij, Int_t hijf, Int_t hijsp, const char *file) | |
158 | { | |
159 | // | |
160 | // Set the parameter for the HIJING generation | |
161 | // This routine has to be revised as it is disconnected from the | |
162 | // actual generation in this version of AliRoot | |
163 | // | |
164 | ||
165 | // HIJ : 1 = read HIJING event file | |
166 | // : 2 = " " " " + debug | |
167 | // HIJF : event number of the first event to be read from file | |
168 | // HIJSP: 0 = read all particles | |
169 | // : 1 = remove spectator nucleons | |
170 | zdc_sethijing(hij,hijf,hijsp, PASSCHARD(file) PASSCHARL(file)); | |
171 | } | |
172 | ||
173 | //_____________________________________________________________________________ | |
174 | void AliZDC::SetVenus(Int_t hiv, Int_t hivf, Int_t hivsp, const char *file) | |
175 | { | |
176 | // | |
177 | // Set the parameter for the VENUS generation | |
178 | // This routine has to be revised as it is disconnected from the | |
179 | // actual generation in this version of AliRoot | |
180 | // | |
181 | ||
182 | // HIV : 1 = read VENUS event file | |
183 | // : 2 = " " " " + debug | |
184 | // HIVF : event number of the first event to be read from file | |
185 | // HIVSP: 0 = read all particles | |
186 | // : 1 = remove spectator nucleons | |
187 | zdc_setvenus(hiv,hivf,hivsp, PASSCHARD(file) PASSCHARL(file)); | |
188 | } | |
189 | ||
190 | //_____________________________________________________________________________ | |
191 | void AliZDC::SetKine(Int_t code, Float_t pmom, Float_t cx, Float_t cy, | |
192 | Float_t cz, Int_t type, Int_t fermi) | |
193 | { | |
194 | // | |
195 | // Set the parameter for the event generation | |
196 | // This routine has to be revised as it is disconnected from the | |
197 | // actual generation in this version of AliRoot | |
198 | // | |
199 | ||
200 | // code : GEANT code of the test particle | |
201 | // pmom : absolute value of particle momentum | |
202 | // cx,cy,cz : director cosines of the track (if type) | |
203 | // type : 0 = take director cosines from cx,cy,cz | |
204 | // : <>0 = pseudorapidity of the test particle | |
205 | // fermi : 0 = no Fermi motion for the spectator nucleons | |
206 | // : 1 = Fermi motion for the spectator nucleons | |
207 | zdc_setkine(code,pmom,cx,cy,cz,type,fermi); | |
208 | } | |
209 | ||
210 | //_____________________________________________________________________________ | |
211 | void AliZDC::StepManager() | |
212 | { | |
213 | // | |
214 | // Routine called at every step in the Zero Degree Calorimeter | |
215 | // This is a simple interface to the FORTRAN routine | |
216 | // A step manager should be written | |
217 | // | |
218 | zdc_step(); | |
219 | } | |
220 | ||
221 | ||
222 | ClassImp(AliZDCv1) | |
223 | ||
224 | ||
225 | /////////////////////////////////////////////////////////////////////////////// | |
226 | // // | |
227 | // Zero Degree Calorimeter version 1 // | |
228 | // // | |
229 | //Begin_Html | |
230 | /* | |
231 | <img src="gif/AliZDCv1Class.gif"> | |
232 | */ | |
233 | //End_Html | |
234 | // // | |
235 | // // | |
236 | /////////////////////////////////////////////////////////////////////////////// | |
237 | ||
238 | //_____________________________________________________________________________ | |
239 | AliZDCv1::AliZDCv1() : AliZDC() | |
240 | { | |
241 | // | |
242 | // Default constructor for Zero Degree Calorimeter | |
243 | // | |
244 | } | |
245 | ||
246 | //_____________________________________________________________________________ | |
247 | AliZDCv1::AliZDCv1(const char *name, const char *title) | |
248 | : AliZDC(name,title) | |
249 | { | |
250 | // | |
251 | // Standard constructor for Zero Degree Calorimeter | |
252 | // | |
253 | } | |
254 | ||
255 | //_____________________________________________________________________________ | |
256 | void AliZDCv1::CreateGeometry() | |
257 | { | |
258 | // | |
259 | // Create the geometry for the Zero Degree Calorimeter version 1 | |
260 | // -- Author : E Scomparin | |
261 | // | |
262 | //Begin_Html | |
263 | /* | |
264 | <img src="gif/AliZDCv1.gif"> | |
265 | */ | |
266 | //End_Html | |
267 | //Begin_Html | |
268 | /* | |
269 | <img src="gif/AliZDCv1Tree.gif"> | |
270 | */ | |
271 | //End_Html | |
272 | ||
273 | // The following variables were illegaly initialized in zdc_init. | |
274 | // These variables should become data members of this class | |
275 | // once zdc_init has been converted | |
276 | //* Initialize COMMON block ZDC_CGEOM | |
277 | //* | |
278 | ||
279 | AliMC* pMC = AliMC::GetMC(); | |
280 | ||
281 | const Int_t NZPTX=4; | |
282 | const Int_t NZPTY=1; | |
283 | const Int_t NZNTX=2; | |
284 | const Int_t NZNTY=2; | |
285 | ||
286 | Float_t HDZN[3] = {4.0,4.0,50.0}; | |
287 | Float_t HDZP[3] = {10.0,6.0,75.0}; | |
288 | // Coordinates of the center of the ZDC front face in the MRS | |
289 | Float_t ZNPOS[3] = {-0.5,0.,11613.}; | |
290 | Float_t ZPPOS[3] = {-21.0,0.,11563.}; | |
291 | Float_t FIZN[3] = {0.,0.01825,50.0}; | |
292 | Float_t FIZP[3] = {0.,0.01825,75.0}; | |
293 | Float_t GRZN[3] = {0.025,0.025,50.0}; | |
294 | Float_t GRZP[3] = {0.040,0.040,75.0}; | |
295 | Int_t NCEN[3] = {11,11,0}; | |
296 | Int_t NCEP[3] = {10,10,0}; | |
297 | ||
298 | Float_t angle; | |
299 | Float_t zq, conpar[9], tubpar[3]; | |
300 | Int_t im1, im2; | |
301 | Float_t zd1, zd2; | |
302 | ||
303 | ||
304 | Int_t *idtmed = gAlice->Idtmed(); | |
305 | ||
306 | // -- Mother of the ZDC | |
307 | conpar[0] = 0.; | |
308 | conpar[1] = 360.; | |
309 | conpar[2] = 2.; | |
310 | conpar[3] = 1920.; | |
311 | conpar[4] = 0.; | |
312 | conpar[5] = 55.; | |
313 | conpar[6] = 13060.; | |
314 | conpar[7] = 0.; | |
315 | conpar[8] = 55.; | |
316 | pMC->Gsvolu("ZDC ", "PCON", idtmed[891], conpar, 9); | |
317 | pMC->Gspos("ZDC ", 1, "ALIC", 0., 0., 0., 0, "ONLY"); | |
318 | // -- FIRST SECTION OF THE BEAM PIPE (from compensator dipole to | |
319 | // beginning of D1) | |
320 | ||
321 | zd1 = 1920.; | |
322 | ||
323 | tubpar[0] = 2.3; | |
324 | tubpar[1] = 2.5; | |
325 | tubpar[2] = 1961.75; | |
326 | pMC->Gsvolu("P001", "TUBE", idtmed[851], tubpar, 3); | |
327 | pMC->Gspos("P001", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
328 | ||
329 | //-- SECOND SECTION OF THE BEAM PIPE (FROM THE END OF D1 TO THE BEGINNING OF | |
330 | // D2) | |
331 | ||
332 | zd1 = 6316.+472.5; | |
333 | ||
334 | tubpar[0] = 7.3/2.; | |
335 | tubpar[1] = 7.7/2.; | |
336 | tubpar[2] = 90.*0.5; | |
337 | pMC->Gsvolu("P002", "TUBE", idtmed[851], tubpar, 3); | |
338 | pMC->Gspos("P002", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
339 | ||
340 | zd1 += tubpar[2] * 2.; | |
341 | ||
342 | tubpar[0] = 7.3/2.; | |
343 | tubpar[1] = 7.7/2.; | |
344 | tubpar[2] = 10.*0.5; | |
345 | pMC->Gsvolu("P003", "TUBE", idtmed[851], tubpar, 3); | |
346 | pMC->Gspos("P003", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
347 | ||
348 | zd1 += tubpar[2] * 2.; | |
349 | ||
350 | conpar[0] = 3.16/2.; | |
351 | conpar[1] = 7.3/2.; | |
352 | conpar[2] = 7.7/2.; | |
353 | conpar[3] = 9.8/2.; | |
354 | conpar[4] = 10.0/2.; | |
355 | pMC->Gsvolu("P004", "CONE", idtmed[851], conpar, 5); | |
356 | pMC->Gspos("P004", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY"); | |
357 | ||
358 | zd1 += conpar[0] * 2.; | |
359 | ||
360 | tubpar[0] = 9.8/2.; | |
361 | tubpar[1] = 10.0/2; | |
362 | tubpar[2] = 490./2.; | |
363 | pMC->Gsvolu("P005", "TUBE", idtmed[851], tubpar, 3); | |
364 | pMC->Gspos("P005", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
365 | ||
366 | zd1 += tubpar[2] * 2.; | |
367 | ||
368 | conpar[0] = 30./2.; | |
369 | conpar[1] = 9.8/2.; | |
370 | conpar[2] = 10.0/2.; | |
371 | conpar[3] = 20.4/2.; | |
372 | conpar[4] = 20.6/2.; | |
373 | pMC->Gsvolu("P006", "CONE", idtmed[851], conpar, 5); | |
374 | pMC->Gspos("P006", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY"); | |
375 | ||
376 | zd1 += conpar[0] * 2.; | |
377 | ||
378 | tubpar[0] = 20.4/2.; | |
379 | tubpar[1] = 20.6/2.; | |
380 | tubpar[2] = 150./2.; | |
381 | pMC->Gsvolu("P007", "TUBE", idtmed[851], tubpar, 3); | |
382 | pMC->Gspos("P007", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
383 | ||
384 | zd1 += tubpar[2] * 2.; | |
385 | ||
386 | conpar[0] = 13.6/2.; | |
387 | conpar[1] = 20.4/2.; | |
388 | conpar[2] = 20.6/2.; | |
389 | conpar[3] = 25.2/2.; | |
390 | conpar[4] = 25.4/2.; | |
391 | pMC->Gsvolu("P008", "CONE", idtmed[851], conpar, 5); | |
392 | pMC->Gspos("P008", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY"); | |
393 | ||
394 | zd1 += conpar[0] * 2.; | |
395 | ||
396 | tubpar[0] = 25.2/2.; | |
397 | tubpar[1] = 25.4/2.; | |
398 | tubpar[2] = 205.8/2.; | |
399 | pMC->Gsvolu("P009", "TUBE", idtmed[851], tubpar, 3); | |
400 | pMC->Gspos("P009", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
401 | ||
402 | zd1 += tubpar[2] * 2.; | |
403 | ||
404 | tubpar[0] = 43.8/2.; | |
405 | tubpar[1] = 44.0/2.; | |
406 | tubpar[2] = 500./2.; | |
407 | pMC->Gsvolu("P010", "TUBE", idtmed[851], tubpar, 3); | |
408 | pMC->Gspos("P010", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
409 | ||
410 | zd1 += tubpar[2] * 2.; | |
411 | ||
412 | tubpar[0] = 31.8/2.; | |
413 | tubpar[1] = 32.0/2.; | |
414 | tubpar[2] = 757.5/2.; | |
415 | pMC->Gsvolu("P011", "TUBE", idtmed[851], tubpar, 3); | |
416 | pMC->Gspos("P011", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
417 | ||
418 | zd1 += tubpar[2] * 2.; | |
419 | ||
420 | conpar[0] = 22.7/2.; | |
421 | conpar[1] = 31.8/2.; | |
422 | conpar[2] = 32.0/2.; | |
423 | conpar[3] = 39.8/2.; | |
424 | conpar[4] = 40.0/2.; | |
425 | pMC->Gsvolu("P012", "CONE", idtmed[851], conpar, 5); | |
426 | pMC->Gspos("P012", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY"); | |
427 | ||
428 | zd1 += conpar[0] * 2.; | |
429 | ||
430 | tubpar[0] = 39.8/2.; | |
431 | tubpar[1] = 40.0/2.; | |
432 | tubpar[2] = 100./2.; | |
433 | pMC->Gsvolu("P013", "TUBE", idtmed[851], tubpar, 3); | |
434 | pMC->Gspos("P013", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
435 | ||
436 | zd1 += tubpar[2] * 2.; | |
437 | ||
438 | tubpar[0] = 39.8/2.; | |
439 | tubpar[1] = 40.0/2.; | |
440 | tubpar[2] = 600./2.; | |
441 | pMC->Gsvolu("P014", "TUBE", idtmed[851], tubpar, 3); | |
442 | pMC->Gspos("P014", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
443 | ||
444 | zd1 += tubpar[2] * 2.; | |
445 | ||
446 | conpar[0] = 28.4/2.; | |
447 | conpar[1] = 39.8/2.; | |
448 | conpar[2] = 40.0/2.; | |
449 | conpar[3] = 49.8/2.; | |
450 | conpar[4] = 50.0/2.; | |
451 | pMC->Gsvolu("P015", "CONE", idtmed[851], conpar, 5); | |
452 | pMC->Gspos("P015", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY"); | |
453 | ||
454 | zd1 += conpar[0] * 2.; | |
455 | ||
456 | tubpar[0] = 49.8/2.; | |
457 | tubpar[1] = 50.0/2.; | |
458 | tubpar[2] = 100./2.; | |
459 | pMC->Gsvolu("P016", "TUBE", idtmed[851], tubpar, 3); | |
460 | pMC->Gspos("P016", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
461 | ||
462 | zd1 += tubpar[2] * 2.; | |
463 | ||
464 | tubpar[0] = 49.8/2.; | |
465 | tubpar[1] = 50.0/2.; | |
466 | tubpar[2] = 600./2.; | |
467 | pMC->Gsvolu("P017", "TUBE", idtmed[851], tubpar, 3); | |
468 | pMC->Gspos("P017", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
469 | ||
470 | zd1 += tubpar[2] * 2.; | |
471 | ||
472 | conpar[0] = 28.4/2.; | |
473 | conpar[1] = 49.8/2.; | |
474 | conpar[2] = 50.0/2.; | |
475 | conpar[3] = 59.8/2.; | |
476 | conpar[4] = 60.0/2.; | |
477 | pMC->Gsvolu("P018", "CONE", idtmed[851], conpar, 5); | |
478 | pMC->Gspos("P018", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY"); | |
479 | ||
480 | zd1 += conpar[0] * 2.; | |
481 | ||
482 | tubpar[0] = 59.8/2.; | |
483 | tubpar[1] = 60.0/2.; | |
484 | tubpar[2] = 50./2.; | |
485 | pMC->Gsvolu("P019", "TUBE", idtmed[851], tubpar, 3); | |
486 | pMC->Gspos("P019", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
487 | ||
488 | zd1 += tubpar[2] * 2.; | |
489 | ||
490 | tubpar[0] = 59.8/2.; | |
491 | tubpar[1] = 60.0/2.; | |
492 | tubpar[2] = 800./2.; | |
493 | pMC->Gsvolu("P020", "TUBE", idtmed[851], tubpar, 3); | |
494 | pMC->Gspos("P020", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
495 | ||
496 | zd1 += tubpar[2] * 2.; | |
497 | ||
498 | tubpar[0] = 0.; | |
499 | tubpar[1] = 60.0/2.; | |
500 | tubpar[2] = 0.2/2.; | |
501 | pMC->Gsvolu("P021", "TUBE", idtmed[851], tubpar, 3); | |
502 | pMC->Gspos("P021", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
503 | ||
504 | zd1 += tubpar[2] * 2.; | |
505 | ||
506 | tubpar[0] = 0.; | |
507 | tubpar[1] = 4.4/2.; | |
508 | tubpar[2] = 0.2/2.; | |
509 | pMC->Gsvolu("Q021", "TUBE", idtmed[889], tubpar, 3); | |
510 | tubpar[0] = 0.; | |
511 | tubpar[1] = 7.0/2.; | |
512 | tubpar[2] = 0.2/2.; | |
513 | pMC->Gsvolu("R021", "TUBE", idtmed[889], tubpar, 3); | |
514 | // -- POSITION Q021 INSIDE P021 | |
515 | pMC->Gspos("Q021", 1, "P021", -7.7, 0., 0., 0, "ONLY"); | |
516 | // -- POSITION R020 INSIDE P020 | |
517 | pMC->Gspos("R021", 1, "P021", 7.7, 0., 0., 0, "ONLY"); | |
518 | ||
519 | // -- BEAM PIPES BETWEEN END OF CONICAL PIPE AND BEGINNING OF D2 | |
520 | tubpar[0] = 4.0/2.; | |
521 | tubpar[1] = 4.4/2.; | |
522 | tubpar[2] = 645.*0.5; | |
523 | pMC->Gsvolu("P022", "TUBE", idtmed[851], tubpar, 3); | |
524 | tubpar[0] = 7.0/2.; | |
525 | tubpar[1] = 7.4/2.; | |
526 | tubpar[2] = 645.*0.5; | |
527 | pMC->Gsvolu("P023", "TUBE", idtmed[851], tubpar, 3); | |
528 | ||
529 | // -- ROTATE PIPES | |
530 | AliMatrix(im1, 90.-0.071, 0., 90., 90., .071, 180.); | |
531 | angle = .071*kDegrad; | |
532 | pMC->Gspos("P022", 1, "ZDC ", TMath::Sin(angle) * 322.5 - 9.7 + | |
533 | TMath::Sin(angle) * 472.5, 0., tubpar[2] + zd1, im1, "ONLY"); | |
534 | AliMatrix(im2, 90.+0.071, 0., 90., 90., .071, 0.); | |
535 | pMC->Gspos("P023", 1, "ZDC ", 9.7 - TMath::Sin(angle) * 322.5, 0., | |
536 | tubpar[2] + zd1, im2, "ONLY"); | |
537 | ||
538 | // -- END OF BEAM PIPE VOLUME DEFINITION. MAGNET DEFINITION FOLLOWS | |
539 | // (LHC OPTICS 6) | |
540 | ||
541 | // -- COMPENSATOR DIPOLE (MCBWA) | |
542 | // GAP (VACUUM WITH MAGNETIC FIELD) | |
543 | ||
544 | tubpar[0] = 0.; | |
545 | tubpar[1] = 4.5; | |
546 | tubpar[2] = 190./2.; | |
547 | pMC->Gsvolu("MCBW", "TUBE", idtmed[890], tubpar, 3); | |
548 | pMC->Gspos("MCBW", 1, "ZDC ", 0., 0., tubpar[2] + 1920., 0, "ONLY"); | |
549 | ||
550 | // -- YOKE (IRON WITHOUT MAGNETIC FIELD) | |
551 | ||
552 | tubpar[0] = 4.5; | |
553 | tubpar[1] = 55.; | |
554 | tubpar[2] = 190./2.; | |
555 | pMC->Gsvolu("YMCB", "TUBE", idtmed[851], tubpar, 3); | |
556 | pMC->Gspos("YMCB", 1, "ZDC ", 0., 0., tubpar[2] + 1920., 0, "ONLY"); | |
557 | ||
558 | // -- INNER TRIPLET | |
559 | ||
560 | zq = 2300.; | |
561 | ||
562 | // -- DEFINE MQXL AND MQX QUADRUPOLE ELEMENT | |
563 | ||
564 | // MQXL | |
565 | // -- GAP (VACUUM WITH MAGNETIC FIELD) | |
566 | ||
567 | tubpar[0] = 0.; | |
568 | tubpar[1] = 3.5; | |
569 | tubpar[2] = 630./2.; | |
570 | pMC->Gsvolu("MQXL", "TUBE", idtmed[890], tubpar, 3); | |
571 | ||
572 | // -- YOKE | |
573 | ||
574 | tubpar[0] = 3.5; | |
575 | tubpar[1] = 22.; | |
576 | tubpar[2] = 630./2.; | |
577 | pMC->Gsvolu("YMQL", "TUBE", idtmed[851], tubpar, 3); | |
578 | ||
579 | pMC->Gspos("MQXL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY"); | |
580 | pMC->Gspos("YMQL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY"); | |
581 | ||
582 | pMC->Gspos("MQXL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY"); | |
583 | pMC->Gspos("YMQL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY"); | |
584 | ||
585 | // -- MQX | |
586 | // -- GAP (VACUUM WITH MAGNETIC FIELD) | |
587 | ||
588 | tubpar[0] = 0.; | |
589 | tubpar[1] = 3.5; | |
590 | tubpar[2] = 550./2.; | |
591 | pMC->Gsvolu("MQX ", "TUBE", idtmed[890], tubpar, 3); | |
592 | ||
593 | // -- YOKE | |
594 | ||
595 | tubpar[0] = 3.5; | |
596 | tubpar[1] = 22.; | |
597 | tubpar[2] = 550./2.; | |
598 | pMC->Gsvolu("YMQ ", "TUBE", idtmed[851], tubpar, 3); | |
599 | ||
600 | pMC->Gspos("MQX ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880., 0, "ONLY"); | |
601 | pMC->Gspos("YMQ ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880., 0, "ONLY"); | |
602 | ||
603 | pMC->Gspos("MQX ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY"); | |
604 | pMC->Gspos("YMQ ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY"); | |
605 | ||
606 | // -- SEPARATOR DIPOLE D1 | |
607 | ||
608 | zd1 = 5843.5; | |
609 | ||
610 | // -- GAP (VACUUM WITH MAGNETIC FIELD) | |
611 | ||
612 | tubpar[0] = 0.; | |
613 | tubpar[1] = 4.5; | |
614 | tubpar[2] = 945/2.; | |
615 | pMC->Gsvolu("D1 ", "TUBE", idtmed[890], tubpar, 3); | |
616 | ||
617 | // -- YOKE | |
618 | ||
619 | tubpar[0] = 0.; | |
620 | tubpar[1] = 55.; | |
621 | tubpar[2] = 945/2.; | |
622 | pMC->Gsvolu("YD1 ", "TUBE", idtmed[851], tubpar, 3); | |
623 | ||
624 | pMC->Gspos("YD1 ", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY"); | |
625 | pMC->Gspos("D1 ", 1, "YD1 ", 0., 0., 0., 0, "ONLY"); | |
626 | ||
627 | // -- DIPOLE D2 | |
628 | ||
629 | zd2 = 12113.2; | |
630 | ||
631 | // -- GAP (VACUUM WITH MAGNETIC FIELD) | |
632 | ||
633 | tubpar[0] = 0.; | |
634 | tubpar[1] = 4.5; | |
635 | tubpar[2] = 945./2.; | |
636 | pMC->Gsvolu("D2 ", "TUBE", idtmed[890], tubpar, 3); | |
637 | ||
638 | // -- YOKE | |
639 | ||
640 | tubpar[0] = 0.; | |
641 | tubpar[1] = 55.; | |
642 | tubpar[2] = 945./2.; | |
643 | pMC->Gsvolu("YD2 ", "TUBE", idtmed[851], tubpar, 3); | |
644 | ||
645 | pMC->Gspos("YD2 ", 1, "ZDC ", 0., 0., tubpar[2] + zd2, 0, "ONLY"); | |
646 | ||
647 | pMC->Gspos("D2 ", 1, "YD2 ", -9.7, 0., 0., 0, "ONLY"); | |
648 | pMC->Gspos("D2 ", 2, "YD2 ", 9.7, 0., 0., 0, "ONLY"); | |
649 | ||
650 | // -- END OF MAGNET DEFINITION | |
651 | ||
652 | // ----------------- Hadronic calorimeters -------------------- * | |
653 | ||
654 | // Neutron calorimeter | |
655 | ||
656 | pMC->Gsvolu("ZNEU", "BOX ", idtmed[800], HDZN, 3); // Passive material | |
657 | pMC->Gsvolu("ZNFI", "TUBE", idtmed[802], FIZN, 3); // Active material | |
658 | pMC->Gsvolu("ZNGR", "BOX ", idtmed[889], GRZN, 3); // Empty grooves | |
659 | ||
660 | // Divide ZNEU in towers | |
661 | // (for hits purposes) | |
662 | ||
663 | pMC->Gsdvn("ZNTX", "ZNEU", NZNTX, 1); // x-tower | |
664 | pMC->Gsdvn("ZN1 ", "ZNTX", NZNTY, 2); // y-tower | |
665 | ||
666 | // Divide ZNEU in minitowers | |
667 | // (NCEN(1)= NUMBER OF FIBERS PER TOWER ALONG X-AXIS, | |
668 | // NCEN(2)= NUMBER OF FIBERS PER TOWER ALONG Y-AXIS) | |
669 | // (one fiber per minitower) | |
670 | ||
671 | pMC->Gsdvn("ZNSL", "ZN1 ", NCEN[1], 2); // Slices | |
672 | pMC->Gsdvn("ZNST", "ZNSL", NCEN[0], 1); // Sticks | |
673 | ||
674 | // --- Position the empty grooves in the sticks | |
675 | pMC->Gspos("ZNGR", 1, "ZNST", 0., 0., 0., 0, "ONLY"); | |
676 | // --- Position the fibers in the grooves | |
677 | pMC->Gspos("ZNFI", 1, "ZNGR", 0., 0., 0., 0, "ONLY"); | |
678 | // --- Position the neutron calorimeter in ZDC | |
679 | pMC->Gspos("ZNEU", 1, "ZDC ", ZNPOS[0], ZNPOS[1], ZNPOS[2] + HDZN[2], 0, "ONLY"); | |
680 | ||
681 | // Proton calorimeter | |
682 | ||
683 | pMC->Gsvolu("ZPRO", "BOX ", idtmed[801], HDZP, 3); // Passive material | |
684 | pMC->Gsvolu("ZPFI", "TUBE", idtmed[802], FIZP, 3); // Active material | |
685 | pMC->Gsvolu("ZPGR", "BOX ", idtmed[889], GRZP, 3); // Empty grooves | |
686 | ||
687 | // Divide ZPRO in towers | |
688 | // (for hits purposes) | |
689 | ||
690 | pMC->Gsdvn("ZPTX", "ZPRO", NZPTX, 1); // x-tower | |
691 | pMC->Gsdvn("ZP1 ", "ZPTX", NZPTY, 2); // y-tower | |
692 | ||
693 | ||
694 | // Divide ZPRO in minitowers | |
695 | // (NCEP[0]= NUMBER OF FIBERS ALONG X-AXIS PER MINITOWER, | |
696 | // NCEP[1]= NUMBER OF FIBERS ALONG Y-AXIS PER MINITOWER) | |
697 | // (one fiber per minitower) | |
698 | ||
699 | pMC->Gsdvn("ZPSL", "ZP1 ", NCEP[1], 2); // Slices | |
700 | pMC->Gsdvn("ZPST", "ZPSL", NCEP[0], 1); // Sticks | |
701 | ||
702 | // --- Position the empty grooves in the sticks | |
703 | pMC->Gspos("ZPGR", 1, "ZPST", 0., 0., 0., 0, "ONLY"); | |
704 | // --- Position the fibers in the grooves | |
705 | pMC->Gspos("ZPFI", 1, "ZPGR", 0., 0., 0., 0, "ONLY"); | |
706 | // --- Position the proton calorimeter in ZDC | |
707 | pMC->Gspos("ZPRO", 1, "ZDC ", ZPPOS[0], ZPPOS[1], ZPPOS[2] + HDZP[2], 0, "ONLY"); | |
708 | ||
709 | } | |
710 | ||
711 | //_____________________________________________________________________________ | |
1a6536da | 712 | void AliZDCv1::DrawModule() |
fe4da5cc | 713 | { |
714 | // | |
715 | // Draw a shaded view of the Zero Degree Calorimeter version 1 | |
716 | // | |
717 | ||
718 | AliMC* pMC = AliMC::GetMC(); | |
719 | ||
720 | // Set everything unseen | |
721 | pMC->Gsatt("*", "seen", -1); | |
722 | // | |
723 | // Set ALIC mother transparent | |
724 | pMC->Gsatt("ALIC","SEEN",0); | |
725 | // | |
726 | // Set the volumes visible | |
727 | pMC->Gsatt("ZDC","SEEN",0); | |
728 | pMC->Gsatt("P001","SEEN",1); | |
729 | pMC->Gsatt("P002","SEEN",1); | |
730 | pMC->Gsatt("P003","SEEN",1); | |
731 | pMC->Gsatt("P004","SEEN",1); | |
732 | pMC->Gsatt("P005","SEEN",1); | |
733 | pMC->Gsatt("P006","SEEN",1); | |
734 | pMC->Gsatt("P007","SEEN",1); | |
735 | pMC->Gsatt("P008","SEEN",1); | |
736 | pMC->Gsatt("P009","SEEN",1); | |
737 | pMC->Gsatt("P010","SEEN",1); | |
738 | pMC->Gsatt("P011","SEEN",1); | |
739 | pMC->Gsatt("P012","SEEN",1); | |
740 | pMC->Gsatt("P013","SEEN",1); | |
741 | pMC->Gsatt("P014","SEEN",1); | |
742 | pMC->Gsatt("P015","SEEN",1); | |
743 | pMC->Gsatt("P016","SEEN",1); | |
744 | pMC->Gsatt("P017","SEEN",1); | |
745 | pMC->Gsatt("P018","SEEN",1); | |
746 | pMC->Gsatt("P019","SEEN",1); | |
747 | pMC->Gsatt("P020","SEEN",1); | |
748 | pMC->Gsatt("P021","SEEN",1); | |
749 | pMC->Gsatt("Q021","SEEN",1); | |
750 | pMC->Gsatt("R021","SEEN",1); | |
751 | pMC->Gsatt("P022","SEEN",1); | |
752 | pMC->Gsatt("P023","SEEN",1); | |
753 | pMC->Gsatt("D1 ","SEEN",1); | |
754 | pMC->Gsatt("YD1 ","SEEN",1); | |
755 | pMC->Gsatt("D2 ","SEEN",1); | |
756 | pMC->Gsatt("YD2 ","SEEN",1); | |
757 | pMC->Gsatt("MCBW","SEEN",1); | |
758 | pMC->Gsatt("YMCB","SEEN",1); | |
759 | pMC->Gsatt("MQXL","SEEN",1); | |
760 | pMC->Gsatt("YMQL","SEEN",1); | |
761 | pMC->Gsatt("MQX","SEEN",1); | |
762 | pMC->Gsatt("YMQ","SEEN",1); | |
763 | pMC->Gsatt("D1","SEEN",1); | |
764 | pMC->Gsatt("YD1","SEEN",1); | |
765 | pMC->Gsatt("D2","SEEN",1); | |
766 | pMC->Gsatt("YD2","SEEN",1); | |
767 | pMC->Gsatt("ZNEU","SEEN",0); | |
768 | pMC->Gsatt("ZNFI","SEEN",0); | |
769 | pMC->Gsatt("ZNGR","SEEN",0); | |
770 | pMC->Gsatt("ZNTX","SEEN",0); | |
771 | pMC->Gsatt("ZN1 ","COLO",2); | |
772 | pMC->Gsatt("ZN1 ","SEEN",1); | |
773 | pMC->Gsatt("ZNSL","SEEN",0); | |
774 | pMC->Gsatt("ZNST","SEEN",0); | |
775 | pMC->Gsatt("ZPRO","SEEN",0); | |
776 | pMC->Gsatt("ZPFI","SEEN",0); | |
777 | pMC->Gsatt("ZPGR","SEEN",0); | |
778 | pMC->Gsatt("ZPTX","SEEN",0); | |
779 | pMC->Gsatt("ZP1 ","SEEN",1); | |
780 | pMC->Gsatt("ZPSL","SEEN",0); | |
781 | pMC->Gsatt("ZPST","SEEN",0); | |
782 | ||
783 | // | |
784 | pMC->Gdopt("hide", "on"); | |
785 | pMC->Gdopt("shad", "on"); | |
786 | pMC->Gsatt("*", "fill", 7); | |
787 | pMC->SetClipBox("."); | |
788 | pMC->SetClipBox("*", 0, 100, -100, 100, 12000, 16000); | |
789 | pMC->DefaultRange(); | |
790 | pMC->Gdraw("alic", 40, 30, 0, 488, 220, .07, .07); | |
791 | pMC->Gdhead(1111, "Zero Degree Calorimeter Version 1"); | |
792 | pMC->Gdman(18, 4, "MAN"); | |
793 | } | |
794 | ||
795 | //_____________________________________________________________________________ | |
796 | void AliZDCv1::CreateMaterials() | |
797 | { | |
798 | // | |
799 | // Create Materials for the Zero Degree Calorimeter | |
800 | // | |
801 | // Origin : E. Scomparin | |
802 | ||
803 | AliMC* pMC = AliMC::GetMC(); | |
804 | ||
805 | Int_t *idtmed = gAlice->Idtmed(); | |
806 | ||
807 | Float_t dens, ubuf[1], wmat[2]; | |
808 | Int_t isvol_active; | |
809 | Float_t a[2]; | |
810 | Int_t i; | |
811 | Float_t z[2], epsil=0.001, stmin=0.01; | |
812 | Int_t isvol; | |
813 | Float_t fieldm = gAlice->Field()->Max(); | |
814 | Int_t inofld; | |
815 | Float_t deemax=-1; | |
816 | Float_t tmaxfd=gAlice->Field()->Max(); | |
817 | Int_t isxfld = gAlice->Field()->Integ(); | |
818 | Float_t stemax; | |
819 | ||
820 | // --- Store in UBUF r0 for nuclear radius calculation R=r0*A**1/3 | |
821 | ||
822 | // --- Tungsten | |
823 | ubuf[0] = 1.11; | |
824 | AliMaterial(1, "TUNG", 183.85, 74., 19.3, .35, 10.3, ubuf, 1); | |
825 | ||
826 | // --- Brass (CuZn) | |
827 | dens = 8.48; | |
828 | a[0] = 63.546; | |
829 | a[1] = 65.39; | |
830 | z[0] = 29.; | |
831 | z[1] = 30.; | |
832 | wmat[0] = .63; | |
833 | wmat[1] = .37; | |
834 | AliMixture(2, "BRASS ", a, z, dens, 2, wmat); | |
835 | ||
836 | // --- SiO2 | |
837 | dens = 2.64; | |
838 | a[0] = 28.086; | |
839 | a[1] = 15.9994; | |
840 | z[0] = 14.; | |
841 | z[1] = 8.; | |
842 | wmat[0] = 1.; | |
843 | wmat[1] = 2.; | |
844 | AliMixture(3, "SIO2 ", a, z, dens, -2, wmat); | |
845 | ||
846 | // --- Lead | |
847 | ubuf[0] = 1.12; | |
848 | AliMaterial(4, "LEAD", 207.19, 82., 11.35, .56, 18.5, ubuf, 1); | |
849 | ||
850 | // --- Copper | |
851 | ubuf[0] = 1.1; | |
852 | AliMaterial(5, "COPP", 63.54, 29., 8.96, 1.4, 0., ubuf, 1); | |
853 | ||
854 | // --- Tantalum | |
855 | ubuf[0] = 1.1; | |
856 | AliMaterial(6, "TANT", 180.95, 73., 16.65, .4, 11.9, ubuf, 1); | |
857 | ||
858 | // Steel still to be added | |
859 | ||
860 | // --- Iron | |
861 | ubuf[0] = 1.1; | |
862 | AliMaterial(52, "IRON", 55.85, 26., 7.87, 1.76, 0., ubuf, 1); | |
863 | ||
864 | // --- Vacuum (no magnetic field) | |
865 | AliMaterial(90, "VOID", 1e-16, 1e-16, 1e-16, 1e16, 1e16, ubuf,0); | |
866 | ||
867 | // --- Vacuum (magnetic field) | |
868 | AliMaterial(91, "VOIM", 1e-16, 1e-16, 1e-16, 1e16, 1e16, ubuf,0); | |
869 | ||
870 | // --- Air non magnetic | |
871 | AliMaterial(92, "Air $", 14.61, 7.3, .001205, 30420., 67500., ubuf, 0); | |
872 | ||
873 | // --- Definition of tracking media: | |
874 | ||
875 | // --- Tungsten = 801 ; | |
876 | // --- Brass = 802 ; | |
877 | // --- Fibers (SiO2) = 803 ; | |
878 | // --- Lead = 804 ; | |
879 | // --- Copper = 805 ; | |
880 | // --- Tantalum = 806 ; | |
881 | // --- Steel = 851 ; | |
882 | // --- Iron = 852 ; | |
883 | // --- Vacuum (no field) = 890 | |
884 | // --- Vacuum (with field) = 891 | |
885 | // --- Air (no field) = 892 | |
886 | ||
887 | ||
888 | // --- Tracking media parameters | |
889 | epsil = .01; | |
890 | stemax = 1.; | |
891 | isvol = 0; | |
892 | isvol_active = 1; | |
893 | inofld = 0; | |
894 | fieldm = 0.; | |
895 | ||
896 | AliMedium(801, "ZW", 1, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
897 | AliMedium(802, "ZBRASS", 2, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
898 | AliMedium(803, "ZSIO2", 3, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
899 | AliMedium(804, "ZLEAD", 4, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
900 | AliMedium(805, "ZCOPP", 5, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
901 | AliMedium(806, "ZTANT", 6, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
902 | AliMedium(852, "ZIRON", 52, isvol, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
903 | AliMedium(890, "ZVOID", 90, isvol, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
904 | AliMedium(892, "Air", 92, 0, inofld, fieldm, tmaxfd, stemax,deemax, epsil, stmin); | |
905 | ||
906 | fieldm = 45.; | |
907 | // AliMedium(891, "ZVOIM", 91, isvol, isxfld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
908 | AliMedium(891, "ZVOIM", 91, isvol, isxfld, fieldm, tmaxfd, stemax, deemax, epsil, stmin); | |
909 | ||
910 | // Thresholds for showering in the ZDCs | |
911 | ||
912 | i = 801; | |
913 | pMC->Gstpar(idtmed[i-1], "CUTGAM", .01); | |
914 | pMC->Gstpar(idtmed[i-1], "CUTELE", .01); | |
915 | pMC->Gstpar(idtmed[i-1], "CUTNEU", .1); | |
916 | pMC->Gstpar(idtmed[i-1], "CUTHAD", .1); | |
917 | i = 802; | |
918 | pMC->Gstpar(idtmed[i-1], "CUTGAM", .01); | |
919 | pMC->Gstpar(idtmed[i-1], "CUTELE", .01); | |
920 | pMC->Gstpar(idtmed[i-1], "CUTNEU", .1); | |
921 | pMC->Gstpar(idtmed[i-1], "CUTHAD", .1); | |
922 | ||
923 | // Avoid too detailed showering along the beam line | |
924 | ||
925 | i = 852; | |
926 | pMC->Gstpar(idtmed[i-1], "CUTGAM", .1); | |
927 | pMC->Gstpar(idtmed[i-1], "CUTELE", .1); | |
928 | pMC->Gstpar(idtmed[i-1], "CUTNEU", 1.); | |
929 | pMC->Gstpar(idtmed[i-1], "CUTHAD", 1.); | |
930 | ||
931 | // Avoid interaction in fibers (only energy loss allowed) | |
932 | i = 803; | |
933 | pMC->Gstpar(idtmed[i-1], "DCAY", 0.); | |
934 | pMC->Gstpar(idtmed[i-1], "MULS", 0.); | |
935 | pMC->Gstpar(idtmed[i-1], "PFIS", 0.); | |
936 | pMC->Gstpar(idtmed[i-1], "MUNU", 0.); | |
937 | pMC->Gstpar(idtmed[i-1], "LOSS", 1.); | |
938 | pMC->Gstpar(idtmed[i-1], "PHOT", 0.); | |
939 | pMC->Gstpar(idtmed[i-1], "COMP", 0.); | |
940 | pMC->Gstpar(idtmed[i-1], "PAIR", 0.); | |
941 | pMC->Gstpar(idtmed[i-1], "BREM", 0.); | |
942 | pMC->Gstpar(idtmed[i-1], "DRAY", 0.); | |
943 | pMC->Gstpar(idtmed[i-1], "ANNI", 0.); | |
944 | pMC->Gstpar(idtmed[i-1], "HADR", 0.); | |
945 | } | |
946 | ||
947 | ClassImp(AliZDChit) | |
948 | ||
949 | //_____________________________________________________________________________ | |
950 | AliZDChit::AliZDChit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits): | |
951 | AliHit(shunt, track) | |
952 | { | |
953 | // | |
954 | // Add a Zero Degree Calorimeter hit | |
955 | // | |
956 | Int_t i; | |
957 | for (i=0;i<4;i++) fVolume[i] = vol[i]; | |
958 | fX=hits[0]; | |
959 | fY=hits[1]; | |
960 | fZ=hits[2]; | |
961 | fEnergy=hits[3]; | |
962 | } |