1 ///////////////////////////////////////////////////////////////////////////////
3 // Inner Traking System version 5 //
4 // This class contains the base procedures for the Inner Tracking System //
8 <img src="picts/AliITSv5Class.gif">
11 <font size=+2 color=red>
12 <p>The responsible person for this module is
13 <a href="mailto:roberto.barbera@ct.infn.it">Roberto Barbera</a>.
19 ///////////////////////////////////////////////////////////////////////////////
31 //_____________________________________________________________________________
32 AliITSv5::AliITSv5() : AliITS()
35 // Default constructor for the ITS
39 //_____________________________________________________________________________
40 AliITSv5::AliITSv5(const char *name, const char *title)
44 // Standard constructor for the ITS
46 fEuclidMaterial="$(ALICE_ROOT)/Euclid/ITSgeometry_5.tme";
47 fEuclidGeometry="$(ALICE_ROOT)/Euclid/ITSgeometry_5.euc";
51 //_____________________________________________________________________________
52 void AliITSv5::CreateMaterials()
55 // Read materials for the ITS
59 filtmp=gSystem->ExpandPathName(fEuclidMaterial.Data());
60 FILE *file = fopen(filtmp,"r");
64 gAlice->ReadEuclidMedia(fEuclidMaterial.Data(),this);
66 Error("CreateMaterials"," THE MEDIA FILE %s DOES NOT EXIST !",fEuclidMaterial.Data());
71 //_____________________________________________________________________________
72 void AliITSv5::CreateGeometry()
75 // Read geometry for the ITS
81 filtmp=gSystem->ExpandPathName(fEuclidGeometry.Data());
82 FILE *file = fopen(filtmp,"r");
86 gAlice->ReadEuclid(fEuclidGeometry.Data(),this,topvol);
88 Error("CreateGeometry"," THE GEOM FILE %s DOES NOT EXIST !",fEuclidGeometry.Data());
92 // --- Place the ITS ghost volume ITSV in its mother volume (ALIC) and make it
95 gMC->Gspos("ITSV",1,"ALIC",0,0,0,0,"ONLY");
97 // --- Outputs the geometry tree in the EUCLID/CAD format
100 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
104 //_____________________________________________________________________________
105 void AliITSv5::Init()
108 // Initialise the ITS after it has been created
113 //_____________________________________________________________________________
114 void AliITSv5::StepManager()
117 // Called for every step in the ITS
123 TLorentzVector position, momentum;
124 TClonesArray &lhits = *fHits;
126 if(gMC->TrackCharge() && gMC->Edep()) {
128 // Only entering charged tracks
129 if((id=gMC->CurrentVolID(copy))==fIdSens1) {
131 id=gMC->CurrentVolOffID(0,copy); //detector copy in the ladder = 1<->4 (ITS1)
133 gMC->CurrentVolOffID(1,copy1); //ladder copy in the module = 1<->2 (I186)
134 gMC->CurrentVolOffID(2,copy2); //module copy in the layer = 1<->10 (I132)
135 vol[2]=copy1+(copy2-1)*2; //# of ladders in one module = 2
136 } else if(id==fIdSens2) {
138 id=gMC->CurrentVolOffID(0,copy); //detector copy in the ladder = 1<->4 (ITS2)
140 gMC->CurrentVolOffID(1,copy1); //ladder copy in the module = 1<->4 (I131)
141 gMC->CurrentVolOffID(2,copy2); //module copy in the layer = 1<->10 (I132)
142 vol[2]=copy1+(copy2-1)*4; //# of ladders in one module = 4
143 } else if(id==fIdSens3) {
145 id=gMC->CurrentVolOffID(1,copy); //detector copy in the ladder = 1<->5 (ITS3 is inside I314)
147 id=gMC->CurrentVolOffID(2,copy); //ladder copy in the layer = 1<->12 (I316)
149 } else if(id==fIdSens4) {
151 id=gMC->CurrentVolOffID(1,copy); //detector copy in the ladder = 1<->8 (ITS4 is inside I414)
153 id=gMC->CurrentVolOffID(2,copy); //ladder copy in the layer = 1<->22 (I417)
155 } else if(id==fIdSens5) {
157 id=gMC->CurrentVolOffID(1,copy); //detector copy in the ladder = 1<->23 (ITS5 is inside I562)
159 id=gMC->CurrentVolOffID(2,copy); //ladder copy in the layer = 1<->34 (I565)
161 } else if(id==fIdSens6) {
163 id=gMC->CurrentVolOffID(1,copy); //detector copy in the ladder = 1<->26 (ITS6 is inside I566)
165 id=gMC->CurrentVolOffID(2,copy); //ladder copy in the layer = 1<->38 (I569)
168 gMC->TrackPosition(position);
169 gMC->TrackMomentum(momentum);
177 new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);