]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSSimuParam.cxx
Fix bug in pileup tagging (F. Prino)
[u/mrichter/AliRoot.git] / ITS / AliITSSimuParam.cxx
CommitLineData
cd2a0045 1/**************************************************************************
2 * Copyright(c) 2007-2009, 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
2ae37d58 16/* $Id$ */
cd2a0045 17
18///////////////////////////////////////////////////////////////////
19// //
20// Implementation of the class to store the parameters used in //
21// the simulation of SPD, SDD and SSD detectors //
22// Origin: F.Prino, Torino, prino@to.infn.it //
23// //
24///////////////////////////////////////////////////////////////////
25
26#include "AliITSSimuParam.h"
27#include <TMath.h>
28
29const Float_t AliITSSimuParam::fgkSPDBiasVoltageDefault = 18.182;
30const Double_t AliITSSimuParam::fgkSPDThreshDefault = 3000.;
31const Double_t AliITSSimuParam::fgkSPDSigmaDefault = 250.;
32const TString AliITSSimuParam::fgkSPDCouplingOptDefault = "old";
33const Double_t AliITSSimuParam::fgkSPDCouplColDefault = 0.;
34const Double_t AliITSSimuParam::fgkSPDCouplRowDefault = 0.055;
35const Float_t AliITSSimuParam::fgkSPDEccDiffDefault = 0.85;
36const Float_t AliITSSimuParam::fgkSDDDiffCoeffDefault = 3.23;
37const Float_t AliITSSimuParam::fgkSDDDiffCoeff1Default = 30.;
38const Float_t AliITSSimuParam::fgkSDDJitterErrorDefault = 20.; // 20 um from beam test 2001
aebba721 39const Float_t AliITSSimuParam::fgkSDDDynamicRangeDefault = 1400./2.5; // mV/MOhm = nA
cd2a0045 40const Int_t AliITSSimuParam::fgkSDDMaxAdcDefault = 1024;
41const Float_t AliITSSimuParam::fgkSDDChargeLossDefault = 0.;
42const Double_t AliITSSimuParam::fgkSSDCouplingPRDefault = 0.01;
43const Double_t AliITSSimuParam::fgkSSDCouplingPLDefault = 0.01;
44const Double_t AliITSSimuParam::fgkSSDCouplingNRDefault = 0.01;
45const Double_t AliITSSimuParam::fgkSSDCouplingNLDefault = 0.01;
46const Int_t AliITSSimuParam::fgkSSDZSThresholdDefault = 3;
47
48const Float_t AliITSSimuParam::fgkNsigmasDefault = 3.;
49const Int_t AliITSSimuParam::fgkNcompsDefault = 121;
50
51ClassImp(AliITSSimuParam)
52
53//______________________________________________________________________
54AliITSSimuParam::AliITSSimuParam():
55 TObject(),
56fGeVcharge(0.),
57fDOverV(0.),
2ae37d58 58//fSPDBiasVoltage(fgkSPDBiasVoltageDefault),
59//fSPDThresh(fgkSPDThreshDefault),
60//fSPDSigma(fgkSPDSigmaDefault),
cd2a0045 61fSPDCouplOpt(0),
62fSPDCouplCol(fgkSPDCouplColDefault),
63fSPDCouplRow(fgkSPDCouplRowDefault),
64fSPDEccDiff(0.),
65fSDDElectronics(0),
66fSDDDiffCoeff(0.),
67fSDDDiffCoeff1(0.),
68fSDDJitterError(fgkSDDJitterErrorDefault),
69fSDDDynamicRange(fgkSDDDynamicRangeDefault),
70fSDDMaxAdc(0.),
71fSDDChargeLoss(fgkSDDChargeLossDefault),
cd2a0045 72fSSDCouplingPR(0),
73fSSDCouplingPL(0),
74fSSDCouplingNR(0),
75fSSDCouplingNL(0),
76fSSDZSThreshold(fgkSSDZSThresholdDefault),
77fNsigmas(fgkNsigmasDefault),
78fNcomps(fgkNcompsDefault),
2ae37d58 79fGaus(),
80fN(0.),
81fT(300.)
cd2a0045 82{
83 // default constructor
2ae37d58 84 SetSPDBiasVoltageAll(fgkSPDBiasVoltageDefault);
85 SetSPDThresholdsAll(fgkSPDThreshDefault,fgkSPDSigmaDefault);
86 SetSPDNoiseAll(0,0);
cd2a0045 87 SetGeVToCharge();
88 SetDistanceOverVoltage();
89 SetSPDCouplingOption(fgkSPDCouplingOptDefault);
90 SetSPDSigmaDiffusionAsymmetry(fgkSPDEccDiffDefault);
91 SetSDDElectronics();
92 SetSDDDiffCoeff(fgkSDDDiffCoeffDefault,fgkSDDDiffCoeff1Default);
93 SetSDDMaxAdc((Double_t)fgkSDDMaxAdcDefault);
cd2a0045 94 SetSSDCouplings(fgkSSDCouplingPRDefault,fgkSSDCouplingPLDefault,fgkSSDCouplingNRDefault,fgkSSDCouplingNLDefault);
95}
96//______________________________________________________________________
97AliITSSimuParam::AliITSSimuParam(const AliITSSimuParam &simpar):
98TObject(),
99fGeVcharge(simpar.fGeVcharge),
100fDOverV(simpar.fDOverV),
2ae37d58 101//fSPDBiasVoltage(simpar.fSPDBiasVoltage),
102//fSPDThresh(simpar.fSPDThresh),
103//fSPDSigma(simpar.fSPDSigma),
cd2a0045 104fSPDCouplOpt(simpar.fSPDCouplOpt),
105fSPDCouplCol(simpar.fSPDCouplCol),
106fSPDCouplRow(simpar.fSPDCouplRow),
107fSPDEccDiff(simpar.fSPDEccDiff),
108fSDDElectronics(simpar.fSDDElectronics),
109fSDDDiffCoeff(simpar.fSDDDiffCoeff),
110fSDDDiffCoeff1(simpar.fSDDDiffCoeff1),
111fSDDJitterError(simpar.fSDDJitterError),
112fSDDDynamicRange(simpar.fSDDDynamicRange),
113fSDDMaxAdc(simpar.fSDDMaxAdc),
114fSDDChargeLoss(simpar.fSDDChargeLoss),
cd2a0045 115fSSDCouplingPR(simpar.fSSDCouplingPR),
116fSSDCouplingPL(simpar.fSSDCouplingPL),
117fSSDCouplingNR(simpar.fSSDCouplingNR),
118fSSDCouplingNL(simpar.fSSDCouplingNL),
119fSSDZSThreshold(simpar.fSSDZSThreshold),
120fNsigmas(simpar.fNsigmas),
121fNcomps(simpar.fNcomps),
2ae37d58 122fGaus(),
123fN(simpar.fN),
124fT(simpar.fT){
cd2a0045 125 // copy constructor
2ae37d58 126 for (Int_t i=0;i<240;i++) {
127 fSPDBiasVoltage[i]=simpar.fSPDBiasVoltage[i];
128 fSPDThresh[i]=simpar.fSPDThresh[i];
129 fSPDSigma[i]=simpar.fSPDSigma[i];
130 fSPDNoise[i]=simpar.fSPDNoise[i];
131 fSPDBaseline[i]=simpar.fSPDBaseline[i];
132 }
cd2a0045 133}
134
135//______________________________________________________________________
136AliITSSimuParam& AliITSSimuParam::operator=(const AliITSSimuParam& source){
137 // Assignment operator.
138 this->~AliITSSimuParam();
139 new(this) AliITSSimuParam(source);
140 return *this;
141
142}
143
144
145//______________________________________________________________________
146AliITSSimuParam::~AliITSSimuParam() {
147 // destructor
148 if(fGaus) delete fGaus;
149}
150//________________________________________________________________________
151void AliITSSimuParam::SetNLookUp(Int_t p1){
152 // Set number of sigmas over which cluster disintegration is performed
153 fNcomps=p1;
154 if (fGaus) delete fGaus;
155 fGaus = new TArrayF(fNcomps+1);
156 for(Int_t i=0; i<=fNcomps; i++) {
157 Float_t x = -fNsigmas + (2.*i*fNsigmas)/(fNcomps-1);
158 (*fGaus)[i] = exp(-((x*x)/2));
159 }
160}
161//________________________________________________________________________
162void AliITSSimuParam::PrintParameters() const{
163 printf("GeVToCharge = %G\n",fGeVcharge);
164 printf("DistanveOverVoltage = %f \n",fDOverV);
165 printf("\n");
166 printf("===== SPD parameters =====\n");
2ae37d58 167 printf("Bias Voltage = %f \n",fSPDBiasVoltage[0]);
168 printf("Threshold and sigma = %f %f\n",fSPDThresh[0],fSPDSigma[0]);
cd2a0045 169 printf("Coupling Option = %s\n",fSPDCouplOpt.Data());
170 printf("Coupling value (column) = %f\n",fSPDCouplCol);
171 printf("Coupling value (row) = %f\n",fSPDCouplRow);
172 printf("Eccentricity in diffusion = %f\n",fSPDEccDiff);
173 printf("\n");
174 printf("===== SDD parameters =====\n");
175 printf("Electronic chips = %d\n",fSDDElectronics);
176 printf("Diffusion Coefficients = %f %f\n",fSDDDiffCoeff,fSDDDiffCoeff1);
177 printf("Jitter Error = %f um\n",fSDDJitterError);
178 printf("Dynamic Range = %f\n",fSDDDynamicRange);
179 printf("Max. ADC = %f\n",fSDDMaxAdc);
180 printf("Charge Loss = %f\n",fSDDChargeLoss);
181 printf("\n");
182 printf("===== SSD parameters =====\n");
cd2a0045 183 printf("Coupling PR = %f\n",fSSDCouplingPR);
184 printf("Coupling PL = %f\n",fSSDCouplingPL);
185 printf("Coupling NR = %f\n",fSSDCouplingNR);
186 printf("Coupling NL = %f\n",fSSDCouplingNL);
187 printf("Zero Supp threshold = %d\n",fSSDZSThreshold);
188}
2ae37d58 189//______________________________________________________________________
190Double_t AliITSSimuParam::MobilityElectronSiEmp() const {
191 // Computes the electron mobility in cm^2/volt-sec. Taken from SILVACO
192 // International ATLAS II, 2D Device Simulation Framework, User Manual
193 // Chapter 5 Equation 5-6. An empirical function for low-field mobiliity
194 // in silicon at different tempeatures.
195 // Inputs:
196 // none.
197 // Output:
198 // none.
199 // Return:
200 // The Mobility of electrons in Si at a give temprature and impurity
201 // concentration. [cm^2/Volt-sec]
202 const Double_t km0 = 55.24; // cm^2/Volt-sec
203 const Double_t km1 = 7.12E+08; // cm^2 (degree K)^2.3 / Volt-sec
204 const Double_t kN0 = 1.072E17; // #/cm^3
205 const Double_t kT0 = 300.; // degree K.
206 const Double_t keT0 = -2.3; // Power of Temp.
207 const Double_t keT1 = -3.8; // Power of Temp.
208 const Double_t keN = 0.73; // Power of Dopent Consentrations
209 Double_t m;
210 Double_t tT = fT,nN = fN;
211
212 if(nN<=0.0){ // Simple case.
213 if(tT==300.) return 1350.0; // From Table 5-1 at consentration 1.0E14.
214 m = km1*TMath::Power(tT,keT0);
215 return m;
216 } // if nN<=0.0
217 m = km1*TMath::Power(tT,keT0) - km0;
218 m /= 1.0 + TMath::Power(tT/kT0,keT1)*TMath::Power(nN/kN0,keN);
219 m += km0;
220 return m;
221}
222//______________________________________________________________________
223Double_t AliITSSimuParam::MobilityHoleSiEmp() const {
224 // Computes the Hole mobility in cm^2/volt-sec. Taken from SILVACO
225 // International ATLAS II, 2D Device Simulation Framework, User Manual
226 // Chapter 5 Equation 5-7 An empirical function for low-field mobiliity
227 // in silicon at different tempeatures.
228 // Inputs:
229 // none.
230 // Output:
231 // none.
232 // Return:
233 // The Mobility of Hole in Si at a give temprature and impurity
234 // concentration. [cm^2/Volt-sec]
235 const Double_t km0a = 49.74; // cm^2/Volt-sec
236 const Double_t km0b = 49.70; // cm^2/Volt-sec
237 const Double_t km1 = 1.35E+08; // cm^2 (degree K)^2.3 / Volt-sec
238 const Double_t kN0 = 1.606E17; // #/cm^3
239 const Double_t kT0 = 300.; // degree K.
240 const Double_t keT0 = -2.2; // Power of Temp.
241 const Double_t keT1 = -3.7; // Power of Temp.
242 const Double_t keN = 0.70; // Power of Dopent Consentrations
243 Double_t m;
244 Double_t tT = fT,nN = fN;
245
246 if(nN<=0.0){ // Simple case.
247 if(tT==300.) return 495.0; // From Table 5-1 at consentration 1.0E14.
248 m = km1*TMath::Power(tT,keT0) + km0a-km0b;
249 return m;
250 } // if nN<=0.0
251 m = km1*TMath::Power(tT,keT0) - km0b;
252 m /= 1.0 + TMath::Power(tT/kT0,keT1)*TMath::Power(nN/kN0,keN);
253 m += km0a;
254 return m;
255}
256//______________________________________________________________________
257Double_t AliITSSimuParam::DiffusionCoefficientElectron() const {
258 // Computes the Diffusion coefficient for electrons in cm^2/sec. Taken
259 // from SILVACO International ATLAS II, 2D Device Simulation Framework,
260 // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion
261 // coefficient. Note: 1 cm^2/sec = 10 microns^2/nanosec.
262 // Inputs:
263 // none.
264 // Output:
265 // none.
266 // Return:
267 // The Diffusion Coefficient of electrons in Si at a give temprature
268 // and impurity concentration. [cm^2/sec]
269 // const Double_t kb = 1.3806503E-23; // Joules/degree K
270 // const Double_t qe = 1.60217646E-19; // Coulumbs.
271 const Double_t kbqe = 8.617342312E-5; // Volt/degree K
272 Double_t m = MobilityElectronSiEmp();
273 Double_t tT = fT;
274
275 return m*kbqe*tT; // [cm^2/sec]
276}
277//______________________________________________________________________
278Double_t AliITSSimuParam::DiffusionCoefficientHole() const {
279 // Computes the Diffusion coefficient for Holes in cm^2/sec. Taken
280 // from SILVACO International ATLAS II, 2D Device Simulation Framework,
281 // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion
282 // coefficient. Note: 1 cm^2/sec = 10 microns^2/nanosec.
283 // Inputs:
284 // none.
285 // Output:
286 // none.
287 // Return:
288 // The Defusion Coefficient of Hole in Si at a give temprature and
289 // impurity concentration. [cm^2/sec]
290 // and impurity concentration. [cm^2/sec]
291 // const Double_t kb = 1.3806503E-23; // Joules/degree K
292 // const Double_t qe = 1.60217646E-19; // Coulumbs.
293 const Double_t kbqe = 8.617342312E-5; // Volt/degree K
294 Double_t m = MobilityHoleSiEmp();
295 Double_t tT = fT;
296
297 return m*kbqe*tT; // [cm^2/sec]
298}
299//______________________________________________________________________
300Double_t AliITSSimuParam::LorentzAngleHole(Double_t B) const {
301 // Computes the Lorentz angle for electrons in Si
302 // Input: magnetic Field in KGauss
303 // Output: Lorentz angle in radians (positive if Bz is positive)
304 // Main Reference: NIM A 497 (2003) 389–396.
305 // "An algorithm for calculating the Lorentz angle in silicon detectors", V. Bartsch et al.
306 //
307 const Double_t krH=0.70; // Hall scattering factor for Hole
308 const Double_t kT0 = 300.; // reference Temperature (degree K).
309 const Double_t kmulow0 = 470.5; // cm^2/Volt-sec
310 const Double_t keT0 = -2.5; // Power of Temp.
311 const Double_t beta0 = 1.213; // beta coeff. at T0=300K
312 const Double_t keT1 = 0.17; // Power of Temp. for beta
313 const Double_t kvsat0 = 8.37E+06; // saturated velocity at T0=300K (cm/sec)
314 const Double_t keT2 = 0.52; // Power of Temp. for vsat
315 Double_t tT = fT;
316 Double_t eE= 1./fDOverV;
317 Double_t muLow=kmulow0*TMath::Power(tT/kT0,keT0);
318 Double_t beta=beta0*TMath::Power(tT/kT0,keT1);
319 Double_t vsat=kvsat0*TMath::Power(tT/kT0,keT2);
320 Double_t mu=muLow/TMath::Power(1+TMath::Power(muLow*eE/vsat,beta),1/beta);
321 Double_t angle=TMath::ATan(krH*mu*B*1.E-05); // Conversion Factor
322 return angle;
323}
324//______________________________________________________________________
325Double_t AliITSSimuParam::LorentzAngleElectron(Double_t B) const {
326 // Computes the Lorentz angle for electrons in Si
327 // Input: magnetic Field in KGauss
328 // Output: Lorentz angle in radians (positive if Bz is positive)
329 // Main Reference: NIM A 497 (2003) 389–396.
330 // "An algorithm for calculating the Lorentz angle in silicon detectors", V. Bartsch et al.
331 //
332 const Double_t krH=1.15; // Hall scattering factor for Electron
333 const Double_t kT0 = 300.; // reference Temperature (degree K).
334 const Double_t kmulow0 = 1417.0; // cm^2/Volt-sec
335 const Double_t keT0 = -2.2; // Power of Temp.
336 const Double_t beta0 = 1.109; // beta coeff. at T0=300K
337 const Double_t keT1 = 0.66; // Power of Temp. for beta
338 const Double_t kvsat0 = 1.07E+07; // saturated velocity at T0=300K (cm/sec)
339 const Double_t keT2 = 0.87; // Power of Temp. for vsat
340 Double_t tT = fT;
341 Double_t eE= 1./fDOverV;
342 Double_t muLow=kmulow0*TMath::Power(tT/kT0,keT0);
343 Double_t beta=beta0*TMath::Power(tT/kT0,keT1);
344 Double_t vsat=kvsat0*TMath::Power(tT/kT0,keT2);
345 Double_t mu=muLow/TMath::Power(1+TMath::Power(muLow*eE/vsat,beta),1/beta);
346 Double_t angle=TMath::ATan(krH*mu*B*1.E-05);
347 return angle;
348}
349//______________________________________________________________________
350Double_t AliITSSimuParam::SpeedElectron() const {
351 // Computes the average speed for electrons in Si under the low-field
352 // approximation. [cm/sec].
353 // Inputs:
354 // none.
355 // Output:
356 // none.
357 // Return:
358 // The speed the holes are traveling at due to the low field applied.
359 // [cm/sec]
360 Double_t m = MobilityElectronSiEmp();
361
362 return m/fDOverV; // [cm/sec]
363}
364//______________________________________________________________________
365Double_t AliITSSimuParam::SpeedHole() const {
366 // Computes the average speed for Holes in Si under the low-field
367 // approximation.[cm/sec].
368 // Inputs:
369 // none.
370 // Output:
371 // none.
372 // Return:
373 // The speed the holes are traveling at due to the low field applied.
374 // [cm/sec]
375 Double_t m = MobilityHoleSiEmp();
376
377 return m/fDOverV; // [cm/sec]
378}
379//______________________________________________________________________
380Double_t AliITSSimuParam::SigmaDiffusion3D(Double_t l) const {
381 // Returns the Gaussian sigma^2 == <x^2+y^2+z^2> [cm^2] due to the
382 // defusion of electrons or holes through a distance l [cm] caused
383 // by an applied voltage v [volt] through a distance d [cm] in any
384 // material at a temperature T [degree K]. The sigma diffusion when
385 // expressed in terms of the distance over which the diffusion
386 // occures, l=time/speed, is independent of the mobility and therefore
387 // the properties of the material. The charge distributions is given by
388 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 6Dt where D=mkT/e
389 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
390 // charge. and vel=m*v/d. consiquently sigma^2=6kTdl/ev.
391 // Inputs:
392 // Double_t l Distance the charge has to travel.
393 // Output:
394 // none.
395 // Return:
396 // The Sigma due to the diffution of electrons. [cm]
397 const Double_t kcon = 5.17040258E-04; // == 6k/e [J/col or volts]
398
399 return TMath::Sqrt(kcon*fT*fDOverV*l); // [cm]
400}
401//______________________________________________________________________
402Double_t AliITSSimuParam::SigmaDiffusion2D(Double_t l) const {
403 // Returns the Gaussian sigma^2 == <x^2+z^2> [cm^2] due to the defusion
404 // of electrons or holes through a distance l [cm] caused by an applied
405 // voltage v [volt] through a distance d [cm] in any material at a
406 // temperature T [degree K]. The sigma diffusion when expressed in terms
407 // of the distance over which the diffusion occures, l=time/speed, is
408 // independent of the mobility and therefore the properties of the
409 // material. The charge distributions is given by
410 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <x^2+z^2> = 4Dt where D=mkT/e
411 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
412 // charge. and vel=m*v/d. consiquently sigma^2=4kTdl/ev.
413 // Inputs:
414 // Double_t l Distance the charge has to travel.
415 // Output:
416 // none.
417 // Return:
418 // The Sigma due to the diffution of electrons. [cm]
419 const Double_t kcon = 3.446935053E-04; // == 4k/e [J/col or volts]
420
421 return TMath::Sqrt(kcon*fT*fDOverV*l); // [cm]
422}
423//______________________________________________________________________
424Double_t AliITSSimuParam::SigmaDiffusion1D(Double_t l) const {
425 // Returns the Gaussian sigma^2 == <x^2> [cm^2] due to the defusion
426 // of electrons or holes through a distance l [cm] caused by an applied
427 // voltage v [volt] through a distance d [cm] in any material at a
428 // temperature T [degree K]. The sigma diffusion when expressed in terms
429 // of the distance over which the diffusion occures, l=time/speed, is
430 // independent of the mobility and therefore the properties of the
431 // material. The charge distributions is given by
432 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 2Dt where D=mkT/e
433 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
434 // charge. and vel=m*v/d. consiquently sigma^2=2kTdl/ev.
435 // Inputs:
436 // Double_t l Distance the charge has to travel.
437 // Output:
438 // none.
439 // Return:
440 // The Sigma due to the diffution of electrons. [cm]
441 const Double_t kcon = 1.723467527E-04; // == 2k/e [J/col or volts]
442
443 return TMath::Sqrt(kcon*fT*fDOverV*l); // [cm]
444}
445//----------------------------------------------------------------------
446Double_t AliITSSimuParam::DepletedRegionThicknessA(Double_t dopCons,
447 Double_t voltage,
448 Double_t elecCharge,
449 Double_t voltBuiltIn)const{
450 // Computes the thickness of the depleted region in Si due to the
451 // application of an external bias voltage. From the Particle Data
452 // Book, 28.8 Silicon semiconductor detectors equation 28.19 (2004)
453 // Physics Letters B "Review of Particle Physics" Volume 592, Issue 1-4
454 // July 15 2004, ISSN 0370-2693 page 263. First equation.
455 // Inputs:
456 // Double_t dopCons "N" doping concentration
457 // Double_t voltage "V" external bias voltage
458 // Double_t elecCharge "e" electronic charge
459 // Double_t voltBuiltIn=0.5 "V_bi" "built-in" Voltage (~0.5V for
460 // resistivities typically used in detectors)
461 // Output:
462 // none.
463 // Return:
464 // The thickness of the depleted region
465
466 return TMath::Sqrt(2.0*(voltage+voltBuiltIn)/(dopCons*elecCharge));
467}
468//----------------------------------------------------------------------
469Double_t AliITSSimuParam::DepletedRegionThicknessB(Double_t resist,
470 Double_t voltage,
471 Double_t mobility,
472 Double_t voltBuiltIn,
473 Double_t dielConst)const{
474 // Computes the thickness of the depleted region in Si due to the
475 // application of an external bias voltage. From the Particle Data
476 // Book, 28.8 Silicon semiconductor detectors equation 28.19 (2004)
477 // Physics Letters B "Review of Particle Physics" Volume 592, Issue 1-4
478 // July 15 2004, ISSN 0370-2693 page 263. Second Equation.
479 // Inputs:
480 // Double_t resist "rho" resistivity (typically 1-10 kOhm cm)
481 // Double_t voltage "V" external bias voltage
482 // Double_t mobility "mu" charge carrier mobility
483 // (electons 1350, holes 450 cm^2/V/s)
484 // Double_t voltBuiltIn=0.5 "V_bi" "built-in" Voltage (~0.5V for
485 // resistivities typically used in detectors)
486 // Double_t dielConst=1.E-12 "epsilon" dielectric constant = 11.9 *
487 // (permittivity of free space) or ~ 1 pF/cm
488 // Output:
489 // none.
490 // Return:
491 // The thickness of the depleted region
492
493 return TMath::Sqrt(2.8*resist*mobility*dielConst*(voltage+voltBuiltIn));
494}
495//----------------------------------------------------------------------
496Double_t AliITSSimuParam::ReverseBiasCurrent(Double_t temp,
497 Double_t revBiasCurT1,
498 Double_t tempT1,
499 Double_t energy)const{
500 // Computes the temperature dependance of the reverse bias current
501 // of Si detectors. From the Particle Data
502 // Book, 28.8 Silicon semiconductor detectors equation 28.21 (2004)
503 // Physics Letters B "Review of Particle Physics" Volume 592, Issue 1-4
504 // July 15 2004, ISSN 0370-2693 page 263.
505 // Inputs:
506 // Double_t temp The temperature at which the current is wanted
507 // Double_t revBiasCurT1 The reference bias current at temp T1
508 // Double_t tempT1 The temperature correstponding to revBiasCurT1
509 // Double_t energy=1.2 Some energy [eV]
510 // Output:
511 // none.
512 // Return:
513 // The reverse bias current at the tempeature temp.
514 const Double_t kBoltz = 8.617343E-5; //[eV/K]
515
516 return revBiasCurT1*(temp*temp/(tempT1*tempT1))*
517 TMath::Exp(-0.5*energy*(tempT1-temp)/(kBoltz*tempT1*temp));
518}
519//______________________________________________________________________
520 void AliITSSimuParam::SPDThresholds(const Int_t mod, Double_t& thresh, Double_t& sigma) const {
521 if(mod<0 || mod>239) {
522 thresh=0;
523 sigma=0;
524 return;
525 }
526 thresh=fSPDThresh[mod];
527 sigma=fSPDSigma[mod];
528 return;
529}
530//_______________________________________________________________________
531 void AliITSSimuParam::SPDNoise(const Int_t mod,Double_t &noise, Double_t &baseline) const {
532 if(mod<0 || mod>239) {
533 noise=0;
534 baseline=0;
535 return;
536 }
537 noise=fSPDNoise[mod];
538 baseline=fSPDBaseline[mod];
539 return;
540}
541