CbmRoot
CbmStsSimSensorDssd Class Referenceabstract

Abstract class for the simulation of double-sided silicon strip sensors. More...

#include <CbmStsSimSensorDssd.h>

Inheritance diagram for CbmStsSimSensorDssd:
[legend]
Collaboration diagram for CbmStsSimSensorDssd:
[legend]

Public Member Functions

 CbmStsSimSensorDssd (CbmStsElement *element=nullptr)
 Standard constructor. More...
 
 CbmStsSimSensorDssd (CbmStsSimSensorDssd &rhs)=delete
 Copy constructor (disabled) More...
 
CbmStsSimSensorDssdoperator= (const CbmStsSimSensorDssd &rhs)=delete
 Assignment operator (disabled) More...
 
virtual ~CbmStsSimSensorDssd ()
 Destructor
More...
 
virtual Int_t GetNofStrips (Int_t side) const =0
 Number of strips on front and back side. More...
 
virtual void ModifyStripPitch (Double_t pitch)=0
 Modify the strip pitch. More...
 
std::string ChargeStatus () const
 Print charge status. More...
 
virtual std::string ToString () const =0
 String output. More...
 
const CbmStsParSensorCondGetConditions () const
 Sensor conditions. More...
 
CbmLinkGetCurrentLink () const
 Current link object. More...
 
CbmStsElementGetElement () const
 Corresponding element in STS setup. More...
 
CbmStsSimModuleGetModule () const
 Simulation module. More...
 
virtual Bool_t Init ()
 Initialise the sensor, if needed. More...
 
Int_t GetSensorId () const
 Sensor ID. More...
 
Int_t ProcessPoint (const CbmStsPoint *point, Double_t eventTime=0., CbmLink *link=NULL)
 Process one MC Point. More...
 
void SetConditions (const CbmStsParSensorCond *conditions)
 
void SetElement (CbmStsElement *element)
 Set the corresponding STS setup element. More...
 
void SetField (Double_t bX, Double_t bY, Double_t bZ)
 Set the magnetic field in the sensor centre. More...
 
void SetModule (CbmStsSimModule *module)
 Set the corresponding simulation module. More...
 
void SetSimSettings (const CbmStsParSim *settings)
 Set the simulation settings. More...
 

Static Public Member Functions

static UInt_t GetAddressFromName (TString name)
 Get the address from the sensor name (static) More...
 

Protected Member Functions

virtual Int_t CalculateResponse (CbmStsSensorPoint *point)
 Analogue response to a track in the sensor. More...
 
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. More...
 
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. More...
 
void ProduceCharge (CbmStsSensorPoint *point)
 Generate charge as response to a sensor point. More...
 
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. More...
 
 ClassDef (CbmStsSimSensorDssd, 1)
 
 ClassDef (CbmStsSimSensor, 1)
 

Protected Attributes

Double_t fDx = 0.
 Dimension of active area in x [cm]. More...
 
Double_t fDy = 0.
 Dimension of active area in y [cm]. More...
 
Double_t fDz = 0.
 Thickness in z [cm]. More...
 
Bool_t fIsSet = kFALSE
 Flag whether sensor is properly initialised. More...
 
TArrayD fStripCharge [2] {}
 
CbmStsElementfElement = nullptr
 
CbmStsSimModulefModule = nullptr
 Setup element. More...
 
const CbmStsParSimfSettings = nullptr
 Simulation module. More...
 
const CbmStsParSensorCondfConditions = nullptr
 Simulation settings. More...
 
Double_t fBx = 0.
 Operating conditions. More...
 
Double_t fBy = 0.
 y component of magnetic field in sensor centre More...
 
Double_t fBz = 0.
 z component of magnetic field in sensor centre More...
 
CbmLinkfCurrentLink = nullptr
 

Detailed Description

Abstract class for the simulation of double-sided silicon strip sensors.

Author
V.Friese v.fri.nosp@m.ese@.nosp@m.gsi.d.nosp@m.e
Since
16.03.2020

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 45 of file CbmStsSimSensorDssd.h.

Constructor & Destructor Documentation

◆ CbmStsSimSensorDssd() [1/2]

