923fd218e28f128f6e28f519099df47b7cb9b4ec
[u/mrichter/AliRoot.git] / ITS / AliITSresponse.cxx
1 ////////////////////////////////////////////////
2 //  Response class for set:ITS                //
3 ////////////////////////////////////////////////
4
5 #include <TMath.h>
6 #include <TF1.h>
7 #include <TString.h>
8 #include "AliITSresponse.h"
9
10 ClassImp(AliITSresponse)
11
12 //______________________________________________________________________
13 AliITSresponse::AliITSresponse(){
14     // Default Constructor
15
16     fdv = 0.000375;  // 300 microns and 80 volts.
17     fN  = 0.0;
18     fT  = 300.0;
19 }
20 //______________________________________________________________________
21 AliITSresponse::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 //______________________________________________________________________
29 Double_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 //______________________________________________________________________
62 Double_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 //______________________________________________________________________
96 Double_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 //______________________________________________________________________
117 Double_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 //______________________________________________________________________
139 Double_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 //______________________________________________________________________
154 Double_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 //______________________________________________________________________
169 Double_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 //______________________________________________________________________
191 Double_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 //______________________________________________________________________
213 Double_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 }