Belle II Software  release-05-02-19
SensorInfo.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Ritter, Peter Kvasnicka *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef SVD_SENSORINFO_H
12 #define SVD_SENSORINFO_H
13 
14 #include <vxd/geometry/SensorInfoBase.h>
15 #include <TVector3.h>
16 
17 namespace Belle2 {
23  namespace SVD {
27  class SensorInfo: public VXD::SensorInfoBase {
28  public:
30  const double c_fanoFactorSi = 0.08;
31 
33  enum Coordinate {
34  u = 1,
35  v = 0
36  };
40  enum CarrierType {
41  electron = -1,
42  hole = +1
43  };
44 
54  SensorInfo(VxdID id = 0, float width = 0, float length = 0, float thickness = 0,
55  int uCells = 0, int vCells = 0, float width2 = 0):
56  VXD::SensorInfoBase(SensorInfo::SVD, id, width, length, thickness, uCells, vCells, width2, -1, 0),
66  m_isBackward(false)
67  {
68  setIsBackward(id);
69  }
70 
76  void setIsBackward(VxdID id)
77  {
78  static const unsigned short layerSensors[] = {0, 0, 0, 2, 3, 4, 5};
79  m_isBackward =
80  (id.getLayerNumber() > 3)
81  && (id.getSensorNumber() == layerSensors[id.getLayerNumber()]);
82  }
83 
87  void setID(VxdID id)
88  {
89  m_id = id;
90  setIsBackward(id);
91  }
92 
102  void setSensorParams(double stripEdgeU, double stripEdgeV,
103  double depletionVoltage, double biasVoltage,
104  double backplaneCapacitanceU,
105  double interstripCapacitanceU,
106  double couplingCapacitanceU,
107  double backplaneCapacitanceV,
108  double interstripCapacitanceV,
109  double couplingCapacitanceV,
110  double AduEquivalentU,
111  double AduEquivalentV,
112  double electronicNoiseU,
113  double electronicNoiseV,
114  double AduEquivalentSbwU,
115  double AduEquivalentSbwV,
116  double electronicNoiseSbwU,
117  double electronicNoiseSbwV)
118  {
119  m_stripEdgeU = stripEdgeU,
120  m_stripEdgeV = stripEdgeV,
121  m_depletionVoltage = depletionVoltage;
122  m_biasVoltage = biasVoltage;
123  m_backplaneCapacitanceU = backplaneCapacitanceU;
124  m_interstripCapacitanceU = interstripCapacitanceU;
125  m_couplingCapacitanceU = couplingCapacitanceU;
126  m_backplaneCapacitanceV = backplaneCapacitanceV;
127  m_interstripCapacitanceV = interstripCapacitanceV;
128  m_couplingCapacitanceV = couplingCapacitanceV;
129  m_aduEquivalentU = AduEquivalentU;
130  m_aduEquivalentV = AduEquivalentV;
131  m_electronicNoiseU = electronicNoiseU;
132  m_electronicNoiseV = electronicNoiseV;
133  m_aduEquivalentSbwU = AduEquivalentSbwU;
134  m_aduEquivalentSbwV = AduEquivalentSbwV;
135  m_electronicNoiseSbwU = electronicNoiseSbwU;
136  m_electronicNoiseSbwV = electronicNoiseSbwV;
137  }
138 
140  double getTemperature() const {return m_temperature; }
145  double getStripLengthU(int uID = 0) const;
150  double getStripLengthV(int vID = 0) const;
152  double getDepletionVoltage() const { return m_depletionVoltage; }
154  double getBiasVoltage() const { return m_biasVoltage; }
156  double getBackplaneCapacitanceU(int uID = 0) const;
158  double getInterstripCapacitanceU(int uID = 0) const;
160  double getCouplingCapacitanceU(int uID = 0) const;
162  double getBackplaneCapacitanceV(int vID = 0) const;
164  double getInterstripCapacitanceV(int vID = 0) const;
166  double getCouplingCapacitanceV(int vID = 0) const;
168  double getAduEquivalentU() const;
170  double getAduEquivalentV() const;
172  double getElectronicNoiseU() const;
174  double getElectronicNoiseV() const;
180  double getElectronMobility(double E) const;
186  double getHoleMobility(double E) const;
187 
192  const TVector3 getEField(const TVector3& point) const;
193 
198  const TVector3& getBField(const TVector3& point) const;
199 
204  double getHallFactor(CarrierType carrier) const
205  {
206  if (carrier == electron)
207  return (1.13 + 0.0008 * (m_temperature - 273));
208  else
209  return (0.72 - 0.0005 * (m_temperature - 273));
210  }
211 
217  const TVector3 getVelocity(CarrierType carrier, const TVector3& point) const;
218 
226  const TVector3& getLorentzShift(double uCoord, double vCoord) const;
227 
235  double getLorentzShift(bool isUCoordinate, double position) const;
236 
237  protected:
239  double m_temperature;
241  double m_stripEdgeU;
243  double m_stripEdgeV;
245  double m_depletionVoltage;
278  }; // Class SVD::SensorInfo
279 
280  inline double SensorInfo::getStripLengthU(int uID) const
281  {
282  // if this is a rectangular sensor, just return the default
283  if (m_deltaWidth == 0.0)
284  return (m_length - 2.0 * m_stripEdgeU);
285  else {
286  // calculate for a wedge sensor
287  double dw = (1.0 * uID / m_uCells - 0.5) * m_deltaWidth;
288  return (sqrt(dw * dw + m_length * m_length) - 2.0 * m_stripEdgeU);
289  }
290  }
291 
292  inline double SensorInfo::getStripLengthV(int vID) const
293  {
294  return (getWidth(getVCellPosition(vID)) - 2.0 * m_stripEdgeV);
295  }
296 
297  inline double SensorInfo::getBackplaneCapacitanceU(int uID) const
298  {
300  }
301 
302  inline double SensorInfo::getInterstripCapacitanceU(int uID) const
303  {
305  }
306 
307  inline double SensorInfo::getCouplingCapacitanceU(int uID) const
308  {
309  return (m_couplingCapacitanceU * getStripLengthU(uID));
310  }
311 
312  inline double SensorInfo::getBackplaneCapacitanceV(int vID) const
313  {
315  }
316 
317  inline double SensorInfo::getInterstripCapacitanceV(int vID) const
318  {
320  }
321 
322  inline double SensorInfo::getCouplingCapacitanceV(int vID) const
323  {
324  return (m_couplingCapacitanceV * getStripLengthV(vID));
325  }
326 
327  inline double SensorInfo::getAduEquivalentU() const
328  {
329  if (m_isBackward)
331  else
332  return m_aduEquivalentU;
333  }
334 
335  inline double SensorInfo::getAduEquivalentV() const
336  {
337  if (m_isBackward)
338  return m_aduEquivalentSbwU;
339  else
340  return m_aduEquivalentV;
341  }
342 
343  inline double SensorInfo::getElectronicNoiseU() const
344  {
345  if (m_isBackward)
346  return m_electronicNoiseSbwU;
347  else
348  return m_electronicNoiseU;
349  }
350 
351  inline double SensorInfo::getElectronicNoiseV() const
352  {
353  if (m_isBackward)
354  return m_electronicNoiseSbwV;
355  else
356  return m_electronicNoiseV;
357  }
358 
359 
360  } // SVD namespace
362 } //Belle2 namespace
363 #endif
Belle2::VXD::SensorInfoBase::m_uCells
int m_uCells
Number of strips/pixels in u direction.
Definition: SensorInfoBase.h:349
Belle2::SVD::SensorInfo::m_aduEquivalentV
double m_aduEquivalentV
ADU equivalent (electrons/ADU) for v strips.
Definition: SensorInfo.h:271
Belle2::SVD::SensorInfo::getVelocity
const TVector3 getVelocity(CarrierType carrier, const TVector3 &point) const
Get drift velocity for electrons or holes at a given point.
Definition: SensorInfo.cc:76
Belle2::SVD::SensorInfo::m_couplingCapacitanceU
double m_couplingCapacitanceU
The coupling capacitance/cm for the sensor's u strips.
Definition: SensorInfo.h:261
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::SVD::SensorInfo::setIsBackward
void setIsBackward(VxdID id)
Determine if this is a backward side barrel sensor.
Definition: SensorInfo.h:84
Belle2::SVD::SensorInfo::m_interstripCapacitanceU
double m_interstripCapacitanceU
The interstrip capacitance/cm for the sensor's u strips.
Definition: SensorInfo.h:259
Belle2::SVD::SensorInfo::getAduEquivalentV
double getAduEquivalentV() const
Return ADU equivalent for v strips.
Definition: SensorInfo.h:343
Belle2::VXD::SensorInfoBase::m_id
unsigned short m_id
ID of the Sensor.
Definition: SensorInfoBase.h:337
Belle2::SVD::SensorInfo::getAduEquivalentU
double getAduEquivalentU() const
Return ADU equivalent for u strips.
Definition: SensorInfo.h:335
Belle2::SVD::SensorInfo::getBackplaneCapacitanceV
double getBackplaneCapacitanceV(int vID=0) const
Return the backplane capacitanceV for the sensor's v strips (short).
Definition: SensorInfo.h:320
Belle2::SVD::SensorInfo::m_isBackward
bool m_isBackward
Is this a backward barrel sensor?
Definition: SensorInfo.h:285
Belle2::SVD::SensorInfo::m_temperature
double m_temperature
Sensor temperature.
Definition: SensorInfo.h:247
Belle2::SVD::SensorInfo::getCouplingCapacitanceU
double getCouplingCapacitanceU(int uID=0) const
Return the coupling capacitanceU of the sensor's u strips (long)
Definition: SensorInfo.h:315
Belle2::VXD::SensorInfoBase::VXD
@ VXD
Any type of VXD Sensor.
Definition: SensorInfoBase.h:47
Belle2::SVD::SensorInfo::m_aduEquivalentSbwV
double m_aduEquivalentSbwV
ADU equivalent (electrons/ADU) for v strips, Sbw barrel sensors.
Definition: SensorInfo.h:279
Belle2::SVD::SensorInfo
Specific implementation of SensorInfo for SVD Sensors which provides additional sensor specific infor...
Definition: SensorInfo.h:35
Belle2::SVD::SensorInfo::m_backplaneCapacitanceV
double m_backplaneCapacitanceV
The backplane capacitance/cm for the sensor's v strips.
Definition: SensorInfo.h:263
Belle2::VXD::SensorInfoBase::getWidth
double getWidth(double v=0) const
Return the width of the sensor.
Definition: SensorInfoBase.h:91
Belle2::SVD::SensorInfo::Coordinate
Coordinate
Enum for parametric access to sensor coordinates.
Definition: SensorInfo.h:41
Belle2::SVD::SensorInfo::SensorInfo
SensorInfo(VxdID id=0, float width=0, float length=0, float thickness=0, int uCells=0, int vCells=0, float width2=0)
Constructor which automatically sets the SensorType to SensorInfo::SVD.
Definition: SensorInfo.h:62
Belle2::SVD::SensorInfo::getEField
const TVector3 getEField(const TVector3 &point) const
Model of the E field inside the sensor.
Definition: SensorInfo.cc:46
Belle2::SVD::SensorInfo::setSensorParams
void setSensorParams(double stripEdgeU, double stripEdgeV, double depletionVoltage, double biasVoltage, double backplaneCapacitanceU, double interstripCapacitanceU, double couplingCapacitanceU, double backplaneCapacitanceV, double interstripCapacitanceV, double couplingCapacitanceV, double AduEquivalentU, double AduEquivalentV, double electronicNoiseU, double electronicNoiseV, double AduEquivalentSbwU, double AduEquivalentSbwV, double electronicNoiseSbwU, double electronicNoiseSbwV)
Set sensor operation parameters.
Definition: SensorInfo.h:110
Belle2::SVD::SensorInfo::m_depletionVoltage
double m_depletionVoltage
The depletion voltage of the Silicon sensor.
Definition: SensorInfo.h:253
Belle2::SVD::SensorInfo::getInterstripCapacitanceV
double getInterstripCapacitanceV(int vID=0) const
Return the interstrip capacitanceV for the sensor's v strips (short).
Definition: SensorInfo.h:325
Belle2::SVD::SensorInfo::getStripLengthV
double getStripLengthV(int vID=0) const
Return v-strip length.
Definition: SensorInfo.h:300
Belle2::VXD::SensorInfoBase::SensorInfoBase
SensorInfoBase(SensorType type, VxdID id, double width, double length, double thickness, int uCells, int vCells, double width2=-1, double splitLength=-1, int vCells2=0)
Constructor for a SensorInfo instance.
Definition: SensorInfoBase.h:71
Belle2::SVD::SensorInfo::getHoleMobility
double getHoleMobility(double E) const
Calculate hole mobility at a given electric field.
Definition: SensorInfo.cc:33
Belle2::SVD::SensorInfo::getBField
const TVector3 & getBField(const TVector3 &point) const
Get B field value from the field map.
Definition: SensorInfo.cc:57
Belle2::VXD::SensorInfoBase::getVCellPosition
double getVCellPosition(int vID) const
Return the position of a specific strip/pixel in v direction.
Definition: SensorInfoBase.h:191
Belle2::SVD::SensorInfo::getTemperature
double getTemperature() const
Return the sensor temperature.
Definition: SensorInfo.h:148
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::SVD::SensorInfo::getLorentzShift
const TVector3 & getLorentzShift(double uCoord, double vCoord) const
Calculate Lorentz shift along a given coordinate in a magnetic field at a given position.
Definition: SensorInfo.cc:103
Belle2::SVD::SensorInfo::getBackplaneCapacitanceU
double getBackplaneCapacitanceU(int uID=0) const
Return the backplane capacitanceU for the sensor's u strips (long).
Definition: SensorInfo.h:305
Belle2::SVD::SensorInfo::m_interstripCapacitanceV
double m_interstripCapacitanceV
The interstrip capacitance/cm for the sensor's v strips.
Definition: SensorInfo.h:265
Belle2::SVD::SensorInfo::m_backplaneCapacitanceU
double m_backplaneCapacitanceU
The backplane capacitance/cm for the sensor's u strips.
Definition: SensorInfo.h:257
Belle2::SVD::SensorInfo::m_aduEquivalentSbwU
double m_aduEquivalentSbwU
ADU equivalent (electrons/ADU) for u strips, Sbw barrel sensors.
Definition: SensorInfo.h:277
Belle2::SVD::SensorInfo::getCouplingCapacitanceV
double getCouplingCapacitanceV(int vID=0) const
Return the coupling capacitanceV of the sensor's v strips (short).
Definition: SensorInfo.h:330
Belle2::VXD::SensorInfoBase::SVD
@ SVD
SVD Sensor.
Definition: SensorInfoBase.h:45
Belle2::SVD::SensorInfo::m_electronicNoiseU
double m_electronicNoiseU
The electronic noise for u (long) strips.
Definition: SensorInfo.h:273
Belle2::SVD::SensorInfo::c_fanoFactorSi
const double c_fanoFactorSi
The Fano factor for silicon.
Definition: SensorInfo.h:38
Belle2::SVD::SensorInfo::m_electronicNoiseSbwU
double m_electronicNoiseSbwU
The electronic noise for u strips in bw barrel (non-Origami) sensors.
Definition: SensorInfo.h:281
Belle2::SVD::SensorInfo::getHallFactor
double getHallFactor(CarrierType carrier) const
Return Hall factor for the corresponding carrier type.
Definition: SensorInfo.h:212
Belle2::SVD::SensorInfo::hole
@ hole
electrons
Definition: SensorInfo.h:50
Belle2::SVD::SensorInfo::m_aduEquivalentU
double m_aduEquivalentU
ADU equivalent (electrons/ADU) for u strips.
Definition: SensorInfo.h:269
Belle2::SVD::SensorInfo::getBiasVoltage
double getBiasVoltage() const
Return the bias voltage on the sensor.
Definition: SensorInfo.h:162
Belle2::SVD::SensorInfo::m_couplingCapacitanceV
double m_couplingCapacitanceV
The coupling capacitance/cm for the sensor's v strips.
Definition: SensorInfo.h:267
Belle2::SVD::SensorInfo::m_stripEdgeU
double m_stripEdgeU
The distance between end of strips and edge of active area.
Definition: SensorInfo.h:249
Belle2::SVD::SensorInfo::setID
void setID(VxdID id)
Change the SensorID.
Definition: SensorInfo.h:95
Belle2::SVD::SensorInfo::getElectronicNoiseV
double getElectronicNoiseV() const
Return electronic noise in e- for v (short) strips.
Definition: SensorInfo.h:359
Belle2::SVD::SensorInfo::m_biasVoltage
double m_biasVoltage
The bias voltage on the sensor.
Definition: SensorInfo.h:255
Belle2::SVD::SensorInfo::getDepletionVoltage
double getDepletionVoltage() const
Return the depletion voltage of the sensor.
Definition: SensorInfo.h:160
Belle2::SVD::SensorInfo::getStripLengthU
double getStripLengthU(int uID=0) const
Return u-strip length.
Definition: SensorInfo.h:288
Belle2::SVD::SensorInfo::m_electronicNoiseSbwV
double m_electronicNoiseSbwV
The electronic noise for v strips in bw barrel (non-Origami) sensors.
Definition: SensorInfo.h:283
Belle2::VXD::SensorInfoBase::m_length
double m_length
Length of the Sensor.
Definition: SensorInfoBase.h:341
Belle2::SVD::SensorInfo::CarrierType
CarrierType
Enum to flag charge carriers.
Definition: SensorInfo.h:48
Belle2::SVD::SensorInfo::m_stripEdgeV
double m_stripEdgeV
The distance between end of strips and edge of active area.
Definition: SensorInfo.h:251
Belle2::SVD::SensorInfo::getElectronMobility
double getElectronMobility(double E) const
Calculate electron mobility at a given electric field.
Definition: SensorInfo.cc:20
Belle2::SVD::SensorInfo::getElectronicNoiseU
double getElectronicNoiseU() const
Return electronic noise in e- for u (long) strips.
Definition: SensorInfo.h:351
Belle2::SVD::SensorInfo::m_electronicNoiseV
double m_electronicNoiseV
The electronic noise for v (short) strips.
Definition: SensorInfo.h:275
Belle2::SVD::SensorInfo::getInterstripCapacitanceU
double getInterstripCapacitanceU(int uID=0) const
Return the interstrip capacitanceU for the sensor's u strips (long).
Definition: SensorInfo.h:310
Belle2::VXD::SensorInfoBase::m_deltaWidth
double m_deltaWidth
Difference between backward and forward width, 0 for rectangular sensors.
Definition: SensorInfoBase.h:345