CbmStsSimSensorDssd::CbmStsSimSensorDssd ( CbmStsElement element = nullptr)

Standard constructor.

Parameters
elementPointer to element of geometry setup

Definition at line 25 of file CbmStsSimSensorDssd.cxx.

◆ CbmStsSimSensorDssd() [2/2]

CbmStsSimSensorDssd::CbmStsSimSensorDssd ( CbmStsSimSensorDssd rhs)
delete

Copy constructor (disabled)

◆ ~CbmStsSimSensorDssd()

virtual CbmStsSimSensorDssd::~CbmStsSimSensorDssd ( )
inlinevirtual

Destructor

Definition at line 63 of file CbmStsSimSensorDssd.h.

Member Function Documentation

◆ CalculateResponse()

Int_t CbmStsSimSensorDssd::CalculateResponse ( CbmStsSensorPoint point)
protectedvirtual

Analogue response to a track in the sensor.

Parameters
pointPointer 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 31 of file CbmStsSimSensorDssd.cxx.

References CbmStsParSim::CrossTalk(), CrossTalk(), fIsSet, CbmStsSimSensor::fSettings, fStripCharge, CbmStsSimSensor::GetConditions(), CbmStsParSensorCond::GetCrossTalkCoeff(), CbmStsSimSensor::GetModule(), GetNofStrips(), CbmStsSensorPoint::GetTime(), ProduceCharge(), and RegisterCharge().

◆ ChargeStatus()

string CbmStsSimSensorDssd::ChargeStatus ( ) const

Print charge status.

Definition at line 78 of file CbmStsSimSensorDssd.cxx.

References fStripCharge, and GetNofStrips().

◆ ClassDef() [1/2]

CbmStsSimSensor::ClassDef ( CbmStsSimSensor  ,
 
)
protectedinherited

◆ ClassDef() [2/2]

CbmStsSimSensorDssd::ClassDef ( CbmStsSimSensorDssd  ,
 
)
protected

◆ CrossTalk()

void CbmStsSimSensorDssd::CrossTalk ( Double_t  ctCoeff)
protected

Cross talk

Parameters
ctCoeffCross-talk coefficient

Operates on the strip charge arrays and re-distributes charges between adjacent strips according to the cross-talk coefficient.

Definition at line 96 of file CbmStsSimSensorDssd.cxx.

References fStripCharge, and GetNofStrips().

Referenced by CalculateResponse().

◆ GetAddressFromName()

UInt_t CbmStsSimSensor::GetAddressFromName ( TString  name)
staticinherited

Get the address from the sensor name (static)

Parameters
nameName of sensor @value Unique element address

Definition at line 30 of file CbmStsSimSensor.cxx.

References CbmStsAddress::GetAddress().

◆ GetConditions()

const CbmStsParSensorCond* CbmStsSimSensor::GetConditions ( ) const
inlineinherited

Sensor conditions.

Returns
Sensor condition object

Definition at line 63 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fConditions.

Referenced by CalculateResponse(), LorentzShift(), CbmStsSimSensorDssdOrtho::PropagateCharge(), and CbmStsSimSensorDssdStereo::PropagateCharge().

◆ GetCurrentLink()

CbmLink* CbmStsSimSensor::GetCurrentLink ( ) const
inlineinherited

Current link object.

Returns
Current link object (to CbmStsPoint)

Definition at line 69 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fCurrentLink.

Referenced by RegisterCharge().

◆ GetElement()

CbmStsElement* CbmStsSimSensor::GetElement ( ) const
inlineinherited

Corresponding element in STS setup.

Returns
Sensor element

Definition at line 75 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fElement.

◆ GetModule()

CbmStsSimModule* CbmStsSimSensor::GetModule ( ) const
inlineinherited

Simulation module.

Returns
Corresponding simulation module

Definition at line 81 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fModule.

Referenced by CalculateResponse(), and RegisterCharge().

◆ GetModuleChannel()

virtual Int_t CbmStsSimSensorDssd::GetModuleChannel ( Int_t  strip,
Int_t  side,
Int_t  sensorId 
) const
protectedpure virtual

Get the readout channel in the module for a given strip.

