]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSv11.cxx
Example macro for the creation of tags (P.Christakoglou)
[u/mrichter/AliRoot.git] / ITS / AliITSv11.cxx
CommitLineData
2b680d9b 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
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
b7943f00 16//************************************************************************
17// Inner Traking System geometry v11
18//
19// Based on ROOT geometrical modeler
20// Set #define WITHROOT in TGeant3.h
21//
22// B. Nilsen, L. Gaudichet
23//************************************************************************
24
25
26//#include <Riostream.h>
541f7ba6 27#include <TClonesArray.h>
2b680d9b 28#include <TLorentzVector.h>
b7943f00 29
30#include "AliITS.h"
2b680d9b 31#include "AliITSDetType.h"
b7943f00 32#include "AliITSGeant3Geometry.h"
33#include "AliITSgeom.h"
34#include "AliITSgeomSDD.h"
35#include "AliITSgeomSPD.h"
36#include "AliITSgeomSSD.h"
37#include "AliITShit.h"
2b680d9b 38#include "AliITSresponseSDD.h"
b7943f00 39#include "AliITSresponseSPD.h"
40#include "AliITSresponseSSD.h"
2b680d9b 41#include "AliITSsegmentationSDD.h"
b7943f00 42#include "AliITSsegmentationSPD.h"
43#include "AliITSsegmentationSSD.h"
541f7ba6 44#include "AliITSv11.h"
b7943f00 45#include "AliMagF.h"
46#include "AliRun.h"
47#include "AliTrackReference.h"
48#include "AliMC.h"
49
50#include <TGeoManager.h>
51#include <TGeoVolume.h>
52#include <TGeoPcon.h>
53//#include "AliITSv11GeometrySPD.h"
db486a6e 54#include "AliITSv11GeometrySDD.h"
b7943f00 55//#include "AliITSv11GeometrySupport.h"
171f3f35 56
2b680d9b 57
541f7ba6 58
b7943f00 59ClassImp(AliITSv11)
60
fa4639a3 61
62
63AliITSv11::AliITSv11() : AliITS()
64{
b7943f00 65 // Standard default constructor for the ITS version 11.
fa4639a3 66 fGeomDetOut=kFALSE;
67 fGeomDetIn=kFALSE;
68 fMajorVersion=11;
69 fMinorVersion=0;
b7943f00 70 Int_t i;
71 for(i=0;i<60;i++) fRead[i] = '\0';
72 for(i=0;i<60;i++) fWrite[i] = '\0';
73 for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
74 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
75 SetEUCLID(kFALSE);
2b680d9b 76
b7943f00 77// fSPDgeom = new AliITSv11GeometrySPD();
78 fSDDgeom = new AliITSv11GeometrySDD();
79// fSupgeom = new AliITSv11GeometrySupport();
f7315efc 80
b7943f00 81 fIdN = 1;
82 fIdName = new TString[fIdN];
83 fIdName[0] = fSDDgeom->GetSenstiveVolumeMame();
84 fIdSens = new Int_t[fIdN];
85 for(Int_t i=0; i<fIdN; i++) fIdSens[i] = 0;
2b680d9b 86}
b7943f00 87
fa4639a3 88
89//______________________________________________________________________
90AliITSv11::AliITSv11(const char *name, const char *title)
91 : AliITS("ITS", title)
92{
93 // Standard constructor for the ITS version 11.
94
95 fGeomDetOut = kFALSE;
96 fGeomDetIn = kFALSE;
97 fMajorVersion = 11;
98 fMinorVersion = 0;
99 printf("%s\n constructor",name);
100
101 Int_t i;
102 for(i=0;i<60;i++) fRead[i] = '\0';
103 for(i=0;i<60;i++) fWrite[i] = '\0';
104 for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
105 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
106 SetEUCLID(kFALSE);
107
108// fSPDgeom = new AliITSv11GeometrySPD();
109 fSDDgeom = new AliITSv11GeometrySDD();
110// fSupgeom = new AliITSv11GeometrySupport();
111
112 fIdN = 1;
113 fIdName = new TString[fIdN];
114 fIdName[0] = fSDDgeom->GetSenstiveVolumeMame();
115 fIdSens = new Int_t[fIdN];
116 for(Int_t i=0; i<fIdN; i++) fIdSens[i] = 0;
117}
118
119
120
2b680d9b 121//______________________________________________________________________
db486a6e 122AliITSv11::AliITSv11(Int_t debugITS,Int_t debugSPD,Int_t debugSDD,
b7943f00 123 Int_t debugSSD,Int_t debugSUP) :
124 AliITS("ITS","ITS geometry v11"),
125 fGeomDetOut(kFALSE),
126 fGeomDetIn(kFALSE),
127 fMajorVersion(11),
128 fMinorVersion(0) {
129 // Standard default constructor for the ITS version 11.
130 // Inputs:
131 // Int_t debugITS Debug flag for ITS code (required).
132 // Int_t debugSPD Debug flag for SPD geometry (default = 0).
133 // Int_t debugSDD Debug flag for SDD geometry (default = 0).
134 // Int_t debugSSD Debug flag for SSD geometry (default = 0).
135 // Int_t debugSUP Debug flag for SUPort geometry (default = 0).
136 // Outputs:
137 // none.
138 // Return
139
140 SetDensityServicesByThickness();
141
142 SetEUCLID(kFALSE);
143 fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
144 strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
145 strncpy(fRead,fEuclidGeomDet,60);
146 strncpy(fWrite,fEuclidGeomDet,60);
147 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
148
149// fSPDgeom = new AliITSv11GeometrySPD(debugSPD);
150 fSDDgeom = new AliITSv11GeometrySDD(debugSDD);
151// fSupgeom = new AliITSv11GeometrySupport(debugSUP);
152
153 fIdN = 1;
154 fIdName = new TString[fIdN];
155 fIdName[0] = fSDDgeom->GetSenstiveVolumeMame();
156 fIdSens = new Int_t[fIdN];
157 for(Int_t i=0; i<fIdN; i++) fIdSens[i] = 0;
158
fa4639a3 159 debugITS = (debugSPD && debugSSD && debugSUP && debugSDD); //remove temp. warnings
162acd47 160}
b7943f00 161
162
162acd47 163//______________________________________________________________________
b7943f00 164AliITSv11::AliITSv11(const AliITSv11 &source) :
165 AliITS(source){
166 // Copy Constructor for ITS version 11. This function is not to be
167 // used. If any other instance of this function, other than "this" is
168 // passed, an error message is returned.
162acd47 169 // Inputs:
b7943f00 170 // const AliITSv11 &source This class
162acd47 171
172 if(&source == this) return;
b7943f00 173 Warning("Copy Constructor","Not allowed to copy AliITSv11");
162acd47 174 return;
175}
b7943f00 176
177
162acd47 178//______________________________________________________________________
b7943f00 179AliITSv11& AliITSv11::operator=(const AliITSv11
180 &source){
181 // Assignment operator for the ITS version 11. This function is not
182 // to be used. If any other instance of this function, other than "this"
183 // is passed, an error message is returned.
162acd47 184 // Inputs:
b7943f00 185 // const AliITSv11 &source This class
162acd47 186
187 if(&source == this) return *this;
b7943f00 188 Warning("= operator","Not allowed to copy AliITSv11");
162acd47 189 return *this;
dfefbaec 190}
b7943f00 191
192
dfefbaec 193//______________________________________________________________________
b7943f00 194AliITSv11::~AliITSv11() {
195 delete fSDDgeom;
196}
2b680d9b 197
2b680d9b 198
b7943f00 199//______________________________________________________________________
200void AliITSv11::BuildGeometry(){
201
2b680d9b 202}
b7943f00 203
204
2b680d9b 205//______________________________________________________________________
aa9bc63b 206void AliITSv11::CreateGeometry(){
b7943f00 207 //
208 // Create ROOT geometry
209 //
210
211 TGeoManager *geoManager = gGeoManager;
212 TGeoVolume *vALIC = geoManager->GetTopVolume();
213
214 TGeoPcon *sITS = new TGeoPcon("ITS Top Volume",0.0,360.0,2);
215
216 // DefineSection(section number, Z, Rmin, Rmax).
217 const Double_t kcm = 1.0;
218 sITS->DefineSection(0,-300.0*kcm,0.01*kcm,50.0*kcm);
219 sITS->DefineSection(1,+300.0*kcm,0.01*kcm,50.0*kcm);
220
221 TGeoMedium *air = gGeoManager->GetMedium("ITSair");
222 TGeoVolume *vITS = new TGeoVolume("vITS",sITS,air);
223 vITS->SetVisibility(kFALSE);
224 vALIC->AddNode(vITS,1,0);
225
226// fSPDgeom->CenteralSPD(vITS);
fa4639a3 227
228// fSDDgeom->AddOnlyLay3Ladder(0,1);
229// fSDDgeom->AddOnlyLay4Ladder(0,1);
b7943f00 230 fSDDgeom->Layer3(vITS);
231 fSDDgeom->Layer4(vITS);
fa4639a3 232
b7943f00 233// fSupgeom->SPDCone(vITS);
234// fSupgeom->SPDThermalSheald(vITS);
235// fSupgeom->SDDCone(vITS);
236// fSupgeom->SSDCone(vITS);
237// fSupgeom->ServicesCableSupport(vITS);
238
541f7ba6 239}
b7943f00 240
241
541f7ba6 242//______________________________________________________________________
243void AliITSv11::CreateMaterials(){
b7943f00 244 //
245 // Create ITS materials
246 // Defined media here should correspond to the one defined in galice.cuts
247 // File which is red in (AliMC*) fMCApp::Init() { ReadTransPar(); }
248 //
249
250 Int_t ifield = gAlice->Field()->Integ();
251 Float_t fieldm = gAlice->Field()->Max();
252
253 Float_t tmaxfd = 0.1; // 1.0; // Degree
254 Float_t stemax = 1.0; // cm
255 Float_t deemax = 0.1; // 30.0; // Fraction of particle's energy 0<deemax<=1
256 Float_t epsil = 1.0E-4; // 1.0; // cm
257 Float_t stmin = 0.0; // cm "Default value used"
258
259 Float_t tmaxfdSi = 0.1; // .10000E+01; // Degree
260 Float_t stemaxSi = 0.0075; // .10000E+01; // cm
261 Float_t deemaxSi = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1
262 Float_t epsilSi = 1.0E-4;// .10000E+01;
263 Float_t stminSi = 0.0; // cm "Default value used"
264
265 Float_t tmaxfdAir = 0.1; // .10000E+01; // Degree
266 Float_t stemaxAir = .10000E+01; // cm
267 Float_t deemaxAir = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1
268 Float_t epsilAir = 1.0E-4;// .10000E+01;
269 Float_t stminAir = 0.0; // cm "Default value used"
270
271 Float_t tmaxfdServ = 1.0; // 10.0; // Degree
272 Float_t stemaxServ = 1.0; // 0.01; // cm
273 Float_t deemaxServ = 0.5; // 0.1; // Fraction of particle's energy 0<deemax<=1
274 Float_t epsilServ = 1.0E-3; // 0.003; // cm
275 Float_t stminServ = 0.0; //0.003; // cm "Default value used"
276
277 // Freon PerFluorobuthane C4F10 see
278 // http://st-support-cooling-electronics.web.cern.ch/
279 // st-support-cooling-electronics/default.htm
280 Float_t afre[2] = { 12.011,18.9984032 };
281 Float_t zfre[2] = { 6., 9. };
282 Float_t wfre[2] = { 4.,10. };
283 Float_t densfre = 1.52;
284
285
286 //CM55J
287 Float_t aCM55J[4]={12.0107,14.0067,15.9994,1.00794};
288 Float_t zCM55J[4]={6.,7.,8.,1.};
289 Float_t wCM55J[4]={0.908508078,0.010387573,0.055957585,0.025146765};
290 Float_t dCM55J = 1.63;
291
292 //ALCM55J
293 Float_t aALCM55J[5]={12.0107,14.0067,15.9994,1.00794,26.981538};
294 Float_t zALCM55J[5]={6.,7.,8.,1.,13.};
295 Float_t wALCM55J[5]={0.817657902,0.0093488157,0.0503618265,0.0226320885,0.1};
296 Float_t dALCM55J = 1.9866;
297
298 //Si Chips
299 Float_t aSICHIP[6]={12.0107,14.0067,15.9994,1.00794,28.0855,107.8682};
300 Float_t zSICHIP[6]={6.,7.,8.,1.,14., 47.};
301 Float_t wSICHIP[6]={0.039730642,0.001396798,0.01169634,
302 0.004367771,0.844665,0.09814344903};
303 Float_t dSICHIP = 2.36436;
304
305 //Inox
306 Float_t aINOX[9]={12.0107,54.9380, 28.0855,30.9738,32.066,
307 58.6928,55.9961,95.94,55.845};
308 Float_t zINOX[9]={6.,25.,14.,15.,16., 28.,24.,42.,26.};
309 Float_t wINOX[9]={0.0003,0.02,0.01,0.00045,0.0003,0.12,0.17,0.025,0.654};
310 Float_t dINOX = 8.03;
311
312 //SDD HV microcable
313 Float_t aHVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
314 Float_t zHVm[5]={6.,1.,7.,8.,13.};
315 Float_t wHVm[5]={0.520088819984,0.01983871336,0.0551367996,0.157399667056, 0.247536};
316 Float_t dHVm = 1.6087;
317
318 //SDD LV+signal cable
319 Float_t aLVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
320 Float_t zLVm[5]={6.,1.,7.,8.,13.};
321 Float_t wLVm[5]={0.21722436468,0.0082859922,0.023028867,0.06574077612, 0.68572};
322 Float_t dLVm = 2.1035;
323
324 //SDD hybrid microcab
325 Float_t aHLVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
326 Float_t zHLVm[5]={6.,1.,7.,8.,13.};
327 Float_t wHLVm[5]={0.24281879711,0.00926228815,0.02574224025,0.07348667449, 0.64869};
328 Float_t dHLVm = 2.0502;
329
330 //SDD anode microcab
331 Float_t aALVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
332 Float_t zALVm[5]={6.,1.,7.,8.,13.};
333 Float_t wALVm[5]={0.392653705471,0.0128595919215,
334 0.041626868025,0.118832707289, 0.431909};
335 Float_t dALVm = 2.0502;
336
337 //X7R capacitors
338 Float_t aX7R[7]={137.327,47.867,15.9994,58.6928,63.5460,118.710,207.2};
339 Float_t zX7R[7]={56.,22.,8.,28.,29.,50.,82.};
340 Float_t wX7R[7]={0.251639432,0.084755042,0.085975822,
341 0.038244751,0.009471271,0.321736471,0.2081768};
342 Float_t dX7R = 7.14567;
343
344 // AIR
345 Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
346 Float_t zAir[4]={6.,7.,8.,18.};
347 Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
348 Float_t dAir = 1.20479E-3;
349
350 // Water
351 Float_t aWater[2]={1.00794,15.9994};
352 Float_t zWater[2]={1.,8.};
353 Float_t wWater[2]={0.111894,0.888106};
354 Float_t dWater = 1.0;
355
356 // CERAMICS
357 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
358 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
359 Float_t zcer[5] = { 13., 8., 14., 25., 24. };
360 Float_t wcer[5] = {.4443408,.5213375,.0130872,.0178135,.003421};
361 Float_t denscer = 3.6;
362
363 //G10FR4
364 Float_t zG10FR4[14] = {14.00, 20.00, 13.00, 12.00, 5.00,
365 22.00, 11.00, 19.00, 26.00, 9.00,
366 8.00, 6.00, 7.00, 1.00};
367 Float_t aG10FR4[14] = {28.0855000,40.0780000,26.9815380,24.3050000,
368 10.8110000,47.8670000,22.9897700,39.0983000,
369 55.8450000,18.9984000,15.9994000,12.0107000,
370 14.0067000,1.0079400};
371 Float_t wG10FR4[14] = {0.15144894,0.08147477,0.04128158,0.00904554,
372 0.01397570,0.00287685,0.00445114,0.00498089,
373 0.00209828,0.00420000,0.36043788,0.27529426,
374 0.01415852,0.03427566};
375 Float_t densG10FR4= 1.8;
376
377 //--- EPOXY --- C18 H19 O3
378 Float_t aEpoxy[3] = {15.9994, 1.00794, 12.0107} ;
379 Float_t zEpoxy[3] = { 8., 1., 6.} ;
380 Float_t wEpoxy[3] = { 3., 19., 18.} ;
381 Float_t dEpoxy = 1.8 ;
382
383 // rohacell: C9 H13 N1 O2
384 Float_t arohac[4] = {12.01, 1.01, 14.010, 16.};
385 Float_t zrohac[4] = { 6., 1., 7., 8.};
386 Float_t wrohac[4] = { 9., 13., 1., 2.};
387 Float_t drohac = 0.05;
388
389 // If he/she means stainless steel (inox) + Aluminium and Zeff=15.3383 then
390//
391// %Al=81.6164 %inox=100-%Al
392
393 Float_t aInAl[5] = {27., 55.847,51.9961,58.6934,28.0855 };
394 Float_t zInAl[5] = {13., 26.,24.,28.,14. };
395 Float_t wInAl[5] = {.816164, .131443,.0330906,.0183836,.000919182};
396 Float_t dInAl = 3.075;
397
398 // Kapton
399 Float_t aKapton[4]={1.00794,12.0107, 14.010,15.9994};
400 Float_t zKapton[4]={1.,6.,7.,8.};
401 Float_t wKapton[4]={0.026362,0.69113,0.07327,0.209235};
402 Float_t dKapton = 1.42;
403
404 //SDD ruby sph.
405 Float_t aAlOxide[2] = { 26.981539,15.9994};
406 Float_t zAlOxide[2] = { 13., 8.};
407 Float_t wAlOxide[2] = {0.4707, 0.5293};
408 Float_t dAlOxide = 3.97;
409
410 //---------
411 AliMaterial(1,"ITSsddSi",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
412 AliMedium(1,"ITSsddSi",1,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
413
414 AliMixture(5,"ITSair",aAir,zAir,dAir,4,wAir);
415 AliMedium(5,"ITSair",5,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
416
417 AliMixture(7,"ITSsddSiChip",aSICHIP,zSICHIP,dSICHIP,6,wSICHIP);
418 AliMedium(7,"ITSsddSiChip",7,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
419
420 AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
421 AliMedium(79,"SDD SI insensitive$",79,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
422
423 AliMaterial(11,"ITSal",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
424 AliMedium(11,"ITSal",11,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
425
426 AliMixture(9,"ITSsddCarbonM55J",aCM55J,zCM55J,dCM55J,4,wCM55J);
427 AliMedium(9,"ITSsddCarbonM55J",9,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
428
429 AliMixture(10,"SDD AIR$",aAir,zAir,dAir,4,wAir);
430 AliMedium(10,"SDD AIR$",10,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
431
432 AliMixture(12, "WATER",aWater,zWater,dWater,2,wWater);
433 AliMedium(12,"WATER",12,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
434
435 AliMixture(69,"ITSsddCAlM55J",aALCM55J,zALCM55J,dALCM55J,5,wALCM55J);
436 AliMedium(69,"ITSsddCAlM55J",69,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
437
438 AliMixture(70, "ITSsddKAPTON_POLYCH2", aKapton, zKapton, dKapton, 4, wKapton);
439 AliMedium(70,"ITSsddKAPTON_POLYCH2",70,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
440
441 AliMixture(77,"SDDX7Rcapacitors",aX7R,zX7R,dX7R,7,wX7R);
442 AliMedium(77,"SDDX7Rcapacitors",77,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
443
444 AliMixture(78,"SDD ruby sph. Al2O3$",aAlOxide,zAlOxide,dAlOxide,2,wAlOxide);
445 AliMedium(78,"SDD ruby sph. Al2O3$",78,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
446
447
448 AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
449 AliMedium(64,"ALUMINUM$",64,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
450
451 AliMaterial(14,"COPPER",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03);
452 AliMedium(14,"COPPER",14,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
453
454 AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
455 AliMedium(2,"SPD SI CHIP$",2,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
456
457 AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
458 AliMedium(3,"SPD SI BUS$",3,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
459
460 AliMixture(4,"C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
461 AliMedium(4,"C (M55J)$",4,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
462
463
464 AliMixture(6,"GEN AIR$",aAir,zAir,dAir,4,wAir);
465 AliMedium(6,"GEN AIR$",6,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
466
467 AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
468 AliMedium(13,"Freon$",13,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
469
470
471 AliMixture(15,"CERAMICS$",acer,zcer,denscer,5,wcer);
472 AliMedium(15,"CERAMICS$",15,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
473
474 AliMixture(20,"SSD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
475 AliMedium(20,"SSD C (M55J)$",20,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
476
477 AliMixture(21,"SSD AIR$",aAir,zAir,dAir,4,wAir);
478 AliMedium(21,"SSD AIR$",21,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
479
480 AliMixture(25,"G10FR4$",aG10FR4,zG10FR4,densG10FR4,14,wG10FR4);
481 AliMedium(25,"G10FR4$",25,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
482
483 AliMixture(26,"GEN C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
484 AliMedium(26,"GEN C (M55J)$",26,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
485
486 AliMixture(27,"GEN Air$",aAir,zAir,dAir,4,wAir);
487 AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
488
489 AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
490 AliMedium(51,"SPD SI$",51,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
491
492 AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
493 AliMedium(52,"SPD SI CHIP$",52,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
494
495 AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
496 AliMedium(53,"SPD SI BUS$",53,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
497
498 AliMixture(54,"SPD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
499 AliMedium(54,"SPD C (M55J)$",54,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
500
501 AliMixture(55,"SPD AIR$",aAir,zAir,dAir,4,wAir);
502 AliMedium(55,"SPD AIR$",55,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
503
504 AliMixture(56, "SPD KAPTON(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
505 AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
506
507 AliMixture(61,"EPOXY$",aEpoxy,zEpoxy,dEpoxy,-3,wEpoxy);
508 AliMedium(61,"EPOXY$",61,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
509
510 AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
511 AliMedium(62,"SILICON$",62,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
512
513 AliMixture(63, "KAPTONH(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
514 AliMedium(63,"KAPTONH(POLYCH2)$",63,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
515
516
517 AliMixture(65,"INOX$",aINOX,zINOX,dINOX,9,wINOX);
518 AliMedium(65,"INOX$",65,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
519
520 AliMixture(68,"ROHACELL$",arohac,zrohac,drohac,-4,wrohac);
521 AliMedium(68,"ROHACELL$",68,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
522
523
524 AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03);
525 AliMedium(71,"ITS SANDW A$",71,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
526
527 AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03);
528 AliMedium(72,"ITS SANDW B$",72,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
529
530 AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
531 AliMedium(73,"ITS SANDW C$",73,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
532
533 AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
534 AliMedium(74,"HEAT COND GLUE$",74,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
535
536 AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
537 AliMedium(75,"ELASTO SIL$",75,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
538
539 AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03);
540 AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
541
542
543 AliMixture(80,"SDD HV microcable$",aHVm,zHVm,dHVm,5,wHVm);
544 AliMedium(80,"SDD HV microcable$",80,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
545
546 AliMixture(81,"SDD LV+signal cable$",aLVm,zLVm,dLVm,5,wLVm);
547 AliMedium(81,"SDD LV+signal cable$",81,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
548
549 AliMixture(82,"SDD hybrid microcab$",aHLVm, zHLVm,dHLVm,5,wHLVm);
550 AliMedium(82,"SDD hybrid microcab$",82,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
551
552 AliMixture(83,"SDD anode microcab$",aALVm,zALVm,dALVm,5,wALVm);
553 AliMedium(83,"SDD anode microcab$",83,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
554
555 AliMaterial(84,"SDD/SSD rings$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
556 AliMedium(84,"SDD/SSD rings$",84,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
557
558 AliMixture(85,"inox/alum$",aInAl,zInAl,dInAl,5,wInAl);
559 AliMedium(85,"inox/alum$",85,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
560
561
562 // special media to take into account services in the SDD and SSD
563 // cones for the FMD
564
565 Float_t aA[13],zZ[13],wW[13],den;
566 // From Pierluigi Barberis calculations of 2SPD+1SDD October 2 2002.
567 zZ[0] = 1.0; aA[0] = 1.00794; // Hydrogen
568 zZ[1] = 6.0; aA[1] = 12.011; // Carbon
569 zZ[2] = 7.0; aA[2] = 14.00674; // Nitrogen
570 zZ[3] = 8.0; aA[3] = 15.9994; // Oxigen
571 zZ[4] = 14.0; aA[4] = 28.0855; // Silicon
572 zZ[5] = 24.0; aA[5] = 51.9961; //Cromium
573 zZ[6] = 25.0; aA[6] = 54.938049; // Manganese
574 zZ[7] = 26.0; aA[7] = 55.845; // Iron
575 zZ[8] = 28.0; aA[8] = 58.6934; // Nickle
576 zZ[9] = 29.0; aA[9] = 63.546; // Copper
577 zZ[10] = 13.0; aA[10] = 26.981539; // Alulminum
578 zZ[11] = 47.0; aA[11] = 107.8682; // Silver
579 zZ[12] = 27.0; aA[12] = 58.9332; // Cobolt
580 wW[0] = 0.019965;
581 wW[1] = 0.340961;
582 wW[2] = 0.041225;
583 wW[3] = 0.200352;
584 wW[4] = 0.000386;
585 wW[5] = 0.001467;
586 wW[6] = 0.000155;
587 wW[7] = 0.005113;
588 wW[8] = 0.000993;
589 wW[9] = 0.381262;
590 wW[10] = 0.008121;
591 wW[11] = 0.000000;
592 wW[12] = 0.000000;
593 if(fByThick){// New values seeITS_MatBudget_4B.xls
594 den = 1.5253276; // g/cm^3 Cell O370
595 }else{
596 den = 2.58423412; // g/cm^3 Cell L370
597 } // end if fByThick
598 //den = 6161.7/(3671.58978);//g/cm^3 Volume does not exclude holes
599 AliMixture(86,"AIRFMDSDD$",aA,zZ,den,+11,wW);
600 AliMedium(86,"AIRFMDSDD$",86,0,ifield,fieldm,tmaxfdAir,stemaxAir,
601 deemaxAir,epsilAir,stminAir);
602
603
604 wW[0] = 0.019777;
605 wW[1] = 0.325901;
606 wW[2] = 0.031848;
607 wW[3] = 0.147668;
608 wW[4] = 0.030609;
609 wW[5] = 0.013993;
610 wW[6] = 0.001479;
611 wW[7] = 0.048792;
612 wW[8] = 0.009477;
613 wW[9] = 0.350697;
614 wW[10] = 0.014546;
615 wW[11] = 0.005213;
616 wW[12] = 0.000000;
617 if(fByThick){// New values seeITS_MatBudget_4B.xls
618 den = 1.2464275; // g/cm^3 Cell O403
619 }else{
620 den = 1.28134409; // g/cm^3 Cell L403
621 } // end if fByThick
622 //den = 7666.3/(9753.553259); // volume does not exclude holes
623 AliMixture(87,"AIRFMDSSD$",aA,zZ,den,+12,wW);
624 AliMedium(87,"AIRFMDSSD$",87,0,ifield,fieldm,tmaxfdAir,stemaxAir,
625 deemaxAir,epsilAir,stminAir);
626
627 wW[0] = 0.016302;
628 wW[1] = 0.461870;
629 wW[2] = 0.033662;
630 wW[3] = 0.163595;
631 wW[4] = 0.000315;
632 wW[5] = 0.001197;
633 wW[6] = 0.000127;
634 wW[7] = 0.004175;
635 wW[8] = 0.000811;
636 wW[9] = 0.311315;
637 wW[10] = 0.006631;
638 wW[11] = 0.000000;
639 wW[12] = 0.000000;
640 if(fByThick){// New values seeITS_MatBudget_4B.xls
641 den = 1.9353276; // g/cm^3 Cell N370
642 }else{
643 den = 3.2788626; // g/cm^3 Cell F370
644 } // end if fByThick
645 //den = 7667.1/(3671.58978); // Volume does not excludeholes
646 AliMixture(88,"ITS SANDW CFMDSDD$",aA,zZ,den,+11,wW);
647 AliMedium(88,"ITS SANDW CFMDSDD$",88,0,ifield,fieldm,tmaxfd,stemax,
648 deemax,epsil,stmin);
649
650 wW[0] = 0.014065;
651 wW[1] = 0.520598;
652 wW[2] = 0.022650;
653 wW[3] = 0.105018;
654 wW[4] = 0.021768;
655 wW[5] = 0.009952;
656 wW[6] = 0.001051;
657 wW[7] = 0.034700;
658 wW[8] = 0.006740;
659 wW[9] = 0.249406;
660 wW[10] = 0.010345;
661 wW[11] = 0.0003707;
662 wW[12] = 0.000000;
663 if(fByThick){// New values seeITS_MatBudget_4B.xls
664 den = 1.6564275; // g/cm^3 Cell N304
665 }else{
666 den = 1.7028296; // g/cm^3 Cell F304
667 } // end if fByThick
668 //den = 1166.5/(3671.58978); // Volume does not exclude holes
669 AliMixture(89,"ITS SANDW CFMDSSD$",aA,zZ,den,+12,wW);
670 AliMedium(89,"ITS SANDW CFMDSSD$",89,0,ifield,fieldm,tmaxfd,stemax,
671 deemax,epsil,stmin);
672
673 wW[0] = 0.005970;
674 wW[1] = 0.304704;
675 wW[2] = 0.042510;
676 wW[3] = 0.121715;
677 wW[4] = 0.001118;
678 wW[5] = 0.030948;
679 wW[6] = 0.003270;
680 wW[7] = 0.107910;
681 wW[8] = 0.020960;
682 wW[9] = 0.360895;
683 wW[10] = 0.000000;
684 wW[11] = 0.000000;
685 wW[12] = 0.000000;
686 if(fByThick){// New values seeITS_MatBudget_4B.xls
687 den = 80.31136576; // g/cm^3 Cell H329
688 }else{
689 den = 87.13062; // g/cm^3 Cell G329
690 } // end if fByThick
691 //den = 1251.3/(0.05*2.0*TMath::Pi()*(7.75*7.75 - 3.7*3.7)); // g/cm^3
692 AliMixture(97,"SPD SERVICES$",aA,zZ,den,+10,wW);
693 AliMedium(97,"SPD SERVICES$",97,0,ifield,fieldm,tmaxfd,stemax,
694 deemax,epsil,stmin);
695
696 // Special media
697
698 AliMaterial(90,"SPD shield$", 12.011, 6., 1.93/10. , 22.1*10., 999);
699 AliMedium(90,"SPD shield$",90,0,ifield,fieldm,tmaxfdServ,stemaxServ,
700 deemaxServ,epsilServ,stminServ);
701
702 AliMaterial(91, "SPD End ladder$", 47.0447, 21.7963, 3.6374, 4.4711, 999);
703 AliMedium(91,"SPD End ladder$",91,0,ifield,fieldm,tmaxfdServ,stemaxServ,
704 deemaxServ,epsilServ,stminServ);
705
706 AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);
707 AliMedium(92,"SPD cone$",92,0,ifield,fieldm,tmaxfdServ,stemaxServ,
708 deemaxServ,epsilServ,stminServ);
709
710// Material with fractional Z not actually used
711// AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999);
712// AliMedium(93,"SDD End ladder$",93,0,ifield,fieldm,tmaxfdServ,stemaxServ,
713// deemaxServ,epsilServ,stminServ);
714
715 AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999);
716 AliMedium(94,"SDD cone$",94,0,ifield,fieldm,tmaxfdServ,stemaxServ,
717 deemaxServ,epsilServ,stminServ);
718
719// Material with fractional Z not actually used
720// AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999);
721// AliMedium(95,"SSD End ladder$",95,0,ifield,fieldm,tmaxfdServ,stemaxServ,
722// deemaxServ,epsilServ,stminServ);
723
724 AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999);
725 AliMedium(96,"SSD cone$",96,0,ifield,fieldm,tmaxfdServ,stemaxServ,
726 deemaxServ,epsilServ,stminServ);
727
dfefbaec 728}
b7943f00 729
730
dfefbaec 731//______________________________________________________________________
732void AliITSv11::InitAliITSgeom(){
b7943f00 733 //
734 // Fill fITSgeom with the 3 sub-detector geometries
735 //
736
fa4639a3 737 const Int_t knlayers = 6;
b7943f00 738 Int_t nlad[knlayers],ndet[knlayers];
fa4639a3 739 nlad[0]= 0; ndet[0]=0;
740 nlad[1]= 0; ndet[1]=0;
741 nlad[2]= fSDDgeom->GetLay3NLadders(); ndet[2]=6;
742 nlad[3]= fSDDgeom->GetLay4NLadders(); ndet[3]=8;
743 nlad[4]= 0; ndet[4]=0;
744 nlad[5]= 0; ndet[5]=0;
745 Int_t nSPD = nlad[0]*ndet[0]+nlad[1]*ndet[1];
746 Int_t nSDD = nlad[2]*ndet[2]+nlad[3]*ndet[3];
747 Int_t nSSD = nlad[4]*ndet[4]+nlad[5]*ndet[5];
748 Int_t nModTot = nSPD + nSDD + nSSD;
b7943f00 749 if (fITSgeom) delete fITSgeom;
fa4639a3 750 fITSgeom = new AliITSgeom(0,knlayers,nlad,ndet,nModTot);
b7943f00 751
752
753 //***************************************************
754 // Set default shapes
755 // (These default shapes won't exist anymore when all
756 // layers are coded)
757
758 const Float_t kDxyzSPD[] = {0.6400, 0.015, 3.480};
759 if(!(fITSgeom->IsShapeDefined(kSPD)))
760 fITSgeom->ReSetShape(kSPD,
761 new AliITSgeomSPD425Short(3,(Float_t *)kDxyzSPD));
762
763 const Float_t kDxyzSSD[] = {3.6500, 0.0150, 2.000};
764 if(!(fITSgeom->IsShapeDefined(kSSD)))
765 fITSgeom->ReSetShape(kSSD,
766 new AliITSgeomSSD75and275(3,(Float_t *)kDxyzSSD));
767
768 //*****************************************
fa4639a3 769 fSDDgeom->ExportSensorGeometry(fITSgeom, +3, 0); //SDD
b7943f00 770
771 return;
dfefbaec 772}
b7943f00 773
774
dfefbaec 775//______________________________________________________________________
776void AliITSv11::Init(){
b7943f00 777 //
778 // Initialise the ITS after it has been created.
779 //
780
781 Int_t i;
b7943f00 782 for(i=0;i<20;i++) printf("*");
783 printf( " ITSv%i.%i_Init ", fMajorVersion,fMinorVersion );
784 for(i=0;i<20;i++) printf("*"); printf("\n");
785
786 // Create geometry
787 if(fRead[0]=='\0') strncpy(fRead,fEuclidGeomDet,60);
788 if(fWrite[0]=='\0') strncpy(fWrite,fEuclidGeomDet,60);
789 if(fITSgeom!=0) delete fITSgeom;
790 fITSgeom = new AliITSgeom();
791 if(fGeomDetIn) fITSgeom->ReadNewFile(fRead);
792 else this->InitAliITSgeom();
793 if(fGeomDetOut) fITSgeom->WriteNewFile(fWrite);
794
795 // Initialize AliITS
796 AliITS::Init();
b7943f00 797 for(i=0;i<40+16;i++) printf("*"); printf("\n");
dfefbaec 798}
b7943f00 799
800
dfefbaec 801//______________________________________________________________________
802void AliITSv11::SetDefaults(){
b7943f00 803 //
804 // Set response ans segmentation models for SPD, SDD and SSD
805 //
806
807 printf("AliITSv11::SetDefaults :\n");
808 const Float_t kconv = 1.0e+04; // convert cm to microns
809
810 AliITSDetType *iDetType;
811 AliITSgeomSPD *s0;
812 AliITSgeomSDD *s1;
813 AliITSgeomSSD *s2;
814 Int_t i;
815 Float_t bx[256],bz[280];
816
817 //================================================ SPD
818 iDetType=DetType(kSPD);
819 s0 = (AliITSgeomSPD*) fITSgeom->GetShape(kSPD);// Get shape info. Do it this way for now.
820 // If some SPD detectors have been inserted in t
821 if (s0) {
822 AliITSresponse *resp0=new AliITSresponseSPD();
823 SetResponseModel(kSPD,resp0);
824 AliITSsegmentationSPD *seg0=new AliITSsegmentationSPD(fITSgeom);
825 seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
826 s0->GetDz()*2.*kconv, // for now.
827 s0->GetDy()*2.*kconv); // x,z,y full width in microns.
828 seg0->SetNPads(256,160);// Number of Bins in x and z
829 for(i=000;i<256;i++) bx[i] = 50.0; // in x all are 50 microns.
830 for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
831 for(i=160;i<280;i++) bz[i] = 0.0; // Outside of detector.
832 bz[ 31] = bz[ 32] = 625.0; // first chip boundry
833 bz[ 63] = bz[ 64] = 625.0; // first chip boundry
834 bz[ 95] = bz[ 96] = 625.0; // first chip boundry
835 bz[127] = bz[128] = 625.0; // first chip boundry
836 bz[160] = 425.0; // Set so that there is no zero pixel size for fNz.
837 seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
838 SetSegmentationModel(kSPD,seg0);
839 // set digit and raw cluster classes to be used
840 const char *kData0=(iDetType->GetResponseModel())->DataType();
841 if (strstr(kData0,"real")) iDetType->ClassNames("AliITSdigit",
842 "AliITSRawClusterSPD");
843 else iDetType->ClassNames("AliITSdigitSPD","AliITSRawClusterSPD");
844 };
845
846 //================================================ SDD
847 iDetType=DetType(kSDD);
fa4639a3 848 s1 = (AliITSgeomSDD*) fITSgeom->GetShape(kSDD);
b7943f00 849 if (s1) {
fa4639a3 850 AliITSresponseSDD *resp1 = new AliITSresponseSDD("simulated");
851 AliITSsegmentationSDD *seg1 = new AliITSsegmentationSDD(fITSgeom,resp1);
852 seg1->SetDetSize(s1->GetDx()*kconv,
853 s1->GetDz()*4*kconv, // z in 2th and y in 3th position in
854 s1->GetDy()*4*kconv); // AliITSsegmentation::SetDetSize()...
855 seg1->SetNPads(256, 256);
856 SetResponseModel(kSDD, resp1);
857 SetSegmentationModel(kSDD, seg1);
858 const char *kData1 = (iDetType->GetResponseModel())->DataType();
859 const char *kopt = iDetType->GetResponseModel()->ZeroSuppOption();
b7943f00 860 if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
861 iDetType->ClassNames("AliITSdigit","AliITSRawClusterSDD");
862 } else iDetType->ClassNames("AliITSdigitSDD","AliITSRawClusterSDD");
863 };
864
865 //================================================ SSD Layer 5
866 iDetType=DetType(kSSD);
867 s2 = (AliITSgeomSSD*) fITSgeom->GetShape(kSSD);// Get shape info. Do it this way for now.
868 if (s2) {
869 AliITSresponse *resp2=new AliITSresponseSSD("simulated");
870 SetResponseModel(kSSD,resp2);
871 AliITSsegmentationSSD *seg2=new AliITSsegmentationSSD(fITSgeom);
872 seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
873 s2->GetDz()*2.*kconv, // for now.
874 s2->GetDy()*2.*kconv); // x,z,y full width in microns.
875 seg2->SetPadSize(95.,0.); // strip x pitch in microns
876 seg2->SetNPads(768,0); // number of strips on each side.
877 seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
878 seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
879 seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
880 SetSegmentationModel(kSSD,seg2);
881 const char *kData2=(iDetType->GetResponseModel())->DataType();
882 if(strstr(kData2,"real") ) iDetType->ClassNames("AliITSdigit",
883 "AliITSRawClusterSSD");
884 else iDetType->ClassNames("AliITSdigitSSD","AliITSRawClusterSSD");
885 };
886
887 if(kNTYPES>3){
888 Warning("SetDefaults",
889 "Only the four basic detector types are initialised!");
890 }// end if
891 return;
892};
893
894
dfefbaec 895//______________________________________________________________________
b7943f00 896void AliITSv11::DrawModule() const{
897
dfefbaec 898}
b7943f00 899
dfefbaec 900//______________________________________________________________________
901void AliITSv11::StepManager(){
b7943f00 902 //
903 // Called for every step in the ITS, then calles the AliITShit class
904 // creator with the information to be recoreded about that hit.
905 //
906
907 Int_t copy, id;
908 TLorentzVector position, momentum;
909 static TLorentzVector position0;
910 static Int_t stat0=0;
911
912 if(!(this->IsActive())){
913 return;
914 } // end if !Active volume.
915
916 if(!(gMC->TrackCharge())) return;
917
918 id=gMC->CurrentVolID(copy);
919
920 Bool_t sensvol = kFALSE;
921 for(Int_t kk = 0; kk < fIdN; kk++)
922 if(id == fIdSens[kk]) sensvol = kTRUE;
923
924 if (sensvol && (gMC->IsTrackExiting())) {
925 copy = fTrackReferences->GetEntriesFast();
926 TClonesArray &lTR = *fTrackReferences;
927 // Fill TrackReference structure with this new TrackReference.
928 new(lTR[copy]) AliTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber());
929 } // if Outer ITS mother Volume
930
931 Int_t vol[5];
932 TClonesArray &lhits = *fHits;
933 //
934 // Track status
935 vol[3] = 0;
936 vol[4] = 0;
937 // Fill hit structure.
938 if(gMC->IsTrackInside()) vol[3] += 1;
939 if(gMC->IsTrackEntering()) vol[3] += 2;
940 if(gMC->IsTrackExiting()) vol[3] += 4;
941 if(gMC->IsTrackOut()) vol[3] += 8;
942 if(gMC->IsTrackDisappeared()) vol[3] += 16;
943 if(gMC->IsTrackStop()) vol[3] += 32;
944 if(gMC->IsTrackAlive()) vol[3] += 64;
945
946 // Only entering charged tracks
947 if(!(gMC->TrackCharge())) return;
948
949 if((id = gMC->CurrentVolID(copy)) == fIdSens[0]) {
950 fSDDgeom->GetCurrentLayLaddDet(vol[0], vol[2], vol[1]);
951 // vol[2], vol[1]) : in this order because the ladder
952 // index and the det. index are exchanged in the constructor
953 // of AliITShit ... ???
954
955 } else {
956 return; // not an ITS volume?
957 };
958
959 gMC->TrackPosition(position);
960 gMC->TrackMomentum(momentum);
961 vol[4] = stat0;
962 if(gMC->IsTrackEntering()){
963 position0 = position;
964 stat0 = vol[3];
965 return;
966 } // end if IsEntering
967 // Fill hit structure with this new hit.
968 new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->GetMCApp()->GetCurrentTrackNumber(),
969 vol, gMC->Edep(),gMC->TrackTime(),position,
970 position0,momentum);
971 //
972 position0 = position;
973 stat0 = vol[3];
dfefbaec 974
b7943f00 975 return;
976};