CbmRoot
CbmStsParSensorCond.cxx
Go to the documentation of this file.
1 
5 #include "CbmStsParSensorCond.h"
6 
7 #include <cmath> // for pow
8 
9 #include <iostream> // for operator<<, basic_ostream, stringstream
10 #include <sstream> // for stringstream
11 #include <string> // for char_traits
12 
13 using std::string;
14 using std::stringstream;
15 
17 
18  // ----- Default constructor -------------------------------------------
20 // -------------------------------------------------------------------------
21 
22 
23 // ----- Standard constructor ------------------------------------------
25  Double_t vBias,
26  Double_t temperature,
27  Double_t cCoupling,
28  Double_t cInterstrip)
29  : fVfd(vFd)
30  , fVbias(vBias)
31  , fTemperature(temperature)
32  , fCcoupling(cCoupling)
33  , fCinterstrip(cInterstrip) {
34  Init();
35 }
36 // -------------------------------------------------------------------------
37 
38 
39 // ----- Copy constructor ----------------------------------------------
41  : fVfd(other.fVfd)
42  , fVbias(other.fVbias)
43  , fTemperature(other.fTemperature)
44  , fCcoupling(other.fCcoupling)
45  , fCinterstrip(other.fCinterstrip) {
46  Init();
47 }
48 // -------------------------------------------------------------------------
49 
50 
51 // ----- Destructor ----------------------------------------------------
53 // -------------------------------------------------------------------------
54 
55 
56 // ----- Calculate Hall mobility parameters -----------------------------
58 
59  // Cross-talk coefficient
60  fCrossTalkCoeff = 0.;
61  if (fCinterstrip + fCcoupling != 0.)
63 
64  // These are the parameters needed for the calculation of the Hall
65  // mobility, i.e. the mobility of charge carriers in the silicon
66  // in the presence of a magnetic field. They depend on the temperature.
67  // Values and formulae are taken from
68  // V. Bartsch et al., Nucl. Instrum. Methods A 497 (2003) 389
69 
70  assert(fTemperature > 0.);
71 
72  // --- Electrons
73  fMuLowE = 1417. * pow(fTemperature / 300., -2.2); // cm^2 / (V s)
74  fBetaE = 1.109 * pow(fTemperature / 300., 0.66);
75  fVsatE = 1.07e7 * pow(fTemperature / 300., 0.87); // cm / s
76  fRhallE = 1.15;
77 
78  // --- Holes
79  fMuLowH = 470.5 * pow(fTemperature / 300., -2.5); // cm^2 / (V s)
80  fBetaH = 1.213 * pow(fTemperature / 300., 0.17);
81  fVsatH = 0.837e7 * pow(fTemperature / 300., 0.52); // cm / s
82  fRhallH = 0.7;
83 
84  fIsInit = kTRUE;
85 }
86 // -------------------------------------------------------------------------
87 
88 
89 // ----- Hall mobility -------------------------------------------------
90 Double_t CbmStsParSensorCond::GetHallMobility(Double_t eField,
91  Int_t chargeType) const {
92 
93  assert(fIsInit);
94  assert(chargeType == 0 || chargeType == 1);
95 
96  Double_t muLow = 0.; // mobility at low electric field
97  Double_t beta = 0.; // exponent
98  Double_t vSat = 0.; // saturation velocity
99  Double_t rHall = 0.; // Hall scattering factor
100 
101  if (chargeType == 0) { // electrons
102  muLow = fMuLowE;
103  beta = fBetaE;
104  vSat = fVsatE;
105  rHall = fRhallE;
106  } //? electron
107  else { // holes
108  muLow = fMuLowH;
109  beta = fBetaH;
110  vSat = fVsatH;
111  rHall = fRhallH;
112  } //? holes
113 
114  Double_t factor = pow(muLow * eField / vSat, beta);
115  Double_t muHall = rHall * muLow / pow(1 + factor, 1. / beta);
116  return muHall;
117 }
118 // -------------------------------------------------------------------------
119 
120 
121 // ----- Copy assignment operator --------------------------------------
124  fVfd = other.fVfd;
125  fTemperature = other.fTemperature;
126  fCcoupling = other.fCcoupling;
127  fCinterstrip = other.fCinterstrip;
128  Init();
129  return *this;
130 }
131 // -------------------------------------------------------------------------
132 
133 
134 // ----- Set condition parameters --------------------------------------
136  Double_t vBias,
137  Double_t temperature,
138  Double_t cCoupling,
139  Double_t cInterstrip) {
140  fVfd = vFd;
141  fVbias = vBias;
142  fTemperature = temperature;
143  fCcoupling = cCoupling;
144  fCinterstrip = cInterstrip;
145  Init();
146 }
147 // -------------------------------------------------------------------------
148 
149 
150 // ----- String output -------------------------------------------------
152  stringstream ss;
153  if (fIsInit) {
154  ss << "VFD " << fVfd << " V | V(bias) " << fVbias << " V | T "
155  << fTemperature << " K | C(coupl.) " << fCcoupling << " pF | C(int.) "
156  << fCinterstrip << " pF | cross-talk coeff. " << fCrossTalkCoeff;
157  } else {
158  ss << "VFD " << fVfd << " V | V(bias) " << fVbias << " V | T "
159  << fTemperature << " K | C(coupl.) " << fCcoupling << " pF | C(int.) "
160  << fCinterstrip << " pF | not initialised!";
161  }
162  return ss.str();
163 }
164 // -------------------------------------------------------------------------
CbmStsParSensorCond::fCcoupling
Double_t fCcoupling
Coupling capacitance [pF].
Definition: CbmStsParSensorCond.h:150
CbmStsParSensorCond::fBetaE
Double_t fBetaE
Definition: CbmStsParSensorCond.h:156
CbmStsParSensorCond::GetHallMobility
Double_t GetHallMobility(Double_t eField, Int_t chargeType) const
Hall mobility.
Definition: CbmStsParSensorCond.cxx:90
CbmStsParSensorCond::SetParams
void SetParams(Double_t vFd, Double_t vBias, Double_t temperature, Double_t cCoupling, Double_t cInterstrip)
Set the condition parameters.
Definition: CbmStsParSensorCond.cxx:135
CbmStsParSensorCond::fCrossTalkCoeff
Double_t fCrossTalkCoeff
Definition: CbmStsParSensorCond.h:154
CbmStsParSensorCond::fVsatE
Double_t fVsatE
Definition: CbmStsParSensorCond.h:157
CbmStsParSensorCond
Parameters for operating conditions of a STS sensor.
Definition: CbmStsParSensorCond.h:28
CbmStsParSensorCond::fMuLowE
Double_t fMuLowE
Cross-talk coefficient.
Definition: CbmStsParSensorCond.h:155
CbmStsParSensorCond::fBetaH
Double_t fBetaH
Definition: CbmStsParSensorCond.h:160
CbmStsParSensorCond::fTemperature
Double_t fTemperature
Temperature [K].
Definition: CbmStsParSensorCond.h:149
CbmStsParSensorCond::CbmStsParSensorCond
CbmStsParSensorCond()
Default constructor.
CbmStsParSensorCond.h
CbmStsParSensorCond::fVfd
Double_t fVfd
Full depletion voltage [V].
Definition: CbmStsParSensorCond.h:147
ClassImp
ClassImp(CbmStsParSensorCond) CbmStsParSensorCond
Definition: CbmStsParSensorCond.cxx:16
CbmStsParSensorCond::fCinterstrip
Double_t fCinterstrip
Inter-strip capacitance [pF].
Definition: CbmStsParSensorCond.h:151
CbmStsParSensorCond::fVbias
Double_t fVbias
Bias voltage [V].
Definition: CbmStsParSensorCond.h:148
CbmStsParSensorCond::ToString
std::string ToString() const
String output.
Definition: CbmStsParSensorCond.cxx:151
CbmStsParSensorCond::~CbmStsParSensorCond
~CbmStsParSensorCond()
Destructor.
Definition: CbmStsParSensorCond.cxx:52
CbmStsParSensorCond::fRhallH
Double_t fRhallH
Definition: CbmStsParSensorCond.h:162
CbmStsParSensorCond::Init
void Init()
Calculate the derived parameters.
Definition: CbmStsParSensorCond.cxx:57
CbmStsParSensorCond::fVsatH
Double_t fVsatH
Definition: CbmStsParSensorCond.h:161
CbmStsParSensorCond::fRhallE
Double_t fRhallE
Definition: CbmStsParSensorCond.h:158
CbmStsParSensorCond::operator=
CbmStsParSensorCond & operator=(const CbmStsParSensorCond &)
Copy assignment operator.
Definition: CbmStsParSensorCond.cxx:123
CbmStsParSensorCond::fMuLowH
Double_t fMuLowH
Definition: CbmStsParSensorCond.h:159
CbmStsParSensorCond::fIsInit
Bool_t fIsInit
Definition: CbmStsParSensorCond.h:164