]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSresponse.cxx
Geometry bug fixes and the like. Work still progressing.
[u/mrichter/AliRoot.git] / ITS / AliITSresponse.cxx
CommitLineData
e8189707 1////////////////////////////////////////////////
2// Response class for set:ITS //
3////////////////////////////////////////////////
4
4efc56c1 5#include <TMath.h>
1ca7869b 6#include <TF1.h>
7#include <TString.h>
e8189707 8#include "AliITSresponse.h"
9
10ClassImp(AliITSresponse)
4efc56c1 11
12//______________________________________________________________________
13AliITSresponse::AliITSresponse(){
14 // Default Constructor
15
16 fdv = 0.000375; // 300 microns and 80 volts.
17 fN = 0.0;
18 fT = 300.0;
19}
20//______________________________________________________________________
21AliITSresponse::AliITSresponse(Double_t thickness){
22 // Default Constructor
23
24 fdv = thickness/80.0; // 80 volts.
25 fN = 0.0;
26 fT = 300.0;
27}
28//______________________________________________________________________
29Double_t AliITSresponse::MobilityElectronSiEmp(){
30 // Computes the electron mobility in cm^2/volt-sec. Taken from SILVACO
31 // International ATLAS II, 2D Device Simulation Framework, User Manual
32 // Chapter 5 Equation 5-6. An empirical function for low-field mobiliity
33 // in silicon at different tempeatures.
34 // Inputs:
35 // none.
36 // Output:
37 // none.
38 // Return:
39 // The Mobility of electrons in Si at a give temprature and impurity
40 // concentration. [cm^2/Volt-sec]
41 const Double_t m0 = 55.24; // cm^2/Volt-sec
42 const Double_t m1 = 7.12E+08; // cm^2 (degree K)^2.3 / Volt-sec
43 const Double_t N0 = 1.072E17; // #/cm^3
44 const Double_t T0 = 300.; // degree K.
45 const Double_t eT0 = -2.3; // Power of Temp.
46 const Double_t eT1 = -3.8; // Power of Temp.
47 const Double_t eN = 0.73; // Power of Dopent Consentrations
48 Double_t m;
49 Double_t T = fT,N = fN;
50
51 if(N<=0.0){ // Simple case.
52 if(T==300.) return 1350.0; // From Table 5-1 at consentration 1.0E14.
53 m = m1*TMath::Power(T,eT0);
54 return m;
55 } // if N<=0.0
56 m = m1*TMath::Power(T,eT0) - m0;
57 m /= 1.0 + TMath::Power(T/T0,eT1)*TMath::Power(N/N0,eN);
58 m += m0;
59 return m;
60}
61//______________________________________________________________________
62Double_t AliITSresponse::MobilityHoleSiEmp(){
63 // Computes the Hole mobility in cm^2/volt-sec. Taken from SILVACO
64 // International ATLAS II, 2D Device Simulation Framework, User Manual
65 // Chapter 5 Equation 5-7 An empirical function for low-field mobiliity
66 // in silicon at different tempeatures.
67 // Inputs:
68 // none.
69 // Output:
70 // none.
71 // Return:
72 // The Mobility of Hole in Si at a give temprature and impurity
73 // concentration. [cm^2/Volt-sec]
74 const Double_t m0a = 49.74; // cm^2/Volt-sec
75 const Double_t m0b = 49.70; // cm^2/Volt-sec
76 const Double_t m1 = 1.35E+08; // cm^2 (degree K)^2.3 / Volt-sec
77 const Double_t N0 = 1.606E17; // #/cm^3
78 const Double_t T0 = 300.; // degree K.
79 const Double_t eT0 = -2.2; // Power of Temp.
80 const Double_t eT1 = -3.7; // Power of Temp.
81 const Double_t eN = 0.70; // Power of Dopent Consentrations
82 Double_t m;
83 Double_t T = fT,N = fN;
84
85 if(N<=0.0){ // Simple case.
86 if(T==300.) return 495.0; // From Table 5-1 at consentration 1.0E14.
87 m = m1*TMath::Power(T,eT0) + m0a-m0b;
88 return m;
89 } // if N<=0.0
90 m = m1*TMath::Power(T,eT0) - m0b;
91 m /= 1.0 + TMath::Power(T/T0,eT1)*TMath::Power(N/N0,eN);
92 m += m0a;
93 return m;
94}
95//______________________________________________________________________
96Double_t AliITSresponse::DiffusionCoefficientElectron(){
97 // Computes the Diffusion coefficient for electrons in cm^2/sec. Taken
98 // from SILVACO International ATLAS II, 2D Device Simulation Framework,
99 // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion
100 // coefficient. Note: 1 cm^2/sec = 10 microns^2/nanosec.
101 // Inputs:
102 // none.
103 // Output:
104 // none.
105 // Return:
106 // The Diffusion Coefficient of electrons in Si at a give temprature
107 // and impurity concentration. [cm^2/sec]
108 // const Double_t kb = 1.3806503E-23; // Joules/degree K
109 // const Double_t qe = 1.60217646E-19; // Coulumbs.
110 const Double_t kbqe = 8.617342312E-5; // Volt/degree K
111 Double_t m = MobilityElectronSiEmp();
112 Double_t T = fT;
113
114 return m*kbqe*T; // [cm^2/sec]
115}
116//______________________________________________________________________
117Double_t AliITSresponse::DiffusionCoefficientHole(){
118 // Computes the Diffusion coefficient for Holes in cm^2/sec. Taken
119 // from SILVACO International ATLAS II, 2D Device Simulation Framework,
120 // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion
121 // coefficient. Note: 1 cm^2/sec = 10 microns^2/nanosec.
122 // Inputs:
123 // none.
124 // Output:
125 // none.
126 // Return:
127 // The Defusion Coefficient of Hole in Si at a give temprature and
128 // impurity concentration. [cm^2/sec]
129 // and impurity concentration. [cm^2/sec]
130 // const Double_t kb = 1.3806503E-23; // Joules/degree K
131 // const Double_t qe = 1.60217646E-19; // Coulumbs.
132 const Double_t kbqe = 8.617342312E-5; // Volt/degree K
133 Double_t m = MobilityHoleSiEmp();
134 Double_t T = fT;
135
136 return m*kbqe*T; // [cm^2/sec]
137}
138//______________________________________________________________________
139Double_t AliITSresponse::SpeedElectron(){
140 // Computes the average speed for electrons in Si under the low-field
141 // approximation. [cm/sec].
142 // Inputs:
143 // none.
144 // Output:
145 // none.
146 // Return:
147 // The speed the holes are traveling at due to the low field applied.
148 // [cm/sec]
149 Double_t m = MobilityElectronSiEmp();
150
151 return m/fdv; // [cm/sec]
152}
153//______________________________________________________________________
154Double_t AliITSresponse::SpeedHole(){
155 // Computes the average speed for Holes in Si under the low-field
156 // approximation.[cm/sec].
157 // Inputs:
158 // none.
159 // Output:
160 // none.
161 // Return:
162 // The speed the holes are traveling at due to the low field applied.
163 // [cm/sec]
164 Double_t m = MobilityHoleSiEmp();
165
166 return m/fdv; // [cm/sec]
167}
168//______________________________________________________________________
169Double_t AliITSresponse::SigmaDiffusion3D(Double_t l){
170 // Returns the Gaussian sigma^2 == <x^2+y^2+z^2> [cm^2] due to the defusion
171 // of electrons or holes through a distance l [cm] caused by an applied
172 // voltage v [volt] through a distance d [cm] in any material at a
173 // temperature T [degree K]. The sigma diffusion when expressed in terms
174 // of the distance over which the diffusion occures, l=time/speed, is
175 // independent of the mobility and therefore the properties of the
176 // material. The charge distributions is given by
177 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 6Dt where D=mkT/e
178 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
179 // charge. and vel=m*v/d. consiquently sigma^2=6kTdl/ev.
180 // Inputs:
181 // Double_t l Distance the charge has to travel.
182 // Output:
183 // none.
184 // Return:
185 // The Sigma due to the diffution of electrons. [cm]
186 const Double_t con = 5.17040258E-04; // == 6k/e [J/col or volts]
187
188 return TMath::Sqrt(con*fT*fdv*l); // [cm]
189}
190//______________________________________________________________________
191Double_t AliITSresponse::SigmaDiffusion2D(Double_t l){
192 // Returns the Gaussian sigma^2 == <x^2+z^2> [cm^2] due to the defusion
193 // of electrons or holes through a distance l [cm] caused by an applied
194 // voltage v [volt] through a distance d [cm] in any material at a
195 // temperature T [degree K]. The sigma diffusion when expressed in terms
196 // of the distance over which the diffusion occures, l=time/speed, is
197 // independent of the mobility and therefore the properties of the
198 // material. The charge distributions is given by
199 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <x^2+z^2> = 4Dt where D=mkT/e
200 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
201 // charge. and vel=m*v/d. consiquently sigma^2=4kTdl/ev.
202 // Inputs:
203 // Double_t l Distance the charge has to travel.
204 // Output:
205 // none.
206 // Return:
207 // The Sigma due to the diffution of electrons. [cm]
208 const Double_t con = 3.446935053E-04; // == 4k/e [J/col or volts]
209
210 return TMath::Sqrt(con*fT*fdv*l); // [cm]
211}
212//______________________________________________________________________
213Double_t AliITSresponse::SigmaDiffusion1D(Double_t l){
214 // Returns the Gaussian sigma^2 == <x^2> [cm^2] due to the defusion
215 // of electrons or holes through a distance l [cm] caused by an applied
216 // voltage v [volt] through a distance d [cm] in any material at a
217 // temperature T [degree K]. The sigma diffusion when expressed in terms
218 // of the distance over which the diffusion occures, l=time/speed, is
219 // independent of the mobility and therefore the properties of the
220 // material. The charge distributions is given by
221 // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 2Dt where D=mkT/e
222 // (m==mobility, k==Boltzman's constant, T==temparature, e==electric
223 // charge. and vel=m*v/d. consiquently sigma^2=2kTdl/ev.
224 // Inputs:
225 // Double_t l Distance the charge has to travel.
226 // Output:
227 // none.
228 // Return:
229 // The Sigma due to the diffution of electrons. [cm]
230 const Double_t con = 1.723467527E-04; // == 2k/e [J/col or volts]
231
232 return TMath::Sqrt(con*fT*fdv*l); // [cm]
233}