CbmRoot
CbmStsAlgoFindHits.h
Go to the documentation of this file.
1 
6 #ifndef CBMSTSALGOFINDHITS_H
7 #define CBMSTSALGOFINDHITS_H 1
8 
9 
10 #include <Rtypes.h>
11 
12 class TGeoHMatrix;
13 class CbmStsCluster;
14 class CbmStsHit;
15 class CbmStsParSensor;
16 
17 
35 
36 public:
39 
40 
43 
44 
47 
48 
50  virtual ~CbmStsAlgoFindHits() {};
51 
52 
70  Long64_t Exec(const std::vector<CbmStsCluster>& clustersF,
71  const std::vector<CbmStsCluster>& clustersB,
72  std::vector<CbmStsHit>& hits,
73  UInt_t address,
74  Double_t timeCutSig,
75  Double_t timeCutAbs,
76  Double_t dY,
77  UInt_t nStrips,
78  Double_t pitch,
79  Double_t stereoF,
80  Double_t stereoB,
81  Double_t lorentzF,
82  Double_t lorentzB,
83  TGeoHMatrix* matrix);
84 
85 
86 private:
100  void CreateHit(Double_t xLocal,
101  Double_t yLocal,
102  Double_t varX,
103  Double_t varY,
104  Double_t varXY,
105  const CbmStsCluster& clusterF,
106  const CbmStsCluster& clusterB,
107  UInt_t indexF,
108  UInt_t indexB,
109  Double_t du = 0.,
110  Double_t dv = 0.);
111 
112 
120  void
121  GetClusterPosition(Double_t ClusterCentre, Double_t& xCluster, Int_t& side);
122 
123 
130  Int_t GetSide(Double_t channel) const {
131  return (channel < Double_t(fNofStrips) ? 0 : 1);
132  }
133 
134 
142  std::pair<Int_t, Int_t> GetStrip(UInt_t channel) const;
143 
144 
164  Bool_t Intersect(Double_t xF,
165  Double_t exF,
166  Double_t xB,
167  Double_t exB,
168  Double_t& x,
169  Double_t& y,
170  Double_t& varX,
171  Double_t& varY,
172  Double_t& varXY);
173 
174 
184  Int_t IntersectClusters(const CbmStsCluster& clusterF,
185  const CbmStsCluster& clusterB,
186  UInt_t indexF,
187  UInt_t indexB);
188 
189 
199  Bool_t IsInside(Double_t x, Double_t y);
200 
201 
202 private:
203  UInt_t fAddress = 0;
204  Double_t fTimeCutSig = 0.;
205  Double_t fTimeCutAbs = 0.;
206  UInt_t fNofStrips = 0;
207  Double_t fDx = 0.;
208  Double_t fDy = 0.;
209  Double_t fPitch = 0.;
210  Double_t fStereoF = 0.;
211  Double_t fStereoB = 0.;
212  Double_t fLorentzF = 0.;
213  Double_t fLorentzB = 0.;
214  TGeoHMatrix* fMatrix = nullptr;
215  Double_t fTanStereoF = 0.;
216  Double_t fTanStereoB = 0.;
217  Double_t fErrorFac = 0.;
218 
220  std::vector<CbmStsHit>* fHits = nullptr;
221 
222 
224 };
225 
226 
227 #endif
CbmStsAlgoFindHits::fTanStereoF
Double_t fTanStereoF
///< Transformation matrix to global C.S.
Definition: CbmStsAlgoFindHits.h:215
CbmStsAlgoFindHits::fDx
Double_t fDx
Active size in x [cm].
Definition: CbmStsAlgoFindHits.h:207
CbmStsAlgoFindHits::IsInside
Bool_t IsInside(Double_t x, Double_t y)
Check whether a point (x,y) is inside the active area.
Definition: CbmStsAlgoFindHits.cxx:403
CbmStsCluster
Data class for STS clusters.
Definition: CbmStsCluster.h:31
CbmStsAlgoFindHits::CreateHit
void CreateHit(Double_t xLocal, Double_t yLocal, Double_t varX, Double_t varY, Double_t varXY, const CbmStsCluster &clusterF, const CbmStsCluster &clusterB, UInt_t indexF, UInt_t indexB, Double_t du=0., Double_t dv=0.)
Create a new hit in the output array.
Definition: CbmStsAlgoFindHits.cxx:29
CbmStsAlgoFindHits::fTimeCutSig
Double_t fTimeCutSig
Time cut on clusters in error units.
Definition: CbmStsAlgoFindHits.h:204
CbmStsAlgoFindHits::ClassDef
ClassDef(CbmStsAlgoFindHits, 1)
CbmStsAlgoFindHits::fDy
Double_t fDy
Active size in y [cm].
Definition: CbmStsAlgoFindHits.h:208
CbmStsAlgoFindHits::~CbmStsAlgoFindHits
virtual ~CbmStsAlgoFindHits()
Destructor
Definition: CbmStsAlgoFindHits.h:50
CbmStsAlgoFindHits::fPitch
Double_t fPitch
Strip pitch [cm].
Definition: CbmStsAlgoFindHits.h:209
CbmStsAlgoFindHits::fStereoF
Double_t fStereoF
Stereo angle front side [deg].
Definition: CbmStsAlgoFindHits.h:210
CbmStsAlgoFindHits::fLorentzB
Double_t fLorentzB
Lorentz shift correction back side [cm].
Definition: CbmStsAlgoFindHits.h:213
CbmStsAlgoFindHits::fTanStereoB
Double_t fTanStereoB
Tangent of stereo angle back side.
Definition: CbmStsAlgoFindHits.h:216
CbmStsAlgoFindHits::operator=
CbmStsAlgoFindHits & operator=(const CbmStsAlgoFindHits &)=delete
Assignment operator (disabled)
CbmStsAlgoFindHits::IntersectClusters
Int_t IntersectClusters(const CbmStsCluster &clusterF, const CbmStsCluster &clusterB, UInt_t indexF, UInt_t indexB)
Find the intersection points of two clusters.
Definition: CbmStsAlgoFindHits.cxx:310
CbmStsAlgoFindHits::GetStrip
std::pair< Int_t, Int_t > GetStrip(UInt_t channel) const
Get strip and side from module channel.
Definition: CbmStsAlgoFindHits.cxx:220
CbmStsHit
data class for a reconstructed 3-d hit in the STS
Definition: CbmStsHit.h:31
CbmStsParSensor
Constructional parameters of a STS sensor.
Definition: CbmStsParSensor.h:38
CbmStsAlgoFindHits
Algorithm for hit finding in the sensors of the CBM-STS.
Definition: CbmStsAlgoFindHits.h:34
CbmStsAlgoFindHits::fNofStrips
UInt_t fNofStrips
Number of strips.
Definition: CbmStsAlgoFindHits.h:206
CbmStsAlgoFindHits::fMatrix
TGeoHMatrix * fMatrix
Definition: CbmStsAlgoFindHits.h:214
CbmStsAlgoFindHits::fErrorFac
Double_t fErrorFac
For calculation of the hit error.
Definition: CbmStsAlgoFindHits.h:217
CbmStsAlgoFindHits::GetSide
Int_t GetSide(Double_t channel) const
Definition: CbmStsAlgoFindHits.h:130
CbmStsAlgoFindHits::CbmStsAlgoFindHits
CbmStsAlgoFindHits(const CbmStsAlgoFindHits &)=delete
Copy constructor (disabled)
CbmStsAlgoFindHits::fLorentzF
Double_t fLorentzF
Lorentz shift correction front side [cm].
Definition: CbmStsAlgoFindHits.h:212
CbmStsAlgoFindHits::fStereoB
Double_t fStereoB
Stereo angle back side [deg].
Definition: CbmStsAlgoFindHits.h:211
x
Double_t x
Definition: CbmMvdSensorDigiToHitTask.cxx:68
CbmStsAlgoFindHits::Intersect
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)
Intersection point of two strips / cluster centres.
Definition: CbmStsAlgoFindHits.cxx:246
y
Double_t y
Definition: CbmMvdSensorDigiToHitTask.cxx:68
hits
static vector< vector< QAHit > > hits
Definition: CbmTofHitFinderTBQA.cxx:114
CbmStsAlgoFindHits::fHits
std::vector< CbmStsHit > * fHits
Output vector of hits.
Definition: CbmStsAlgoFindHits.h:220
CbmStsAlgoFindHits::GetClusterPosition
void GetClusterPosition(Double_t ClusterCentre, Double_t &xCluster, Int_t &side)
Definition: CbmStsAlgoFindHits.cxx:185
CbmStsAlgoFindHits::fTimeCutAbs
Double_t fTimeCutAbs
Time cut on clusters in ns.
Definition: CbmStsAlgoFindHits.h:205
CbmStsAlgoFindHits::fAddress
UInt_t fAddress
Unique address for hits (sensor)
Definition: CbmStsAlgoFindHits.h:203
CbmStsAlgoFindHits::CbmStsAlgoFindHits
CbmStsAlgoFindHits()
Constructor.
Definition: CbmStsAlgoFindHits.cxx:24
CbmStsAlgoFindHits::Exec
Long64_t Exec(const std::vector< CbmStsCluster > &clustersF, const std::vector< CbmStsCluster > &clustersB, std::vector< CbmStsHit > &hits, UInt_t address, Double_t timeCutSig, Double_t timeCutAbs, Double_t dY, UInt_t nStrips, Double_t pitch, Double_t stereoF, Double_t stereoB, Double_t lorentzF, Double_t lorentzB, TGeoHMatrix *matrix)
Execute algorithm.
Definition: CbmStsAlgoFindHits.cxx:85