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