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