CbmRoot
Loading...
Searching...
No Matches
CbmStsRecoModule.h
Go to the documentation of this file.
1/* Copyright (C) 2020-2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Volker Friese [committer] */
4
10#ifndef CBMSTSRECOMODULE_H
11#define CBMSTSRECOMODULE_H 1
12
13
14#include "CbmStsCluster.h"
15#include "CbmStsHit.h"
16
17#include <TNamed.h>
18
19#include <mutex>
20
21class TGeoHMatrix;
26class CbmStsHit;
27class CbmStsDigi;
28class CbmStsModule;
29class CbmStsParModule;
30class CbmStsParSensor;
32
33
51class CbmStsRecoModule : public TNamed {
52
53 public:
54 struct Timings {
55 double timeSortDigi = 0;
56 double timeCluster = 0;
57 double timeSortCluster = 0;
58 double timeHits = 0;
59 };
60
63
64
75 CbmStsRecoModule(CbmStsModule* setupModule, const CbmStsParModule& parModule, const CbmStsParSensor& parSensor,
76 Double_t lorentzShiftF, Double_t lorentzShiftB);
77
78
81
82
85
86
88 virtual ~CbmStsRecoModule();
89
90
95 void AddDigiToQueue(const CbmStsDigi* digi, Int_t digiIndex);
96
97
101 const std::vector<CbmStsCluster>& GetClustersF() const { return fClustersF; }
102
103
107 const std::vector<CbmStsCluster>& GetClustersB() const { return fClustersB; }
108
109
113 const std::vector<CbmStsHit>& GetHits() const { return fHits; }
114
117 Timings GetTimings() const { return fTimings; }
118
119
121 void Reconstruct();
122
123 void SortDigis();
124
125 void FindClusters();
126
127 void SortClusters();
128
129 void FindHits();
130
131
133 void Reset();
134
135
136 TGeoHMatrix* getMatrix() { return fMatrix; }
137
138
140 std::string ToString() const;
141
150 void SetTimeCutClustersAbs(Double_t value) { fTimeCutClustersAbs = value; }
151
152
159 void SetTimeCutClustersSig(Double_t value) { fTimeCutClustersSig = value; }
160
161
170 void SetTimeCutDigisAbs(Double_t value) { fTimeCutDigisAbs = value; }
171
172
180 void SetTimeCutDigisSig(Double_t value) { fTimeCutDigisSig = value; }
181
182
183 private:
185 void Init();
186
187
188 private:
189 // --- Algorithms
194 std::mutex fLock{};
195
196 // --- Parameters
198 const CbmStsParModule* fParModule = nullptr;
199 const CbmStsParSensor* fParSensor = nullptr;
200 Double_t fDyActive = 0.;
201 UInt_t fNofStripsF = 0;
202 UInt_t fNofStripsB = 0;
203 Double_t fStripPitchF = 0.;
204 Double_t fStripPitchB = 0.;
205 Double_t fStereoFront = 0.;
206 Double_t fStereoBack = 0.;
207 TGeoHMatrix* fMatrix = nullptr;
208 Double_t fLorentzShiftF = 0.;
209 Double_t fLorentzShiftB = 0.;
210
211 // --- Data
212 std::vector<std::pair<const CbmStsDigi*, Long64_t>> fDigisF{};
213 std::vector<std::pair<const CbmStsDigi*, Long64_t>> fDigisB{};
214 std::vector<CbmStsCluster> fClustersF{};
215 std::vector<CbmStsCluster> fClustersB{};
216 std::vector<CbmStsHit> fHits{};
217
218 // --- Settings
219 Double_t fTimeCutDigisSig = 3.;
220 Double_t fTimeCutDigisAbs = -1.;
221 Double_t fTimeCutClustersSig = 4.;
222 Double_t fTimeCutClustersAbs = -1.;
223 Bool_t fConnectEdgeFront = kFALSE;
224 Bool_t fConnectEdgeBack = kFALSE;
225
226 // --- Time measurement
228
229
231};
232
233#endif /* CBMSTSRECOMODULE_H */
Data class for STS clusters.
Data class for a reconstructed hit in the STS.
Determination of cluster parameters.
Algorithm for cluster finding in a linear array of channels.
Algorithm for hit finding in sensors with orthogonal strips.
Algorithm for hit finding in the sensors of the CBM-STS.
Data class for a single-channel message in the STS.
Definition CbmStsDigi.h:40
data class for a reconstructed 3-d hit in the STS
Definition CbmStsHit.h:35
Class representing an instance of a readout unit in the CBM-STS.
Parameters for one STS module.
Parameters for operating conditions of a STS sensor.
Constructional parameters of a STS sensor.
Class for reconstruction in one STS module.
ClassDef(CbmStsRecoModule, 1)
Timings GetTimings() const
Time measurements.
std::mutex fLock
///< Algo
Double_t fStereoFront
Strip stereo angle front side [deg].
Bool_t fConnectEdgeFront
Round-the edge clustering front side.
void AddDigiToQueue(const CbmStsDigi *digi, Int_t digiIndex)
Add a digi to the processing queue.
TGeoHMatrix * getMatrix()
std::string ToString() const
Info to string.
CbmStsAlgoAnaCluster * fClusterAna
Double_t fLorentzShiftB
Average Lorentz shift back side [cm|.
void SetTimeCutDigisAbs(Double_t value)
Time cut on digis for cluster finding.
Double_t fTimeCutDigisAbs
Time cut for cluster finding (in ns)
CbmStsAlgoFindHitsOrtho * fHitFinderOrtho
///< Algo
void SetTimeCutClustersAbs(Double_t value)
Time cut on clusters for hit finding.
virtual ~CbmStsRecoModule()
Destructor.
CbmStsRecoModule & operator=(const CbmStsRecoModule &)=delete
Assignment operator (disabled)
TGeoHMatrix * fMatrix
Sensor position in global C.S. [cm].
Double_t fTimeCutClustersAbs
Time cut for hit finding (in sigma)
UInt_t fNofStripsF
Number of sensor strips front side.
Double_t fStripPitchF
Sensor strip pitch front side [cm].
void Init()
Set and check the needed parameters.
CbmStsRecoModule(const CbmStsRecoModule &)=delete
Copy constructor (disabled)
CbmStsAlgoFindHits * fHitFinder
///< Algo
Double_t fStereoBack
Strip stereo angle back side [deg].
std::vector< CbmStsCluster > fClustersF
const std::vector< CbmStsHit > & GetHits() const
Output hits.
std::vector< CbmStsHit > fHits
Double_t fTimeCutDigisSig
Time cut for cluster finding (in sigma)
Double_t fLorentzShiftF
Average Lorentz shift front side [cm|.
CbmStsAlgoFindClusters * fClusterFinder
///< Algo
Double_t fTimeCutClustersSig
Time cut for hit finding (in ns)
Double_t fDyActive
Active sensor size in y.
const std::vector< CbmStsCluster > & GetClustersB() const
Output back-side clusters.
Bool_t fConnectEdgeBack
Round-the edge clustering back side.
CbmStsModule * fSetupModule
void Reconstruct()
Perform reconstruction.
void SetTimeCutClustersSig(Double_t value)
Time cut on clusters for hit finding.
void Reset()
Clear input queue.
UInt_t fNofStripsB
Number of sensor strips back side.
void SetTimeCutDigisSig(Double_t value)
Time cut on digis for hit finding.
CbmStsRecoModule()
Default constructor.
std::vector< CbmStsCluster > fClustersB
std::vector< std::pair< const CbmStsDigi *, Long64_t > > fDigisF
Double_t fStripPitchB
Sensor strip pitch back side [cm].
const std::vector< CbmStsCluster > & GetClustersF() const
Output front-side clusters.
std::vector< std::pair< const CbmStsDigi *, Long64_t > > fDigisB
const CbmStsParModule * fParModule
const CbmStsParSensor * fParSensor