26#include <TGeoPhysicalNode.h>
28#include <TStopwatch.h>
44 const CbmStsParSensor& parSensor, Double_t lorentzShiftF, Double_t lorentzShiftB)
69 fDigisF.push_back({digi, digiIndex});
71 fDigisB.push_back({digi, digiIndex});
93 [](pair<const CbmStsDigi*, Int_t> digi1, pair<const CbmStsDigi*, Int_t> digi2) {
94 return digi1.first->GetTime() < digi2.first->GetTime();
97 [](pair<const CbmStsDigi*, Int_t> digi1, pair<const CbmStsDigi*, Int_t> digi2) {
98 return digi1.first->GetTime() < digi2.first->GetTime();
101 fTimings.timeSortDigi = timer.RealTime();
122 fTimings.timeCluster = timer.RealTime();
132 return (cluster1.GetTime() < cluster2.GetTime());
135 return (cluster1.GetTime() < cluster2.GetTime());
138 fTimings.timeSortCluster = timer.RealTime();
156 fTimings.timeHits = timer.RealTime();
185 TGeoPhysicalNode* sensorNode =
fSetupModule->GetDaughter(0)->GetPnode();
189 TGeoBBox*
shape =
dynamic_cast<TGeoBBox*
>(sensorNode->GetShape());
191 assert(TMath::Abs(2. *
shape->GetDX() -
fParSensor->GetPar(0)) < 0.001);
192 assert(TMath::Abs(2. *
shape->GetDY() -
fParSensor->GetPar(1)) < 0.001);
193 assert(TMath::Abs(2. *
shape->GetDZ() -
fParSensor->GetPar(2)) < 0.001);
196 fMatrix = sensorNode->GetMatrix();
254 std::stringstream ss;
ClassImp(CbmStsRecoModule) CbmStsRecoModule
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 STS clusters.
Data class for a single-channel message in the STS.
XPU_D uint16_t GetChannel() const
Channel number in module @value Channel number.
XPU_D int32_t GetAddress() const
Class representing an instance of a readout unit in the CBM-STS.
Parameters for one STS module.
Constructional parameters of a STS sensor.
Class for reconstruction in one STS module.
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.
std::string ToString() const
Info to string.
CbmStsAlgoAnaCluster * fClusterAna
Double_t fLorentzShiftB
Average Lorentz shift back side [cm|.
Double_t fTimeCutDigisAbs
Time cut for cluster finding (in ns)
CbmStsAlgoFindHitsOrtho * fHitFinderOrtho
///< Algo
virtual ~CbmStsRecoModule()
Destructor.
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.
CbmStsAlgoFindHits * fHitFinder
///< Algo
Double_t fStereoBack
Strip stereo angle back side [deg].
std::vector< CbmStsCluster > fClustersF
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.
Bool_t fConnectEdgeBack
Round-the edge clustering back side.
CbmStsModule * fSetupModule
void Reconstruct()
Perform reconstruction.
void Reset()
Clear input queue.
UInt_t fNofStripsB
Number of sensor strips back side.
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].
std::vector< std::pair< const CbmStsDigi *, Long64_t > > fDigisB
const CbmStsParModule * fParModule
const CbmStsParSensor * fParSensor
int32_t GetMotherAddress(int32_t address, int32_t level)
Construct the address of an element from the address of a descendant element.