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 *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef PXD_SENSORINFO_H
12 #define PXD_SENSORINFO_H
13 
14 #include <vxd/geometry/SensorInfoBase.h>
15 
16 #include <root/TVector3.h>
17 
18 namespace Belle2 {
24  namespace PXD {
26  class SensorInfo: public VXD::SensorInfoBase {
27  public:
29  SensorInfo(VxdID id = 0, float width = 0, float length = 0, float thickness = 0, int uCells = 0, int vCells = 0,
30  float splitLength = 0, int vCells2 = 0):
31  VXD::SensorInfoBase(SensorInfo::PXD, id, width, length, thickness, uCells, vCells, 0, splitLength, vCells2), m_temperature(300),
35  {
36  m_hallFactor = (1.13 + 0.0008 * (m_temperature - 273));
37  cook();
38  }
40  void setID(VxdID id) { m_id = id; }
41 
46  void flipVSegmentation()
47  {
48  if (m_splitLength <= 0) return;
49  std::swap(m_vCells, m_vCells2);
54  cook();
55  }
56 
58  void setDEPFETParams(double bulkDoping, double backVoltage, double topVoltage,
59  double sourceBorderSmallPitch, double clearBorderSmallPitch, double drainBorderSmallPitch,
60  double sourceBorderLargePitch, double clearBorderLargePitch, double drainBorderLargePitch,
61  double gateDepth, bool doublePixel, double chargeThreshold, double noiseFraction)
62  {
63  m_bulkDoping = bulkDoping;
64  m_backVoltage = backVoltage;
65  m_topVoltage = topVoltage;
66  m_sourceBorderSmallPitch = sourceBorderSmallPitch;
67  m_clearBorderSmallPitch = clearBorderSmallPitch;
68  m_drainBorderSmallPitch = drainBorderSmallPitch;
69  m_sourceBorderLargePitch = sourceBorderLargePitch;
70  m_clearBorderLargePitch = clearBorderLargePitch;
71  m_drainBorderLargePitch = drainBorderLargePitch;
72  m_gateDepth = gateDepth;
73  m_doublePixel = doublePixel;
74  m_chargeThreshold = chargeThreshold;
75  m_noiseFraction = noiseFraction;
76  cook();
77  }
78 
80  void cook();
81 
88  int getTrappedID(double x, double y) const;
89 
91  void setIntegrationWindow(double start, double end)
92  {
93  m_integrationStart = start;
94  m_integrationEnd = end;
95  }
96 
98  double getTemperature() const {return m_temperature;}
100  double getBulkDoping() const { return m_bulkDoping; }
102  double getBackVoltage() const { return m_backVoltage; }
104  double getTopVoltage() const { return m_topVoltage; }
108  double getSourceBorder(double v) const
109  {
112  }
114  double getClearBorder(double v) const
115  {
118  }
120  double getDrainBorder(double v) const
121  {
124  }
126  double getGateDepth() const { return m_gateDepth; }
128  bool getDoublePixel() const { return m_doublePixel; }
130  double getChargeThreshold() const { return m_chargeThreshold; }
132  double getNoiseFraction() const { return m_noiseFraction; }
134  double getIntegrationStart() const { return m_integrationStart; }
136  double getIntegrationEnd() const { return m_integrationEnd; }
138  double getHallFactor() const { return m_hallFactor; }
144  double getElectronMobility(double E) const;
150  const TVector3 getEField(const TVector3& point) const;
156  const TVector3 getBField(const TVector3& point) const;
162  const TVector3 getLorentzShift(double u, double v) const;
168  const TVector3 getDriftVelocity(const TVector3& E, const TVector3& B) const;
174  int getPixelKind(const VxdID sensorID, double v) const;
180  int getPixelKindNew(const VxdID& sensorID, int vID) const;
181 
182  protected:
186  void setLorentzFactor();
187 
189  double m_temperature;
191  double m_hallFactor;
193  double m_bulkDoping;
195  double m_backVoltage;
197  double m_topVoltage;
211  double m_gateDepth;
218 
220  double m_integrationStart;
222  double m_integrationEnd;
223 
224  double m_up;
225  double m_iup;
227  double m_vsplit;
229  double m_vp;
230  double m_ivp;
232  double m_vp2;
233  double m_ivp2;
235  double m_hxIG;
236  double m_mIGL;
237  double m_sIGL;
238  double m_mIGS;
239  double m_sIGS;
240  };
241 
242  }
244 } //Belle2 namespace
245 #endif
Belle2::PXD::SensorInfo::m_backVoltage
double m_backVoltage
The voltage at the backside of the sensor.
Definition: SensorInfo.h:203
Belle2::VXD::SensorInfoBase::m_vCells
int m_vCells
Number of strips/pixels in v direction (up to splitLength for two pixel sizes)
Definition: SensorInfoBase.h:351
Belle2::PXD::SensorInfo::m_sourceBorderLargePitch
double m_sourceBorderLargePitch
The distance between the source side of the pixel and the start of the Gate, large pitch area.
Definition: SensorInfo.h:213
Belle2::PXD::SensorInfo::getEField
const TVector3 getEField(const TVector3 &point) const
Model of the E field inside the sensor.
Definition: SensorInfo.cc:32
Belle2::PXD::SensorInfo::getBField
const TVector3 getBField(const TVector3 &point) const
Get B field value from the field map.
Definition: SensorInfo.cc:44
Belle2::PXD::SensorInfo::getBulkDoping
double getBulkDoping() const
Return the bulk doping of the Silicon sensor.
Definition: SensorInfo.h:108
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::PXD::SensorInfo::m_clearBorderLargePitch
double m_clearBorderLargePitch
The distance between the clear side of the pixel and the start of the Gate, large pitch area
Definition: SensorInfo.h:215
Belle2::PXD::SensorInfo::getTopVoltage
double getTopVoltage() const
Return the voltage at the top of the sensor.
Definition: SensorInfo.h:112
Belle2::PXD::SensorInfo::m_sIGS
double m_sIGS
size in v direction of the internal gate trapping region for small pixels
Definition: SensorInfo.h:247
Belle2::PXD::SensorInfo::SensorInfo
SensorInfo(VxdID id=0, float width=0, float length=0, float thickness=0, int uCells=0, int vCells=0, float splitLength=0, int vCells2=0)
Constructor which automatically sets the SensorType.
Definition: SensorInfo.h:37
Belle2::VXD::SensorInfoBase::m_id
unsigned short m_id
ID of the Sensor.
Definition: SensorInfoBase.h:337
Belle2::PXD::SensorInfo::getSourceBorder
double getSourceBorder(double v) const
Return the distance between the source side of the pixel and the start of the Gate for a pixel at v.
Definition: SensorInfo.h:116
Belle2::PXD::SensorInfo::m_drainBorderSmallPitch
double m_drainBorderSmallPitch
The distance between the drain side of the pixel and the start of the Gate, small pitch area
Definition: SensorInfo.h:211
Belle2::PXD::SensorInfo::setDEPFETParams
void setDEPFETParams(double bulkDoping, double backVoltage, double topVoltage, double sourceBorderSmallPitch, double clearBorderSmallPitch, double drainBorderSmallPitch, double sourceBorderLargePitch, double clearBorderLargePitch, double drainBorderLargePitch, double gateDepth, bool doublePixel, double chargeThreshold, double noiseFraction)
Set operation parameters like voltages.
Definition: SensorInfo.h:66
Belle2::PXD::SensorInfo::getLorentzShift
const TVector3 getLorentzShift(double u, double v) const
Calculate Lorentz shift.
Definition: SensorInfo.cc:97
Belle2::PXD::SensorInfo::m_hxIG
double m_hxIG
size in u direction of the internal gate trapping region
Definition: SensorInfo.h:243
Belle2::PXD::SensorInfo::m_vsplit
double m_vsplit
v coordinate which splits small and large pixel regions
Definition: SensorInfo.h:235
Belle2::VXD::SensorInfoBase::VXD
@ VXD
Any type of VXD Sensor.
Definition: SensorInfoBase.h:47
Belle2::PXD::SensorInfo::getHallFactor
double getHallFactor() const
Return the Hall factor for electrons at sensor temperature.
Definition: SensorInfo.h:146
Belle2::PXD::SensorInfo::getIntegrationEnd
double getIntegrationEnd() const
Return the end of the integration window, the timeframe the PXD is sensitive.
Definition: SensorInfo.h:144
Belle2::PXD::SensorInfo::m_clearBorderSmallPitch
double m_clearBorderSmallPitch
The distance between the clear side of the pixel and the start of the Gate, small pitch area
Definition: SensorInfo.h:209
Belle2::PXD::SensorInfo::m_integrationStart
double m_integrationStart
The start of the integration window, the timeframe the PXD is sensitive.
Definition: SensorInfo.h:228
Belle2::PXD::SensorInfo::m_sourceBorderSmallPitch
double m_sourceBorderSmallPitch
The distance between the source side of the pixel and the start of the Gate, small pitch area.
Definition: SensorInfo.h:207
Belle2::PXD::SensorInfo::m_mIGL
double m_mIGL
middle of the internal gate trapping region for large pixels
Definition: SensorInfo.h:244
Belle2::PXD::SensorInfo::m_chargeThreshold
double m_chargeThreshold
Charge threshold.
Definition: SensorInfo.h:223
Belle2::PXD::SensorInfo::getDoublePixel
bool getDoublePixel() const
Return true if the Sensor is a double pixel structure: every other pixel is mirrored along v.
Definition: SensorInfo.h:136
Belle2::PXD::SensorInfo::getPixelKindNew
int getPixelKindNew(const VxdID &sensorID, int vID) const
Return pixel kind ID.
Definition: SensorInfo.cc:76
Belle2::PXD::SensorInfo::m_up
double m_up
pixel pitch in u direction
Definition: SensorInfo.h:232
Belle2::PXD::SensorInfo::m_vp
double m_vp
large pixel pitch in v direction
Definition: SensorInfo.h:237
Belle2::PXD::SensorInfo::getIntegrationStart
double getIntegrationStart() const
Return the start of the integration window, the timeframe the PXD is sensitive.
Definition: SensorInfo.h:142
Belle2::PXD::SensorInfo::getElectronMobility
double getElectronMobility(double E) const
Calculate electron mobility at a given electric field.
Definition: SensorInfo.cc:19
Belle2::PXD::SensorInfo::m_mIGS
double m_mIGS
middle of the internal gate trapping region for small pixels
Definition: SensorInfo.h:246
Belle2::PXD::SensorInfo::setID
void setID(VxdID id)
Change the SensorID, useful to copy the SensorInfo from one sensor and use it for another.
Definition: SensorInfo.h:48
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::PXD::SensorInfo::m_gateDepth
double m_gateDepth
Return depth of the surface where the electrons will be collected.
Definition: SensorInfo.h:219
Belle2::PXD::SensorInfo::getChargeThreshold
double getChargeThreshold() const
Get the charge threshold in ADU for the sensor.
Definition: SensorInfo.h:138
Belle2::PXD::SensorInfo::m_bulkDoping
double m_bulkDoping
Doping concentration of the silicon bulk.
Definition: SensorInfo.h:201
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXD::SensorInfo::getGateDepth
double getGateDepth() const
Return the gate depth for the sensor.
Definition: SensorInfo.h:134
Belle2::PXD::SensorInfo::getTrappedID
int getTrappedID(double x, double y) const
Get pixel number if the given coordinate is in the correspondin internal gate trapping region or -1 o...
Definition: SensorInfo.cc:148
Belle2::PXD::SensorInfo::getPixelKind
int getPixelKind(const VxdID sensorID, double v) const
Return pixel kind ID.
Definition: SensorInfo.cc:67
Belle2::PXD::SensorInfo::m_ivp
double m_ivp
the reciprocal of the large pixel pitch in v direction
Definition: SensorInfo.h:238
Belle2::PXD::SensorInfo::getBackVoltage
double getBackVoltage() const
Return the voltage at the backside of the sensor.
Definition: SensorInfo.h:110
Belle2::PXD::SensorInfo::m_temperature
double m_temperature
The temperature of the sensor.
Definition: SensorInfo.h:197
Belle2::PXD::SensorInfo::m_iup
double m_iup
the reciprocal of the pixel pitch in u direction
Definition: SensorInfo.h:233
Belle2::VXD::SensorInfoBase::m_splitLength
double m_splitLength
Relative length at which second pixel size starts, 0 for only one pixel size.
Definition: SensorInfoBase.h:347
Belle2::PXD::SensorInfo::cook
void cook()
calculate constants in advance
Definition: SensorInfo.cc:128
Belle2::PXD::SensorInfo::setIntegrationWindow
void setIntegrationWindow(double start, double end)
Set the time window in which the sensor is active.
Definition: SensorInfo.h:99
Belle2::PXD::SensorInfo::m_ivp2
double m_ivp2
the reciprocal of the small pixel pitch in v direction
Definition: SensorInfo.h:241
Belle2::PXD::SensorInfo::getNoiseFraction
double getNoiseFraction() const
Get the noise fraction for the sensor.
Definition: SensorInfo.h:140
Belle2::PXD::SensorInfo::m_hallFactor
double m_hallFactor
The bulk doping of the Silicon sensor.
Definition: SensorInfo.h:199
Belle2::PXD::SensorInfo::flipVSegmentation
void flipVSegmentation()
Flip the Pitch segmentation along v.
Definition: SensorInfo.h:54
Belle2::PXD::SensorInfo::m_vp2
double m_vp2
small pixel pitch in v direction
Definition: SensorInfo.h:240
Belle2::PXD::SensorInfo::getDriftVelocity
const TVector3 getDriftVelocity(const TVector3 &E, const TVector3 &B) const
Calculate drift velocity of an electron.
Definition: SensorInfo.cc:52
Belle2::PXD::SensorInfo::m_drainBorderLargePitch
double m_drainBorderLargePitch
The distance between the drain side of the pixel and the start of the Gate, large pitch area
Definition: SensorInfo.h:217
Belle2::PXD::SensorInfo::m_doublePixel
bool m_doublePixel
True if the Sensor is a double pixel structure: every other pixel is mirrored along v.
Definition: SensorInfo.h:221
Belle2::PXD::SensorInfo::getDrainBorder
double getDrainBorder(double v) const
Return the distance between the drain side of the pixel and the start of the Gate for a pixel at v.
Definition: SensorInfo.h:128
Belle2::VXD::SensorInfoBase::PXD
@ PXD
PXD Sensor.
Definition: SensorInfoBase.h:44
Belle2::PXD::SensorInfo::m_topVoltage
double m_topVoltage
The voltate at the top of the sensor.
Definition: SensorInfo.h:205
Belle2::VXD::SensorInfoBase::m_vCells2
int m_vCells2
Number of strips/pixels in v direction after splitLength, 0 for only one pixel size.
Definition: SensorInfoBase.h:353
Belle2::PXD::SensorInfo::getClearBorder
double getClearBorder(double v) const
Return the distance between the clear side of the pixel and the start of the Gate for a pixel at v.
Definition: SensorInfo.h:122
Belle2::PXD::SensorInfo::getTemperature
double getTemperature() const
Return the temperature of the sensor.
Definition: SensorInfo.h:106
Belle2::PXD::SensorInfo::m_integrationEnd
double m_integrationEnd
The end of the integration window, the timeframe the PXD is sensitive.
Definition: SensorInfo.h:230
Belle2::VXD::SensorInfoBase::m_length
double m_length
Length of the Sensor.
Definition: SensorInfoBase.h:341
Belle2::PXD::SensorInfo::m_sIGL
double m_sIGL
size in v direction of the internal gate trapping region for large pixels
Definition: SensorInfo.h:245
Belle2::PXD::SensorInfo::setLorentzFactor
void setLorentzFactor()
Calculate Lorentz shift factor.
Belle2::PXD::SensorInfo::m_noiseFraction
double m_noiseFraction
Fixed noise fraction.
Definition: SensorInfo.h:225