CbmRoot
Loading...
Searching...
No Matches
CbmStsRecoModule Class Reference

Class for reconstruction in one STS module. More...

#include <CbmStsRecoModule.h>

Inheritance diagram for CbmStsRecoModule:
[legend]
Collaboration diagram for CbmStsRecoModule:
[legend]

Classes

struct  Timings
 

Public Member Functions

 CbmStsRecoModule ()
 Default constructor.
 
 CbmStsRecoModule (CbmStsModule *setupModule, const CbmStsParModule &parModule, const CbmStsParSensor &parSensor, Double_t lorentzShiftF, Double_t lorentzShiftB)
 Standard constructor.
 
 CbmStsRecoModule (const CbmStsRecoModule &)=delete
 Copy constructor (disabled)
 
CbmStsRecoModuleoperator= (const CbmStsRecoModule &)=delete
 Assignment operator (disabled)
 
virtual ~CbmStsRecoModule ()
 Destructor.
 
void AddDigiToQueue (const CbmStsDigi *digi, Int_t digiIndex)
 Add a digi to the processing queue.
 
const std::vector< CbmStsCluster > & GetClustersF () const
 Output front-side clusters.
 
const std::vector< CbmStsCluster > & GetClustersB () const
 Output back-side clusters.
 
const std::vector< CbmStsHit > & GetHits () const
 Output hits.
 
Timings GetTimings () const
 Time measurements.
 
void Reconstruct ()
 Perform reconstruction.
 
void SortDigis ()
 
void FindClusters ()
 
void SortClusters ()
 
void FindHits ()
 
void Reset ()
 Clear input queue.
 
TGeoHMatrix * getMatrix ()
 
std::string ToString () const
 Info to string.
 
void SetTimeCutClustersAbs (Double_t value)
 Time cut on clusters for hit finding.
 
void SetTimeCutClustersSig (Double_t value)
 Time cut on clusters for hit finding.
 
void SetTimeCutDigisAbs (Double_t value)
 Time cut on digis for cluster finding.
 
void SetTimeCutDigisSig (Double_t value)
 Time cut on digis for hit finding.
 

Private Member Functions

void Init ()
 Set and check the needed parameters.
 
 ClassDef (CbmStsRecoModule, 1)
 

Private Attributes

CbmStsAlgoAnaClusterfClusterAna = nullptr
 
CbmStsAlgoFindClustersfClusterFinder = nullptr
 ///< Algo
 
CbmStsAlgoFindHitsfHitFinder = nullptr
 ///< Algo
 
CbmStsAlgoFindHitsOrthofHitFinderOrtho = nullptr
 ///< Algo
 
std::mutex fLock {}
 ///< Algo
 
CbmStsModulefSetupModule = nullptr
 
const CbmStsParModulefParModule = nullptr
 
const CbmStsParSensorfParSensor = nullptr
 
Double_t fDyActive = 0.
 Active sensor size in y.
 
UInt_t fNofStripsF = 0
 Number of sensor strips front side.
 
UInt_t fNofStripsB = 0
 Number of sensor strips back side.
 
Double_t fStripPitchF = 0.
 Sensor strip pitch front side [cm].
 
Double_t fStripPitchB = 0.
 Sensor strip pitch back side [cm].
 
Double_t fStereoFront = 0.
 Strip stereo angle front side [deg].
 
Double_t fStereoBack = 0.
 Strip stereo angle back side [deg].
 
TGeoHMatrix * fMatrix = nullptr
 Sensor position in global C.S. [cm].
 
