]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSresponse.cxx
Static data member fgTop replaced with the static function GetTop();
[u/mrichter/AliRoot.git] / ITS / AliITSresponse.cxx
CommitLineData
ac8cbb66 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
16/* $Id$ */
17
703a4e51 18//////////////////////////////////////////////////////
19// Response class for set:ITS //
20// Specific subdetector implementation is done in //
21// AliITSresponseSPD //
22// AliITSresponseSDD //
23// AliITSresponseSSD //
24//////////////////////////////////////////////////////
ac8cbb66 25#include <Riostream.h>
4efc56c1 26#include <TMath.h>
e8189707 27#include "AliITSresponse.h"
28
29ClassImp(AliITSresponse)
4efc56c1 30
31//______________________________________________________________________
32AliITSresponse::AliITSresponse(){
33 // Default Constructor
34
35 fdv = 0.000375; // 300 microns and 80 volts.
36 fN = 0.0;
37 fT = 300.0;
ac8cbb66 38 SetGeVToCharge();
703a4e51 39 SetFilenames();
4efc56c1 40}
41//______________________________________________________________________
42AliITSresponse::AliITSresponse(Double_t thickness){
43 // Default Constructor
44
45 fdv = thickness/80.0; // 80 volts.
46 fN = 0.0;
47 fT = 300.0;
ac8cbb66 48 SetGeVToCharge();
703a4e51 49 SetFilenames();
4efc56c1 50}
51//______________________________________________________________________
ac8cbb66 52Double_t AliITSresponse::MobilityElectronSiEmp() const {
4efc56c1 53 // Computes the electron mobility in cm^2/volt-sec. Taken from SILVACO
54 // International ATLAS II, 2D Device Simulation Framework, User Manual
55 // Chapter 5 Equation 5-6. An empirical function for low-field mobiliity
56 // in silicon at different tempeatures.
57 // Inputs:
58 // none.
59 // Output:
60 // none.
61 // Return:
62 // The Mobility of electrons in Si at a give temprature and impurity
63 // concentration. [cm^2/Volt-sec]
703a4e51 64 const Double_t km0 = 55.24; // cm^2/Volt-sec
65 const Double_t km1 = 7.12E+08; // cm^2 (degree K)^2.3 / Volt-sec
66 const Double_t kN0 = 1.072E17; // #/cm^3
67 const Double_t kT0 = 300.; // degree K.
68 const Double_t keT0 = -2.3; // Power of Temp.
69 const Double_t keT1 = -3.8; // Power of Temp.
70 const Double_t keN = 0.73; // Power of Dopent Consentrations
4efc56c1 71 Double_t m;
703a4e51 72 Double_t tT = fT,nN = fN;
4efc56c1 73
703a4e51 74 if(nN<=0.0){ // Simple case.
75 if(tT==300.) return 1350.0; // From Table 5-1 at consentration 1.0E14.
76 m = km1*TMath::Power(tT,keT0);
4efc56c1 77 return m;
703a4e51 78 } // if nN<=0.0
79 m = km1*TMath::Power(tT,keT0) - km0;
80 m /= 1.0 + TMath::Power(tT/kT0,keT1)*TMath::Power(nN/kN0,keN);
81 m += km0;
4efc56c1 82 return m;
83}
84//______________________________________________________________________
ac8cbb66 85Double_t AliITSresponse::MobilityHoleSiEmp() const {
4efc56c1 86 // Computes the Hole mobility in cm^2/volt-sec. Taken from SILVACO
87 // International ATLAS II, 2D Device Simulation Framework, User Manual
88 // Chapter 5 Equation 5-7 An empirical function for low-field mobiliity
89 // in silicon at different tempeatures.
90 // Inputs:
91 // none.
92 // Output:
93 // none.
94 // Return:
95 // The Mobility of Hole in Si at a give temprature and impurity
96 // concentration. [cm^2/Volt-sec]
703a4e51 97 const Double_t km0a = 49.74; // cm^2/Volt-sec
98 const Double_t km0b = 49.70; // cm^2/Volt-sec
99 const Double_t km1 = 1.35E+08; // cm^2 (degree K)^2.3 / Volt-sec
100 const Double_t kN0 = 1.606E17; // #/cm^3
101 const Double_t kT0 = 300.; // degree K.
102 const Double_t keT0 = -2.2; // Power of Temp.
103 const Double_t keT1 = -3.7; // Power of Temp.
104 const Double_t keN = 0.70; // Power of Dopent Consentrations
4efc56c1 105 Double_t m;
703a4e51 106 Double_t tT = fT,nN = fN;
4efc56c1 107
703a4e51 108 if(nN<=0.0){ // Simple case.
109 if(tT==300.) return 495.0; // From Table 5-1 at consentration 1.0E14.
110 m = km1*TMath::Power(tT,keT0) + km0a-km0b;
4efc56c1 111 return m;
703a4e51 112 } // if nN<=0.0
113 m = km1*TMath::Power(tT,keT0) - km0b;
114 m /= 1.0 + TMath::Power(tT/kT0,keT1)*TMath::Power(nN/kN0,keN);
115 m += km0a;
4efc56c1 116 return m;
117}
118//______________________________________________________________________
ac8cbb66 119Double_t AliITSresponse::DiffusionCoefficientElectron() const {
4efc56c1 120 // Computes the Diffusion coefficient for electrons in cm^2/sec. Taken
121 // from SILVACO International ATLAS II, 2D Device Simulation Framework,
122 // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion
123 // coefficient. Note: 1 cm^2/sec = 10 microns^2/nanosec.
124 // Inputs:
125 // none.
126 // Output:
127 // none.
128 // Return:
129 // The Diffusion Coefficient of electrons in Si at a give temprature
130 // and impurity concentration. [cm^2/sec]
131 // const Double_t kb = 1.3806503E-23; // Joules/degree K
132 // const Double_t qe = 1.60217646E-19; // Coulumbs.
133 const Double_t kbqe = 8.617342312E-5; // Volt/degree K
134 Double_t m = MobilityElectronSiEmp();
703a4e51 135 Double_t tT = fT;
4efc56c1 136
703a4e51 137 return m*kbqe*tT; // [cm^2/sec]
4efc56c1 138}
139//______________________________________________________________________
ac8cbb66 140Double_t AliITSresponse::DiffusionCoefficientHole() const {
4efc56c1 141 // Computes the Diffusion coefficient for Holes in cm^2/sec. Taken
142 // from SILVACO International ATLAS II, 2D Device Simulation Framework,
143 // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion
144 // coefficient. Note: 1 cm^2/sec = 10 microns^2/nanosec.
145 // Inputs:
146 // none.
147 // Output:
148 // none.
149 // Return:
150 // The Defusion Coefficient of Hole in Si at a give temprature and
151 // impurity concentration. [cm^2/sec]
152 // and impurity concentration. [cm^2/sec]
153 // const Double_t kb = 1.3806503E-23; // Joules/degree K
154 // const Double_t qe = 1.60217646E-19; // Coulumbs.
155 const Double_t kbqe = 8.617342312E-5; // Volt/degree K
156 Double_t m = MobilityHoleSiEmp();
703a4e51 157 Double_t tT = fT;
4efc56c1 158
703a4e51 159 return m*kbqe*tT; // [cm^2/sec]
4efc56c1 160}
161//______________________________________________________________________
ac8cbb66 162Double_t AliITSresponse::SpeedElectron() const {
4efc56c1 163 // Computes the average speed for electrons in Si under the low-field
164 // approximation. [cm/sec].
165 // Inputs:
166 // none.
167 // Output:
168 // none.
169 // Return:
170 // The speed the holes are traveling at due to the low field applied.
171 // [cm/sec]
172 Double_t m = MobilityElectronSiEmp();
173
174 return m/fdv; // [cm/sec]
175}
176//______________________________________________________________________
ac8cbb66 177Double_t AliITSresponse::SpeedHole() const {
4efc56c1 178 // Computes the average speed for Holes in Si under the low-field
179 // approximation.[cm/sec].
180 // Inputs:
181 // none.
182 // Output:
183 // none.
184 // Return:
185 // The speed the holes are traveling at due to the low field applied.
186 // [cm/sec]
187 Double_t m = MobilityHoleSiEmp();
188
189 return m/fdv; // [cm/sec]
190}
191//______________________________________________________________________
ac8cbb66 192Double_t AliITSresponse::SigmaDiffusion3D(Double_t l) const {
193 // Returns the Gaussian sigma^2 == <x^2+y^2+z^2> [cm^2] due to the
194 // defusion of electrons or holes through a distance l [cm] caused
195 // by an applied voltage v [volt] through a distance d [cm] in any
196 // material at a temperature T [degree K]. The sigma diffusion when
197 // expressed in terms of the distance over which the diffusion
198 // occures, l=time/speed, is independent of the mobility and therefore
199 // the properties of the material. The charge distributions is given by
4efc56c1 200 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 6Dt where D=mkT/e
201 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
202 // charge. and vel=m*v/d. consiquently sigma^2=6kTdl/ev.
203 // Inputs:
204 // Double_t l Distance the charge has to travel.
205 // Output:
206 // none.
207 // Return:
208 // The Sigma due to the diffution of electrons. [cm]
703a4e51 209 const Double_t kcon = 5.17040258E-04; // == 6k/e [J/col or volts]
4efc56c1 210
703a4e51 211 return TMath::Sqrt(kcon*fT*fdv*l); // [cm]
4efc56c1 212}
213//______________________________________________________________________
ac8cbb66 214Double_t AliITSresponse::SigmaDiffusion2D(Double_t l) const {
4efc56c1 215 // Returns the Gaussian sigma^2 == <x^2+z^2> [cm^2] due to the defusion
216 // of electrons or holes through a distance l [cm] caused by an applied
217 // voltage v [volt] through a distance d [cm] in any material at a
218 // temperature T [degree K]. The sigma diffusion when expressed in terms
219 // of the distance over which the diffusion occures, l=time/speed, is
220 // independent of the mobility and therefore the properties of the
221 // material. The charge distributions is given by
222 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <x^2+z^2> = 4Dt where D=mkT/e
223 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
224 // charge. and vel=m*v/d. consiquently sigma^2=4kTdl/ev.
225 // Inputs:
226 // Double_t l Distance the charge has to travel.
227 // Output:
228 // none.
229 // Return:
230 // The Sigma due to the diffution of electrons. [cm]
703a4e51 231 const Double_t kcon = 3.446935053E-04; // == 4k/e [J/col or volts]
4efc56c1 232
703a4e51 233 return TMath::Sqrt(kcon*fT*fdv*l); // [cm]
4efc56c1 234}
235//______________________________________________________________________
ac8cbb66 236Double_t AliITSresponse::SigmaDiffusion1D(Double_t l) const {
4efc56c1 237 // Returns the Gaussian sigma^2 == <x^2> [cm^2] due to the defusion
238 // of electrons or holes through a distance l [cm] caused by an applied
239 // voltage v [volt] through a distance d [cm] in any material at a
240 // temperature T [degree K]. The sigma diffusion when expressed in terms
241 // of the distance over which the diffusion occures, l=time/speed, is
242 // independent of the mobility and therefore the properties of the
243 // material. The charge distributions is given by
244 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 2Dt where D=mkT/e
245 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
246 // charge. and vel=m*v/d. consiquently sigma^2=2kTdl/ev.
247 // Inputs:
248 // Double_t l Distance the charge has to travel.
249 // Output:
250 // none.
251 // Return:
252 // The Sigma due to the diffution of electrons. [cm]
703a4e51 253 const Double_t kcon = 1.723467527E-04; // == 2k/e [J/col or volts]
4efc56c1 254
703a4e51 255 return TMath::Sqrt(kcon*fT*fdv*l); // [cm]
4efc56c1 256}
ac8cbb66 257//----------------------------------------------------------------------
0c6e0556 258Double_t AliITSresponse::DepletedRegionThicknessA(Double_t dopCons,
259 Double_t voltage,
260 Double_t elecCharge,
261 Double_t voltBuiltIn)const{
262 // Computes the thickness of the depleted region in Si due to the
263 // application of an external bias voltage. From the Particle Data
264 // Book, 28.8 Silicon semiconductor detectors equation 28.19 (2004)
265 // Physics Letters B "Review of Particle Physics" Volume 592, Issue 1-4
266 // July 15 2004, ISSN 0370-2693 page 263. First equation.
267 // Inputs:
268 // Double_t dopCons "N" doping concentration
269 // Double_t voltage "V" external bias voltage
270 // Double_t elecCharge "e" electronic charge
271 // Double_t voltBuiltIn=0.5 "V_bi" "built-in" Voltage (~0.5V for
272 // resistivities typically used in detectors)
273 // Output:
274 // none.
275 // Return:
276 // The thickness of the depleted region
277
278 return TMath::Sqrt(2.0*(voltage+voltBuiltIn)/(dopCons*elecCharge));
279}
280//----------------------------------------------------------------------
281Double_t AliITSresponse::DepletedRegionThicknessB(Double_t resist,
282 Double_t voltage,
283 Double_t mobility,
284 Double_t voltBuiltIn,
285 Double_t dielConst)const{
286 // Computes the thickness of the depleted region in Si due to the
287 // application of an external bias voltage. From the Particle Data
288 // Book, 28.8 Silicon semiconductor detectors equation 28.19 (2004)
289 // Physics Letters B "Review of Particle Physics" Volume 592, Issue 1-4
290 // July 15 2004, ISSN 0370-2693 page 263. Second Equation.
291 // Inputs:
292 // Double_t resist "rho" resistivity (typically 1-10 kOhm cm)
293 // Double_t voltage "V" external bias voltage
294 // Double_t mobility "mu" charge carrier mobility
295 // (electons 1350, holes 450 cm^2/V/s)
296 // Double_t voltBuiltIn=0.5 "V_bi" "built-in" Voltage (~0.5V for
297 // resistivities typically used in detectors)
298 // Double_t dielConst=1.E-12 "epsilon" dielectric constant = 11.9 *
299 // (permittivity of free space) or ~ 1 pF/cm
300 // Output:
301 // none.
302 // Return:
303 // The thickness of the depleted region
304
df3450aa 305 return TMath::Sqrt(2.8*resist*mobility*dielConst*(voltage+voltBuiltIn));
0c6e0556 306}
307//----------------------------------------------------------------------
308Double_t AliITSresponse::ReverseBiasCurrent(Double_t temp,
309 Double_t revBiasCurT1,
310 Double_t tempT1,
311 Double_t energy)const{
312 // Computes the temperature dependance of the reverse bias current
313 // of Si detectors. From the Particle Data
314 // Book, 28.8 Silicon semiconductor detectors equation 28.21 (2004)
315 // Physics Letters B "Review of Particle Physics" Volume 592, Issue 1-4
316 // July 15 2004, ISSN 0370-2693 page 263.
317 // Inputs:
318 // Double_t temp The temperature at which the current is wanted
319 // Double_t revBiasCurT1 The reference bias current at temp T1
320 // Double_t tempT1 The temperature correstponding to revBiasCurT1
321 // Double_t energy=1.2 Some energy [eV]
322 // Output:
323 // none.
324 // Return:
325 // The reverse bias current at the tempeature temp.
df3450aa 326 const Double_t kBoltz = 8.617343E-5; //[eV/K]
0c6e0556 327
328 return revBiasCurT1*(temp*temp/(tempT1*tempT1))*
329 TMath::Exp(-0.5*energy*(tempT1-temp)/(kBoltz*tempT1*temp));
330}
331//----------------------------------------------------------------------
703a4e51 332void AliITSresponse::Print(ostream *os) const {
ac8cbb66 333 // Standard output format for this class.
334 // Inputs:
ac8cbb66 335 *os << fdv << " " << fN << " " << fT << " ";
703a4e51 336 *os << fGeVcharge;
337 // printf("%-10.6e %-10.6e %-10.6e %-10.6e \n",fdv,fN,fT,fGeVcharge);
ac8cbb66 338 return;
339}
340//----------------------------------------------------------------------
703a4e51 341void AliITSresponse::Read(istream *is) {
ac8cbb66 342 // Standard input format for this class.
343 // Inputs:
703a4e51 344 // ostream *is Pointer to the output stream
ac8cbb66 345 // Outputs:
346 // none:
347 // Return:
348 // none.
349
350 *is >> fdv >> fN >> fT >> fGeVcharge;
351 return;
352}
353//----------------------------------------------------------------------
703a4e51 354
ac8cbb66 355ostream &operator<<(ostream &os,AliITSresponse &p){
356 // Standard output streaming function.
357 // Inputs:
358 // ostream *os Pointer to the output stream
359 // Outputs:
360 // none:
361 // Return:
362 // none.
363
364 p.Print(&os);
365 return os;
366}
703a4e51 367
ac8cbb66 368//----------------------------------------------------------------------
369istream &operator>>(istream &is,AliITSresponse &r){
370 // Standard input streaming function.
371 // Inputs:
372 // ostream *os Pointer to the output stream
373 // Outputs:
374 // none:
375 // Return:
376 // none.
377
378 r.Read(&is);
379 return is;
380}
381//----------------------------------------------------------------------