Parameters
stripStrip number
sideSide (0 = front, 1 = back)
sensorIdIndex of sensor within module
Returns
Channel number in module

This method defines the mapping of the sensor strips to the readout channels in the module.

Implemented in CbmStsSimSensorDssdStereo, and CbmStsSimSensorDssdOrtho.

Referenced by RegisterCharge().

◆ GetNofStrips()

virtual Int_t CbmStsSimSensorDssd::GetNofStrips ( Int_t  side) const
pure virtual

Number of strips on front and back side.

Parameters
side0 = front side, 1 = back side @value Number of strips on the specified sensor side

Implemented in CbmStsSimSensorDssdStereo, and CbmStsSimSensorDssdOrtho.

Referenced by CalculateResponse(), ChargeStatus(), CrossTalk(), and ProduceCharge().

◆ GetSensorId()

Int_t CbmStsSimSensor::GetSensorId ( ) const
inherited

◆ Init()

virtual Bool_t CbmStsSimSensor::Init ( )
inlinevirtualinherited

Initialise the sensor, if needed.

Returns
kTRUE is successfully initialised

The implementation depends on the concrete sensor class.

Reimplemented in CbmStsSimSensorDssdStereo, and CbmStsSimSensorDssdOrtho.

Definition at line 89 of file CbmStsSimSensor.h.

◆ IsInside()

Bool_t CbmStsSimSensorDssd::IsInside ( Double_t  x,
Double_t  y 
)
protected

Check whether a point (x,y) is inside the active area.

Parameters
xx coordinate in the local c.s. [cm]
yy coordinate in the local c.s. [cm]
Returns
kTRUE if inside active area.

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().

◆ LorentzShift()

Double_t CbmStsSimSensorDssd::LorentzShift ( Double_t  z,
Int_t  chargeType,
Double_t  bY 
) const
protected

Lorentz shift in the x coordinate.

Parameters
zCoordinate of charge origin in local c.s. [cm]
chargeTypeType of charge carrier (0 = electron, 1 = hole)
bYMagnetic 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 141 of file CbmStsSimSensorDssd.cxx.

References CbmStsPhysics::ElectricField(), fDz, CbmStsSimSensor::GetConditions(), CbmStsParSensorCond::GetHallMobility(), CbmStsParSensorCond::GetVbias(), and CbmStsParSensorCond::GetVfd().

Referenced by CbmStsSimSensorDssdOrtho::PropagateCharge(), and CbmStsSimSensorDssdStereo::PropagateCharge().

◆ ModifyStripPitch()

virtual void CbmStsSimSensorDssd::ModifyStripPitch ( Double_t  pitch)
pure virtual

Modify the strip pitch.

Parameters
Newstrip pitch [cm]

The number of strips is re-calculated accordingly.

Implemented in CbmStsSimSensorDssdStereo, and CbmStsSimSensorDssdOrtho.

◆ operator=()

CbmStsSimSensorDssd& CbmStsSimSensorDssd::operator= ( const CbmStsSimSensorDssd rhs)
delete

Assignment operator (disabled)

◆ ProcessPoint()

Int_t CbmStsSimSensor::ProcessPoint ( const CbmStsPoint point,
Double_t  eventTime = 0.,
CbmLink link = NULL 
)
inherited

Process one MC Point.

Parameters
pointPointer to CbmStsPoint object
Returns
Status variable, depends on sensor type

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 52 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(), CbmStsPoint::IsEntry(), z1, and z2.

◆ ProduceCharge()

◆ PropagateCharge()

virtual void CbmStsSimSensorDssd::PropagateCharge ( Double_t  x,
Double_t  y,
Double_t  z,
Double_t  charge,
Double_t  bY,
Int_t  side 
)
protectedpure virtual

Propagate a charge created in the sensor to the readout strips

Parameters
xx origin of charge in local c.s. [cm]
yy origin of charge in local c.s. [cm]
zz origin of charge in local c.s. [cm]
chargeCharge [e]
bYMagnetic field (y component) [T]
side0 = front (n) side; 1 = back (p) side
sensorPointer to sensor object

Implemented in CbmStsSimSensorDssdStereo, and CbmStsSimSensorDssdOrtho.

Referenced by ProduceCharge().

◆ RegisterCharge()

void CbmStsSimSensorDssd::RegisterCharge ( Int_t  side,
Int_t  strip,
Double_t  charge,
Double_t  time 
) const
protected

Register the produced charge in one strip to the module.

Parameters
side0 = front, 1 = back
stripstrip number
chargecharge in strip [e]
timetime 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 284 of file CbmStsSimSensorDssd.cxx.

References CbmStsSimModule::AddSignal(), CbmStsSimSensor::GetCurrentLink(), CbmLink::GetEntry(), CbmLink::GetFile(), CbmLink::GetIndex(), CbmStsSimSensor::GetModule(), GetModuleChannel(), and CbmStsSimSensor::GetSensorId().

Referenced by CalculateResponse().

◆ SetConditions()

void CbmStsSimSensor::SetConditions ( const CbmStsParSensorCond conditions)
inlineinherited

Set the sensor conditions

Parameters
conditionsPointer to conditions parameters

Definition at line 114 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fConditions.

◆ SetElement()

void CbmStsSimSensor::SetElement ( CbmStsElement element)
inlineinherited

Set the corresponding STS setup element.

Parameters
Pointerto setup element

Definition at line 122 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fElement.

◆ SetField()

void CbmStsSimSensor::SetField ( Double_t  bX,
Double_t  bY,
Double_t  bZ 
)
inlineinherited

Set the magnetic field in the sensor centre.

Parameters
bXx component of magnetic field [T]
bYy component of magnetic field [T]
bZz 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 134 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fBx, CbmStsSimSensor::fBy, and CbmStsSimSensor::fBz.

◆ SetModule()

void CbmStsSimSensor::SetModule ( CbmStsSimModule module)
inlineinherited

Set the corresponding simulation module.

Parameters
modulePointer to module

Definition at line 144 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fModule.

◆ SetSimSettings()

void CbmStsSimSensor::SetSimSettings ( const CbmStsParSim settings)
inlineinherited

Set the simulation settings.

Parameters
Simulationsetting parameteres

Definition at line 150 of file CbmStsSimSensor.h.

References CbmStsSimSensor::fSettings.

◆ ToString()

virtual std::string CbmStsSimSensorDssd::ToString ( ) const
pure virtual

String output.

Implements CbmStsSimSensor.

Implemented in CbmStsSimSensorDssdStereo, and CbmStsSimSensorDssdOrtho.

Member Data Documentation

◆ fBx

Double_t CbmStsSimSensor::fBx = 0.
protectedinherited

Operating conditions.

x component of magnetic field in sensor centre

Definition at line 171 of file CbmStsSimSensor.h.

Referenced by CbmStsSimSensor::SetField().

◆ fBy

Double_t CbmStsSimSensor::fBy = 0.
protectedinherited

y component of magnetic field in sensor centre

Definition at line 172 of file CbmStsSimSensor.h.

Referenced by CbmStsSimSensor::SetField().

◆ fBz

Double_t CbmStsSimSensor::fBz = 0.
protectedinherited

z component of magnetic field in sensor centre

Definition at line 173 of file CbmStsSimSensor.h.

Referenced by CbmStsSimSensor::SetField().

◆ fConditions

const CbmStsParSensorCond* CbmStsSimSensor::fConditions = nullptr
protectedinherited

◆ fCurrentLink

CbmLink* CbmStsSimSensor::fCurrentLink = nullptr
protectedinherited

◆ fDx

◆ fDy

◆ fDz

◆ fElement

◆ fIsSet

Bool_t CbmStsSimSensorDssd::fIsSet = kFALSE
protected

◆ fModule

CbmStsSimModule* CbmStsSimSensor::fModule = nullptr
protectedinherited

Setup element.

Definition at line 167 of file CbmStsSimSensor.h.

Referenced by CbmStsSimSensor::GetModule(), and CbmStsSimSensor::SetModule().

◆ fSettings

const CbmStsParSim* CbmStsSimSensor::fSettings = nullptr
protectedinherited

◆ fStripCharge


The documentation for this class was generated from the following files: