CbmRoot
CbmRecoSts Class Reference

Task class for local reconstruction in the STS. More...

#include <CbmRecoSts.h>

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

Public Member Functions

 CbmRecoSts (ECbmRecoMode mode=kCbmRecoTimeslice, Bool_t writeClusters=kFALSE, Bool_t runParallel=kFALSE)
 Constructor. More...
 
 CbmRecoSts (const CbmRecoSts &)=delete
 Copy constructor (disabled) More...
 
CbmRecoSts operator= (const CbmRecoSts &)=delete
 Assignment operator (disabled) More...
 
virtual ~CbmRecoSts ()
 Destructor
More...
 
virtual void Exec (Option_t *opt)
 Task execution. More...
 
virtual void Finish ()
 End-of-run action. More...
 
TClonesArray * GetClusters ()
 Access to output array of clusters. More...
 
virtual InitStatus Init ()
 Initialisation. More...
 
void SetEventMode (Bool_t choice=kTRUE)
 Set event-by-event mode. More...
 
void SetMode (ECbmRecoMode mode)
 Set execution mode. More...
 
virtual void SetParContainers ()
 Define the needed parameter containers. More...
 
void SetTimeCutClustersAbs (Double_t value)
 Time cut on clusters for hit finding. More...
 
void SetTimeCutClustersSig (Double_t value)
 Time cut on clusters for hit finding. More...
 
void SetTimeCutDigisAbs (Double_t value)
 Time cut on digis for cluster finding. More...
 
void SetTimeCutDigisSig (Double_t value)
 Time cut on digis for hit finding. More...
 
void UseModulePar (CbmStsParModule *modulePar)
 User-defined module parameters. More...
 
void UseSensorCond (CbmStsParSensorCond *sensorCond)
 User-defined sensor parameters. More...
 
void UseSensorPar (CbmStsParSensor *sensorPar)
 User-defined sensor parameters. More...
 

Private Member Functions

std::pair< Double_t, Double_t > LorentzShift (const CbmStsParSensorCond &conditions, Double_t dZ, Double_t bY)
 Average Lorentz Shift in a sensor. More...
 
UInt_t CreateModules ()
 Instantiate reconstruction modules @value Number of modules created. More...
 
void GetSensorParameters (CbmStsElement *geoSensor)
 Get the sensor parameters. More...
 
void ProcessData (CbmEvent *event=nullptr)
 Process one time slice or event. More...
 
 ClassDef (CbmRecoSts, 1)
 

Private Attributes

TClonesArray * fEvents = nullptr
 
CbmDigiManagerfDigiManager = nullptr
 Input array of events. More...
 
TClonesArray * fClusters = nullptr
 Interface to digi branch. More...
 
TClonesArray * fHits = nullptr
 Output cluster array. More...
 
CbmStsSetupfSetup = nullptr
 Output hit array. More...
 
CbmStsParSimfParSim = nullptr
 Instance of STS setup. More...
 
CbmStsParSetModulefParSetModule = nullptr
 Module parameters. More...
 
CbmStsParSetSensorfParSetSensor = nullptr
 Sensor parameters. More...
 
CbmStsParSetSensorCondfParSetCond = nullptr
 Sensor conditions. More...
 
CbmStsParAsicfUserParAsic = nullptr
 
CbmStsParModulefUserParModule = nullptr
 
CbmStsParSensorfUserParSensor = nullptr
 
CbmStsParSensorCondfUserParSensorCond = nullptr
 
ECbmRecoMode fMode = kCbmRecoEvent
 Time-slice or event. More...
 
Double_t fTimeCutDigisSig = 3.
 Time cut for cluster finding. More...
 
Double_t fTimeCutDigisAbs = -1.
 Time cut for cluster finding [ns]. More...
 
Double_t fTimeCutClustersSig = 4.
 Time cut for hit finding. More...
 
Double_t fTimeCutClustersAbs = -1.
 Time cut for hit finding [ns]. More...
 
Bool_t fWriteClusters = kFALSE
 Write clusters to tree. More...
 
Bool_t fRunParallel = kFALSE
 Use OpenMP multithreading. More...
 
TStopwatch fTimer {}
 
Int_t fNofTimeslices = 0
 ROOT timer. More...
 
Int_t fNofEvents = 0
 Number of events processed. More...
 
Double_t fNofDigis = 0
 Total number of digis processed. More...
 
Double_t fNofDigisUsed = 0
 Total number of used digis. More...
 
Double_t fNofDigisIgnored = 0
 Total number of ignored digis. More...
 
Double_t fNofClusters = 0
 Total number of clusters produced. More...
 
Double_t fNofHits = 0
 Total number of clusters produced. More...
 
Double_t fTimeTot = 0.
 Total execution time. More...
 
Double_t fTime1 = 0.
 Time for resetting modules. More...
 
Double_t fTime2 = 0.
 Time for distributing data. More...
 
Double_t fTime3 = 0.
 Time for reconstruction. More...
 
Double_t fTime4 = 0.
 Time for output results. More...
 
std::map< UInt_t, CbmStsRecoModule * > fModules {}
 
std::vector< CbmStsRecoModule * > fModuleIndex {}
 

Detailed Description

Task class for local reconstruction in the STS.

Author
Volker Friese v.fri.nosp@m.ese@.nosp@m.gsi.d.nosp@m.e
Florian Boeck (FIAS)
Since
16.06.2014
Date
22.03.2019

Local reconstruction in the STS comprises cluster finding, cluster analysis, and hit finding. All these tasks are performed separately on each module, which can be parallelised.

In the mode kCbmRecoTimeslice, the complete input array of digis is processed. In the mode kCbmRecoEvent, only digis belonging to the respective event are processed.

Parallelisation using OpenMP was introduced by F. Boek from FIAS.

Definition at line 54 of file CbmRecoSts.h.

Constructor & Destructor Documentation

◆ CbmRecoSts() [1/2]

CbmRecoSts::CbmRecoSts ( ECbmRecoMode  mode = kCbmRecoTimeslice,
Bool_t  writeClusters = kFALSE,
Bool_t  runParallel = kFALSE 
)

Constructor.

◆ CbmRecoSts() [2/2]

CbmRecoSts::CbmRecoSts ( const CbmRecoSts )
delete

Copy constructor (disabled)

◆ ~CbmRecoSts()

CbmRecoSts::~CbmRecoSts ( )
virtual

Destructor

Definition at line 51 of file CbmRecoSts.cxx.

Member Function Documentation

◆ ClassDef()

CbmRecoSts::ClassDef ( CbmRecoSts  ,
 
)
private

◆ CreateModules()

◆ Exec()

void CbmRecoSts::Exec ( Option_t *  opt)
virtual

Task execution.

Definition at line 128 of file CbmRecoSts.cxx.

References fClusters, fEvents, fHits, fMode, fNofTimeslices, kCbmRecoTimeslice, and ProcessData().

◆ Finish()

void CbmRecoSts::Finish ( )
virtual

◆ GetClusters()

TClonesArray* CbmRecoSts::GetClusters ( )
inline

Access to output array of clusters.

Definition at line 84 of file CbmRecoSts.h.

References fClusters.

◆ GetSensorParameters()

void CbmRecoSts::GetSensorParameters ( CbmStsElement geoSensor)
private

Get the sensor parameters.

Parameters
geoSensorPointer to setup sensor

◆ Init()

◆ LorentzShift()

std::pair< Double_t, Double_t > CbmRecoSts::LorentzShift ( const CbmStsParSensorCond conditions,
Double_t  dZ,
Double_t  bY 
)
private

Average Lorentz Shift in a sensor.

Parameters
conditionsSensor operating conditions
dZSensor thickness [cm]
bYy component of magnetic field in sensor centre
Returns
Mean Lorentz shift front side and back side [cm]

The Lorentz shift will be corrected for in hit finding.

Definition at line 303 of file CbmRecoSts.cxx.

References CbmStsParSensorCond::GetHallMobility(), CbmStsParSensorCond::GetVbias(), and CbmStsParSensorCond::GetVfd().

Referenced by CreateModules().

◆ operator=()

CbmRecoSts CbmRecoSts::operator= ( const CbmRecoSts )
delete

Assignment operator (disabled)

◆ ProcessData()

◆ SetEventMode()

void CbmRecoSts::SetEventMode ( Bool_t  choice = kTRUE)
inline

Set event-by-event mode.

Parameters
choiceIf true, event-by-event mode is used

In the event-by-event mode, the event objects in the input tree are used, and events are processed one after the other. An event builder has to be run before, creating the event objects. By default, time-slice mode is applied.

Alternative to using SetMode.

Definition at line 101 of file CbmRecoSts.h.

References fMode, kCbmRecoEvent, and kCbmRecoTimeslice.

◆ SetMode()

void CbmRecoSts::SetMode ( ECbmRecoMode  mode)
inline

Set execution mode.

Parameters
modeTime-slice or event

