CbmRoot
|
Abstract class for the simulation of double-sided silicon strip sensors. More...
#include <CbmStsSimSensorDssd.h>
Public Member Functions | |
CbmStsSimSensorDssd (CbmStsElement *element=nullptr) | |
Standard constructor. | |
CbmStsSimSensorDssd (CbmStsSimSensorDssd &rhs)=delete | |
Copy constructor (disabled) | |
CbmStsSimSensorDssd & | operator= (const CbmStsSimSensorDssd &rhs)=delete |
Assignment operator (disabled) | |
virtual | ~CbmStsSimSensorDssd () |
Destructor | |
virtual Int_t | GetNofStrips (Int_t side) const =0 |
Number of strips on front and back side. | |
virtual void | ModifyStripPitch (Double_t pitch)=0 |
Modify the strip pitch. | |
std::string | ChargeStatus () const |
Print charge status. | |
virtual std::string | ToString () const =0 |
String output. | |
const CbmStsParSensorCond * | GetConditions () const |
Sensor conditions. | |
const CbmLink & | GetCurrentLink () const |
Current link object. | |
CbmStsElement * | GetElement () const |
Corresponding element in STS setup. | |
CbmStsSimModule * | GetModule () const |
Simulation module. | |
virtual Bool_t | Init () |
Initialise the sensor, if needed. | |
Int_t | GetSensorId () const |
Sensor ID. | |
Int_t | ProcessPoint (const CbmStsPoint *point, Double_t eventTime, const CbmLink &link) |
Process one MC Point. | |
void | SetConditions (const CbmStsParSensorCond *conditions) |
void | SetElement (CbmStsElement *element) |
Set the corresponding STS setup element. | |
void | SetField (Double_t bX, Double_t bY, Double_t bZ) |
Set the magnetic field in the sensor centre. | |
void | SetModule (CbmStsSimModule *module) |
Set the corresponding simulation module. | |
void | SetSimSettings (const CbmStsParSim *settings) |
Set the simulation settings. | |
Static Public Member Functions | |
static UInt_t | GetAddressFromName (TString name) |
Get the address from the sensor name (static) | |
Protected Member Functions | |
virtual Int_t | CalculateResponse (CbmStsSensorPoint *point) |
Analogue response to a track in the sensor. | |
void | CrossTalk (Double_t ctCoeff) |
virtual Int_t | GetModuleChannel (Int_t strip, Int_t side, Int_t sensorId) const =0 |
Get the readout channel in the module for a given strip. | |
Bool_t | IsInside (Double_t x, Double_t y) |
Double_t | LorentzShift (Double_t z, Int_t chargeType, Double_t bY) const |
Lorentz shift in the x coordinate. | |
void | ProduceCharge (CbmStsSensorPoint *point) |
Generate charge as response to a sensor point. | |
virtual void | PropagateCharge (Double_t x, Double_t y, Double_t z, Double_t charge, Double_t bY, Int_t side)=0 |
void | RegisterCharge (Int_t side, Int_t strip, Double_t charge, Double_t time) const |
Register the produced charge in one strip to the module. | |
ClassDef (CbmStsSimSensorDssd, 1) | |
ClassDef (CbmStsSimSensor, 1) | |
Protected Attributes | |
Double_t | fDx = 0. |
Dimension of active area in x [cm]. | |
Double_t | fDy = 0. |
Dimension of active area in y [cm]. | |
Double_t | fDz = 0. |
Thickness in z [cm]. | |
Bool_t | fIsSet = kFALSE |
Flag whether sensor is properly initialised. | |
TArrayD | fStripCharge [2] {} |
CbmStsElement * | fElement = nullptr |
CbmStsSimModule * | fModule = nullptr |
Setup element. | |
const CbmStsParSim * | fSettings = nullptr |
Simulation module. | |
const CbmStsParSensorCond * | fConditions = nullptr |
Simulation settings. | |
Double_t | fBx = 0. |
Operating conditions. | |
Double_t | fBy = 0. |
y component of magnetic field in sensor centre | |
Double_t | fBz = 0. |
z component of magnetic field in sensor centre | |
CbmLink | fCurrentLink = {} |
Abstract class for the simulation of double-sided silicon strip sensors.
This abstract class describes the (analogue) response of double-sided silicon strip sensors in the STS.
The active area does not necessarily coincide with the geometric dimensions of the sensor. It is, however, centred in the latter, meaning that the width of inactive regions (guard ring) are the same on the left and on the right side and also the same at the top and and the bottom.
The response to charged particles is modelled by a uniform charge distribution along the particle trajectory in the active volume, which is projected to the readout edge, where it is discretised on the active strips. The charge is then delivered to the corresponding channel of the readout module (CbmStsModule).
Concrete classes have to implement the pure virtual method PropagateCharge, which has to properly fill the charge arrays fStripCharge for front and back side, along with the auxiliary method Diffusion for the thermal diffusion along the drift to the readout plane. Also, the mapping from the strip numbers to the (module) channel number has to be implemented in GetModuleChannel. These methods will e.g. be different for sensors with stereo angles, where both sides are read out at the same edge, and for sensor with orthogonal strips, where the back plane is read out at the left or right edge.
Definition at line 50 of file CbmStsSimSensorDssd.h.
CbmStsSimSensorDssd::CbmStsSimSensorDssd | ( | CbmStsElement * | element = nullptr | ) |
Standard constructor.
element | Pointer to element of geometry setup |
Definition at line 29 of file CbmStsSimSensorDssd.cxx.
|
delete |
Copy constructor (disabled)
|
inlinevirtual |
Destructor
Definition at line 68 of file CbmStsSimSensorDssd.h.
|
protectedvirtual |
Analogue response to a track in the sensor.
point | Pointer to CbmStsSensorPoint object @value Number of analogue signals created in the strips |
In this method, the analogue response of the sensor to a charged particle traversing it is implemented. The input is an object of type CbmStsSensorPoint, giving the geometric intersection of the track with the sensor in the sensor internal coordinate system. The method shall create charges in the internal arrays fStripCharge.
Implements CbmStsSimSensor.
Definition at line 34 of file CbmStsSimSensorDssd.cxx.
References CbmStsParSim::CrossTalk(), CrossTalk(), fIsSet, CbmStsSimSensor::fSettings, fStripCharge, CbmStsSimSensor::GetConditions(), CbmStsParSensorCond::GetCrossTalkCoeff(), CbmStsSimSensor::GetModule(), GetNofStrips(), CbmStsSensorPoint::GetTime(), ProduceCharge(), and RegisterCharge().
string CbmStsSimSensorDssd::ChargeStatus | ( | ) | const |
Print charge status.
Definition at line 81 of file CbmStsSimSensorDssd.cxx.
References fStripCharge, and GetNofStrips().
|
protectedinherited |
|
protected |
|
protected |
Cross talk
ctCoeff | Cross-talk coefficient |
Operates on the strip charge arrays and re-distributes charges between adjacent strips according to the cross-talk coefficient.
Definition at line 99 of file CbmStsSimSensorDssd.cxx.
References fStripCharge, and GetNofStrips().
Referenced by CalculateResponse().
|
staticinherited |
Get the address from the sensor name (static)
name | Name of sensor @value Unique element address |
Definition at line 37 of file CbmStsSimSensor.cxx.
References CbmStsAddress::GetAddress().
|
inlineinherited |
Sensor conditions.
Definition at line 69 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fConditions.
Referenced by CalculateResponse(), LorentzShift(), CbmStsSimSensorDssdOrtho::PropagateCharge(), and CbmStsSimSensorDssdStereo::PropagateCharge().
|
inlineinherited |
Current link object.
Definition at line 75 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fCurrentLink.
Referenced by RegisterCharge().
|
inlineinherited |
Corresponding element in STS setup.
Definition at line 81 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fElement.
|
inlineinherited |
Simulation module.
Definition at line 87 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fModule.
Referenced by CalculateResponse(), and RegisterCharge().
|
protectedpure virtual |
Get the readout channel in the module for a given strip.
strip | Strip number |
side | Side (0 = front, 1 = back) |
sensorId | Index of sensor within module |
This method defines the mapping of the sensor strips to the readout channels in the module.
Implemented in CbmStsSimSensorDssdOrtho, and CbmStsSimSensorDssdStereo.
Referenced by RegisterCharge().
|
pure virtual |
Number of strips on front and back side.
side | 0 = front side, 1 = back side @value Number of strips on the specified sensor side |
Implemented in CbmStsSimSensorDssdOrtho, and CbmStsSimSensorDssdStereo.
Referenced by CalculateResponse(), ChargeStatus(), CrossTalk(), and ProduceCharge().
|
inherited |
Sensor ID.
Definition at line 52 of file CbmStsSimSensor.cxx.
References CbmStsSimSensor::fElement, CbmStsElement::GetAddress(), CbmStsAddress::GetElementId(), and kStsSensor.
Referenced by CbmStsSimSensorDssdOrtho::Init(), RegisterCharge(), and CbmStsSimSensorDssdOrtho::SetParameters().
|
inlinevirtualinherited |
Initialise the sensor, if needed.
The implementation depends on the concrete sensor class.
Reimplemented in CbmStsSimSensorDssdOrtho, and CbmStsSimSensorDssdStereo.
Definition at line 95 of file CbmStsSimSensor.h.
|
protected |
Check whether a point (x,y) is inside the active area.
x | x coordinate in the local c.s. [cm] |
y | y coordinate in the local c.s. [cm] |
The coordinates have to be given in the local coordinate system (origin in the sensor centre).
Definition at line 130 of file CbmStsSimSensorDssd.cxx.
References fDx, fDy, x, and y.
Referenced by CbmStsSimSensorDssdOrtho::PropagateCharge(), and CbmStsSimSensorDssdStereo::PropagateCharge().
|
protected |
Lorentz shift in the x coordinate.
z | Coordinate of charge origin in local c.s. [cm] |
chargeType | Type of charge carrier (0 = electron, 1 = hole) |
bY | Magnetic field (y component) [T] @value Displacement in x due to Lorentz shift [cm] |
Calculates the displacement in x of a charge propagating to the readout plane of the sensor.
TODO: This assumes that the sensor is oriented vertically. It has to be implemented correctly for arbitrary orientations of the local x-y plane.
Definition at line 142 of file CbmStsSimSensorDssd.cxx.
References CbmStsPhysics::ElectricField(), fDz, CbmStsSimSensor::GetConditions(), CbmStsParSensorCond::GetHallMobility(), CbmStsParSensorCond::GetVbias(), and CbmStsParSensorCond::GetVfd().
Referenced by CbmStsSimSensorDssdOrtho::PropagateCharge(), and CbmStsSimSensorDssdStereo::PropagateCharge().
|
pure virtual |
Modify the strip pitch.
New | strip pitch [cm] |
The number of strips is re-calculated accordingly.
Implemented in CbmStsSimSensorDssdOrtho, and CbmStsSimSensorDssdStereo.
|
delete |
Assignment operator (disabled)
|
inherited |
Process one MC Point.
point | Pointer to CbmStsPoint object |
The point coordinates are converted into the internal coordinate system. The appropriate analogue response is then calculated with the pure virtual method CalculateResponse.
Definition at line 61 of file CbmStsSimSensor.cxx.
References CbmStsSimSensor::CalculateResponse(), CbmStsSimSensor::fCurrentLink, CbmStsSimSensor::fElement, CbmStsPoint::GetPid(), CbmStsElement::GetPnode(), CbmStsPoint::GetPxOut(), CbmStsPoint::GetPyOut(), CbmStsPoint::GetPzOut(), CbmStsPoint::GetXIn(), CbmStsPoint::GetXOut(), CbmStsPoint::GetYIn(), CbmStsPoint::GetYOut(), CbmStsPoint::GetZIn(), CbmStsPoint::GetZOut(), and CbmStsPoint::IsEntry().
|
protected |
Generate charge as response to a sensor point.
point | Pointer to sensor point object |
Charge is created in the sensor volume as response to the particle trajectory and is propagated to the read-out edges.
Definition at line 186 of file CbmStsSimSensorDssd.cxx.
References CbmStsParSim::ELossModel(), CbmStsPhysics::EnergyLoss(), CbmStsSimSensor::fSettings, fStripCharge, CbmStsSensorPoint::GetBy(), CbmStsSensorPoint::GetELoss(), GetNofStrips(), CbmStsSensorPoint::GetP(), CbmStsSensorPoint::GetPid(), CbmStsSensorPoint::GetX1(), CbmStsSensorPoint::GetX2(), CbmStsSensorPoint::GetY1(), CbmStsSensorPoint::GetY2(), CbmStsSensorPoint::GetZ1(), CbmStsSensorPoint::GetZ2(), CbmStsPhysics::Instance(), kIdeal, kUrban, CbmStsPhysics::PairCreationEnergy(), CbmStsPhysics::ParticleMass(), PropagateCharge(), and CbmStsPhysics::StoppingPower().
Referenced by CalculateResponse().
|
protectedpure virtual |
Propagate a charge created in the sensor to the readout strips
x | x origin of charge in local c.s. [cm] |
y | y origin of charge in local c.s. [cm] |
z | z origin of charge in local c.s. [cm] |
charge | Charge [e] |
bY | Magnetic field (y component) [T] |
side | 0 = front (n) side; 1 = back (p) side |
sensor | Pointer to sensor object |
Implemented in CbmStsSimSensorDssdOrtho, and CbmStsSimSensorDssdStereo.
Referenced by ProduceCharge().
|
protected |
Register the produced charge in one strip to the module.
side | 0 = front, 1 = back |
strip | strip number |
charge | charge in strip [e] |
time | time of registration [ns] |
The charge in one strip resulting from the analogue response simulation is registered to the read-out chip (module).
Definition at line 273 of file CbmStsSimSensorDssd.cxx.
References CbmStsSimModule::AddSignal(), CbmStsSimSensor::GetCurrentLink(), CbmLink::GetEntry(), CbmLink::GetFile(), CbmLink::GetIndex(), CbmStsSimSensor::GetModule(), GetModuleChannel(), and CbmStsSimSensor::GetSensorId().
Referenced by CalculateResponse().
|
inlineinherited |
Set the sensor conditions
conditions | Pointer to conditions parameters |
Definition at line 118 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fConditions.
|
inlineinherited |
Set the corresponding STS setup element.
Pointer | to setup element |
Definition at line 124 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fElement.
|
inlineinherited |
Set the magnetic field in the sensor centre.
bX | x component of magnetic field [T] |
bY | y component of magnetic field [T] |
bZ | z component of magnetic field [T] |
The magnetic field is neede for the calculation of the Lorentz shift of charge carries in the sensor. The field is approximated to be constant.
Definition at line 136 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fBx, CbmStsSimSensor::fBy, and CbmStsSimSensor::fBz.
|
inlineinherited |
Set the corresponding simulation module.
module | Pointer to module |
Definition at line 147 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fModule.
|
inlineinherited |
Set the simulation settings.
Simulation | setting parameteres |
Definition at line 153 of file CbmStsSimSensor.h.
References CbmStsSimSensor::fSettings.
|
pure virtual |
String output.
Implements CbmStsSimSensor.
Implemented in CbmStsSimSensorDssdOrtho, and CbmStsSimSensorDssdStereo.
|
protectedinherited |
Operating conditions.
x component of magnetic field in sensor centre
Definition at line 174 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::SetField().
|
protectedinherited |
y component of magnetic field in sensor centre
Definition at line 175 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::SetField().
|
protectedinherited |
z component of magnetic field in sensor centre
Definition at line 176 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::SetField().
|
protectedinherited |
Simulation settings.
Definition at line 173 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::GetConditions(), CbmStsSimSensor::SetConditions(), and CbmStsSimSensorDssdStereo::ToString().
|
protectedinherited |
Definition at line 177 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::GetCurrentLink(), and CbmStsSimSensor::ProcessPoint().
|
protected |
Dimension of active area in x [cm].
Definition at line 95 of file CbmStsSimSensorDssd.h.
Referenced by CbmStsSimSensorDssdOrtho::Diffusion(), CbmStsSimSensorDssdStereo::Diffusion(), CbmStsSimSensorDssdOrtho::GetStripNumber(), CbmStsSimSensorDssdStereo::GetStripNumber(), CbmStsSimSensorDssdOrtho::Init(), CbmStsSimSensorDssdStereo::Init(), IsInside(), CbmStsSimSensorDssdOrtho::ModifyStripPitch(), CbmStsSimSensorDssdStereo::ModifyStripPitch(), CbmStsSimSensorDssdOrtho::SetParameters(), and CbmStsSimSensorDssdOrtho::ToString().
|
protected |
Dimension of active area in y [cm].
Definition at line 96 of file CbmStsSimSensorDssd.h.
Referenced by CbmStsSimSensorDssdStereo::CbmStsSimSensorDssdStereo(), CbmStsSimSensorDssdOrtho::Diffusion(), CbmStsSimSensorDssdStereo::Diffusion(), CbmStsSimSensorDssdOrtho::GetStripNumber(), CbmStsSimSensorDssdStereo::GetStripNumber(), CbmStsSimSensorDssdOrtho::Init(), CbmStsSimSensorDssdStereo::Init(), IsInside(), CbmStsSimSensorDssdOrtho::ModifyStripPitch(), CbmStsSimSensorDssdOrtho::SetParameters(), CbmStsSimSensorDssdOrtho::ToString(), and CbmStsSimSensorDssdStereo::ToString().
|
protected |
Thickness in z [cm].
Definition at line 97 of file CbmStsSimSensorDssd.h.
Referenced by CbmStsSimSensorDssdOrtho::Init(), CbmStsSimSensorDssdStereo::Init(), LorentzShift(), CbmStsSimSensorDssdOrtho::PropagateCharge(), CbmStsSimSensorDssdStereo::PropagateCharge(), CbmStsSimSensorDssdOrtho::SetParameters(), and CbmStsSimSensorDssdOrtho::ToString().
|
protectedinherited |
Definition at line 169 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::GetElement(), CbmStsSimSensor::GetSensorId(), CbmStsSimSensorDssdOrtho::Init(), CbmStsSimSensorDssdStereo::Init(), CbmStsSimSensor::ProcessPoint(), CbmStsSimSensor::SetElement(), CbmStsSimSensorDssdOrtho::SetParameters(), CbmStsSimSensorDssdOrtho::ToString(), and CbmStsSimSensorDssdStereo::ToString().
|
protected |
Flag whether sensor is properly initialised.
Definition at line 98 of file CbmStsSimSensorDssd.h.
Referenced by CalculateResponse(), CbmStsSimSensorDssdOrtho::Init(), CbmStsSimSensorDssdStereo::Init(), CbmStsSimSensorDssdOrtho::ModifyStripPitch(), CbmStsSimSensorDssdStereo::ModifyStripPitch(), and CbmStsSimSensorDssdOrtho::SetParameters().
|
protectedinherited |
Setup element.
Definition at line 170 of file CbmStsSimSensor.h.
Referenced by CbmStsSimSensor::GetModule(), and CbmStsSimSensor::SetModule().
|
protectedinherited |
Simulation module.
Definition at line 171 of file CbmStsSimSensor.h.
Referenced by CalculateResponse(), ProduceCharge(), CbmStsSimSensorDssdOrtho::PropagateCharge(), CbmStsSimSensorDssdStereo::PropagateCharge(), and CbmStsSimSensor::SetSimSettings().
|
protected |
Analog charge in strips (for front and back side). Used during analog response simulation.
Definition at line 102 of file CbmStsSimSensorDssd.h.
Referenced by CalculateResponse(), ChargeStatus(), CrossTalk(), CbmStsSimSensorDssdOrtho::Init(), CbmStsSimSensorDssdStereo::Init(), CbmStsSimSensorDssdOrtho::ModifyStripPitch(), CbmStsSimSensorDssdStereo::ModifyStripPitch(), ProduceCharge(), CbmStsSimSensorDssdOrtho::PropagateCharge(), CbmStsSimSensorDssdStereo::PropagateCharge(), and CbmStsSimSensorDssdOrtho::SetParameters().