CbmRoot
Loading...
Searching...
No Matches
CbmStsSimSensorDssd.h
Go to the documentation of this file.
1/* Copyright (C) 2017-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Volker Friese [committer] */
4
10#ifndef CBMSTSSIMSENSORDSSD_H
11#define CBMSTSSIMSENSORDSSD_H 1
12
13
14#include "CbmStsSimSensor.h"
15
16#include <TArrayD.h>
17
18
51
52public:
56 CbmStsSimSensorDssd(CbmStsElement* element = nullptr);
57
58
61
62
65
66
69
70
75 virtual Int_t GetNofStrips(Int_t side) const = 0;
76
77
83 virtual void ModifyStripPitch(Double_t pitch) = 0;
84
85
87 std::string ChargeStatus() const;
88
89
91 virtual std::string ToString() const = 0;
92
93
94protected:
95 Double_t fDx = 0.;
96 Double_t fDy = 0.;
97 Double_t fDz = 0.;
98 Bool_t fIsSet = kFALSE;
99
102 TArrayD fStripCharge[2] {};
103
104
115 virtual Int_t CalculateResponse(CbmStsSensorPoint* point);
116
117
124 void CrossTalk(Double_t ctCoeff);
125
126
136 virtual Int_t GetModuleChannel(Int_t strip, Int_t side, Int_t sensorId) const = 0;
137
138
148 Bool_t IsInside(Double_t x, Double_t y);
149
150
164 Double_t LorentzShift(Double_t z, Int_t chargeType, Double_t bY) const;
165
166
173 void ProduceCharge(CbmStsSensorPoint* point);
174
175
185 virtual void PropagateCharge(Double_t x, Double_t y, Double_t z, Double_t charge, Double_t bY, Int_t side) = 0;
186
187
197 void RegisterCharge(Int_t side, Int_t strip, Double_t charge, Double_t time) const;
198
199
201};
202
203
204#endif
Class representing an element of the STS setup.
Container class for a local point in a STS sensor.
Abstract class for the simulation of double-sided silicon strip sensors.
std::string ChargeStatus() const
Print charge status.
Bool_t IsInside(Double_t x, Double_t y)
Double_t fDz
Thickness in z [cm].
virtual Int_t GetNofStrips(Int_t side) const =0
Number of strips on front and back side.
CbmStsSimSensorDssd & operator=(const CbmStsSimSensorDssd &rhs)=delete
Assignment operator (disabled)
virtual void PropagateCharge(Double_t x, Double_t y, Double_t z, Double_t charge, Double_t bY, Int_t side)=0
void ProduceCharge(CbmStsSensorPoint *point)
Generate charge as response to a sensor point.
Bool_t fIsSet
Flag whether sensor is properly initialised.
Double_t fDx
Dimension of active area in x [cm].
CbmStsSimSensorDssd(CbmStsElement *element=nullptr)
Standard constructor.
virtual ~CbmStsSimSensorDssd()
Destructor
virtual void ModifyStripPitch(Double_t pitch)=0
Modify the strip pitch.
Double_t fDy
Dimension of active area in y [cm].
virtual Int_t CalculateResponse(CbmStsSensorPoint *point)
Analogue response to a track in the sensor.
Double_t LorentzShift(Double_t z, Int_t chargeType, Double_t bY) const
Lorentz shift in the x coordinate.
void CrossTalk(Double_t ctCoeff)
ClassDef(CbmStsSimSensorDssd, 1)
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.
CbmStsSimSensorDssd(CbmStsSimSensorDssd &rhs)=delete
Copy constructor (disabled)
virtual std::string ToString() const =0
String output.
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.
Class for the simulation of a sensor in the CBM-STS.