In the time-slice mode, the entire time-slice (input arrays) will be processed. In the event mode, events read from the event branch are processed one after the other.

Definition at line 113 of file CbmRecoSts.h.

References fMode.

◆ SetParContainers()

void CbmRecoSts::SetParContainers ( )
virtual

Define the needed parameter containers.

Definition at line 481 of file CbmRecoSts.cxx.

References fParSetCond, fParSetModule, fParSetSensor, and fParSim.

◆ SetTimeCutClustersAbs()

void CbmRecoSts::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 128 of file CbmRecoSts.h.

References fTimeCutClustersAbs.

◆ SetTimeCutClustersSig()

void CbmRecoSts::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 137 of file CbmRecoSts.h.

References fTimeCutClustersSig.

◆ SetTimeCutDigisAbs()

void CbmRecoSts::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 148 of file CbmRecoSts.h.

References fTimeCutDigisAbs.

◆ SetTimeCutDigisSig()

void CbmRecoSts::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 158 of file CbmRecoSts.h.

References fTimeCutDigisSig.

◆ UseModulePar()

void CbmRecoSts::UseModulePar ( CbmStsParModule modulePar)
inline

User-defined module parameters.

Parameters
parModuleModule parameter object

If defined, these parameters will be used for all modules instead of those found in the runtimeDb.

Definition at line 167 of file CbmRecoSts.h.

References fUserParModule.

◆ UseSensorCond()

void CbmRecoSts::UseSensorCond ( CbmStsParSensorCond sensorCond)
inline

User-defined sensor parameters.

Parameters
parModuleSensor parameter object

If defined, these parameters will be used for all sensors instead of those found in the runtimeDb.

Definition at line 176 of file CbmRecoSts.h.

References fUserParSensorCond.

◆ UseSensorPar()

void CbmRecoSts::UseSensorPar ( CbmStsParSensor sensorPar)
inline

User-defined sensor parameters.

Parameters
parModuleSensor parameter object

If defined, these parameters will be used for all sensors instead of those found in the runtimeDb.

Definition at line 187 of file CbmRecoSts.h.

References fUserParSensor.

Member Data Documentation

◆ fClusters

TClonesArray* CbmRecoSts::fClusters = nullptr
private

Interface to digi branch.

Definition at line 227 of file CbmRecoSts.h.

Referenced by Exec(), GetClusters(), Init(), and ProcessData().

◆ fDigiManager

CbmDigiManager* CbmRecoSts::fDigiManager = nullptr
private

Input array of events.

Definition at line 226 of file CbmRecoSts.h.

Referenced by Init(), and ProcessData().

◆ fEvents

TClonesArray* CbmRecoSts::fEvents = nullptr
private

Definition at line 225 of file CbmRecoSts.h.

Referenced by Exec(), and Init().

◆ fHits

TClonesArray* CbmRecoSts::fHits = nullptr
private

Output cluster array.

Definition at line 228 of file CbmRecoSts.h.

Referenced by Exec(), Init(), and ProcessData().

◆ fMode

ECbmRecoMode CbmRecoSts::fMode = kCbmRecoEvent
private

Time-slice or event.

Definition at line 244 of file CbmRecoSts.h.

Referenced by Exec(), Finish(), Init(), SetEventMode(), and SetMode().

◆ fModuleIndex

std::vector<CbmStsRecoModule*> CbmRecoSts::fModuleIndex {}
private

Definition at line 269 of file CbmRecoSts.h.

Referenced by CreateModules(), and ProcessData().

◆ fModules

std::map<UInt_t, CbmStsRecoModule*> CbmRecoSts::fModules {}
private

Definition at line 268 of file CbmRecoSts.h.

Referenced by CreateModules(), and ProcessData().

◆ fNofClusters

Double_t CbmRecoSts::fNofClusters = 0
private

Total number of clusters produced.

Definition at line 259 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fNofDigis

Double_t CbmRecoSts::fNofDigis = 0
private

Total number of digis processed.

Definition at line 256 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fNofDigisIgnored

Double_t CbmRecoSts::fNofDigisIgnored = 0
private

Total number of ignored digis.

Definition at line 258 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fNofDigisUsed

Double_t CbmRecoSts::fNofDigisUsed = 0
private

Total number of used digis.

Definition at line 257 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fNofEvents

Int_t CbmRecoSts::fNofEvents = 0
private

Number of events processed.

Definition at line 255 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fNofHits

Double_t CbmRecoSts::fNofHits = 0
private

Total number of clusters produced.

Definition at line 260 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fNofTimeslices