Double_t fLorentzShiftF = 0.
 Average Lorentz shift front side [cm|.
 
Double_t fLorentzShiftB = 0.
 Average Lorentz shift back side [cm|.
 
std::vector< std::pair< const CbmStsDigi *, Long64_t > > fDigisF {}
 
std::vector< std::pair< const CbmStsDigi *, Long64_t > > fDigisB {}
 
std::vector< CbmStsClusterfClustersF {}
 
std::vector< CbmStsClusterfClustersB {}
 
std::vector< CbmStsHitfHits {}
 
Double_t fTimeCutDigisSig = 3.
 Time cut for cluster finding (in sigma)
 
Double_t fTimeCutDigisAbs = -1.
 Time cut for cluster finding (in ns)
 
Double_t fTimeCutClustersSig = 4.
 Time cut for hit finding (in ns)
 
Double_t fTimeCutClustersAbs = -1.
 Time cut for hit finding (in sigma)
 
Bool_t fConnectEdgeFront = kFALSE
 Round-the edge clustering front side.
 
Bool_t fConnectEdgeBack = kFALSE
 Round-the edge clustering back side.
 
Timings fTimings
 

Detailed Description

Class for reconstruction in one STS module.

Author
Volker Friese v.fri.nosp@m.ese@.nosp@m.gsi.d.nosp@m.e
Since
05.04.2017
Date
21.03.2020

The module represents one module/sensor in the STS setup. Reconstruction in the modules is independent from other modules and can thus pe performed in parallel. The reconstruction module performs cluster finding, cluster analysis and hit finding.

The implementation assumes the module to be connected to exactly one double-sided strip sensor. The digi channel number must equal to the strip number on the front side of the sensor, and to strip number + number of strips on the back side.

Definition at line 51 of file CbmStsRecoModule.h.

Constructor & Destructor Documentation

◆ CbmStsRecoModule() [1/3]

CbmStsRecoModule::CbmStsRecoModule ( )

Default constructor.

◆ CbmStsRecoModule() [2/3]

CbmStsRecoModule::CbmStsRecoModule ( CbmStsModule * setupModule,
const CbmStsParModule & parModule,
const CbmStsParSensor & parSensor,
Double_t lorentzShiftF,
Double_t lorentzShiftB )

Standard constructor.

Parameters
setupModuleCorresponding setup element
parModuleModule parameters
parSensorSensor parameters
lorentzShiftFAverage Lorentz shift sensor front side [cm]
lorentzShiftBAverage Lorentz shift sensor back side [cm]

The Lorentz shift will be used to correct the hit position in hit finding.

Definition at line 43 of file CbmStsRecoModule.cxx.

References Init().

◆ CbmStsRecoModule() [3/3]

CbmStsRecoModule::CbmStsRecoModule ( const CbmStsRecoModule & )
delete

Copy constructor (disabled)

◆ ~CbmStsRecoModule()

CbmStsRecoModule::~CbmStsRecoModule ( )
virtual

Destructor.

Definition at line 57 of file CbmStsRecoModule.cxx.

Member Function Documentation

◆ AddDigiToQueue()

void CbmStsRecoModule::AddDigiToQueue ( const CbmStsDigi * digi,
Int_t digiIndex )

Add a digi to the processing queue.

Parameters
digiPointer to digi object
digiIndexIndex of digi in input array

Definition at line 62 of file CbmStsRecoModule.cxx.

References fDigisB, fDigisF, fLock, fNofStripsB, fNofStripsF, fSetupModule, CbmStsDigi::GetAddress(), CbmStsElement::GetAddress(), CbmStsDigi::GetChannel(), CbmStsAddress::GetMotherAddress(), and kStsModule.

◆ ClassDef()

CbmStsRecoModule::ClassDef ( CbmStsRecoModule ,
1  )
private

◆ FindClusters()

◆ FindHits()

◆ GetClustersB()

const std::vector< CbmStsCluster > & CbmStsRecoModule::GetClustersB ( ) const
inline

Output back-side clusters.

Returns
Vector of back-side clusters

Definition at line 107 of file CbmStsRecoModule.h.

References fClustersB.

◆ GetClustersF()

const std::vector< CbmStsCluster > & CbmStsRecoModule::GetClustersF ( ) const
inline

Output front-side clusters.

Returns
Vector of front-side clusters

Definition at line 101 of file CbmStsRecoModule.h.

References fClustersF.

◆ GetHits()

const std::vector< CbmStsHit > & CbmStsRecoModule::GetHits ( ) const
inline

Output hits.

Returns
Vector of hits

Definition at line 113 of file CbmStsRecoModule.h.

References fHits.

◆ getMatrix()

TGeoHMatrix * CbmStsRecoModule::getMatrix ( )
inline

Definition at line 136 of file CbmStsRecoModule.h.

References fMatrix.

Referenced by CbmRecoSts::CreateModules().

◆ GetTimings()

Timings CbmStsRecoModule::GetTimings ( ) const
inline

Time measurements.

Definition at line 117 of file CbmStsRecoModule.h.

References fTimings.

◆ Init()

◆ operator=()

CbmStsRecoModule & CbmStsRecoModule::operator= ( const CbmStsRecoModule & )
delete

Assignment operator (disabled)

◆ Reconstruct()

void CbmStsRecoModule::Reconstruct ( )

Perform reconstruction.

Definition at line 78 of file CbmStsRecoModule.cxx.

References FindClusters(), FindHits(), SortClusters(), and SortDigis().

◆ Reset()

void CbmStsRecoModule::Reset ( )

Clear input queue.

Definition at line 163 of file CbmStsRecoModule.cxx.

References fDigisB, and fDigisF.

◆ SetTimeCutClustersAbs()

void CbmStsRecoModule::SetTimeCutClustersAbs ( Double_t value)
inline

Time cut on clusters for hit finding.

Parameters
valueMaximal time difference between two clusters in a hit [ns]

Two clusters are considered compatible if their time difference is below value. Setting this cut parameter to a positive value will override the time cut defined by SetTimeCutClustersSig.

Definition at line 150 of file CbmStsRecoModule.h.

References fTimeCutClustersAbs.

Referenced by CbmRecoSts::CreateModules().

◆ SetTimeCutClustersSig()

void CbmStsRecoModule::SetTimeCutClustersSig ( Double_t value)
inline

Time cut on clusters for hit finding.

Parameters
valueMaximal time difference in units of error

Two clusters are considered compatible if their time difference is below value * sqrt(terr1**2 + terr2*+2).

Definition at line 159 of file CbmStsRecoModule.h.

References fTimeCutClustersSig.

Referenced by CbmRecoSts::CreateModules().

◆ SetTimeCutDigisAbs()

void CbmStsRecoModule::SetTimeCutDigisAbs ( Double_t value)
inline

Time cut on digis for cluster finding.

Parameters
valueMaximal time difference between two digis in a cluster [ns]

Two digis are considered compatible if their time difference is below value. Setting this cut parameter to a positive value will override the time cut defined by SetTimeCutDigisSig.

Definition at line 170 of file CbmStsRecoModule.h.

References fTimeCutDigisAbs.

Referenced by CbmRecoSts::CreateModules().

◆ SetTimeCutDigisSig()

void CbmStsRecoModule::SetTimeCutDigisSig ( Double_t value)
inline

Time cut on digis for hit finding.

Parameters
valueMaximal time difference in units of error

Two digis are considered compatible if their time difference is below value * sqrt2 * sigma(t), where the time error of the digis is assumed to be the same.

Definition at line 180 of file CbmStsRecoModule.h.

References fTimeCutDigisSig.

Referenced by CbmRecoSts::CreateModules().

◆ SortClusters()

void CbmStsRecoModule::SortClusters ( )

◆ SortDigis()

void CbmStsRecoModule::SortDigis ( )

Definition at line 86 of file CbmStsRecoModule.cxx.

References fDigisB, fDigisF, fTimings, and CbmStsRecoModule::Timings::timeSortDigi.

Referenced by Reconstruct().

◆ ToString()

std::string CbmStsRecoModule::ToString ( ) const

Info to string.

Definition at line 252 of file CbmStsRecoModule.cxx.

References fNofStripsB, fNofStripsF, fSetupModule, and CbmStsModule::ToString().

Member Data Documentation

◆ fClusterAna

CbmStsAlgoAnaCluster* CbmStsRecoModule::fClusterAna = nullptr
private

Definition at line 190 of file CbmStsRecoModule.h.

Referenced by FindClusters(), and Init().

◆ fClusterFinder

CbmStsAlgoFindClusters* CbmStsRecoModule::fClusterFinder = nullptr
private

///< Algo

Definition at line 191 of file CbmStsRecoModule.h.

Referenced by FindClusters(), and Init().

◆ fClustersB

std::vector<CbmStsCluster> CbmStsRecoModule::fClustersB {}
private

Definition at line 215 of file CbmStsRecoModule.h.

Referenced by FindClusters(), FindHits(), GetClustersB(), and SortClusters().

◆ fClustersF

std::vector<CbmStsCluster> CbmStsRecoModule::fClustersF {}
private

Definition at line 214 of file CbmStsRecoModule.h.

Referenced by FindClusters(), FindHits(), GetClustersF(), and SortClusters().

◆ fConnectEdgeBack

Bool_t CbmStsRecoModule::fConnectEdgeBack = kFALSE
private

Round-the edge clustering back side.

Definition at line 224 of file CbmStsRecoModule.h.

Referenced by FindClusters(), and Init().

◆ fConnectEdgeFront

Bool_t CbmStsRecoModule::fConnectEdgeFront = kFALSE
private

Round-the edge clustering front side.

Definition at line 223 of file CbmStsRecoModule.h.

Referenced by FindClusters(), and Init().

◆ fDigisB

std::vector<std::pair<const CbmStsDigi*, Long64_t> > CbmStsRecoModule::fDigisB {}
private

Definition at line 213 of file CbmStsRecoModule.h.

Referenced by AddDigiToQueue(), FindClusters(), Reset(), and SortDigis().

◆ fDigisF

std::vector<std::pair<const CbmStsDigi*, Long64_t> > CbmStsRecoModule::fDigisF {}
private

Definition at line 212 of file CbmStsRecoModule.h.

Referenced by AddDigiToQueue(), FindClusters(), Reset(), and SortDigis().

◆ fDyActive

Double_t CbmStsRecoModule::fDyActive = 0.
private

Active sensor size in y.

Definition at line 200 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fHitFinder

CbmStsAlgoFindHits* CbmStsRecoModule::fHitFinder = nullptr
private

///< Algo

Definition at line 192 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fHitFinderOrtho

CbmStsAlgoFindHitsOrtho* CbmStsRecoModule::fHitFinderOrtho = nullptr
private

///< Algo

Definition at line 193 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fHits

std::vector<CbmStsHit> CbmStsRecoModule::fHits {}
private

Definition at line 216 of file CbmStsRecoModule.h.

Referenced by FindHits(), and GetHits().

◆ fLock

std::mutex CbmStsRecoModule::fLock {}
private

///< Algo

Definition at line 194 of file CbmStsRecoModule.h.

Referenced by AddDigiToQueue().

◆ fLorentzShiftB

Double_t CbmStsRecoModule::fLorentzShiftB = 0.
private

Average Lorentz shift back side [cm|.

Definition at line 209 of file CbmStsRecoModule.h.

Referenced by FindHits().

◆ fLorentzShiftF

Double_t CbmStsRecoModule::fLorentzShiftF = 0.
private

Average Lorentz shift front side [cm|.

Definition at line 208 of file CbmStsRecoModule.h.

Referenced by FindHits().

◆ fMatrix

TGeoHMatrix* CbmStsRecoModule::fMatrix = nullptr
private

Sensor position in global C.S. [cm].

Definition at line 207 of file CbmStsRecoModule.h.

Referenced by FindHits(), getMatrix(), and Init().

◆ fNofStripsB

UInt_t CbmStsRecoModule::fNofStripsB = 0
private

Number of sensor strips back side.

Definition at line 202 of file CbmStsRecoModule.h.

Referenced by AddDigiToQueue(), FindClusters(), FindHits(), Init(), and ToString().

◆ fNofStripsF

UInt_t CbmStsRecoModule::fNofStripsF = 0
private

Number of sensor strips front side.

Definition at line 201 of file CbmStsRecoModule.h.

Referenced by AddDigiToQueue(), FindClusters(), FindHits(), Init(), and ToString().

◆ fParModule

const CbmStsParModule* CbmStsRecoModule::fParModule = nullptr
private

Definition at line 198 of file CbmStsRecoModule.h.

Referenced by FindClusters().

◆ fParSensor

const CbmStsParSensor* CbmStsRecoModule::fParSensor = nullptr
private

Definition at line 199 of file CbmStsRecoModule.h.

Referenced by Init().

◆ fSetupModule

CbmStsModule* CbmStsRecoModule::fSetupModule = nullptr
private

Definition at line 197 of file CbmStsRecoModule.h.

Referenced by AddDigiToQueue(), FindClusters(), FindHits(), Init(), and ToString().

◆ fStereoBack

Double_t CbmStsRecoModule::fStereoBack = 0.
private

Strip stereo angle back side [deg].

Definition at line 206 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fStereoFront

Double_t CbmStsRecoModule::fStereoFront = 0.
private

Strip stereo angle front side [deg].

Definition at line 205 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fStripPitchB

Double_t CbmStsRecoModule::fStripPitchB = 0.
private

Sensor strip pitch back side [cm].

Definition at line 204 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fStripPitchF

Double_t CbmStsRecoModule::fStripPitchF = 0.
private

Sensor strip pitch front side [cm].

Definition at line 203 of file CbmStsRecoModule.h.

Referenced by FindHits(), and Init().

◆ fTimeCutClustersAbs

Double_t CbmStsRecoModule::fTimeCutClustersAbs = -1.
private

Time cut for hit finding (in sigma)

Definition at line 222 of file CbmStsRecoModule.h.

Referenced by FindHits(), and SetTimeCutClustersAbs().

◆ fTimeCutClustersSig

Double_t CbmStsRecoModule::fTimeCutClustersSig = 4.
private

Time cut for hit finding (in ns)

Definition at line 221 of file CbmStsRecoModule.h.

Referenced by FindHits(), and SetTimeCutClustersSig().

◆ fTimeCutDigisAbs

Double_t CbmStsRecoModule::fTimeCutDigisAbs = -1.
private

Time cut for cluster finding (in ns)

Definition at line 220 of file CbmStsRecoModule.h.

Referenced by FindClusters(), and SetTimeCutDigisAbs().

◆ fTimeCutDigisSig

Double_t CbmStsRecoModule::fTimeCutDigisSig = 3.
private

Time cut for cluster finding (in sigma)

Definition at line 219 of file CbmStsRecoModule.h.

Referenced by FindClusters(), and SetTimeCutDigisSig().

◆ fTimings

Timings CbmStsRecoModule::fTimings
private

Definition at line 227 of file CbmStsRecoModule.h.

Referenced by FindClusters(), FindHits(), GetTimings(), SortClusters(), and SortDigis().


The documentation for this class was generated from the following files: