BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CbmStsSensorTypeDssd Class Reference

Class describing double-sided silicon strip sensors. More...

#include <CbmStsSensorTypeDssd.h>

Inheritance diagram for CbmStsSensorTypeDssd:
Collaboration diagram for CbmStsSensorTypeDssd:

Public Member Functions

 CbmStsSensorTypeDssd ()
 Constructor.
virtual ~CbmStsSensorTypeDssd ()
 Destructor.
virtual void Print (Option_t *opt="") const
 Print parameters.
virtual void ProcessPoint (CbmStsSensorPoint *point, const CbmStsSenzor *sensor) const
 Process a point.
void SetParameters (Double_t dx, Double_t dy, Double_t dz, Int_t nStripsF, Int_t nStripsB, Double_t stereoF, Double_t stereoB)
 Set the parameters.
Public Member Functions inherited from CbmStsSensorType
 CbmStsSensorType ()
 Constructor.
virtual ~CbmStsSensorType ()
 Destructor.
Int_t GetTypeId () const
 Type identifier.
Public Member Functions inherited from TNamed
 TNamed ()
 TNamed (const char *name, const char *title)
 TNamed (const TNamed &named)
 TNamed (const TString &name, const TString &title)
virtual ~TNamed ()
void Clear (Option_t *option="") override
TObject * Clone (const char *newname="") const override
Int_t Compare (const TObject *obj) const override
void Copy (TObject &named) const override
virtual void FillBuffer (char *&buffer)
const char * GetName () const override
const char * GetTitle () const override
ULong_t Hash () const override
TClass * IsA () const override
Bool_t IsSortable () const override
void ls (Option_t *option="") const override
TNamed & operator= (const TNamed &rhs)
void Print (Option_t *option="") const override
virtual void SetName (const char *name)
virtual void SetNameTitle (const char *name, const char *title)
virtual void SetTitle (const char *title="")
virtual Int_t Sizeof () const
void Streamer (TBuffer &) override
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
Public Member Functions inherited from TObject
 TObject ()
 TObject (const TObject &object)
virtual ~TObject ()
void AbstractMethod (const char *method) const
virtual void AppendPad (Option_t *option="")
virtual void Browse (TBrowser *b)
ULong_t CheckedHash ()
virtual const char * ClassName () const
virtual void Delete (Option_t *option="")
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
virtual void Draw (Option_t *option="")
virtual void DrawClass () const
virtual TObject * DrawClone (Option_t *option="") const
virtual void Dump () const
virtual void Error (const char *method, const char *msgfmt,...) const
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
virtual void Fatal (const char *method, const char *msgfmt,...) const
virtual TObject * FindObject (const char *name) const
virtual TObject * FindObject (const TObject *obj) const
virtual Option_t * GetDrawOption () const
virtual const char * GetIconName () const
virtual char * GetObjectInfo (Int_t px, Int_t py) const
virtual Option_t * GetOption () const
virtual UInt_t GetUniqueID () const
virtual Bool_t HandleTimer (TTimer *timer)
Bool_t HasInconsistentHash () const
virtual void Info (const char *method, const char *msgfmt,...) const
virtual Bool_t InheritsFrom (const char *classname) const
virtual Bool_t InheritsFrom (const TClass *cl) const
virtual void Inspect () const
void InvertBit (UInt_t f)
Bool_t IsDestructed () const
virtual Bool_t IsEqual (const TObject *obj) const
virtual Bool_t IsFolder () const
R__ALWAYS_INLINE Bool_t IsOnHeap () const
R__ALWAYS_INLINE Bool_t IsZombie () const
void MayNotUse (const char *method) const
virtual Bool_t Notify ()
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
void operator delete (void *ptr)
void operator delete (void *ptr, void *vp)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr, void *vp)
void * operator new (size_t sz)
void * operator new (size_t sz, void *vp)
void * operator new[] (size_t sz)
void * operator new[] (size_t sz, void *vp)
TObject & operator= (const TObject &rhs)
virtual void Paint (Option_t *option="")
virtual void Pop ()
virtual Int_t Read (const char *name)
virtual void RecursiveRemove (TObject *obj)
void ResetBit (UInt_t f)
virtual void SaveAs (const char *filename="", Option_t *option="") const
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
void SetBit (UInt_t f)
void SetBit (UInt_t f, Bool_t set)
virtual void SetDrawOption (Option_t *option="")
virtual void SetUniqueID (UInt_t uid)
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
virtual void SysError (const char *method, const char *msgfmt,...) const
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
Int_t TestBits (UInt_t f) const
virtual void UseCurrentStyle ()
virtual void Warning (const char *method, const char *msgfmt,...) const
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const

Private Member Functions

Int_t GetModuleChannel (Int_t strip, Int_t side, Int_t sensorId) const
 Shift in number of strips from bottom to top.
void GetStrip (Int_t channel, Int_t sensorId, Int_t &strip, Int_t &side)
 Get strip and side from module channel.
void ProduceCharge (CbmStsSensorPoint *point, Int_t side, const CbmStsSenzor *sensor) const
 Produce charge on front or back side from a CbmStsPoint.
void RegisterCharge (const CbmStsSenzor *sensor, Int_t side, Int_t strip, Double_t charge, Double_t time) const
 Register produced charge in one strip.
Bool_t SelfTest ()
 Test the consistent implementation of GetModuleChannel and GetStrip.

Private Attributes

Double_t fDx
 Dimension of active area in x [cm].
Double_t fDy
 Dimension of active area in y [cm].
Double_t fDz
 Thickness in z [cm].
Int_t fNofStrips [2]
 Number of strips on front/back side.
Double_t fStereo [2]
 Stereo angle front/back side [degrees].
Bool_t fIsSet
 Flag whether parameters are set.
Double_t fPitch [2]
 Temporary variables to avoid frequent calculations.
Double_t fCosStereo [2]
 Strip pitch front/back side [cm].
Double_t fSinStereo [2]
 cos of stereo angle front/back side
Int_t fStripShift [2]
 sin if stereo angle front/back side

Additional Inherited Members

Public Types inherited from TObject
enum  EDeprecatedStatusBits
enum  EStatusBits
Static Public Member Functions inherited from TNamed
static TClass * Class ()
static const char * Class_Name ()
static constexpr Version_t Class_Version ()
static const char * DeclFileName ()
Static Public Member Functions inherited from TObject
static TClass * Class ()
static const char * Class_Name ()
static constexpr Version_t Class_Version ()
static const char * DeclFileName ()
static Longptr_t GetDtorOnly ()
static Bool_t GetObjectStat ()
static void SetDtorOnly (void *obj)
static void SetObjectStat (Bool_t stat)
Public Attributes inherited from TObject
 kIsOnHeap
 kNotDeleted
 kZombie
 kInconsistent
 kBitMask
 kSingleKey
 kOverwrite
 kWriteDelete
 kObjInCanvas
 kCanDelete
 kMustCleanup
 kIsReferenced
 kHasUUID
 kCannotPick
 kNoContextMenu
 kInvalidObject
Protected Member Functions inherited from TNamed
void SavePrimitiveNameTitle (std::ostream &out, const char *variable_name)
Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
void MakeZombie ()
Static Protected Member Functions inherited from TObject
static void SavePrimitiveConstructor (std::ostream &out, TClass *cl, const char *variable_name, const char *constructor_agrs="", Bool_t empty_line=kTRUE)
static void SavePrimitiveDraw (std::ostream &out, const char *variable_name, Option_t *option=nullptr)
static TString SavePrimitiveVector (std::ostream &out, const char *prefix, Int_t len, Double_t *arr, Bool_t empty_line=kFALSE)
Protected Attributes inherited from TNamed
TString fName
TString fTitle
Protected Attributes inherited from TObject
 kOnlyPrepStep

Detailed Description

Author
V.Friese v.fri.nosp@m.ese@.nosp@m.gsi.d.nosp@m.e
Version
1.0

This class describes the response of double-sided silicon strip sensors in the STS. Its free parameters are the dimensions of the active area, the number of strips at the top (readout) edge and the stereo angles on front and back side.

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 stereo angle is defined with respect to the y (vertical) axis. Readout is performed at the top edge of the sensor. In case of finite stereo angle, the corner strips not reaching the top edge are connected horizontally to the corresponding strip in the other corner.

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

The mapping of strip number and module channel is trivial in the case of just one sensor per module. In case of several daisy-chained sensors, the top-edge strip is vertically connected vertically to the corresponding strip on the bottom edge of the sensor above. This results in an offset of strip number to channel number which depends on the position of the' sensor in the daisy chain. The behaviour is implemented in the methods GetStrip and GetModuleChannel.

Definition at line 47 of file CbmStsSensorTypeDssd.h.

Constructor & Destructor Documentation

◆ CbmStsSensorTypeDssd()

CbmStsSensorTypeDssd::CbmStsSensorTypeDssd ( )

Definition at line 23 of file CbmStsSensorTypeDssd.cxx.

References CbmStsSensorType::CbmStsSensorType(), fCosStereo, fDx, fDy, fDz, fIsSet, fNofStrips, fPitch, fSinStereo, fStereo, and fStripShift.

Here is the call graph for this function:

◆ ~CbmStsSensorTypeDssd()

virtual CbmStsSensorTypeDssd::~CbmStsSensorTypeDssd ( )
inlinevirtual

Definition at line 55 of file CbmStsSensorTypeDssd.h.

Member Function Documentation

◆ GetModuleChannel()

Int_t CbmStsSensorTypeDssd::GetModuleChannel ( Int_t strip,
Int_t side,
Int_t sensorId ) const
private

Get the readout channel in the module for a given strip and side

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

Definition at line 39 of file CbmStsSensorTypeDssd.cxx.

References fNofStrips, and fStripShift.

Referenced by RegisterCharge(), and SelfTest().

Here is the caller graph for this function:

◆ GetStrip()

void CbmStsSensorTypeDssd::GetStrip ( Int_t channel,
Int_t sensorId,
Int_t & strip,
Int_t & side )
private
Parameters
[in]channelChannel number in module
[in]sensorIdSensor index in module
[out]stripStrip number in sensor
[out]sideSensor side [0 = front, 1 = back]

Definition at line 66 of file CbmStsSensorTypeDssd.cxx.

References fNofStrips, and fStripShift.

Referenced by SelfTest().

Here is the caller graph for this function:

◆ Print()

void CbmStsSensorTypeDssd::Print ( Option_t * opt = "") const
virtual

Reimplemented from TObject.

Definition at line 97 of file CbmStsSensorTypeDssd.cxx.

References fDx, fDy, fDz, fNofStrips, fPitch, fStereo, and TNamed::GetName().

Here is the call graph for this function:

◆ ProcessPoint()

void CbmStsSensorTypeDssd::ProcessPoint ( CbmStsSensorPoint * point,
const CbmStsSenzor * sensor ) const
virtual

Implements CbmStsSensorType.

Definition at line 110 of file CbmStsSensorTypeDssd.cxx.

References fIsSet, TNamed::fName, and ProduceCharge().

Here is the call graph for this function:

◆ ProduceCharge()

void CbmStsSensorTypeDssd::ProduceCharge ( CbmStsSensorPoint * point,
Int_t side,
const CbmStsSenzor * sensor ) const
private
Parameters
side0 = front, 1 = back side

Definition at line 125 of file CbmStsSensorTypeDssd.cxx.

References fCosStereo, fDx, fDy, fIsSet, TMath::FloorNint(), TNamed::fName, fNofStrips, fPitch, fSinStereo, CbmStsSensorPoint::GetELoss(), CbmStsSensorPoint::GetTime(), CbmStsSensorPoint::GetX1(), CbmStsSensorPoint::GetX2(), CbmStsSensorPoint::GetY1(), CbmStsSensorPoint::GetY2(), kPairEnergy, TMath::Max(), TMath::Min(), and RegisterCharge().

Referenced by ProcessPoint().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RegisterCharge()

void CbmStsSensorTypeDssd::RegisterCharge ( const CbmStsSenzor * sensor,
Int_t side,
Int_t strip,
Double_t charge,
Double_t time ) const
private
Parameters
side0 = front, 1 = back
stripstrip number
chargecharge in strip [e]
timetime of registration [ns]

Definition at line 187 of file CbmStsSensorTypeDssd.cxx.

References CbmStsModule::AddSignal(), TNamed::fName, CbmStsSenzor::GetModule(), GetModuleChannel(), and CbmStsSenzor::GetSensorId().

Referenced by ProduceCharge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SelfTest()

Bool_t CbmStsSensorTypeDssd::SelfTest ( )
private

The latter should be the reverse of the former.

Returns
kTRUE if successful

Definition at line 207 of file CbmStsSensorTypeDssd.cxx.

References TNamed::fName, fNofStrips, GetModuleChannel(), and GetStrip().

Referenced by SetParameters().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetParameters()

void CbmStsSensorTypeDssd::SetParameters ( Double_t dx,
Double_t dy,
Double_t dz,
Int_t nStripsF,
Int_t nStripsB,
Double_t stereoF,
Double_t stereoB )
Parameters
dx,dy,dzSize in x,y,z [cm]
nStripsF,nStripsBNumber of strips on front and back side
stereoF,stereoBStrip stereo angle front and back side [degrees]

Definition at line 232 of file CbmStsSensorTypeDssd.cxx.

References TMath::Abs(), TMath::Cos(), TMath::DegToRad(), fCosStereo, fDx, fDy, fDz, fIsSet, fNofStrips, fPitch, fSinStereo, fStereo, fStripShift, TMath::Nint(), SelfTest(), and TMath::Sin().

Here is the call graph for this function:

Member Data Documentation

◆ fCosStereo

Double_t CbmStsSensorTypeDssd::fCosStereo[2]
private

Definition at line 86 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), ProduceCharge(), and SetParameters().

◆ fDx

Double_t CbmStsSensorTypeDssd::fDx
private

Definition at line 77 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), Print(), ProduceCharge(), and SetParameters().

◆ fDy

Double_t CbmStsSensorTypeDssd::fDy
private

Definition at line 78 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), Print(), ProduceCharge(), and SetParameters().

◆ fDz

Double_t CbmStsSensorTypeDssd::fDz
private

Definition at line 79 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), Print(), and SetParameters().

◆ fIsSet

Bool_t CbmStsSensorTypeDssd::fIsSet
private

◆ fNofStrips

Int_t CbmStsSensorTypeDssd::fNofStrips[2]
private

◆ fPitch

Double_t CbmStsSensorTypeDssd::fPitch[2]
private

Definition at line 85 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), Print(), ProduceCharge(), and SetParameters().

◆ fSinStereo

Double_t CbmStsSensorTypeDssd::fSinStereo[2]
private

Definition at line 87 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), ProduceCharge(), and SetParameters().

◆ fStereo

Double_t CbmStsSensorTypeDssd::fStereo[2]
private

Definition at line 81 of file CbmStsSensorTypeDssd.h.

Referenced by CbmStsSensorTypeDssd(), Print(), and SetParameters().

◆ fStripShift

Int_t CbmStsSensorTypeDssd::fStripShift[2]
private

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