Int_t CbmRecoSts::fNofTimeslices = 0
private

ROOT timer.

Number of time slices processed

Definition at line 254 of file CbmRecoSts.h.

Referenced by Exec(), Finish(), and ProcessData().

◆ fParSetCond

CbmStsParSetSensorCond* CbmRecoSts::fParSetCond = nullptr
private

Sensor conditions.

Definition at line 235 of file CbmRecoSts.h.

Referenced by CreateModules(), Init(), and SetParContainers().

◆ fParSetModule

CbmStsParSetModule* CbmRecoSts::fParSetModule = nullptr
private

Module parameters.

Definition at line 233 of file CbmRecoSts.h.

Referenced by CreateModules(), Init(), and SetParContainers().

◆ fParSetSensor

CbmStsParSetSensor* CbmRecoSts::fParSetSensor = nullptr
private

Sensor parameters.

Definition at line 234 of file CbmRecoSts.h.

Referenced by CreateModules(), Init(), and SetParContainers().

◆ fParSim

CbmStsParSim* CbmRecoSts::fParSim = nullptr
private

Instance of STS setup.

Simulation settings

Definition at line 232 of file CbmRecoSts.h.

Referenced by CreateModules(), Init(), and SetParContainers().

◆ fRunParallel

Bool_t CbmRecoSts::fRunParallel = kFALSE
private

Use OpenMP multithreading.

Definition at line 250 of file CbmRecoSts.h.

◆ fSetup

CbmStsSetup* CbmRecoSts::fSetup = nullptr
private

Output hit array.

Definition at line 231 of file CbmRecoSts.h.

Referenced by CreateModules(), and Init().

◆ fTime1

Double_t CbmRecoSts::fTime1 = 0.
private

Time for resetting modules.

Definition at line 262 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fTime2

Double_t CbmRecoSts::fTime2 = 0.
private

Time for distributing data.

Definition at line 263 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fTime3

Double_t CbmRecoSts::fTime3 = 0.
private

Time for reconstruction.

Definition at line 264 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fTime4

Double_t CbmRecoSts::fTime4 = 0.
private

Time for output results.

Definition at line 265 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fTimeCutClustersAbs

Double_t CbmRecoSts::fTimeCutClustersAbs = -1.
private

Time cut for hit finding [ns].

Definition at line 248 of file CbmRecoSts.h.

Referenced by SetTimeCutClustersAbs().

◆ fTimeCutClustersSig

Double_t CbmRecoSts::fTimeCutClustersSig = 4.
private

Time cut for hit finding.

Definition at line 247 of file CbmRecoSts.h.

Referenced by SetTimeCutClustersSig().

◆ fTimeCutDigisAbs

Double_t CbmRecoSts::fTimeCutDigisAbs = -1.
private

Time cut for cluster finding [ns].

Definition at line 246 of file CbmRecoSts.h.

Referenced by SetTimeCutDigisAbs().

◆ fTimeCutDigisSig

Double_t CbmRecoSts::fTimeCutDigisSig = 3.
private

Time cut for cluster finding.

Definition at line 245 of file CbmRecoSts.h.

Referenced by SetTimeCutDigisSig().

◆ fTimer

TStopwatch CbmRecoSts::fTimer {}
private

Definition at line 253 of file CbmRecoSts.h.

Referenced by ProcessData().

◆ fTimeTot

Double_t CbmRecoSts::fTimeTot = 0.
private

Total execution time.

Definition at line 261 of file CbmRecoSts.h.

Referenced by Finish(), and ProcessData().

◆ fUserParAsic

CbmStsParAsic* CbmRecoSts::fUserParAsic = nullptr
private

Definition at line 238 of file CbmRecoSts.h.

◆ fUserParModule

CbmStsParModule* CbmRecoSts::fUserParModule = nullptr
private

Definition at line 239 of file CbmRecoSts.h.

Referenced by CreateModules(), and UseModulePar().

◆ fUserParSensor

CbmStsParSensor* CbmRecoSts::fUserParSensor = nullptr
private

Definition at line 240 of file CbmRecoSts.h.

Referenced by CreateModules(), and UseSensorPar().

◆ fUserParSensorCond

CbmStsParSensorCond* CbmRecoSts::fUserParSensorCond = nullptr
private

Definition at line 241 of file CbmRecoSts.h.

Referenced by CreateModules(), and UseSensorCond().

◆ fWriteClusters

Bool_t CbmRecoSts::fWriteClusters = kFALSE
private

Write clusters to tree.

Definition at line 249 of file CbmRecoSts.h.


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