BmnRoot
Loading...
Searching...
No Matches
BmnSsdSensorDssd.h
Go to the documentation of this file.
1
7#ifndef BMNSSDSENSORDSSD_H
8#define BMNSSDSENSORDSSD_H 1
9
10
11#include <string>
12#include <utility>
13#include "TArrayD.h"
14#include "BmnSsdSensor.h"
15
16class BmnSsdPhysics;
17
18
51{
52
53 public:
54
60 BmnSsdSensorDssd(Int_t address = 0, TGeoPhysicalNode* node = nullptr,
61 BmnSsdElement* mother = nullptr);
62
64 virtual ~BmnSsdSensorDssd() { };
65
66
76 virtual Int_t FindHits(std::vector<BmnSsdCluster*>& clusters,
77 TClonesArray* hitArray, BmnEvent* event,
78 Double_t dTime);
79
80
85 virtual Int_t GetNofStrips(Int_t side) const = 0;
86
87
92 virtual Double_t GetPitch(Int_t side) const = 0;
93
94
100 virtual void ModifyStripPitch(Double_t pitch) = 0;
101
102
104 void PrintChargeStatus() const;
105
106
108 virtual std::string ToString() const = 0;
109
110
111
112 protected:
113
114
115 Double_t fDx;
116 Double_t fDy;
117 Double_t fDz;
118 Bool_t fIsSet;
119
122 TArrayD fStripCharge[2];
123
124
135 virtual Int_t CalculateResponse(BmnSsdSensorPoint* point);
136
137
144 void CrossTalk(Double_t ctcoeff);
145
146
154 void GetClusterPosition(Double_t ClusterCentre,
155 Double_t& xCluster, Int_t& side);
156
157
167 virtual Int_t GetModuleChannel(Int_t strip, Int_t side,
168 Int_t sensorId) const = 0;
169
170
177 Int_t GetSide(Double_t channel) const {
178 return ( channel < Double_t(GetNofStrips(0)) ? 0 : 1 );
179 }
180
181
189 virtual std::pair<Int_t, Int_t> GetStrip(Int_t channel,
190 Int_t sensorId) const = 0;
191
192
200 virtual Int_t IntersectClusters(BmnSsdCluster* clusterF,
201 BmnSsdCluster* clusterB) = 0;
202
203
213 Bool_t IsInside(Double_t x, Double_t y);
214
215
229 Double_t LorentzShift(Double_t z, Int_t chargeType,Double_t bY) const;
230
231
238 void ProduceCharge(BmnSsdSensorPoint* point);
239
240
250 virtual void PropagateCharge(Double_t x, Double_t y, Double_t z,
251 Double_t charge, Double_t bY,
252 Int_t side) = 0;
253
254
264 void RegisterCharge(Int_t side, Int_t strip,
265 Double_t charge, Double_t time) const;
266
267
272 Bool_t SelfTest();
273
274
275 private:
276
278 BmnSsdSensorDssd(BmnSsdSensorDssd& rhs) = delete;
279
280
282 BmnSsdSensorDssd& operator = (const BmnSsdSensorDssd& rhs) = delete;
283
284
285
286 ClassDef(BmnSsdSensorDssd,1);
287
288};
289
290
291#endif
Class characterising one event by a collection of links (indices) to data objects,...
Definition BmnEvent.h:26
Data class for SSD clusters.
Class representing an element of the SSD setup.
Auxiliary class for simulating physics processes in Silicon.
Class describing double-sided silicon strip sensors.
virtual Int_t FindHits(std::vector< BmnSsdCluster * > &clusters, TClonesArray *hitArray, BmnEvent *event, Double_t dTime)
Find hits from clusters.
Double_t fDz
Thickness in z [cm].
virtual Int_t GetNofStrips(Int_t side) const =0
Number of strips on front and back side.
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.
virtual Int_t IntersectClusters(BmnSsdCluster *clusterF, BmnSsdCluster *clusterB)=0
virtual Double_t GetPitch(Int_t side) const =0
Strip pitch on front and back side.
void PrintChargeStatus() const
Bool_t fIsSet
Flag whether sensor is properly initialised.
Double_t fDx
Dimension of active area in x [cm].
Double_t fDy
Dimension of active area in y [cm].
virtual void PropagateCharge(Double_t x, Double_t y, Double_t z, Double_t charge, Double_t bY, Int_t side)=0
Int_t GetSide(Double_t channel) const
virtual std::string ToString() const =0
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.
virtual void ModifyStripPitch(Double_t pitch)=0
Modify the strip pitch.
Double_t LorentzShift(Double_t z, Int_t chargeType, Double_t bY) const
Lorentz shift in the x coordinate.
void GetClusterPosition(Double_t ClusterCentre, Double_t &xCluster, Int_t &side)
virtual Int_t CalculateResponse(BmnSsdSensorPoint *point)
Analogue response to a track in the sensor.
void ProduceCharge(BmnSsdSensorPoint *point)
Generate charge as response to a sensor point.
virtual std::pair< Int_t, Int_t > GetStrip(Int_t channel, Int_t sensorId) const =0
virtual ~BmnSsdSensorDssd()
void CrossTalk(Double_t ctcoeff)
Bool_t IsInside(Double_t x, Double_t y)
Container class for a local point in a SSD sensor.
Class representing an instance of a sensor in the BMN-SSD.