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