11#include <vxd/geometry/SensorInfoBase.h>
13#include <Math/Vector3D.h>
26 SensorInfo(
VxdID id = 0,
float width = 0,
float length = 0,
float thickness = 0,
int uCells = 0,
int vCells = 0,
27 float splitLength = 0,
int vCells2 = 0):
28 VXD::
SensorInfoBase(
SensorInfo::
PXD, id, width, length, thickness, uCells, vCells, 0, splitLength, vCells2),
m_temperature(300),
56 double sourceBorderSmallPitch,
double clearBorderSmallPitch,
double drainBorderSmallPitch,
57 double sourceBorderLargePitch,
double clearBorderLargePitch,
double drainBorderLargePitch,
58 double gateDepth,
bool doublePixel,
double chargeThreshold,
double noiseFraction)
146 const ROOT::Math::XYZVector
getEField(
const ROOT::Math::XYZVector& point)
const;
151 const ROOT::Math::XYZVector
getBField(
const ROOT::Math::XYZVector& point)
const;
163 const ROOT::Math::XYZVector
getDriftVelocity(
const ROOT::Math::XYZVector&
E,
const ROOT::Math::XYZVector& B)
const;
Specific implementation of SensorInfo for PXD Sensors which provides additional pixel specific inform...
bool m_doublePixel
True if the Sensor is a double pixel structure: every other pixel is mirrored along v.
double getTopVoltage() const
Return the voltage at the top of the sensor.
double m_clearBorderLargePitch
The distance between the clear side of the pixel and the start of the Gate, large pitch area
double m_vp2
small pixel pitch in v direction
void flipVSegmentation()
Flip the Pitch segmentation along v.
double getChargeThreshold() const
Get the charge threshold in ADU for the sensor.
double m_iup
the reciprocal of the pixel pitch in u direction
double getGateDepth() const
Return the gate depth for the sensor.
double m_hallFactor
The bulk doping of the Silicon sensor.
double m_ivp2
the reciprocal of the small pixel pitch in v direction
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.
double m_bulkDoping
Doping concentration of the silicon bulk.
double m_up
pixel pitch in u direction
double m_ivp
the reciprocal of the large pixel pitch in v direction
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.
void setID(VxdID id)
Change the SensorID, useful to copy the SensorInfo from one sensor and use it for another.
void setLorentzFactor()
Calculate Lorentz shift factor.
void setIntegrationWindow(double start, double end)
Set the time window in which the sensor is active.
double m_sIGS
size in v direction of the internal gate trapping region for small pixels
double m_vsplit
v coordinate which splits small and large pixel regions
double m_clearBorderSmallPitch
The distance between the clear side of the pixel and the start of the Gate, small pitch area
double getElectronMobility(double E) const
Calculate electron mobility at a given electric field.
double m_noiseFraction
Fixed noise fraction.
double m_topVoltage
The voltate at the top of the sensor.
double m_sourceBorderLargePitch
The distance between the source side of the pixel and the start of the Gate, large pitch area.
double m_vp
large pixel pitch in v direction
double getNoiseFraction() const
Get the noise fraction for the sensor.
double m_chargeThreshold
Charge threshold.
double getBulkDoping() const
Return the bulk doping of the Silicon sensor.
bool getDoublePixel() const
Return true if the Sensor is a double pixel structure: every other pixel is mirrored along v.
double m_mIGS
middle of the internal gate trapping region for small pixels
double m_drainBorderLargePitch
The distance between the drain side of the pixel and the start of the Gate, large pitch area
double m_hxIG
size in u direction of the internal gate trapping region
double m_mIGL
middle of the internal gate trapping region for large pixels
double m_integrationEnd
The end of the integration window, the timeframe the PXD is sensitive.
double m_integrationStart
The start of the integration window, the timeframe the PXD is sensitive.
double m_sourceBorderSmallPitch
The distance between the source side of the pixel and the start of the Gate, small pitch area.
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...
double m_backVoltage
The voltage at the backside of the sensor.
double m_gateDepth
Return depth of the surface where the electrons will be collected.
const ROOT::Math::XYZVector getEField(const ROOT::Math::XYZVector &point) const
Model of the E field inside the sensor.
double getIntegrationEnd() const
Return the end of the integration window, the timeframe the PXD is sensitive.
double m_drainBorderSmallPitch
The distance between the drain side of the pixel and the start of the Gate, small pitch area
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.
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.
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.
const ROOT::Math::XYZVector getLorentzShift(double u, double v) const
Calculate Lorentz shift.
int getPixelKindNew(const VxdID &sensorID, int vID) const
Return pixel kind ID.
double getTemperature() const
Return the temperature of the sensor.
const ROOT::Math::XYZVector getBField(const ROOT::Math::XYZVector &point) const
Get B field value from the field map.
void cook()
calculate constants in advance
int getPixelKind(const VxdID sensorID, double v) const
Return pixel kind ID.
double getBackVoltage() const
Return the voltage at the backside of the sensor.
double getIntegrationStart() const
Return the start of the integration window, the timeframe the PXD is sensitive.
const ROOT::Math::XYZVector getDriftVelocity(const ROOT::Math::XYZVector &E, const ROOT::Math::XYZVector &B) const
Calculate drift velocity of an electron.
double m_temperature
The temperature of the sensor.
double m_sIGL
size in v direction of the internal gate trapping region for large pixels
double getHallFactor() const
Return the Hall factor for electrons at sensor temperature.
Base class to provide Sensor Information for PXD and SVD.
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.
@ VXD
Any type of VXD Sensor.
int m_vCells
Number of strips/pixels in v direction (up to splitLength for two pixel sizes)
unsigned short m_id
ID of the Sensor.
double m_length
Length of the Sensor.
int m_vCells2
Number of strips/pixels in v direction after splitLength, 0 for only one pixel size.
double m_splitLength
Relative length at which second pixel size starts, 0 for only one pixel size.
Class to uniquely identify a any structure of the PXD and SVD.
Abstract base class for different kinds of events.