]>
Commit | Line | Data |
---|---|---|
2b680d9b | 1 | /************************************************************************** |
717cdf18 | 2 | * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * |
2b680d9b | 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 | ||
effd7456 | 16 | |
717cdf18 | 17 | /* $Id: */ |
18 | ||
19 | ||
20 | //======================================================================== | |
effd7456 | 21 | // |
717cdf18 | 22 | // Geometry of the Inner Tracking System |
23 | // --------------------------------------- | |
24 | // This geometry is fully described in TGeo geometry (v11) | |
25 | // | |
26 | // Ludovic Gaudichet (gaudichet@to.infn.it) | |
27 | // Mario Sitta (sitta@to.infn.it) | |
b7943f00 | 28 | // |
717cdf18 | 29 | //======================================================================== |
30 | ||
31 | ||
32 | // $Log$ | |
33 | // Revision 1.1 2011/06/10 14:48:24 masera | |
34 | // First version from v11Hybrid to v11 (M. Sitta) | |
b7943f00 | 35 | // |
717cdf18 | 36 | |
b7943f00 | 37 | |
541f7ba6 | 38 | #include <TClonesArray.h> |
717cdf18 | 39 | #include <TGeoGlobalMagField.h> |
7dd2cbe4 | 40 | #include <TGeoManager.h> |
717cdf18 | 41 | #include <TGeoMatrix.h> |
42 | #include <TGeoPhysicalNode.h> | |
7dd2cbe4 | 43 | #include <TGeoVolume.h> |
717cdf18 | 44 | #include <TGeoXtru.h> |
2b680d9b | 45 | #include <TLorentzVector.h> |
717cdf18 | 46 | #include <TString.h> |
7dd2cbe4 | 47 | #include <TVirtualMC.h> |
b7943f00 | 48 | |
49 | #include "AliITS.h" | |
531d6cdc | 50 | #include "AliITSDetTypeSim.h" |
b7943f00 | 51 | #include "AliITShit.h" |
717cdf18 | 52 | #include "AliITSCalibrationSDD.h" |
2b680d9b | 53 | #include "AliITSsegmentationSDD.h" |
b7943f00 | 54 | #include "AliITSsegmentationSPD.h" |
55 | #include "AliITSsegmentationSSD.h" | |
108bd0fe | 56 | #include "AliITSv11.h" |
717cdf18 | 57 | #include "AliLog.h" |
7dd2cbe4 | 58 | #include "AliMC.h" |
59 | #include "AliMagF.h" | |
60 | #include "AliRun.h" | |
61 | #include "AliTrackReference.h" | |
717cdf18 | 62 | #include "AliITSv11GeometrySPD.h" |
63 | #include "AliITSv11GeometrySDD.h" | |
64 | #include "AliITSv11GeometrySSD.h" | |
65 | #include "AliITSv11GeometrySupport.h" | |
66 | #include "AliGeomManager.h" | |
67 | ||
541f7ba6 | 68 | |
b7943f00 | 69 | ClassImp(AliITSv11) |
f7315efc | 70 | |
717cdf18 | 71 | //______________________________________________________________________ |
72 | AliITSv11::AliITSv11(): | |
73 | fByThick(kTRUE), | |
74 | fMajorVersion(IsVersion()), | |
75 | fMinorVersion(-1), | |
76 | fIDMother(0), | |
77 | fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion), | |
78 | fSPDgeom(0), | |
79 | fSDDgeom(0), | |
80 | fSSDgeom(0), | |
81 | fSupgeom(0) | |
82 | { | |
83 | // Standard default constructor | |
84 | // Inputs: | |
85 | // none. | |
86 | // Outputs: | |
87 | // none. | |
88 | // Return: | |
89 | // none. | |
2b680d9b | 90 | } |
b7943f00 | 91 | |
fa4639a3 | 92 | //______________________________________________________________________ |
717cdf18 | 93 | AliITSv11::AliITSv11(const char *title) |
94 | : AliITS("ITS", title), | |
95 | fByThick(kTRUE), | |
96 | fMajorVersion(IsVersion()), | |
97 | fMinorVersion(1), | |
98 | fIDMother(0), | |
99 | fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion), | |
100 | fSPDgeom(0), | |
101 | fSDDgeom(0), | |
102 | fSSDgeom(0), | |
103 | fSupgeom(0) | |
33ddec7d | 104 | { |
717cdf18 | 105 | // Standard constructor for the v11 geometry. |
106 | // Inputs: | |
107 | // const char * title Arbitrary title | |
108 | // Outputs: | |
109 | // none. | |
110 | // Return: | |
111 | // none. | |
112 | Int_t i; | |
113 | ||
114 | fSPDgeom = new AliITSv11GeometrySPD(); | |
531d6cdc | 115 | fSDDgeom = new AliITSv11GeometrySDD(0); |
717cdf18 | 116 | fSSDgeom = new AliITSv11GeometrySSD(); |
117 | fSupgeom = new AliITSv11GeometrySupport(); | |
fa4639a3 | 118 | |
531d6cdc | 119 | fIdN = 6; |
120 | fIdName = new TString[fIdN]; | |
717cdf18 | 121 | |
122 | fIdName[0] = fSPDgeom->GetSenstiveVolumeName1(); | |
123 | fIdName[1] = fSPDgeom->GetSenstiveVolumeName2(); | |
124 | ||
108bd0fe | 125 | fIdName[2] = fSDDgeom->GetSenstiveVolumeName3(); |
126 | fIdName[3] = fSDDgeom->GetSenstiveVolumeName4(); | |
717cdf18 | 127 | |
128 | fIdName[4] = fSSDgeom->GetSenstiveVolumeName5(); | |
129 | fIdName[5] = fSSDgeom->GetSenstiveVolumeName6(); | |
130 | ||
fa4639a3 | 131 | fIdSens = new Int_t[fIdN]; |
531d6cdc | 132 | for(i=0;i<fIdN;i++) fIdSens[i] = 0; |
717cdf18 | 133 | |
134 | SetDensityServicesByThickness(); | |
531d6cdc | 135 | |
fa4639a3 | 136 | } |
717cdf18 | 137 | |
2b680d9b | 138 | //______________________________________________________________________ |
b78b741f | 139 | AliITSv11::AliITSv11(const char *name, const char *title) |
717cdf18 | 140 | : AliITS("ITS", title), |
141 | fByThick(kTRUE), | |
142 | fMajorVersion(IsVersion()), | |
143 | fMinorVersion(1), | |
144 | fIDMother(0), | |
145 | fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion), | |
146 | fSPDgeom(0), | |
147 | fSDDgeom(0), | |
148 | fSSDgeom(0), | |
149 | fSupgeom(0) | |
012f0f4c | 150 | { |
717cdf18 | 151 | // Standard constructor for the v11 geometry. |
152 | // Inputs: | |
153 | // const char * name Ignored, set to "ITS" | |
154 | // const char * title Arbitrary title | |
155 | // Outputs: | |
156 | // none. | |
157 | // Return: | |
158 | // none. | |
159 | Int_t i; | |
160 | ||
161 | fSPDgeom = new AliITSv11GeometrySPD(); | |
162 | fSDDgeom = new AliITSv11GeometrySDD(0); | |
325d8c32 | 163 | fSSDgeom = new AliITSv11GeometrySSD(); |
717cdf18 | 164 | fSupgeom = new AliITSv11GeometrySupport(); |
531d6cdc | 165 | |
531d6cdc | 166 | fIdN = 6; |
167 | fIdName = new TString[fIdN]; | |
717cdf18 | 168 | |
169 | (void) name; // removes warning message | |
170 | ||
54c9a3d9 | 171 | fIdName[0] = fSPDgeom->GetSenstiveVolumeName1(); |
172 | fIdName[1] = fSPDgeom->GetSenstiveVolumeName2(); | |
717cdf18 | 173 | |
108bd0fe | 174 | fIdName[2] = fSDDgeom->GetSenstiveVolumeName3(); |
175 | fIdName[3] = fSDDgeom->GetSenstiveVolumeName4(); | |
717cdf18 | 176 | |
54c9a3d9 | 177 | fIdName[4] = fSSDgeom->GetSenstiveVolumeName5(); |
178 | fIdName[5] = fSSDgeom->GetSenstiveVolumeName6(); | |
717cdf18 | 179 | |
531d6cdc | 180 | fIdSens = new Int_t[fIdN]; |
181 | for(i=0;i<fIdN;i++) fIdSens[i] = 0; | |
717cdf18 | 182 | |
183 | SetDensityServicesByThickness(); | |
184 | ||
162acd47 | 185 | } |
717cdf18 | 186 | |
dfefbaec | 187 | //______________________________________________________________________ |
b7943f00 | 188 | AliITSv11::~AliITSv11() { |
717cdf18 | 189 | // Standard destructor |
190 | // Inputs: | |
191 | // none. | |
192 | // Outputs: | |
193 | // none. | |
194 | // Return: | |
195 | // none. | |
196 | delete fSPDgeom; | |
b7943f00 | 197 | delete fSDDgeom; |
717cdf18 | 198 | delete fSSDgeom; |
199 | delete fSupgeom; | |
2b680d9b | 200 | } |
717cdf18 | 201 | |
2b680d9b | 202 | //______________________________________________________________________ |
717cdf18 | 203 | void AliITSv11::SetT2Lmatrix(Int_t uid, Double_t yShift, |
204 | Bool_t yFlip, Bool_t yRot180) const | |
205 | { | |
206 | ||
207 | // | |
208 | // Creates the TGeo Local to Tracking transformation matrix | |
209 | // and sends it to the corresponding TGeoPNEntry | |
210 | // | |
211 | // This function is used in AddAlignableVolumes() | |
212 | ||
213 | TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(uid); | |
214 | TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig(); | |
215 | ||
216 | Double_t *gtrans = globMatrix->GetTranslation(), rotMatrix[9]; | |
217 | memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t)); | |
218 | Double_t al = TMath::ATan2(rotMatrix[1],rotMatrix[0]); | |
219 | if (yRot180) { | |
220 | al = TMath::ATan2(rotMatrix[1],-rotMatrix[0]); | |
221 | } | |
222 | Double_t xShift = gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al); | |
223 | Double_t zShift = -gtrans[2]; | |
224 | ||
225 | TGeoHMatrix *matLtoT = new TGeoHMatrix; | |
226 | matLtoT->SetDx( xShift ); // translation | |
227 | matLtoT->SetDy( yShift ); | |
228 | matLtoT->SetDz( zShift ); | |
229 | rotMatrix[0]= 0; rotMatrix[1]= 1; rotMatrix[2]= 0; // + rotation | |
230 | rotMatrix[3]= 1; rotMatrix[4]= 0; rotMatrix[5]= 0; | |
231 | rotMatrix[6]= 0; rotMatrix[7]= 0; rotMatrix[8]=-1; | |
232 | if (yFlip) rotMatrix[3] = -1; // flipping in y (for SPD1) | |
233 | if (yFlip) rotMatrix[1] = -1; // flipping in y (for SPD1) | |
234 | ||
235 | if (yRot180) { // rotation of pi around the axis perpendicular to the wafer | |
236 | if (yFlip) matLtoT->SetDx( -xShift ); // flipping in y (for SPD1) | |
237 | matLtoT->SetDy( -yShift ); | |
238 | matLtoT->SetDz( -zShift ); | |
239 | rotMatrix[8]=1; | |
240 | rotMatrix[3] = -1; | |
241 | if (yFlip) rotMatrix[3] = 1; // flipping in y (for SPD1) | |
242 | } | |
243 | ||
244 | TGeoRotation rot; | |
245 | rot.SetMatrix(rotMatrix); | |
246 | matLtoT->MultiplyLeft(&rot); | |
247 | TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse()); | |
248 | delete matLtoT; | |
249 | alignableEntry->SetMatrix(matTtoL); | |
250 | } | |
251 | ||
252 | //______________________________________________________________________ | |
253 | void AliITSv11::AddAlignableVolumes() const | |
254 | { | |
255 | // Creates entries for alignable volumes associating the symbolic volume | |
256 | // name with the corresponding volume path. | |
257 | // | |
258 | // Records in the alignable entries the transformation matrices converting | |
259 | // TGeo local coordinates (in the RS of alignable volumes) to the tracking | |
260 | // system | |
261 | // For this, this function has to run before the misalignment because we | |
262 | // are using the ideal positions in the AliITSgeom object. | |
263 | // Inputs: | |
264 | // none. | |
265 | // Outputs: | |
266 | // none. | |
267 | // Return: | |
268 | // none. | |
269 | ||
270 | AliInfo("Add ITS alignable volumes"); | |
271 | ||
272 | if (!gGeoManager) { | |
273 | AliFatal("TGeoManager doesn't exist !"); | |
274 | return; | |
275 | } | |
276 | ||
277 | AliGeomManager::ELayerID layerId; | |
278 | Int_t modUID, modnum; | |
279 | ||
280 | if( !gGeoManager->SetAlignableEntry("ITS","ALIC_1/ITSV_1") ) | |
281 | AliFatal(Form("Unable to set alignable entry ! %s :: %s", | |
282 | "ITS","ALIC_1/ITSV_1")); | |
283 | ||
284 | TString strSPD = "ITS/SPD"; | |
285 | TString strSDD = "ITS/SDD"; | |
286 | TString strSSD = "ITS/SSD"; | |
287 | TString strStave = "/Stave"; | |
288 | TString strHalfStave = "/HalfStave"; | |
289 | TString strLadder = "/Ladder"; | |
290 | TString strSector = "/Sector"; | |
291 | TString strSensor = "/Sensor"; | |
292 | TString strEntryName1; | |
293 | TString strEntryName2; | |
294 | TString strEntryName3; | |
295 | TString strEntryName4; | |
296 | ||
297 | TString str0; | |
298 | TString str1; | |
299 | TString str2; | |
300 | ||
301 | TString ladder; | |
302 | ||
303 | //===== SPD layers ===== | |
304 | ||
305 | str0 = "ALIC_1/ITSV_1/ITSSPD_1/ITSSPDCarbonFiberSectorV_"; | |
306 | str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/ITSSPDlay1-Stave_"; | |
307 | ||
308 | TString str1Bis = "/ITSSPDhalf-Stave"; | |
309 | TString str1Tierce = "_1"; | |
310 | ||
311 | str2 = "/ITSSPDlay1-Ladder_"; | |
312 | ||
313 | TString sector; | |
314 | TString stave; | |
315 | TString halfStave; | |
316 | TString module; | |
317 | ||
318 | layerId = AliGeomManager::kSPD1; | |
319 | modnum = 0; | |
320 | ||
321 | for(Int_t cSect = 0; cSect<10; cSect++) { | |
322 | ||
323 | sector = str0; | |
324 | sector += cSect+1; // this is one full sector | |
325 | strEntryName1 = strSPD; | |
326 | strEntryName1 += 0; | |
327 | strEntryName1 += strSector; | |
328 | strEntryName1 += cSect; | |
329 | if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data())) | |
330 | AliFatal(Form("New lay 1: Unable to set alignable entry 1! %s::%s", | |
331 | strEntryName1.Data(),sector.Data())); | |
b7943f00 | 332 | |
717cdf18 | 333 | for(Int_t cStave=0; cStave<2; cStave++) { |
334 | ||
335 | stave = sector; | |
336 | stave += str1; | |
337 | stave += cStave+1; | |
338 | strEntryName2 = strEntryName1; | |
339 | strEntryName2 += strStave; | |
340 | strEntryName2 += cStave; | |
341 | ||
342 | for(Int_t cHS=0; cHS<2; cHS++) { | |
343 | ||
344 | halfStave = stave; | |
345 | halfStave += str1Bis; | |
346 | halfStave += cHS; | |
347 | halfStave += str1Tierce; | |
348 | strEntryName3 = strEntryName2; | |
349 | strEntryName3 += strHalfStave; | |
350 | strEntryName3 += cHS; | |
351 | ||
352 | if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(), | |
353 | halfStave.Data())) | |
354 | AliFatal(Form("New lay 1: Unable to set alignable entry 3! %s::%s", | |
355 | strEntryName3.Data(),halfStave.Data())); | |
356 | ||
357 | for(Int_t cLad=0; cLad<2; cLad++) { | |
358 | ||
359 | modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); | |
360 | module = halfStave; | |
361 | module += str2; | |
362 | module += cLad+cHS*2+1; | |
363 | strEntryName4 = strEntryName3; | |
364 | strEntryName4 += strLadder; | |
365 | strEntryName4 += cLad+cHS*2; | |
366 | if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID)) | |
367 | AliFatal(Form("New lay 1: Unable to set alignable entry 4! %s::%s", | |
368 | strEntryName4.Data(),module.Data())); | |
369 | ||
370 | SetT2Lmatrix(modUID, 0.0081, kTRUE, kTRUE); | |
371 | // 0.0081 is the shift between the centers of alignable | |
372 | // and sensitive volumes. It is directly extracted from | |
373 | // the new SPD geometry | |
374 | } // end for cLad | |
375 | } // end for cHS | |
376 | } // end for cStave | |
377 | } // end for cSect | |
378 | ||
379 | layerId = AliGeomManager::kSPD2; | |
380 | modnum = 0; | |
381 | str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/ITSSPDlay2-Stave_"; | |
382 | str2 = "/ITSSPDlay2-Ladder_"; | |
383 | ||
384 | for(Int_t cSect = 0; cSect<10; cSect++) { | |
385 | ||
386 | sector = str0; | |
387 | sector += cSect+1; // this is one full sector | |
388 | strEntryName1 = strSPD; | |
389 | strEntryName1 += 1; | |
390 | strEntryName1 += strSector; | |
391 | strEntryName1 += cSect; | |
392 | ||
393 | for(Int_t cStave=0; cStave<4; cStave++) { | |
394 | ||
395 | stave = sector; | |
396 | stave += str1; | |
397 | stave += cStave+1; | |
398 | strEntryName2 = strEntryName1; | |
399 | strEntryName2 += strStave; | |
400 | strEntryName2 += cStave; | |
401 | ||
402 | for(Int_t cHS=0; cHS<2; cHS++) { | |
403 | ||
404 | halfStave = stave; | |
405 | halfStave += str1Bis; | |
406 | halfStave += cHS; | |
407 | halfStave += str1Tierce; | |
408 | strEntryName3 = strEntryName2; | |
409 | strEntryName3 += strHalfStave; | |
410 | strEntryName3 += cHS; | |
411 | ||
412 | if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(), | |
413 | halfStave.Data())) | |
414 | AliFatal(Form("New lay 2: Unable to set alignable entry 3! %s::%s", | |
415 | strEntryName3.Data(),halfStave.Data())); | |
416 | ||
417 | for(Int_t cLad=0; cLad<2; cLad++) { | |
418 | ||
419 | modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); | |
420 | module = halfStave; | |
421 | module += str2; | |
422 | module += cLad+cHS*2 +1; | |
423 | strEntryName4 = strEntryName3; | |
424 | strEntryName4 += strLadder; | |
425 | strEntryName4 += cLad+cHS*2; | |
426 | if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID)) | |
427 | AliFatal(Form("New lay 2: Unable to set alignable entry 4! %s::%s", | |
428 | strEntryName4.Data(),module.Data())); | |
429 | ||
430 | SetT2Lmatrix(modUID, -0.0081, kFALSE); | |
431 | } // end for cLad | |
432 | } // end for cHS | |
433 | } // end for cStave | |
434 | } // cSect | |
435 | ||
436 | //===== SDD layers ===== | |
437 | ||
438 | layerId = AliGeomManager::kSDD1; | |
439 | modnum = 0; | |
440 | ||
441 | str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1 | |
442 | str1 = "/ITSsddSensor3_"; | |
443 | ||
444 | TString sensor; | |
445 | ||
446 | for(Int_t c1 = 0; c1<14; c1++) { | |
447 | ||
448 | ladder = str0; | |
449 | ladder += c1; // the set of wafers from one ladder | |
450 | strEntryName1 = strSDD; | |
451 | strEntryName1 += 2; | |
452 | strEntryName1 +=strLadder; | |
453 | strEntryName1 += c1; | |
454 | //printf("%s == %s\n",strEntryName1.Data(),ladder.Data()); | |
455 | if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data())) | |
456 | AliFatal(Form("Unable to set alignable entry 1! %s :: %s", | |
457 | strEntryName1.Data(),ladder.Data())); | |
458 | ||
459 | for(Int_t c2 =0; c2<6; c2++) { | |
460 | ||
461 | modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); | |
462 | sensor = ladder; | |
463 | sensor += str1; | |
464 | sensor += c2; | |
465 | strEntryName2 = strEntryName1; | |
466 | strEntryName2 += strSensor; | |
467 | strEntryName2 += c2; | |
468 | //printf("%s == %s\n",strEntryName2.Data(),wafer.Data()); | |
469 | if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID)) | |
470 | AliFatal(Form("Unable to set alignable entry 2! %s :: %s", | |
471 | strEntryName2.Data(),sensor.Data())); | |
472 | ||
473 | SetT2Lmatrix(modUID, 0, kFALSE, c2>=3); | |
474 | } | |
475 | } | |
476 | ||
477 | layerId = AliGeomManager::kSDD2; | |
478 | modnum = 0; | |
479 | str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2 | |
480 | str1 = "/ITSsddSensor4_"; | |
481 | ||
482 | for(Int_t c1 = 0; c1<22; c1++) { | |
483 | ||
484 | ladder = str0; | |
485 | ladder += c1; // the set of wafers from one ladder | |
486 | strEntryName1 = strSDD; | |
487 | strEntryName1 += 3; | |
488 | strEntryName1 += strLadder; | |
489 | strEntryName1 += c1; | |
490 | //printf("%s == %s\n",strEntryName1.Data(),ladder.Data()); | |
491 | if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data())) | |
492 | AliFatal(Form("Unable to set alignable entry 1! %s :: %s", | |
493 | strEntryName1.Data(),ladder.Data())); | |
494 | ||
495 | for(Int_t c2 =0; c2<8; c2++) { | |
496 | ||
497 | modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); | |
498 | sensor = ladder; | |
499 | sensor += str1; | |
500 | sensor += c2; | |
501 | strEntryName2 = strEntryName1; | |
502 | strEntryName2 += strSensor; | |
503 | strEntryName2 += c2; | |
504 | //printf("%s == %s\n",strEntryName2.Data(),wafer.Data()); | |
505 | if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID)) | |
506 | AliFatal(Form("Unable to set alignable entry 2! %s :: %s", | |
507 | strEntryName2.Data(),sensor.Data())); | |
508 | ||
509 | SetT2Lmatrix(modUID, 0, kFALSE, c2>=4); | |
510 | } | |
511 | } | |
512 | ||
513 | //===== SSD layers ===== | |
514 | ||
515 | layerId = AliGeomManager::kSSD1; | |
516 | modnum = 0; | |
517 | ||
518 | str0 = "/ALIC_1/ITSV_1/ITSssdLayer5_1/ITSssdLay5Ladd_";//SSD layer1 | |
519 | str1 = "/ITSssdSensor5_"; | |
520 | str2 = ""; | |
521 | ||
522 | TString wafer; | |
523 | ||
524 | for(Int_t c1 = 0; c1<34; c1++) { | |
525 | ||
526 | ladder = str0; | |
527 | ladder += c1; // the set of wafers from one ladder | |
528 | strEntryName1 = strSSD; | |
529 | strEntryName1 += 4; | |
530 | strEntryName1 += strLadder; | |
531 | strEntryName1 += c1; | |
532 | //printf("%s == %s\n",strEntryName1.Data(),ladder.Data()); | |
533 | if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data())) | |
534 | AliFatal(Form("Unable to set alignable entry 1! %s :: %s", | |
535 | strEntryName1.Data(),ladder.Data())); | |
536 | ||
537 | for(Int_t c2 =0; c2<22; c2++) { | |
538 | ||
539 | modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); | |
540 | wafer = ladder; | |
541 | wafer += str1; | |
542 | wafer += c2; | |
543 | //wafer += str2; // one wafer | |
544 | strEntryName2 = strEntryName1; | |
545 | strEntryName2 += strSensor; | |
546 | strEntryName2 += c2; | |
547 | //printf("%s == %s\n",strEntryName2.Data(),wafer.Data()); | |
548 | if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID)) | |
549 | AliFatal(Form("Unable to set alignable entry 2! %s :: %s", | |
550 | strEntryName2.Data(),wafer.Data())); | |
551 | ||
552 | SetT2Lmatrix(modUID, 0, kFALSE, kFALSE); | |
553 | } | |
554 | } | |
555 | ||
556 | layerId = AliGeomManager::kSSD2; | |
557 | modnum = 0; | |
558 | str0 = "/ALIC_1/ITSV_1/ITSssdLayer6_1/ITSssdLay6Ladd_"; // SSD layer2 | |
559 | str1 = "/ITSssdSensor6_"; | |
560 | str2 = ""; | |
561 | ||
562 | for(Int_t c1 = 0; c1<38; c1++) { | |
563 | ||
564 | ladder = str0; | |
565 | ladder += c1; // the set of wafers from one ladder | |
566 | strEntryName1 = strSSD; | |
567 | strEntryName1 += 5; | |
568 | strEntryName1 += strLadder; | |
569 | strEntryName1 += c1; | |
570 | //printf("%s == %s\n",strEntryName1.Data(),ladder.Data()); | |
571 | if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data())) | |
572 | AliFatal(Form("Unable to set alignable entry 1! %s :: %s", | |
573 | strEntryName1.Data(),ladder.Data())); | |
574 | ||
575 | for(Int_t c2 =0; c2<25; c2++) { | |
576 | ||
577 | modUID = AliGeomManager::LayerToVolUID(layerId,modnum++); | |
578 | wafer = ladder; | |
579 | wafer += str1; | |
580 | wafer += c2; | |
581 | //wafer += str2; // one wafer | |
582 | strEntryName2 = strEntryName1; | |
583 | strEntryName2 += strSensor; | |
584 | strEntryName2 += c2; | |
585 | //printf("%s == %s\n",strEntryName2.Data(),wafer.Data()); | |
586 | if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID)) | |
587 | AliFatal(Form("Unable to set alignable entry 2! %s :: %s", | |
588 | strEntryName2.Data(),wafer.Data())); | |
589 | ||
590 | SetT2Lmatrix(modUID, 0, kFALSE, kFALSE); | |
591 | } | |
592 | } | |
593 | ||
541f7ba6 | 594 | } |
717cdf18 | 595 | |
541f7ba6 | 596 | //______________________________________________________________________ |
717cdf18 | 597 | void AliITSv11::CreateGeometry() |
598 | { | |
599 | // Create the geometry and insert it in ALIC | |
600 | ||
601 | TGeoManager *geoManager = gGeoManager; | |
602 | ||
603 | TGeoVolume *vALIC = geoManager->GetVolume("ALIC"); | |
604 | ||
605 | // This part is really ugly, needs to be redone | |
606 | new TGeoVolumeAssembly("ITSV"); | |
607 | new TGeoVolumeAssembly("ITSS"); | |
608 | ||
609 | TGeoVolume *vITSV = geoManager->GetVolume("ITSV"); | |
610 | TGeoVolume *vITSS = geoManager->GetVolume("ITSS"); | |
611 | ||
612 | vALIC->AddNode(vITSV, 1, 0); | |
613 | vALIC->AddNode(vITSS, 1, 0); | |
614 | ||
615 | // | |
616 | const Char_t *cvsDate="$Date$"; | |
617 | const Char_t *cvsRevision="$Revision$"; | |
618 | const Int_t kLength=100; | |
619 | Char_t vstrng[kLength]; | |
620 | if(fInitGeom.WriteVersionString(vstrng,kLength,(AliITSVersion_t)IsVersion(), | |
621 | fMinorVersion,cvsDate,cvsRevision)) { | |
622 | vITSV->SetTitle(vstrng); | |
623 | vITSS->SetTitle(vstrng); | |
624 | } | |
625 | ||
626 | fSPDgeom->SPDSector(vITSV); | |
627 | ||
628 | fSDDgeom->Layer3(vITSV); | |
629 | fSDDgeom->Layer4(vITSV); | |
630 | fSDDgeom->ForwardLayer3(vITSV); | |
631 | fSDDgeom->ForwardLayer4(vITSV); | |
632 | ||
633 | fSSDgeom->Layer5(vITSV); | |
634 | fSSDgeom->Layer6(vITSV); | |
635 | fSSDgeom->LadderSupportLayer5(vITSV); | |
636 | fSSDgeom->LadderSupportLayer6(vITSV); | |
637 | fSSDgeom->EndCapSupportSystemLayer6(vITSV); | |
638 | fSSDgeom->EndCapSupportSystemLayer5(vITSV); | |
639 | ||
640 | fSupgeom->SPDCone(vITSV); | |
641 | fSupgeom->SDDCone(vITSV); | |
642 | fSupgeom->SSDCone(vITSV); | |
643 | ||
644 | fSDDgeom->SDDCables(vITSV); | |
645 | fSSDgeom->SSDCables(vITSV); | |
646 | fSupgeom->ServicesCableSupport(vITSS); | |
647 | ||
648 | fSupgeom->ITSTPCSupports(vITSS); | |
649 | ||
650 | } | |
651 | ||
652 | //______________________________________________________________________ | |
653 | void AliITSv11::CreateMaterials() | |
654 | { | |
655 | // Create ITS materials | |
656 | // This function defines the default materials used in the Geant | |
657 | // Monte Carlo simulations for the geometries AliITSv1, AliITSv3, | |
658 | // AliITSv11. | |
659 | // In general it is automatically replaced by | |
660 | // the CreateMaterials routine defined in AliITSv?. Should the function | |
661 | // CreateMaterials not exist for the geometry version you are using this | |
662 | // one is used. See the definition found in AliITSv5 or the other routine | |
663 | // for a complete definition. | |
54c9a3d9 | 664 | // Inputs: |
717cdf18 | 665 | // none. |
54c9a3d9 | 666 | // Outputs: |
717cdf18 | 667 | // none. |
54c9a3d9 | 668 | // Return: |
717cdf18 | 669 | // none. |
670 | ||
671 | Int_t ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ(); | |
672 | Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max(); | |
531d6cdc | 673 | |
717cdf18 | 674 | Float_t tmaxfd = 0.1; // 1.0; // Degree |
675 | Float_t stemax = 1.0; // cm | |
676 | Float_t deemax = 0.1; // 30.0; // Fraction of particle's energy 0<deemax<=1 | |
677 | Float_t epsil = 1.0E-4; // 1.0; // cm | |
678 | Float_t stmin = 0.0; // cm "Default value used" | |
679 | ||
680 | Float_t tmaxfdSi = 0.1; // .10000E+01; // Degree | |
681 | Float_t stemaxSi = 0.0075; // .10000E+01; // cm | |
682 | Float_t deemaxSi = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1 | |
683 | Float_t epsilSi = 1.0E-4;// .10000E+01; | |
684 | Float_t stminSi = 0.0; // cm "Default value used" | |
685 | ||
686 | Float_t tmaxfdAir = 0.1; // .10000E+01; // Degree | |
687 | Float_t stemaxAir = .10000E+01; // cm | |
688 | Float_t deemaxAir = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1 | |
689 | Float_t epsilAir = 1.0E-4;// .10000E+01; | |
690 | Float_t stminAir = 0.0; // cm "Default value used" | |
691 | ||
692 | Float_t tmaxfdServ = 1.0; // 10.0; // Degree | |
693 | Float_t stemaxServ = 1.0; // 0.01; // cm | |
694 | Float_t deemaxServ = 0.5; // 0.1; // Fraction of particle's energy 0<deemax<=1 | |
695 | Float_t epsilServ = 1.0E-3; // 0.003; // cm | |
696 | Float_t stminServ = 0.0; //0.003; // cm "Default value used" | |
697 | ||
698 | // Freon PerFluorobuthane C4F10 see | |
699 | // http://st-support-cooling-electronics.web.cern.ch/ | |
700 | // st-support-cooling-electronics/default.htm | |
701 | Float_t afre[2] = { 12.011,18.9984032 }; | |
702 | Float_t zfre[2] = { 6., 9. }; | |
703 | Float_t wfre[2] = { 4.,10. }; | |
704 | Float_t densfre = 1.52; | |
705 | ||
706 | ||
707 | //CM55J | |
708 | ||
709 | Float_t aCM55J[4]={12.0107,14.0067,15.9994,1.00794}; | |
710 | Float_t zCM55J[4]={6.,7.,8.,1.}; | |
711 | Float_t wCM55J[4]={0.908508078,0.010387573,0.055957585,0.025146765}; | |
712 | Float_t dCM55J = 1.8; | |
713 | ||
714 | //ALCM55J | |
715 | ||
716 | Float_t aALCM55J[5]={12.0107,14.0067,15.9994,1.00794,26.981538}; | |
717 | Float_t zALCM55J[5]={6.,7.,8.,1.,13.}; | |
718 | Float_t wALCM55J[5]={0.817657902,0.0093488157,0.0503618265,0.0226320885,0.1}; | |
719 | Float_t dALCM55J = 1.9866; | |
720 | ||
721 | //Si Chips | |
722 | ||
723 | Float_t aSICHIP[6]={12.0107,14.0067,15.9994,1.00794,28.0855,107.8682}; | |
724 | Float_t zSICHIP[6]={6.,7.,8.,1.,14., 47.}; | |
725 | Float_t wSICHIP[6]={0.039730642,0.001396798,0.01169634,0.004367771,0.844665,0.09814344903}; | |
726 | Float_t dSICHIP = 2.36436; | |
727 | ||
728 | //Inox | |
531d6cdc | 729 | |
717cdf18 | 730 | Float_t aINOX[9]={12.0107,54.9380, 28.0855,30.9738,32.066,58.6928,51.9961,95.94,55.845}; |
731 | Float_t zINOX[9]={6.,25.,14.,15.,16., 28.,24.,42.,26.}; | |
732 | Float_t wINOX[9]={0.0003,0.02,0.01,0.00045,0.0003,0.12,0.17,0.025,0.654}; | |
733 | Float_t dINOX = 8.03; | |
734 | ||
735 | //AISI 304 L (from F.Tosello's web page - M.S. 18 Oct 10) | |
736 | ||
737 | Float_t a304L[8]={12.0107,54.9380, 28.0855,30.9738,32.066,58.6928,51.9961,55.845}; | |
738 | Float_t z304L[8]={6.,25.,14.,15.,16., 28.,24.,26.}; | |
739 | Float_t w304L[8]={0.0003,0.02,0.01,0.00045,0.003,0.0925,0.19,0.6865}; | |
740 | Float_t d304L = 8.03; | |
741 | ||
742 | //SDD HV microcable | |
743 | ||
744 | Float_t aHVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538}; | |
745 | Float_t zHVm[5]={6.,1.,7.,8.,13.}; | |
746 | Float_t wHVm[5]={0.520088819984,0.01983871336,0.0551367996,0.157399667056, 0.247536}; | |
747 | Float_t dHVm = 1.6087; | |
748 | ||
749 | //SDD LV+signal cable | |
750 | ||
751 | Float_t aLVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538}; | |
752 | Float_t zLVm[5]={6.,1.,7.,8.,13.}; | |
753 | Float_t wLVm[5]={0.21722436468,0.0082859922,0.023028867,0.06574077612, 0.68572}; | |
754 | Float_t dLVm = 2.1035; | |
755 | ||
756 | //SDD hybrid microcab | |
757 | ||
758 | Float_t aHLVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538}; | |
759 | Float_t zHLVm[5]={6.,1.,7.,8.,13.}; | |
760 | Float_t wHLVm[5]={0.24281879711,0.00926228815,0.02574224025,0.07348667449, 0.64869}; | |
761 | Float_t dHLVm = 2.0502; | |
762 | ||
763 | //SDD anode microcab | |
764 | ||
765 | Float_t aALVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538}; | |
766 | Float_t zALVm[5]={6.,1.,7.,8.,13.}; | |
767 | Float_t wALVm[5]={0.392653705471,0.0128595919215,0.041626868025,0.118832707289, 0.431909}; | |
768 | Float_t dALVm = 2.0502; | |
769 | ||
770 | //X7R capacitors - updated from F.Tosello's web page - M.S. 18 Oct 10 | |
771 | ||
772 | Float_t aX7R[6]={137.327,47.867,15.9994,58.6928,63.5460,118.710}; | |
773 | Float_t zX7R[6]={56.,22.,8.,28.,29.,50.}; | |
774 | Float_t wX7R[6]={0.524732,0.176736,0.179282,0.079750,0.019750,0.019750}; | |
775 | Float_t dX7R = 6.07914; | |
776 | ||
777 | //X7R weld, i.e. Sn 60% Pb 40% (from F.Tosello's web page - M.S. 15 Oct 10) | |
778 | ||
779 | Float_t aX7Rweld[2]={118.71 , 207.20}; | |
780 | Float_t zX7Rweld[2]={ 50. , 82. }; | |
781 | Float_t wX7Rweld[2]={ 0.60 , 0.40}; | |
782 | Float_t dX7Rweld = 8.52358; | |
783 | ||
784 | // AIR | |
785 | ||
786 | Float_t aAir[4]={12.0107,14.0067,15.9994,39.948}; | |
787 | Float_t zAir[4]={6.,7.,8.,18.}; | |
788 | Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827}; | |
789 | Float_t dAir = 1.20479E-3; | |
790 | ||
791 | // Water | |
792 | ||
793 | Float_t aWater[2]={1.00794,15.9994}; | |
794 | Float_t zWater[2]={1.,8.}; | |
795 | Float_t wWater[2]={0.111894,0.888106}; | |
796 | Float_t dWater = 1.0; | |
797 | ||
798 | // CERAMICS | |
799 | // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3 | |
800 | Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 }; | |
801 | Float_t zcer[5] = { 13., 8., 14., 25., 24. }; | |
802 | Float_t wcer[5] = {.4443408,.5213375,.0130872,.0178135,.003421}; | |
803 | Float_t denscer = 3.6; | |
804 | ||
805 | //G10FR4 | |
806 | ||
807 | Float_t zG10FR4[14] = {14.00, 20.00, 13.00, 12.00, 5.00, 22.00, 11.00, 19.00, 26.00, 9.00, 8.00, 6.00, 7.00, 1.00}; | |
808 | Float_t aG10FR4[14] = {28.0855000,40.0780000,26.9815380,24.3050000,10.8110000,47.8670000,22.9897700,39.0983000,55.8450000,18.9984000,15.9994000,12.0107000,14.0067000,1.0079400}; | |
809 | Float_t wG10FR4[14] = {0.15144894,0.08147477,0.04128158,0.00904554,0.01397570,0.00287685,0.00445114,0.00498089,0.00209828,0.00420000,0.36043788,0.27529426,0.01415852,0.03427566}; | |
810 | Float_t densG10FR4= 1.8; | |
811 | ||
812 | //--- EPOXY --- C18 H19 O3 | |
813 | Float_t aEpoxy[3] = {15.9994, 1.00794, 12.0107} ; | |
814 | Float_t zEpoxy[3] = { 8., 1., 6.} ; | |
815 | Float_t wEpoxy[3] = { 3., 19., 18.} ; | |
816 | Float_t dEpoxy = 1.8 ; | |
817 | ||
818 | // rohacell: C9 H13 N1 O2 | |
819 | Float_t arohac[4] = {12.01, 1.01, 14.010, 16.}; | |
820 | Float_t zrohac[4] = { 6., 1., 7., 8.}; | |
821 | Float_t wrohac[4] = { 14., 10., 2., 6.}; | |
822 | Float_t drohac = 0.052; | |
823 | ||
824 | // If he/she means stainless steel (inox) + Aluminium and Zeff=15.3383 then | |
825 | // | |
826 | // %Al=81.6164 %inox=100-%Al | |
827 | ||
828 | Float_t aInAl[5] = {27., 55.847,51.9961,58.6934,28.0855 }; | |
829 | Float_t zInAl[5] = {13., 26.,24.,28.,14. }; | |
830 | Float_t wInAl[5] = {.816164, .131443,.0330906,.0183836,.000919182}; | |
831 | Float_t dInAl = 3.075; | |
832 | ||
833 | // Aluminum alloy with 12% Copper - 21 Oct 10 | |
834 | ||
835 | Float_t aAlCu12[2] = {26.9815, 63.546}; | |
836 | Float_t zAlCu12[2] = {13. , 29. }; | |
837 | Float_t wAlCu12[2] = { 0.88 , 0.12 }; | |
838 | Float_t dAlCu12 = 2.96; | |
839 | ||
840 | // Kapton | |
841 | ||
842 | Float_t aKapton[4]={1.00794,12.0107, 14.010,15.9994}; | |
843 | Float_t zKapton[4]={1.,6.,7.,8.}; | |
844 | Float_t wKapton[4]={0.026362,0.69113,0.07327,0.209235}; | |
845 | Float_t dKapton = 1.42; | |
846 | ||
847 | // Kapton + Cu (for Pixel Bus) | |
848 | ||
849 | Float_t aKaptonCu[5]={1.00794, 12.0107, 14.010, 15.9994, 63.5460}; | |
850 | Float_t zKaptonCu[5]={1., 6., 7., 8., 29.}; | |
851 | Float_t wKaptonCuBus[5]; | |
852 | ||
853 | // Kapton + Cu (for Pixel MCM) | |
854 | ||
855 | Float_t wKaptonCuMCM[5]; | |
856 | ||
857 | // Kapton + Cu (mix of two above) | |
858 | ||
859 | Float_t wKaptonCuMix[5]; | |
860 | ||
861 | //SDD ruby sph. | |
862 | Float_t aAlOxide[2] = { 26.981539,15.9994}; | |
863 | Float_t zAlOxide[2] = { 13., 8.}; | |
864 | Float_t wAlOxide[2] = {0.4707, 0.5293}; | |
865 | Float_t dAlOxide = 3.97; | |
866 | ||
867 | // Silica for optical fibers: Si O2 | |
868 | Float_t aoptfib[2] = { 28.0855, 15.9994}; | |
869 | Float_t zoptfib[2] = { 14., 8. }; | |
870 | Float_t woptfib[2] = { 1., 2. }; | |
871 | Float_t doptfib = 2.55; | |
872 | ||
873 | // Tetrafluorethylene-Perfluorpropylene (FEP) - 08 Mar 10 | |
874 | Float_t aFEP[2] = { 12.0107, 18.9984}; | |
875 | Float_t zFEP[2] = { 6. , 9. }; | |
876 | Float_t wFEP[2] = { 1. , 2. }; | |
877 | Float_t dFEP = 2.15; | |
878 | ||
879 | // PVC (C2H3Cl)n - 08 Jul 10 | |
880 | Float_t aPVC[3] = { 12.0107, 1.00794, 35.4527}; | |
881 | Float_t zPVC[3] = { 6. , 1. , 35. }; | |
882 | Float_t wPVC[3] = { 2. , 3. , 1. }; | |
883 | Float_t dPVC = 1.3; | |
884 | ||
885 | // PBT (Polybutylene terephthalate = C12-H12-O4) - 01 Sep 10 | |
886 | Float_t aPBT[3] = { 12.0107, 1.00794, 15.9994}; | |
887 | Float_t zPBT[3] = { 6. , 1. , 8. }; | |
888 | Float_t wPBT[3] = { 12. ,12. , 4. }; | |
889 | Float_t dPBT = 1.31; | |
890 | ||
891 | // POLYAX (POLYAX = C37-H24-O6-N2) - 03 Sep 10 | |
892 | Float_t aPOLYAX[4] = { 12.0107, 1.00794, 15.9994, 14.00674}; | |
893 | Float_t zPOLYAX[4] = { 6. , 1. , 8. , 7. }; | |
894 | Float_t wPOLYAX[4] = { 37. ,24. , 6. , 2. }; | |
895 | Float_t dPOLYAX = 1.27; | |
896 | ||
897 | // PPS (PPS = C6-H4-S) - 05 Sep 10 | |
898 | Float_t aPPS[3] = { 12.0107, 1.00794, 32.066}; | |
899 | Float_t zPPS[3] = { 6. , 1. , 16. }; | |
900 | Float_t wPPS[3] = { 6. , 4. , 1. }; | |
901 | Float_t dPPS = 1.35; | |
902 | ||
903 | // Megolon (Polyolefin = (C-H2)n) - 20 Oct 10 | |
904 | Float_t aMegolon[2] = { 12.0107, 1.00794}; | |
905 | Float_t zMegolon[2] = { 6. , 1. }; | |
906 | Float_t wMegolon[2] = { 1. , 2. }; | |
907 | Float_t dMegolon = 1.51; // Mean of various types | |
908 | ||
909 | // Standard glass (from glassproperties.com/glasses - M.S. 21 Oct 10) | |
910 | Float_t aStdGlass[7] = {15.9994 ,28.0855 ,22.98977 ,40.078 , | |
911 | 24.305 ,26.981539,39.0983 }; | |
912 | Float_t zStdGlass[7] = { 8. ,14. ,11. ,20. , | |
913 | 12. ,13. ,19. }; | |
914 | Float_t wStdGlass[7] = { 0.468377, 0.348239, 0.096441, 0.071469, | |
915 | 0.006030, 0.005293, 0.004151}; | |
916 | Float_t dStdGlass = 2.53; | |
917 | ||
918 | // Glass Fiber (from F.Tosello's web page - M.S. 15 Oct 10) | |
919 | Float_t aGlass[11] = {15.9994 ,28.0855 ,40.078 ,26.981539,10.811 , | |
920 | 24.305 ,39.0983 ,22.98977 ,18.9984 ,47.867 ,55.845}; | |
921 | Float_t zGlass[11] = { 8. ,14. ,20 ,13 , 5 , | |
922 | 12. ,19 ,11 , 9 ,22 ,26 }; | |
923 | Float_t wGlass[11] = { 0.473610, 0.252415, 0.135791, 0.068803, 0.023293, | |
924 | 0.015076, 0.008301, 0.007419, 0.007000, 0.004795, 0.003497}; | |
925 | Float_t dGlass = 2.61; | |
926 | ||
927 | // Ryton R-4 04 (from F.Tosello's web page - M.S. 15 Oct 10) | |
928 | Float_t aRyton[14] = {15.9994 ,28.0855 ,40.078 ,26.981539,10.811 , | |
929 | 24.305 ,39.0983 ,22.98977 ,18.9984 ,47.867 , | |
930 | 55.845 ,12.0107 , 1.00794 ,32.066 }; | |
931 | Float_t zRyton[14] = { 8. ,14. ,20. ,13. , 5. , | |
932 | 12. ,19. ,11. , 9. ,22. , | |
933 | 26. , 6. , 1. ,16. }; | |
934 | Float_t wRyton[14] = { 0.189445, 0.100966, 0.054316, 0.027521, 0.009317, | |
935 | 0.006030, 0.003320, 0.002968, 0.002800, 0.001918, | |
936 | 0.001399, 0.399760, 0.022365, 0.177875}; | |
937 | Float_t dRyton = 1.65; | |
938 | ||
939 | // Plexiglas (Poly(methyl methacrylate) (C5O2H8)n - M.S. 05 nov 10) | |
940 | Float_t aPlexy[3] = { 12.0107, 15.9994, 1.00794}; | |
941 | Float_t zPlexy[3] = { 6. , 8. , 1. }; | |
942 | Float_t wPlexy[3] = { 5. , 2. , 8. }; | |
943 | Float_t dPlexy = 1.18; | |
944 | ||
945 | //SSD NiSn capacitor ends | |
946 | Float_t aNiSn[2] = { 56.6934,118.710}; | |
947 | Float_t zNiSn[2] = { 28., 50.}; | |
948 | Float_t wNiSn[2] = {0.33, 0.67}; | |
949 | Float_t dNiSn = wNiSn[0]*8.908 + wNiSn[1]*7.310; | |
950 | ||
951 | AliMaterial(1,"SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
952 | AliMedium(1,"SI$",1,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
953 | ||
954 | AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
955 | AliMedium(2,"SPD SI CHIP$",2,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
956 | ||
957 | AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
958 | AliMedium(3,"SPD SI BUS$",3,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
959 | ||
960 | AliMixture(4,"C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J); | |
961 | AliMedium(4,"C (M55J)$",4,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
962 | ||
963 | AliMixture(5,"AIR$",aAir,zAir,dAir,4,wAir); | |
964 | AliMedium(5,"AIR$",5,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); | |
965 | ||
966 | AliMixture(6,"GEN AIR$",aAir,zAir,dAir,4,wAir); | |
967 | AliMedium(6,"GEN AIR$",6,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); | |
968 | ||
969 | AliMixture(7,"SDD SI CHIP$",aSICHIP,zSICHIP,dSICHIP,6,wSICHIP); | |
970 | AliMedium(7,"SDD SI CHIP$",7,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
971 | ||
972 | AliMixture(9,"SDD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J); | |
973 | AliMedium(9,"SDD C (M55J)$",9,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
974 | ||
975 | AliMixture(10,"SDD AIR$",aAir,zAir,dAir,4,wAir); | |
976 | AliMedium(10,"SDD AIR$",10,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); | |
977 | ||
978 | AliMaterial(11,"AL$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03); | |
979 | AliMedium(11,"AL$",11,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
980 | ||
981 | AliMixture(12, "Water$",aWater,zWater,dWater,2,wWater); | |
982 | AliMedium(12,"WATER$",12,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
983 | ||
b78b741f | 984 | AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre); |
717cdf18 | 985 | AliMedium(13,"Freon$",13,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
986 | ||
987 | AliMaterial(14,"COPPER$",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03); | |
988 | AliMedium(14,"COPPER$",14,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
989 | AliMixture(15,"CERAMICS$",acer,zcer,denscer,5,wcer); | |
990 | AliMedium(15,"CERAMICS$",15,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
991 | ||
992 | AliMixture(20,"SSD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J); | |
993 | AliMedium(20,"SSD C (M55J)$",20,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
994 | ||
995 | AliMixture(21,"SSD AIR$",aAir,zAir,dAir,4,wAir); | |
996 | AliMedium(21,"SSD AIR$",21,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); | |
997 | ||
998 | AliMixture(25,"G10FR4$",aG10FR4,zG10FR4,densG10FR4,14,wG10FR4); | |
999 | AliMedium(25,"G10FR4$",25,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1000 | ||
1001 | AliMixture(26,"GEN C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J); | |
1002 | AliMedium(26,"GEN C (M55J)$",26,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1003 | ||
1004 | AliMixture(27,"GEN Air$",aAir,zAir,dAir,4,wAir); | |
1005 | AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); | |
1006 | ||
1007 | AliMixture(35,"PLEXYGLAS$",aPlexy,zPlexy,dPlexy,-3,wPlexy); | |
1008 | AliMedium(35,"PLEXYGLAS$",35,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1009 | ||
1010 | AliMixture(36,"STDGLASS$",aStdGlass,zStdGlass,dStdGlass,7,wStdGlass); | |
1011 | AliMedium(36,"STDGLASS$",36,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1012 | ||
1013 | AliMixture(37,"ALCU12$",aAlCu12,zAlCu12,dAlCu12,2,wAlCu12); | |
1014 | AliMedium(37,"ALCU12$",37,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1015 | ||
b78b741f | 1016 | AliMixture(38,"MEGOLON$",aMegolon,zMegolon,dMegolon,-2,wMegolon); |
717cdf18 | 1017 | AliMedium(38,"MEGOLON$",38,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
1018 | ||
1019 | AliMixture(39,"RYTON$",aRyton,zRyton,dRyton,14,wRyton); | |
1020 | AliMedium(39,"RYTON$",39,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1021 | ||
1022 | AliMixture(40,"GLASS FIBER$",aGlass,zGlass,dGlass,11,wGlass); | |
1023 | AliMedium(40,"GLASS FIBER$",40,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1024 | ||
1025 | AliMixture(41,"AISI304L$",a304L,z304L,d304L,8,w304L); | |
1026 | AliMedium(41,"AISI304L$",41,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1027 | ||
1028 | AliMaterial(42,"NICKEL$",0.58693E+02,0.28000E+02,0.89080E+01,0.14200E+01,0.99900E+03); | |
1029 | AliMedium(42,"NICKEL$",42,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1030 | ||
1031 | AliMixture(43,"SDD X7R weld$",aX7Rweld,zX7Rweld,dX7Rweld,2,wX7Rweld); | |
1032 | AliMedium(43,"SDD X7R weld$",43,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1033 | ||
b78b741f | 1034 | AliMixture(44,"PPS$",aPPS,zPPS,dPPS,-3,wPPS); |
717cdf18 | 1035 | AliMedium(44,"PPS$",44,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
1036 | ||
b78b741f | 1037 | AliMixture(45,"POLYAX$",aPOLYAX,zPOLYAX,dPOLYAX,-4,wPOLYAX); |
717cdf18 | 1038 | AliMedium(45,"POLYAX$",45,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
1039 | ||
b78b741f | 1040 | AliMixture(46,"PBT$",aPBT,zPBT,dPBT,-3,wPBT); |
717cdf18 | 1041 | AliMedium(46,"PBT$",46,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
1042 | ||
1043 | AliMixture(47,"PVC$",aPVC,zPVC,dPVC,-3,wPVC); | |
1044 | AliMedium(47,"PVC$",47,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1045 | ||
1046 | Double_t cuFrac = 0.56; | |
1047 | Double_t kFrac = 1.0 - cuFrac; | |
1048 | Double_t cuDens = 8.96; | |
1049 | Float_t dKaptonCuBus = cuFrac * cuDens + kFrac * dKapton; | |
1050 | for (Int_t j=0; j<4; j++) | |
1051 | wKaptonCuBus[j] = wKapton[j]*kFrac; | |
1052 | wKaptonCuBus[4] = cuFrac; | |
1053 | AliMixture(48, "SPD-BUS CU KAPTON", aKaptonCu, zKaptonCu, dKaptonCuBus, 5, wKaptonCuBus); | |
1054 | AliMedium(48,"SPD-BUS CU KAPTON$",48,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1055 | ||
1056 | cuFrac = 0.5; | |
1057 | kFrac = 1.0 - cuFrac; | |
1058 | Float_t dKaptonCuMCM = cuFrac * cuDens + kFrac * dKapton; | |
1059 | for (Int_t j=0; j<4; j++) | |
1060 | wKaptonCuMCM[j] = wKapton[j]*kFrac; | |
1061 | wKaptonCuMCM[4] = cuFrac; | |
1062 | AliMixture(49, "SPD-MCM CU KAPTON", aKaptonCu, zKaptonCu, dKaptonCuMCM, 5, wKaptonCuMCM); | |
1063 | AliMedium(49,"SPD-MCM CU KAPTON$",49,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1064 | ||
1065 | cuFrac = (0.56 + 0.5) / 2.0; | |
1066 | kFrac = 1.0 - cuFrac; | |
1067 | Float_t dKaptonCuMix = cuFrac * cuDens + kFrac * dKapton; | |
1068 | for (Int_t j=0; j<4; j++) | |
1069 | wKaptonCuMix[j] = wKapton[j]*kFrac; | |
1070 | wKaptonCuMix[4] = cuFrac; | |
1071 | AliMixture(50, "SPD-MIX CU KAPTON", aKaptonCu, zKaptonCu, dKaptonCuMix, 5, wKaptonCuMix); | |
1072 | AliMedium(50,"SPD-MIX CU KAPTON$",50,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1073 | ||
1074 | AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
1075 | AliMedium(51,"SPD SI$",51,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
1076 | ||
1077 | AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
1078 | AliMedium(52,"SPD SI CHIP$",52,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
1079 | ||
1080 | AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
1081 | AliMedium(53,"SPD SI BUS$",53,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
1082 | ||
1083 | AliMixture(54,"SPD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J); | |
1084 | AliMedium(54,"SPD C (M55J)$",54,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1085 | ||
1086 | AliMixture(55,"SPD AIR$",aAir,zAir,dAir,4,wAir); | |
1087 | AliMedium(55,"SPD AIR$",55,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); | |
1088 | ||
1089 | AliMixture(56, "SPD KAPTON(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton); | |
1090 | AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1091 | ||
1092 | // Gaseous Freon has same chemical composition but air density at 1.7 atm | |
b78b741f | 1093 | AliMixture(59,"GASEOUS FREON$",afre,zfre,1.7*dAir,-2,wfre); |
717cdf18 | 1094 | AliMedium(59,"GASEOUS FREON$",59,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
1095 | ||
1096 | AliMixture(61,"EPOXY$",aEpoxy,zEpoxy,dEpoxy,-3,wEpoxy); | |
1097 | AliMedium(61,"EPOXY$",61,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1098 | ||
1099 | AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
1100 | AliMedium(62,"SILICON$",62,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi); | |
1101 | ||
1102 | AliMixture(63, "KAPTONH(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton); | |
1103 | AliMedium(63,"KAPTONH(POLYCH2)$",63,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1104 | ||
1105 | AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03); | |
1106 | AliMedium(64,"ALUMINUM$",64,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1107 | ||
1108 | AliMixture(65,"INOX$",aINOX,zINOX,dINOX,9,wINOX); | |
1109 | AliMedium(65,"INOX$",65,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1110 | ||
1111 | AliMixture(66,"NiSn$",aNiSn,zNiSn,dNiSn,2,wNiSn); | |
1112 | AliMedium(66,"NiSn$",66,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1113 | ||
1114 | AliMaterial(67,"Sn$", 118.710, 50., 7.310, 1.206, 999.); | |
1115 | AliMedium(67,"Sn$",67,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1116 | ||
1117 | AliMixture(68,"ROHACELL$",arohac,zrohac,drohac,-4,wrohac); | |
1118 | AliMedium(68,"ROHACELL$",68,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1119 | ||
1120 | AliMixture(69,"SDD C AL (M55J)$",aALCM55J,zALCM55J,dALCM55J,5,wALCM55J); | |
1121 | AliMedium(69,"SDD C AL (M55J)$",69,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1122 | ||
1123 | AliMixture(70, "SDDKAPTON (POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton); | |
1124 | AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1125 | ||
1126 | AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03); | |
1127 | AliMedium(71,"ITS SANDW A$",71,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1128 | ||
1129 | AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03); | |
1130 | AliMedium(72,"ITS SANDW B$",72,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1131 | ||
1132 | AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03); | |
1133 | AliMedium(73,"ITS SANDW C$",73,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1134 | ||
1135 | AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03); | |
1136 | AliMedium(74,"HEAT COND GLUE$",74,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1137 | ||
1138 | AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
1139 | AliMedium(75,"ELASTO SIL$",75,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1140 | ||
1141 | // SPD bus (data from Petra Riedler) | |
1142 | Float_t aSPDbus[5] = {1.00794,12.0107,14.01,15.9994,26.982 }; | |
1143 | Float_t zSPDbus[5] = {1.,6.,7.,8.,13.}; | |
1144 | Float_t wSPDbus[5] = {0.023523,0.318053,0.009776,0.078057,0.570591}; | |
1145 | Float_t dSPDbus = 2.128505; | |
1146 | ||
1147 | // AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03); | |
1148 | AliMixture(76,"SPDBUS(AL+KPT+EPOX)$",aSPDbus,zSPDbus,dSPDbus,5,wSPDbus); | |
1149 | AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1150 | ||
1151 | AliMixture(77,"SDD X7R capacitors$",aX7R,zX7R,dX7R,6,wX7R); | |
1152 | AliMedium(77,"SDD X7R capacitors$",77,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1153 | ||
1154 | AliMixture(78,"SDD ruby sph. Al2O3$",aAlOxide,zAlOxide,dAlOxide,2,wAlOxide); | |
1155 | AliMedium(78,"SDD ruby sph. Al2O3$",78,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1156 | ||
1157 | AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03); | |
1158 | AliMedium(79,"SDD SI insensitive$",79,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1159 | ||
1160 | AliMixture(80,"SDD HV microcable$",aHVm,zHVm,dHVm,5,wHVm); | |
1161 | AliMedium(80,"SDD HV microcable$",80,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1162 | ||
1163 | AliMixture(81,"SDD LV+signal cable$",aLVm,zLVm,dLVm,5,wLVm); | |
1164 | AliMedium(81,"SDD LV+signal cable$",81,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1165 | ||
1166 | AliMixture(82,"SDD hybrid microcab$",aHLVm, zHLVm,dHLVm,5,wHLVm); | |
1167 | AliMedium(82,"SDD hybrid microcab$",82,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1168 | ||
1169 | AliMixture(83,"SDD anode microcab$",aALVm,zALVm,dALVm,5,wALVm); | |
1170 | AliMedium(83,"SDD anode microcab$",83,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1171 | Float_t aDSring[4]={12.0107, 1.00794, 14.0067, 15.9994}; | |
1172 | Float_t zDSring[4]={ 6., 1., 7., 8.}; | |
1173 | Float_t wDSring[4]={ 0.854323888, 0.026408778, 0.023050265, 0.096217069}; | |
1174 | Float_t dDSring = 0.2875; | |
1175 | AliMixture(84,"SDD/SSD rings$",aDSring,zDSring,dDSring,4,wDSring); | |
1176 | AliMedium(84,"SDD/SSD rings$",84,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1177 | ||
1178 | AliMixture(85,"inox/alum$",aInAl,zInAl,dInAl,5,wInAl); | |
1179 | AliMedium(85,"inox/alum$",85,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1180 | ||
1181 | // special media to take into account services in the SDD and SSD | |
1182 | // cones for the FMD | |
1183 | //Begin_Html | |
1184 | /* | |
1185 | <A HREF="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_MatBudget_4B.xls"> | |
1186 | </pre> | |
1187 | <br clear=left> | |
1188 | <font size=+2 color=blue> | |
1189 | <p> The Exel spread sheet from which these density number come from. | |
1190 | </font></A> | |
1191 | */ | |
1192 | //End_Html | |
1193 | ||
1194 | // AliMaterial(86,"AIRFMDSDD$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03); | |
1195 | Float_t aA[13],zZ[13],wW[13],den; | |
1196 | // From Pierluigi Barberis calculations of 2SPD+1SDD October 2 2002. | |
1197 | zZ[0] = 1.0; aA[0] = 1.00794; // Hydrogen | |
1198 | zZ[1] = 6.0; aA[1] = 12.011; // Carbon | |
1199 | zZ[2] = 7.0; aA[2] = 14.00674; // Nitrogen | |
1200 | zZ[3] = 8.0; aA[3] = 15.9994; // Oxigen | |
1201 | zZ[4] = 14.0; aA[4] = 28.0855; // Silicon | |
1202 | zZ[5] = 24.0; aA[5] = 51.9961; //Cromium | |
1203 | zZ[6] = 25.0; aA[6] = 54.938049; // Manganese | |
1204 | zZ[7] = 26.0; aA[7] = 55.845; // Iron | |
1205 | zZ[8] = 28.0; aA[8] = 58.6934; // Nickle | |
1206 | zZ[9] = 29.0; aA[9] = 63.546; // Copper | |
1207 | zZ[10] = 13.0; aA[10] = 26.981539; // Alulminum | |
1208 | zZ[11] = 47.0; aA[11] = 107.8682; // Silver | |
1209 | zZ[12] = 27.0; aA[12] = 58.9332; // Cobolt | |
1210 | wW[0] = 0.019965; | |
1211 | wW[1] = 0.340961; | |
1212 | wW[2] = 0.041225; | |
1213 | wW[3] = 0.200352; | |
1214 | wW[4] = 0.000386; | |
1215 | wW[5] = 0.001467; | |
1216 | wW[6] = 0.000155; | |
1217 | wW[7] = 0.005113; | |
1218 | wW[8] = 0.000993; | |
1219 | wW[9] = 0.381262; | |
1220 | wW[10] = 0.008121; | |
1221 | wW[11] = 0.000000; | |
1222 | wW[12] = 0.000000; | |
1223 | if(fByThick){// New values seeITS_MatBudget_4B.xls | |
1224 | den = 1.5253276; // g/cm^3 Cell O370 | |
1225 | }else{ | |
1226 | den = 2.58423412; // g/cm^3 Cell L370 | |
1227 | } // end if fByThick | |
1228 | //den = 6161.7/(3671.58978);//g/cm^3 Volume does not exclude holes | |
1229 | AliMixture(86,"AIRFMDSDD$",aA,zZ,den,+11,wW); | |
1230 | AliMedium(86,"AIRFMDSDD$",86,0,ifield,fieldm,tmaxfdAir,stemaxAir, | |
1231 | deemaxAir,epsilAir,stminAir); | |
1232 | ||
1233 | //AliMaterial(87,"AIRFMDSSD$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03); | |
1234 | // From Pierluigi Barberis calculations of SSD October 2 2002. | |
1235 | wW[0] = 0.019777; | |
1236 | wW[1] = 0.325901; | |
1237 | wW[2] = 0.031848; | |
1238 | wW[3] = 0.147668; | |
1239 | wW[4] = 0.030609; | |
1240 | wW[5] = 0.013993; | |
1241 | wW[6] = 0.001479; | |
1242 | wW[7] = 0.048792; | |
1243 | wW[8] = 0.009477; | |
1244 | wW[9] = 0.350697; | |
1245 | wW[10] = 0.014546; | |
1246 | wW[11] = 0.005213; | |
1247 | wW[12] = 0.000000; | |
1248 | if(fByThick){// New values seeITS_MatBudget_4B.xls | |
1249 | den = 1.2464275; // g/cm^3 Cell O403 | |
1250 | }else{ | |
1251 | den = 1.28134409; // g/cm^3 Cell L403 | |
1252 | } // end if fByThick | |
1253 | //den = 7666.3/(9753.553259); // volume does not exclude holes | |
1254 | AliMixture(87,"AIRFMDSSD$",aA,zZ,den,+12,wW); | |
1255 | AliMedium(87,"AIRFMDSSD$",87,0,ifield,fieldm,tmaxfdAir,stemaxAir, | |
1256 | deemaxAir,epsilAir,stminAir); | |
1257 | ||
1258 | //AliMaterial(88,"ITS SANDW CFMDSDD$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03); | |
1259 | // From Pierluigi Barberis calculations of 1SDD+Carbon fiber October 2 2002 | |
1260 | wW[0] = 0.016302; | |
1261 | wW[1] = 0.461870; | |
1262 | wW[2] = 0.033662; | |
1263 | wW[3] = 0.163595; | |
1264 | wW[4] = 0.000315; | |
1265 | wW[5] = 0.001197; | |
1266 | wW[6] = 0.000127; | |
1267 | wW[7] = 0.004175; | |
1268 | wW[8] = 0.000811; | |
1269 | wW[9] = 0.311315; | |
1270 | wW[10] = 0.006631; | |
1271 | wW[11] = 0.000000; | |
1272 | wW[12] = 0.000000; | |
1273 | if(fByThick){// New values seeITS_MatBudget_4B.xls | |
1274 | den = 1.9353276; // g/cm^3 Cell N370 | |
1275 | }else{ | |
1276 | den = 3.2788626; // g/cm^3 Cell F370 | |
1277 | } // end if fByThick | |
1278 | //den = 7667.1/(3671.58978); // Volume does not excludeholes | |
1279 | AliMixture(88,"ITS SANDW CFMDSDD$",aA,zZ,den,+11,wW); | |
1280 | AliMedium(88,"ITS SANDW CFMDSDD$",88,0,ifield,fieldm,tmaxfd,stemax, | |
1281 | deemax,epsil,stmin); | |
1282 | ||
1283 | //AliMaterial(89,"ITS SANDW CFMDSSD$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03); | |
1284 | // From Pierluigi Barberis calculations of SSD+Carbon fiber October 2 2002. | |
1285 | wW[0] = 0.014065; | |
1286 | wW[1] = 0.520598; | |
1287 | wW[2] = 0.022650; | |
1288 | wW[3] = 0.105018; | |
1289 | wW[4] = 0.021768; | |
1290 | wW[5] = 0.009952; | |
1291 | wW[6] = 0.001051; | |
1292 | wW[7] = 0.034700; | |
1293 | wW[8] = 0.006740; | |
1294 | wW[9] = 0.249406; | |
1295 | wW[10] = 0.010345; | |
1296 | wW[11] = 0.0003707; | |
1297 | wW[12] = 0.000000; | |
1298 | if(fByThick){// New values seeITS_MatBudget_4B.xls | |
1299 | den = 1.6564275; // g/cm^3 Cell N304 | |
1300 | }else{ | |
1301 | den = 1.7028296; // g/cm^3 Cell F304 | |
1302 | } // end if fByThick | |
1303 | //den = 1166.5/(3671.58978); // Volume does not exclude holes | |
1304 | AliMixture(89,"ITS SANDW CFMDSSD$",aA,zZ,den,+12,wW); | |
1305 | AliMedium(89,"ITS SANDW CFMDSSD$",89,0,ifield,fieldm,tmaxfd,stemax, | |
1306 | deemax,epsil,stmin); | |
1307 | ||
1308 | //AliMaterial(97,"SPD SERVICES$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03); | |
1309 | // From Pierluigi Barberis calculations of 1SPD October 2 2002. | |
1310 | wW[0] = 0.005970; | |
1311 | wW[1] = 0.304704; | |
1312 | wW[2] = 0.042510; | |
1313 | wW[3] = 0.121715; | |
1314 | wW[4] = 0.001118; | |
1315 | wW[5] = 0.030948; | |
1316 | wW[6] = 0.003270; | |
1317 | wW[7] = 0.107910; | |
1318 | wW[8] = 0.020960; | |
1319 | wW[9] = 0.360895; | |
1320 | wW[10] = 0.000000; | |
1321 | wW[11] = 0.000000; | |
1322 | wW[12] = 0.000000; | |
1323 | if(fByThick){// New values seeITS_MatBudget_4B.xls | |
1324 | den = 80.31136576; // g/cm^3 Cell H329 | |
1325 | }else{ | |
1326 | den = 87.13062; // g/cm^3 Cell G329 | |
1327 | } // end if fByThick | |
1328 | //den = 1251.3/(0.05*2.0*TMath::Pi()*(7.75*7.75 - 3.7*3.7)); // g/cm^3 | |
1329 | AliMixture(97,"SPD SERVICES$",aA,zZ,den,+10,wW); | |
1330 | AliMedium(97,"SPD SERVICES$",97,0,ifield,fieldm,tmaxfd,stemax, | |
1331 | deemax,epsil,stmin); | |
1332 | ||
1333 | ||
1334 | // Special media | |
1335 | ||
1336 | AliMaterial(90,"SPD shield$", 12.011, 6., 1.93 , 22.36, 999); | |
1337 | AliMedium(90,"SPD shield$",90,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1338 | ||
1339 | // SPD End Ladder (data from Petra Riedler) | |
1340 | Float_t aSPDel[5] = {1.00794,12.0107,14.01,15.9994,63.54 }; | |
1341 | Float_t zSPDel[5] = {1.,6.,7.,8.,29.}; | |
1342 | Float_t wSPDel[5] = {0.004092,0.107274,0.011438,0.032476,0.844719}; | |
1343 | Float_t dSPDel = 3.903403; | |
1344 | ||
1345 | // AliMaterial(91, "SPD End ladder$", 47.0447, 21.7963, 3.6374, 4.4711, 999); | |
1346 | AliMixture(91,"SPD End ladder$",aSPDel,zSPDel,dSPDel,5,wSPDel); | |
1347 | AliMedium(91,"SPD End ladder$",91,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1348 | ||
1349 | AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999); | |
1350 | AliMedium(92,"SPD cone$",92,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1351 | /* Material with fractional Z not actually used | |
1352 | AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999); | |
1353 | AliMedium(93,"SDD End ladder$",93,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1354 | */ | |
1355 | AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999); | |
1356 | AliMedium(94,"SDD cone$",94,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1357 | /* Material with fractional Z not actually used | |
1358 | AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999); | |
1359 | AliMedium(95,"SSD End ladder$",95,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1360 | */ | |
1361 | AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999); | |
1362 | AliMedium(96,"SSD cone$",96,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ); | |
1363 | ||
1364 | AliMixture(98,"SDD OPTICFIB$",aoptfib,zoptfib,doptfib,-2,woptfib); | |
1365 | AliMedium(98,"SDD OPTICFIB$",98,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1366 | ||
b78b741f | 1367 | AliMixture(95,"SSD FEP$",aFEP,zFEP,dFEP,-2,wFEP); |
717cdf18 | 1368 | AliMedium(95,"SSD FEP$",95,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); |
1369 | ||
1370 | // Mean material for low-voltage cables on SPD trays Side A | |
1371 | // (Copper + PolyEthylene (C2-H4)) (D.Elia for cable number and | |
1372 | // cross-section area, M.Sitta for elemental computation) - 26 Feb 10 | |
1373 | wW[0] = 0.323024;//H | |
1374 | wW[2] = 0.515464;//Cu | |
1375 | wW[1] = 0.161512;//C | |
1376 | wW[3] = 0.000000;//O | |
1377 | wW[4] = 0.000000;//S | |
1378 | wW[5] = 0.000000;//F | |
1379 | wW[6] = 0.000000;//Sn | |
1380 | wW[7] = 0.000000;//Pb | |
1381 | wW[8] = 0.000000;//Cr | |
1382 | wW[9] = 0.000000;//Si | |
1383 | wW[10] = 0.000000;//Ni | |
1384 | wW[11] = 0.000000;//Ca | |
1385 | ||
1386 | den = 5.078866; | |
1387 | AliMixture(60,"SPD_LOWCABLES$",aA,zZ,den,+3,wW); | |
1388 | AliMedium(60,"SPD_LOWCABLES$",60,0,ifield,fieldm,tmaxfd,stemax, | |
1389 | deemax,epsil,stmin); | |
1390 | ||
1391 | // Mean material for high-voltage cables on SPD trays Side A & C | |
1392 | // (Copper + HD PolyEthylene (C2-H2)) (D.Elia for cable number and | |
1393 | // cross-section area, M.Sitta for elemental computation) - 10 Jun 10 | |
1394 | wW[0] = 0.083766;//H | |
1395 | wW[2] = 0.417136;//Cu | |
1396 | wW[1] = 0.499098;//C | |
1397 | wW[3] = 0.000000;//O | |
1398 | wW[4] = 0.000000;//S | |
1399 | wW[5] = 0.000000;//F | |
1400 | wW[6] = 0.000000;//Sn | |
1401 | wW[7] = 0.000000;//Pb | |
1402 | wW[8] = 0.000000;//Cr | |
1403 | wW[9] = 0.000000;//Si | |
1404 | wW[10] = 0.000000;//Ni | |
1405 | wW[11] = 0.000000;//Ca | |
1406 | ||
1407 | den = 1.514930; | |
1408 | AliMixture(58,"SPD_HICABLES$",aA,zZ,den,+3,wW); | |
1409 | AliMedium(58,"SPD_HICABLES$",58,0,ifield,fieldm,tmaxfd,stemax, | |
1410 | deemax,epsil,stmin); | |
1411 | ||
1412 | // PolyUrethane [C25-H42-N2-O6] - 07 Mar 10 | |
1413 | zZ[2] = 7.0; aA[2] = 14.0067; // Nitrogen - From Root TGeoElementTable | |
1414 | ||
1415 | wW[0] = 0.090724;//H | |
1416 | wW[2] = 0.060035;//N | |
1417 | wW[1] = 0.643513;//C | |
1418 | wW[3] = 0.205728;//O | |
1419 | wW[4] = 0.000000;//S | |
1420 | wW[5] = 0.000000;//F | |
1421 | wW[6] = 0.000000;//Sn | |
1422 | wW[7] = 0.000000;//Pb | |
1423 | wW[8] = 0.000000;//Cr | |
1424 | wW[9] = 0.000000;//Si | |
1425 | wW[10] = 0.000000;//Ni | |
1426 | wW[11] = 0.000000;//Ca | |
1427 | ||
1428 | den = 1.158910; | |
1429 | AliMixture(67,"POLYURETHANE$",aA,zZ,den,+4,wW); | |
1430 | AliMedium(67,"POLYURETHANE$",67,0,ifield,fieldm,tmaxfd,stemax, | |
1431 | deemax,epsil,stmin); | |
1432 | ||
1433 | // POM (Polyoxymethylene = (CH2O)n ) - 02 May 10 | |
1434 | zZ[2] = 8.0; aA[2] = 15.9994; // Oxigen | |
1435 | ||
1436 | wW[0] = 0.067137;//H | |
1437 | wW[1] = 0.400016;//C | |
1438 | wW[2] = 0.532847;//O | |
1439 | wW[3] = 0.000000;//O | |
1440 | wW[4] = 0.000000;//S | |
1441 | wW[5] = 0.000000;//F | |
1442 | wW[6] = 0.000000;//Sn | |
1443 | wW[7] = 0.000000;//Pb | |
1444 | wW[8] = 0.000000;//Cr | |
1445 | wW[9] = 0.000000;//Si | |
1446 | wW[10] = 0.000000;//Ni | |
1447 | wW[11] = 0.000000;//Ca | |
1448 | ||
b78b741f | 1449 | den = 1.4200; |
717cdf18 | 1450 | AliMixture(57,"POLYOXYMETHYLENE$",aA,zZ,den,+3,wW); |
1451 | AliMedium(57,"POLYOXYMETHYLENE$",57,0,ifield,fieldm,tmaxfd,stemax, | |
1452 | deemax,epsil,stmin); | |
1453 | ||
1454 | ||
1455 | // Anticorodal (Aliminum alloy) - 08 nov 10 | |
1456 | // A,Z from Root TGeoElementTable, W from Web sites | |
1457 | zZ[0] = 13.0; aA[0] = 26.9815; // Aluminium | |
1458 | zZ[1] = 29.0; aA[1] = 63.546 ; // Copper | |
1459 | zZ[2] = 26.0; aA[2] = 55.845 ; // Iron | |
1460 | zZ[3] = 25.0; aA[3] = 54.938 ; // Manganese | |
1461 | zZ[4] = 12.0; aA[4] = 24.305 ; // Magnesium | |
1462 | zZ[5] = 14.0; aA[5] = 28.0855; // Silicon | |
1463 | zZ[6] = 30.0; aA[6] = 65.39 ; // Zinc | |
1464 | zZ[7] = 24.0; aA[7] = 51.9961; // Chromium | |
1465 | zZ[8] = 22.0; aA[8] = 47.867 ; // Titanium | |
1466 | ||
1467 | wW[1] = 0.001000;//Cu | |
1468 | wW[2] = 0.005000;//Fe | |
1469 | wW[3] = 0.007000;//Mn - mean value | |
1470 | wW[4] = 0.009000;//Mg - mean value | |
1471 | wW[5] = 0.001000;//Si - mean value | |
1472 | wW[6] = 0.002000;//Zn | |
1473 | wW[7] = 0.002500;//Cr | |
1474 | wW[8] = 0.001000;//Ti | |
1475 | ||
1476 | Double_t totFrac = 0; | |
1477 | for (Int_t j=1; j<9; j++) | |
1478 | totFrac += wW[j]; | |
1479 | wW[0] = 1. - totFrac;//Al - the remainder | |
1480 | ||
b78b741f | 1481 | den = 2.69; |
717cdf18 | 1482 | AliMixture(93,"ANTICORODAL$",aA,zZ,den,+9,wW); |
1483 | AliMedium(93,"ANTICORODAL$",93,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1484 | ||
1485 | // Hokotol (another Aluminium alloy) - 08 nov 10 | |
1486 | // A,Z from Root TGeoElementTable, W from Web sites | |
1487 | zZ[0] = 13.0; aA[0] = 26.9815; // Aluminium | |
1488 | zZ[1] = 29.0; aA[1] = 63.546 ; // Copper | |
1489 | zZ[2] = 26.0; aA[2] = 55.845 ; // Iron | |
1490 | zZ[3] = 25.0; aA[3] = 54.938 ; // Manganese | |
1491 | zZ[4] = 12.0; aA[4] = 24.305 ; // Magnesium | |
1492 | zZ[5] = 14.0; aA[5] = 28.0855; // Silicon | |
1493 | zZ[6] = 30.0; aA[6] = 65.39 ; // Zinc | |
1494 | zZ[7] = 24.0; aA[7] = 51.9961; // Chromium | |
1495 | zZ[8] = 22.0; aA[8] = 47.867 ; // Titanium | |
1496 | zZ[9] = 40.0; aA[9] = 91.224 ; // Zirconium | |
1497 | ||
1498 | wW[1] = 0.020500;//Cu - mean value | |
1499 | wW[2] = 0.000300;//Fe | |
1500 | wW[3] = 0.022000;//Mn - mean value | |
1501 | wW[4] = 0.001000;//Mg - mean value | |
1502 | wW[5] = 0.002000;//Si - mean value | |
1503 | wW[6] = 0.066500;//Zn | |
1504 | wW[7] = 0.005000;//Cr | |
1505 | wW[8] = 0.000600;//Ti | |
1506 | wW[9] = 0.001650;//Zr - mean value | |
1507 | ||
1508 | totFrac = 0; | |
1509 | for (Int_t j=1; j<10; j++) | |
1510 | totFrac += wW[j]; | |
1511 | wW[0] = 1. - totFrac;//Al - the remainder | |
1512 | ||
1513 | den = 2.69; | |
1514 | AliMixture(34,"HOKOTOL$",aA,zZ,den,+10,wW); | |
1515 | AliMedium(34,"HOKOTOL$",34,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1516 | ||
1517 | // Ergal (7075) (yet another Aluminium alloy) - 09 nov 10 | |
1518 | // A,Z from Root TGeoElementTable, W from Web sites | |
1519 | zZ[0] = 13.0; aA[0] = 26.9815; // Aluminium | |
1520 | zZ[1] = 29.0; aA[1] = 63.546 ; // Copper | |
1521 | zZ[2] = 26.0; aA[2] = 55.845 ; // Iron | |
1522 | zZ[3] = 25.0; aA[3] = 54.938 ; // Manganese | |
1523 | zZ[4] = 12.0; aA[4] = 24.305 ; // Magnesium | |
1524 | zZ[5] = 14.0; aA[5] = 28.0855; // Silicon | |
1525 | zZ[6] = 30.0; aA[6] = 65.39 ; // Zinc | |
1526 | zZ[7] = 24.0; aA[7] = 51.9961; // Chromium | |
1527 | zZ[8] = 22.0; aA[8] = 47.867 ; // Titanium | |
1528 | ||
1529 | wW[1] = 0.016000;//Cu - mean value | |
1530 | wW[2] = 0.005000;//Fe | |
1531 | wW[3] = 0.003000;//Mn | |
1532 | wW[4] = 0.025000;//Mg - mean value | |
1533 | wW[5] = 0.004000;//Si | |
1534 | wW[6] = 0.056000;//Zn - mean value | |
1535 | wW[7] = 0.002300;//Cr - mean value | |
1536 | wW[8] = 0.002000;//Ti | |
1537 | ||
1538 | totFrac = 0; | |
1539 | for (Int_t j=1; j<9; j++) | |
1540 | totFrac += wW[j]; | |
1541 | wW[0] = 1. - totFrac;//Al - the remainder | |
1542 | ||
1543 | den = 2.69; | |
1544 | AliMixture(33,"ERGAL$",aA,zZ,den,+9,wW); | |
1545 | AliMedium(33,"ERGAL$",33,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); | |
1546 | ||
dfefbaec | 1547 | } |
b7943f00 | 1548 | |
dfefbaec | 1549 | //______________________________________________________________________ |
717cdf18 | 1550 | void AliITSv11::Init() |
1551 | { | |
1552 | // Initialise the ITS after it has been created. | |
1553 | // Inputs: | |
1554 | // none. | |
1555 | // Outputs: | |
1556 | // none. | |
1557 | // Return: | |
1558 | // none. | |
b7943f00 | 1559 | |
717cdf18 | 1560 | AliDebug(1,Form("Init: Major version %d Minor version %d",fMajorVersion, |
1561 | fMinorVersion)); | |
012f0f4c | 1562 | UpdateInternalGeometry(); |
1563 | AliITS::Init(); | |
012f0f4c | 1564 | |
717cdf18 | 1565 | fIDMother = gMC->VolId("ITSV"); // ITS Mother Volume ID. |
dfefbaec | 1566 | } |
b7943f00 | 1567 | |
dfefbaec | 1568 | //______________________________________________________________________ |
717cdf18 | 1569 | void AliITSv11::SetDefaults() |
1570 | { | |
1571 | // sets the default segmentation, response, digit and raw cluster classes | |
1572 | // Inputs: | |
1573 | // none. | |
1574 | // Outputs: | |
1575 | // none. | |
1576 | // Return: | |
1577 | // none. | |
b7943f00 | 1578 | |
717cdf18 | 1579 | if(!fDetTypeSim){ |
1580 | Warning("SetDefaults","Error fDetTypeSim not defined"); | |
1581 | return; | |
108bd0fe | 1582 | } |
717cdf18 | 1583 | |
531d6cdc | 1584 | fDetTypeSim->SetDefaults(); |
1585 | ||
717cdf18 | 1586 | |
531d6cdc | 1587 | if(fgkNTYPES>3){ |
1588 | Warning("SetDefaults", | |
1589 | "Only the four basic detector types are initialised!"); | |
1590 | }// end if | |
531d6cdc | 1591 | return; |
dfefbaec | 1592 | } |
b7943f00 | 1593 | |
dfefbaec | 1594 | //______________________________________________________________________ |
717cdf18 | 1595 | void AliITSv11::StepManager() |
1596 | { | |
1597 | // Called for every step in the ITS, then calles the AliITShit class | |
1598 | // creator with the information to be recoreded about that hit. | |
1599 | // The value of the macro ALIITSPRINTGEOM if set to 1 will allow the | |
1600 | // printing of information to a file which can be used to create a .det | |
1601 | // file read in by the routine CreateGeometry(). If set to 0 or any other | |
1602 | // value except 1, the default behavior, then no such file is created nor | |
1603 | // it the extra variables and the like used in the printing allocated. | |
1604 | // Inputs: | |
1605 | // none. | |
1606 | // Outputs: | |
1607 | // none. | |
1608 | // Return: | |
1609 | // none. | |
531d6cdc | 1610 | |
717cdf18 | 1611 | if(!(this->IsActive())) return; |
531d6cdc | 1612 | if(!(gMC->TrackCharge())) return; |
1613 | ||
717cdf18 | 1614 | Int_t copy, lay = 0; |
1615 | Int_t id = gMC->CurrentVolID(copy); | |
1616 | ||
1617 | Bool_t notSens = kFALSE; | |
1618 | while ((lay<fIdN) && (notSens = id != fIdSens[lay])) ++lay; | |
1619 | if (notSens) return; | |
531d6cdc | 1620 | |
717cdf18 | 1621 | if(gMC->IsTrackExiting()) { |
e6add757 | 1622 | AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber(), AliTrackReference::kITS); |
531d6cdc | 1623 | } // if Outer ITS mother Volume |
1624 | ||
717cdf18 | 1625 | static TLorentzVector position, momentum; // Saves on calls to construtors |
1626 | static AliITShit hit;// Saves on calls to constructors | |
531d6cdc | 1627 | |
717cdf18 | 1628 | TClonesArray &lhits = *(Hits()); |
1629 | Int_t cpn0, cpn1, mod, status = 0; | |
531d6cdc | 1630 | // |
1631 | // Track status | |
717cdf18 | 1632 | if(gMC->IsTrackInside()) status += 1; |
1633 | if(gMC->IsTrackEntering()) status += 2; | |
1634 | if(gMC->IsTrackExiting()) status += 4; | |
1635 | if(gMC->IsTrackOut()) status += 8; | |
1636 | if(gMC->IsTrackDisappeared()) status += 16; | |
1637 | if(gMC->IsTrackStop()) status += 32; | |
1638 | if(gMC->IsTrackAlive()) status += 64; | |
1639 | ||
531d6cdc | 1640 | // |
717cdf18 | 1641 | // retrieve the indices with the volume path |
1642 | // | |
1643 | switch (lay) { | |
1644 | case 0:case 1: // SPD | |
1645 | gMC->CurrentVolOffID(1,copy); // ladder | |
1646 | gMC->CurrentVolOffID(3,cpn1); // stave | |
1647 | gMC->CurrentVolOffID(5,cpn0); // sector | |
1648 | break; | |
1649 | case 2:case 3: // SDD | |
1650 | copy = 1; | |
1651 | gMC->CurrentVolOffID(2,cpn1); | |
1652 | gMC->CurrentVolOffID(3,cpn0); | |
1653 | break; | |
1654 | case 4:case 5: // SSD | |
1655 | copy = 1; | |
1656 | gMC->CurrentVolOffID(1,cpn1); | |
1657 | gMC->CurrentVolOffID(2,cpn0); | |
1658 | break; | |
1659 | default: | |
1660 | AliError(Form("Invalid value: lay= %d . Not an ITS sensitive volume",lay)); | |
1661 | return; // not an ITS sensitive volume. | |
1662 | } // | |
1663 | ||
1664 | fInitGeom.DecodeDetector(mod,lay+1,cpn0,cpn1,copy); | |
1665 | // We should not need to pass by the switch ! | |
1666 | // This is time consuming... | |
1667 | // therefore DecodeDetectorv11(...) shouldn't be private ! | |
1668 | // and we should be able to use instead : | |
1669 | //fInitGeom.DecodeDetectorv11(mod,lay+1,cpn0,cpn1,copy); | |
108bd0fe | 1670 | |
531d6cdc | 1671 | // |
717cdf18 | 1672 | // Fill hit structure. |
1673 | // | |
1674 | hit.SetModule(mod); | |
1675 | hit.SetTrack(gAlice->GetMCApp()->GetCurrentTrackNumber()); | |
531d6cdc | 1676 | gMC->TrackPosition(position); |
1677 | gMC->TrackMomentum(momentum); | |
717cdf18 | 1678 | hit.SetPosition(position); |
1679 | hit.SetTime(gMC->TrackTime()); | |
1680 | hit.SetMomentum(momentum); | |
1681 | hit.SetStatus(status); | |
1682 | hit.SetEdep(gMC->Edep()); | |
1683 | hit.SetShunt(GetIshunt()); | |
531d6cdc | 1684 | if(gMC->IsTrackEntering()){ |
717cdf18 | 1685 | hit.SetStartPosition(position); |
1686 | hit.SetStartTime(gMC->TrackTime()); | |
1687 | hit.SetStartStatus(status); | |
1688 | return; // don't save entering hit. | |
531d6cdc | 1689 | } // end if IsEntering |
1690 | // Fill hit structure with this new hit. | |
717cdf18 | 1691 | //Info("StepManager","Calling Copy Constructor"); |
1692 | new(lhits[fNhits++]) AliITShit(hit); // Use Copy Construtor. | |
1693 | // Save old position... for next hit. | |
1694 | hit.SetStartPosition(position); | |
1695 | hit.SetStartTime(gMC->TrackTime()); | |
1696 | hit.SetStartStatus(status); | |
531d6cdc | 1697 | |
b7943f00 | 1698 | return; |
531d6cdc | 1699 | } |