1 /**************************************************************************
2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
20 //========================================================================
22 // Geometry of the Inner Tracking System
23 // ---------------------------------------
24 // This geometry is fully described in TGeo geometry (v11)
26 // Ludovic Gaudichet (gaudichet@to.infn.it)
27 // Mario Sitta (sitta@to.infn.it)
29 //========================================================================
33 // Revision 1.1 2011/06/10 14:48:24 masera
34 // First version from v11Hybrid to v11 (M. Sitta)
38 #include <TClonesArray.h>
39 #include <TGeoGlobalMagField.h>
40 #include <TGeoManager.h>
41 #include <TGeoMatrix.h>
42 #include <TGeoPhysicalNode.h>
43 #include <TGeoVolume.h>
45 #include <TLorentzVector.h>
47 #include <TVirtualMC.h>
50 #include "AliITSDetTypeSim.h"
51 #include "AliITShit.h"
52 #include "AliITSCalibrationSDD.h"
53 #include "AliITSsegmentationSDD.h"
54 #include "AliITSsegmentationSPD.h"
55 #include "AliITSsegmentationSSD.h"
56 #include "AliITSv11.h"
61 #include "AliTrackReference.h"
62 #include "AliITSv11GeometrySPD.h"
63 #include "AliITSv11GeometrySDD.h"
64 #include "AliITSv11GeometrySSD.h"
65 #include "AliITSv11GeometrySupport.h"
66 #include "AliGeomManager.h"
71 //______________________________________________________________________
72 AliITSv11::AliITSv11():
74 fMajorVersion(IsVersion()),
77 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
83 // Standard default constructor
92 //______________________________________________________________________
93 AliITSv11::AliITSv11(const char *title)
94 : AliITS("ITS", title),
96 fMajorVersion(IsVersion()),
99 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
105 // Standard constructor for the v11 geometry.
107 // const char * title Arbitrary title
114 fSPDgeom = new AliITSv11GeometrySPD();
115 fSDDgeom = new AliITSv11GeometrySDD(0);
116 fSSDgeom = new AliITSv11GeometrySSD();
117 fSupgeom = new AliITSv11GeometrySupport();
120 fIdName = new TString[fIdN];
122 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
123 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
125 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
126 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
128 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
129 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
131 fIdSens = new Int_t[fIdN];
132 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
134 SetDensityServicesByThickness();
138 //______________________________________________________________________
139 AliITSv11::AliITSv11(const char *name, const char *title)
140 : AliITS("ITS", title),
142 fMajorVersion(IsVersion()),
145 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
151 // Standard constructor for the v11 geometry.
153 // const char * name Ignored, set to "ITS"
154 // const char * title Arbitrary title
161 fSPDgeom = new AliITSv11GeometrySPD();
162 fSDDgeom = new AliITSv11GeometrySDD(0);
163 fSSDgeom = new AliITSv11GeometrySSD();
164 fSupgeom = new AliITSv11GeometrySupport();
167 fIdName = new TString[fIdN];
169 (void) name; // removes warning message
171 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
172 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
174 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
175 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
177 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
178 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
180 fIdSens = new Int_t[fIdN];
181 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
183 SetDensityServicesByThickness();
187 //______________________________________________________________________
188 AliITSv11::~AliITSv11() {
189 // Standard destructor
202 //______________________________________________________________________
203 void AliITSv11::SetT2Lmatrix(Int_t uid, Double_t yShift,
204 Bool_t yFlip, Bool_t yRot180) const
208 // Creates the TGeo Local to Tracking transformation matrix
209 // and sends it to the corresponding TGeoPNEntry
211 // This function is used in AddAlignableVolumes()
213 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(uid);
214 TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig();
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]);
220 al = TMath::ATan2(rotMatrix[1],-rotMatrix[0]);
222 Double_t xShift = gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al);
223 Double_t zShift = -gtrans[2];
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)
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 );
241 if (yFlip) rotMatrix[3] = 1; // flipping in y (for SPD1)
245 rot.SetMatrix(rotMatrix);
246 matLtoT->MultiplyLeft(&rot);
247 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
249 alignableEntry->SetMatrix(matTtoL);
252 //______________________________________________________________________
253 void AliITSv11::AddAlignableVolumes() const
255 // Creates entries for alignable volumes associating the symbolic volume
256 // name with the corresponding volume path.
258 // Records in the alignable entries the transformation matrices converting
259 // TGeo local coordinates (in the RS of alignable volumes) to the tracking
261 // For this, this function has to run before the misalignment because we
262 // are using the ideal positions in the AliITSgeom object.
270 AliInfo("Add ITS alignable volumes");
273 AliFatal("TGeoManager doesn't exist !");
277 AliGeomManager::ELayerID layerId;
278 Int_t modUID, modnum;
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"));
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;
303 //===== SPD layers =====
305 str0 = "ALIC_1/ITSV_1/ITSSPD_1/ITSSPDCarbonFiberSectorV_";
306 str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/ITSSPDlay1-Stave_";
308 TString str1Bis = "/ITSSPDhalf-Stave";
309 TString str1Tierce = "_1";
311 str2 = "/ITSSPDlay1-Ladder_";
318 layerId = AliGeomManager::kSPD1;
321 for(Int_t cSect = 0; cSect<10; cSect++) {
324 sector += cSect+1; // this is one full sector
325 strEntryName1 = strSPD;
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()));
333 for(Int_t cStave=0; cStave<2; cStave++) {
338 strEntryName2 = strEntryName1;
339 strEntryName2 += strStave;
340 strEntryName2 += cStave;
342 for(Int_t cHS=0; cHS<2; cHS++) {
345 halfStave += str1Bis;
347 halfStave += str1Tierce;
348 strEntryName3 = strEntryName2;
349 strEntryName3 += strHalfStave;
350 strEntryName3 += cHS;
352 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),
354 AliFatal(Form("New lay 1: Unable to set alignable entry 3! %s::%s",
355 strEntryName3.Data(),halfStave.Data()));
357 for(Int_t cLad=0; cLad<2; cLad++) {
359 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
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()));
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
379 layerId = AliGeomManager::kSPD2;
381 str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/ITSSPDlay2-Stave_";
382 str2 = "/ITSSPDlay2-Ladder_";
384 for(Int_t cSect = 0; cSect<10; cSect++) {
387 sector += cSect+1; // this is one full sector
388 strEntryName1 = strSPD;
390 strEntryName1 += strSector;
391 strEntryName1 += cSect;
393 for(Int_t cStave=0; cStave<4; cStave++) {
398 strEntryName2 = strEntryName1;
399 strEntryName2 += strStave;
400 strEntryName2 += cStave;
402 for(Int_t cHS=0; cHS<2; cHS++) {
405 halfStave += str1Bis;
407 halfStave += str1Tierce;
408 strEntryName3 = strEntryName2;
409 strEntryName3 += strHalfStave;
410 strEntryName3 += cHS;
412 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),
414 AliFatal(Form("New lay 2: Unable to set alignable entry 3! %s::%s",
415 strEntryName3.Data(),halfStave.Data()));
417 for(Int_t cLad=0; cLad<2; cLad++) {
419 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
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()));
430 SetT2Lmatrix(modUID, -0.0081, kFALSE);
436 //===== SDD layers =====
438 layerId = AliGeomManager::kSDD1;
441 str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1
442 str1 = "/ITSsddSensor3_";
446 for(Int_t c1 = 0; c1<14; c1++) {
449 ladder += c1; // the set of wafers from one ladder
450 strEntryName1 = strSDD;
452 strEntryName1 +=strLadder;
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()));
459 for(Int_t c2 =0; c2<6; c2++) {
461 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
465 strEntryName2 = strEntryName1;
466 strEntryName2 += strSensor;
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()));
473 SetT2Lmatrix(modUID, 0, kFALSE, c2>=3);
477 layerId = AliGeomManager::kSDD2;
479 str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2
480 str1 = "/ITSsddSensor4_";
482 for(Int_t c1 = 0; c1<22; c1++) {
485 ladder += c1; // the set of wafers from one ladder
486 strEntryName1 = strSDD;
488 strEntryName1 += strLadder;
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()));
495 for(Int_t c2 =0; c2<8; c2++) {
497 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
501 strEntryName2 = strEntryName1;
502 strEntryName2 += strSensor;
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()));
509 SetT2Lmatrix(modUID, 0, kFALSE, c2>=4);
513 //===== SSD layers =====
515 layerId = AliGeomManager::kSSD1;
518 str0 = "/ALIC_1/ITSV_1/ITSssdLayer5_1/ITSssdLay5Ladd_";//SSD layer1
519 str1 = "/ITSssdSensor5_";
524 for(Int_t c1 = 0; c1<34; c1++) {
527 ladder += c1; // the set of wafers from one ladder
528 strEntryName1 = strSSD;
530 strEntryName1 += strLadder;
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()));
537 for(Int_t c2 =0; c2<22; c2++) {
539 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
543 //wafer += str2; // one wafer
544 strEntryName2 = strEntryName1;
545 strEntryName2 += strSensor;
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()));
552 SetT2Lmatrix(modUID, 0, kFALSE, kFALSE);
556 layerId = AliGeomManager::kSSD2;
558 str0 = "/ALIC_1/ITSV_1/ITSssdLayer6_1/ITSssdLay6Ladd_"; // SSD layer2
559 str1 = "/ITSssdSensor6_";
562 for(Int_t c1 = 0; c1<38; c1++) {
565 ladder += c1; // the set of wafers from one ladder
566 strEntryName1 = strSSD;
568 strEntryName1 += strLadder;
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()));
575 for(Int_t c2 =0; c2<25; c2++) {
577 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
581 //wafer += str2; // one wafer
582 strEntryName2 = strEntryName1;
583 strEntryName2 += strSensor;
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()));
590 SetT2Lmatrix(modUID, 0, kFALSE, kFALSE);
596 //______________________________________________________________________
597 void AliITSv11::CreateGeometry()
599 // Create the geometry and insert it in ALIC
601 TGeoManager *geoManager = gGeoManager;
603 TGeoVolume *vALIC = geoManager->GetVolume("ALIC");
605 // This part is really ugly, needs to be redone
606 new TGeoVolumeAssembly("ITSV");
607 new TGeoVolumeAssembly("ITSS");
609 TGeoVolume *vITSV = geoManager->GetVolume("ITSV");
610 TGeoVolume *vITSS = geoManager->GetVolume("ITSS");
612 vALIC->AddNode(vITSV, 1, 0);
613 vALIC->AddNode(vITSS, 1, 0);
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);
626 fSPDgeom->SPDSector(vITSV);
628 fSDDgeom->Layer3(vITSV);
629 fSDDgeom->Layer4(vITSV);
630 fSDDgeom->ForwardLayer3(vITSV);
631 fSDDgeom->ForwardLayer4(vITSV);
633 fSSDgeom->Layer5(vITSV);
634 fSSDgeom->Layer6(vITSV);
635 fSSDgeom->LadderSupportLayer5(vITSV);
636 fSSDgeom->LadderSupportLayer6(vITSV);
637 fSSDgeom->EndCapSupportSystemLayer6(vITSV);
638 fSSDgeom->EndCapSupportSystemLayer5(vITSV);
640 fSupgeom->SPDCone(vITSV);
641 fSupgeom->SDDCone(vITSV);
642 fSupgeom->SSDCone(vITSV);
644 fSDDgeom->SDDCables(vITSV);
645 fSSDgeom->SSDCables(vITSV);
646 fSupgeom->ServicesCableSupport(vITSS);
648 fSupgeom->ITSTPCSupports(vITSS);
652 //______________________________________________________________________
653 void AliITSv11::CreateMaterials()
655 // Create ITS materials
656 // This function defines the default materials used in the Geant
657 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
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.
671 Int_t ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
672 Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
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"
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"
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"
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"
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;
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;
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;
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;
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;
735 //AISI 304 L (from F.Tosello's web page - M.S. 18 Oct 10)
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;
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;
749 //SDD LV+signal cable
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;
756 //SDD hybrid microcab
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;
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;
770 //X7R capacitors - updated from F.Tosello's web page - M.S. 18 Oct 10
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;
777 //X7R weld, i.e. Sn 60% Pb 40% (from F.Tosello's web page - M.S. 15 Oct 10)
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;
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;
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;
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;
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;
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 ;
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;
824 // If he/she means stainless steel (inox) + Aluminium and Zeff=15.3383 then
826 // %Al=81.6164 %inox=100-%Al
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;
833 // Aluminum alloy with 12% Copper - 21 Oct 10
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;
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;
847 // Kapton + Cu (for Pixel Bus)
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];
853 // Kapton + Cu (for Pixel MCM)
855 Float_t wKaptonCuMCM[5];
857 // Kapton + Cu (mix of two above)
859 Float_t wKaptonCuMix[5];
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;
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;
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. };
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. };
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. };
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;
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. };
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
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. ,
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;
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;
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;
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;
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;
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);
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);
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);
960 AliMixture(4,"C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
961 AliMedium(4,"C (M55J)$",4,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
963 AliMixture(5,"AIR$",aAir,zAir,dAir,4,wAir);
964 AliMedium(5,"AIR$",5,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
966 AliMixture(6,"GEN AIR$",aAir,zAir,dAir,4,wAir);
967 AliMedium(6,"GEN AIR$",6,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
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);
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);
975 AliMixture(10,"SDD AIR$",aAir,zAir,dAir,4,wAir);
976 AliMedium(10,"SDD AIR$",10,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
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);
981 AliMixture(12, "Water$",aWater,zWater,dWater,2,wWater);
982 AliMedium(12,"WATER$",12,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
984 AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
985 AliMedium(13,"Freon$",13,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
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);
995 AliMixture(21,"SSD AIR$",aAir,zAir,dAir,4,wAir);
996 AliMedium(21,"SSD AIR$",21,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
998 AliMixture(25,"G10FR4$",aG10FR4,zG10FR4,densG10FR4,14,wG10FR4);
999 AliMedium(25,"G10FR4$",25,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
1004 AliMixture(27,"GEN Air$",aAir,zAir,dAir,4,wAir);
1005 AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
1007 AliMixture(35,"PLEXYGLAS$",aPlexy,zPlexy,dPlexy,-3,wPlexy);
1008 AliMedium(35,"PLEXYGLAS$",35,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1010 AliMixture(36,"STDGLASS$",aStdGlass,zStdGlass,dStdGlass,7,wStdGlass);
1011 AliMedium(36,"STDGLASS$",36,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1013 AliMixture(37,"ALCU12$",aAlCu12,zAlCu12,dAlCu12,2,wAlCu12);
1014 AliMedium(37,"ALCU12$",37,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1016 AliMixture(38,"MEGOLON$",aMegolon,zMegolon,dMegolon,-2,wMegolon);
1017 AliMedium(38,"MEGOLON$",38,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1019 AliMixture(39,"RYTON$",aRyton,zRyton,dRyton,14,wRyton);
1020 AliMedium(39,"RYTON$",39,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1022 AliMixture(40,"GLASS FIBER$",aGlass,zGlass,dGlass,11,wGlass);
1023 AliMedium(40,"GLASS FIBER$",40,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1025 AliMixture(41,"AISI304L$",a304L,z304L,d304L,8,w304L);
1026 AliMedium(41,"AISI304L$",41,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
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);
1034 AliMixture(44,"PPS$",aPPS,zPPS,dPPS,-3,wPPS);
1035 AliMedium(44,"PPS$",44,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1037 AliMixture(45,"POLYAX$",aPOLYAX,zPOLYAX,dPOLYAX,-4,wPOLYAX);
1038 AliMedium(45,"POLYAX$",45,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1040 AliMixture(46,"PBT$",aPBT,zPBT,dPBT,-3,wPBT);
1041 AliMedium(46,"PBT$",46,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1043 AliMixture(47,"PVC$",aPVC,zPVC,dPVC,-3,wPVC);
1044 AliMedium(47,"PVC$",47,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
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);
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);
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);
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);
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);
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);
1086 AliMixture(55,"SPD AIR$",aAir,zAir,dAir,4,wAir);
1087 AliMedium(55,"SPD AIR$",55,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
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);
1092 // Gaseous Freon has same chemical composition but air density at 1.7 atm
1093 AliMixture(59,"GASEOUS FREON$",afre,zfre,1.7*dAir,-2,wfre);
1094 AliMedium(59,"GASEOUS FREON$",59,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1096 AliMixture(61,"EPOXY$",aEpoxy,zEpoxy,dEpoxy,-3,wEpoxy);
1097 AliMedium(61,"EPOXY$",61,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
1102 AliMixture(63, "KAPTONH(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
1103 AliMedium(63,"KAPTONH(POLYCH2)$",63,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
1108 AliMixture(65,"INOX$",aINOX,zINOX,dINOX,9,wINOX);
1109 AliMedium(65,"INOX$",65,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1111 AliMixture(66,"NiSn$",aNiSn,zNiSn,dNiSn,2,wNiSn);
1112 AliMedium(66,"NiSn$",66,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
1117 AliMixture(68,"ROHACELL$",arohac,zrohac,drohac,-4,wrohac);
1118 AliMedium(68,"ROHACELL$",68,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
1123 AliMixture(70, "SDDKAPTON (POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
1124 AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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);
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);
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);
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);
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);
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;
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);
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);
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);
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);
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);
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);
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);
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);
1178 AliMixture(85,"inox/alum$",aInAl,zInAl,dInAl,5,wInAl);
1179 AliMedium(85,"inox/alum$",85,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1181 // special media to take into account services in the SDD and SSD
1182 // cones for the FMD
1185 <A HREF="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_MatBudget_4B.xls">
1188 <font size=+2 color=blue>
1189 <p> The Exel spread sheet from which these density number come from.
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
1223 if(fByThick){// New values seeITS_MatBudget_4B.xls
1224 den = 1.5253276; // g/cm^3 Cell O370
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);
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.
1248 if(fByThick){// New values seeITS_MatBudget_4B.xls
1249 den = 1.2464275; // g/cm^3 Cell O403
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);
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
1273 if(fByThick){// New values seeITS_MatBudget_4B.xls
1274 den = 1.9353276; // g/cm^3 Cell N370
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);
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.
1298 if(fByThick){// New values seeITS_MatBudget_4B.xls
1299 den = 1.6564275; // g/cm^3 Cell N304
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);
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.
1323 if(fByThick){// New values seeITS_MatBudget_4B.xls
1324 den = 80.31136576; // g/cm^3 Cell H329
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);
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);
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;
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);
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);
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);
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);
1364 AliMixture(98,"SDD OPTICFIB$",aoptfib,zoptfib,doptfib,-2,woptfib);
1365 AliMedium(98,"SDD OPTICFIB$",98,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1367 AliMixture(95,"SSD FEP$",aFEP,zFEP,dFEP,-2,wFEP);
1368 AliMedium(95,"SSD FEP$",95,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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
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);
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
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);
1412 // PolyUrethane [C25-H42-N2-O6] - 07 Mar 10
1413 zZ[2] = 7.0; aA[2] = 14.0067; // Nitrogen - From Root TGeoElementTable
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
1429 AliMixture(67,"POLYURETHANE$",aA,zZ,den,+4,wW);
1430 AliMedium(67,"POLYURETHANE$",67,0,ifield,fieldm,tmaxfd,stemax,
1431 deemax,epsil,stmin);
1433 // POM (Polyoxymethylene = (CH2O)n ) - 02 May 10
1434 zZ[2] = 8.0; aA[2] = 15.9994; // Oxigen
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
1450 AliMixture(57,"POLYOXYMETHYLENE$",aA,zZ,den,+3,wW);
1451 AliMedium(57,"POLYOXYMETHYLENE$",57,0,ifield,fieldm,tmaxfd,stemax,
1452 deemax,epsil,stmin);
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
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
1476 Double_t totFrac = 0;
1477 for (Int_t j=1; j<9; j++)
1479 wW[0] = 1. - totFrac;//Al - the remainder
1482 AliMixture(93,"ANTICORODAL$",aA,zZ,den,+9,wW);
1483 AliMedium(93,"ANTICORODAL$",93,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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
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
1509 for (Int_t j=1; j<10; j++)
1511 wW[0] = 1. - totFrac;//Al - the remainder
1514 AliMixture(34,"HOKOTOL$",aA,zZ,den,+10,wW);
1515 AliMedium(34,"HOKOTOL$",34,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
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
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
1539 for (Int_t j=1; j<9; j++)
1541 wW[0] = 1. - totFrac;//Al - the remainder
1544 AliMixture(33,"ERGAL$",aA,zZ,den,+9,wW);
1545 AliMedium(33,"ERGAL$",33,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
1549 //______________________________________________________________________
1550 void AliITSv11::Init()
1552 // Initialise the ITS after it has been created.
1560 AliDebug(1,Form("Init: Major version %d Minor version %d",fMajorVersion,
1562 UpdateInternalGeometry();
1565 fIDMother = gMC->VolId("ITSV"); // ITS Mother Volume ID.
1568 //______________________________________________________________________
1569 void AliITSv11::SetDefaults()
1571 // sets the default segmentation, response, digit and raw cluster classes
1580 Warning("SetDefaults","Error fDetTypeSim not defined");
1584 fDetTypeSim->SetDefaults();
1588 Warning("SetDefaults",
1589 "Only the four basic detector types are initialised!");
1594 //______________________________________________________________________
1595 void AliITSv11::StepManager()
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.
1611 if(!(this->IsActive())) return;
1612 if(!(gMC->TrackCharge())) return;
1614 Int_t copy, lay = 0;
1615 Int_t id = gMC->CurrentVolID(copy);
1617 Bool_t notSens = kFALSE;
1618 while ((lay<fIdN) && (notSens = id != fIdSens[lay])) ++lay;
1619 if (notSens) return;
1621 if(gMC->IsTrackExiting()) {
1622 AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber(), AliTrackReference::kITS);
1623 } // if Outer ITS mother Volume
1625 static TLorentzVector position, momentum; // Saves on calls to construtors
1626 static AliITShit hit;// Saves on calls to constructors
1628 TClonesArray &lhits = *(Hits());
1629 Int_t cpn0, cpn1, mod, status = 0;
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;
1641 // retrieve the indices with the volume path
1644 case 0:case 1: // SPD
1645 gMC->CurrentVolOffID(1,copy); // ladder
1646 gMC->CurrentVolOffID(3,cpn1); // stave
1647 gMC->CurrentVolOffID(5,cpn0); // sector
1649 case 2:case 3: // SDD
1651 gMC->CurrentVolOffID(2,cpn1);
1652 gMC->CurrentVolOffID(3,cpn0);
1654 case 4:case 5: // SSD
1656 gMC->CurrentVolOffID(1,cpn1);
1657 gMC->CurrentVolOffID(2,cpn0);
1660 AliError(Form("Invalid value: lay= %d . Not an ITS sensitive volume",lay));
1661 return; // not an ITS sensitive volume.
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);
1672 // Fill hit structure.
1675 hit.SetTrack(gAlice->GetMCApp()->GetCurrentTrackNumber());
1676 gMC->TrackPosition(position);
1677 gMC->TrackMomentum(momentum);
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());
1684 if(gMC->IsTrackEntering()){
1685 hit.SetStartPosition(position);
1686 hit.SetStartTime(gMC->TrackTime());
1687 hit.SetStartStatus(status);
1688 return; // don't save entering hit.
1689 } // end if IsEntering
1690 // Fill hit structure with this new hit.
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);