BmnRoot
Loading...
Searching...
No Matches
BmnSsdSensorDssdStereo.h
Go to the documentation of this file.
1
7#ifndef BMNSSDSENSORDSSDSTEREO_H
8#define BMNSSDSENSORDSSDSTEREO_H 1
9
10#include <cassert>
11#include <string>
12#include "BmnSsdSensorDssd.h"
13
14class BmnSsdPhysics;
15
16
46{
47
48 public:
49
55 BmnSsdSensorDssdStereo(UInt_t address = 0, TGeoPhysicalNode* node = nullptr,
56 BmnSsdElement* mother = nullptr);
57
58
66 BmnSsdSensorDssdStereo(Double_t dy, Int_t nStrips, Double_t pitch,
67 Double_t stereoF, Double_t stereoB);
68
69
72
73
78 virtual Int_t GetNofStrips(Int_t) const { return fNofStrips; }
79
80
85 virtual Double_t GetPitch(Int_t) const { return fPitch; }
86
87
92 Double_t GetStereoAngle(Int_t side) const {
93 assert ( side == 0 || side == 1);
94 return ( side == 0 ? fStereoF : fStereoB );
95 }
96
97
104 virtual Bool_t Init();
105
106
112 virtual void ModifyStripPitch(Double_t pitch);
113
114
123 //Bool_t SetParameters(Double_t dy, Int_t nStrips, Double_t pitch,
124 // Double_t stereoF, Double_t stereoB);
125
126
128 std::string ToString() const;
129
130
131 protected:
132
134 Double_t fPitch;
135 Double_t fStereoF;
136 Double_t fStereoB;
137
139 Double_t fTanStereo[2];
140 Double_t fCosStereo[2];
141 Int_t fStripShift[2];
142 Double_t fErrorFac;
143
144
167 virtual void Diffusion(Double_t x, Double_t y, Double_t sigma, Int_t side,
168 Double_t& fracL, Double_t& fracC, Double_t& fracR);
169
170
180 virtual Int_t GetModuleChannel(Int_t strip, Int_t side,
181 Int_t sensorId) const;
182
183
191 virtual std::pair<Int_t, Int_t> GetStrip(Int_t channel,
192 Int_t sensorId) const;
193
194
201 virtual Int_t GetStripNumber(Double_t x, Double_t y, Int_t side) const;
202
203
223 Bool_t Intersect(Double_t xF, Double_t exF, Double_t xB, Double_t exB,
224 Double_t& x, Double_t& y, Double_t& varX, Double_t& varY,
225 Double_t& varXY);
226
227
235 virtual Int_t IntersectClusters(BmnSsdCluster* clusterF,
236 BmnSsdCluster* clusterB);
237
238
248 virtual void PropagateCharge(Double_t x, Double_t y, Double_t z,
249 Double_t charge, Double_t bY,
250 Int_t side);
251
252
253 private:
254
257
258
260 BmnSsdSensorDssdStereo& operator = (const BmnSsdSensorDssdStereo& rhs);
261
262
263
264 ClassDef(BmnSsdSensorDssdStereo,1);
265
266};
267
268
269#endif
Data class for SSD clusters.
Class representing an element of the SSD setup.
Auxiliary class for simulating physics processes in Silicon.
Detector response for DSSD sensors with stereo angles and cross-connection by double metal layers.
Int_t fNofStrips
Number of strips (same for front and back)
virtual Int_t GetModuleChannel(Int_t strip, Int_t side, Int_t sensorId) const
Get the readout channel in the module for a given strip.
Double_t GetStereoAngle(Int_t side) const
Stereo angle for front and back side.
virtual Int_t GetNofStrips(Int_t) const
Number of strips (same for front and back side)
Double_t fErrorFac
Shift in number of strips from bottom to top.
virtual Double_t GetPitch(Int_t) const
Strip pitch (same for front and back side)
Double_t fCosStereo[2]
tangent of stereo angle front/back side
virtual std::pair< Int_t, Int_t > GetStrip(Int_t channel, Int_t sensorId) const
Double_t fStereoF
Stereo angle front side [degrees].
Bool_t Intersect(Double_t xF, Double_t exF, Double_t xB, Double_t exB, Double_t &x, Double_t &y, Double_t &varX, Double_t &varY, Double_t &varXY)
virtual Int_t IntersectClusters(BmnSsdCluster *clusterF, BmnSsdCluster *clusterB)
virtual void Diffusion(Double_t x, Double_t y, Double_t sigma, Int_t side, Double_t &fracL, Double_t &fracC, Double_t &fracR)
Used for calculation of hit errors.
Int_t fStripShift[2]
cosine of stereo angle front/back side
std::string ToString() const
Set the internal sensor parameters.
virtual Int_t GetStripNumber(Double_t x, Double_t y, Int_t side) const
Get strip number from point coordinates.
Double_t fPitch
Strip pitch /same for front and back)
Double_t fStereoB
Stereo angle front back side [degrees].
virtual void ModifyStripPitch(Double_t pitch)
Modify the strip pitch.
virtual Bool_t Init()
Initialisation @value kTRUE if parameters and node are consistent.
virtual void PropagateCharge(Double_t x, Double_t y, Double_t z, Double_t charge, Double_t bY, Int_t side)
Class describing double-sided silicon strip sensors.