CbmRoot
Loading...
Searching...
No Matches
CbmRecoSts.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
11#ifndef CBMRECOSTS_H
12#define CBMRECOSTS_H 1
13
14#include "sts/HitfinderChain.h"
15
16#include <FairTask.h>
17
18#include <TClonesArray.h>
19#include <TStopwatch.h>
20
21class CbmDigiManager;
22class CbmEvent;
23class CbmStsElement;
24class CbmStsParAsic;
25class CbmStsParModule;
26class CbmStsParSensor;
31class CbmStsParSim;
33class CbmStsSensor;
34class CbmStsSetup;
35
36
54class CbmRecoSts : public FairTask {
55
56 public:
58 CbmRecoSts(ECbmRecoMode mode = ECbmRecoMode::Timeslice, Bool_t writeClusters = kFALSE);
59
60
62 CbmRecoSts(const CbmRecoSts&) = delete;
63
64
67
68
70 virtual ~CbmRecoSts();
71
72
74 virtual void Exec(Option_t* opt);
75
76
78 virtual void Finish();
79
80
82 TClonesArray* GetClusters() { return fClusters; }
83
84
86 virtual InitStatus Init();
87
88
99 void SetEventMode(Bool_t choice = kTRUE) { fMode = (choice ? ECbmRecoMode::EventByEvent : ECbmRecoMode::Timeslice); }
100
101
109 void SetMode(ECbmRecoMode mode) { fMode = mode; }
110
111 void SetUseGpuReco(bool useGPU);
112
114 virtual void SetParContainers();
115
116
125 void SetTimeCutClustersAbs(Double_t value) { fTimeCutClustersAbs = value; }
126
127
134 void SetTimeCutClustersSig(Double_t value) { fTimeCutClustersSig = value; }
135
136
145 void SetTimeCutDigisAbs(Double_t value) { fTimeCutDigisAbs = value; }
146
147
155 void SetTimeCutDigisSig(Double_t value) { fTimeCutDigisSig = value; }
156
157
164 void UseModulePar(CbmStsParModule* modulePar) { fUserParModule = modulePar; }
165
166
172 void UseModuleParSet(CbmStsParSetModule* moduleParSet) { fUserParSetModule = moduleParSet; }
173
174
181 void UseSensorCond(CbmStsParSensorCond* sensorCond) { fUserParCond = sensorCond; }
182
188 void UseSensorCondSet(CbmStsParSetSensorCond* sensorCondSet) { fUserParSetCond = sensorCondSet; }
189
190
197 void UseSensorPar(CbmStsParSensor* sensorPar) { fUserParSensor = sensorPar; }
198
199
205 void UseSensorParSet(CbmStsParSetSensor* sensorParSet) { fUserParSetSensor = sensorParSet; }
206
207 void DumpNewHits();
208 void DumpOldHits();
209
210 private:
219 std::pair<Double_t, Double_t> LorentzShift(const CbmStsParSensorCond& conditions, Double_t dZ, Double_t bY);
220
221
225 UInt_t CreateModules();
226
227
232
233
241 void InitParams();
242
243
249 void ProcessData(CbmEvent* event = nullptr);
250
251 void ProcessDataGpu();
252
253 private:
254 // --- I/O
255 TClonesArray* fEvents = nullptr;
257 TClonesArray* fClusters = nullptr;
258 TClonesArray* fHits = nullptr;
259
260 // --- Setup and parameters
261 CbmStsSetup* fSetup = nullptr;
266
267 // --- User-defined parameters, not from database
272
273 // --- User-defined parameter sets, not from database
277
278 // --- Settings
280 Double_t fTimeCutDigisSig = 3.;
281 Double_t fTimeCutDigisAbs = -1.;
282 Double_t fTimeCutClustersSig = 4.;
283 Double_t fTimeCutClustersAbs = -1.;
284 Bool_t fWriteClusters = kFALSE;
285
286 // --- Timeslice counters
287 Long64_t fNofDigis = 0;
288 Long64_t fNofDigisUsed = 0;
289 Long64_t fNofDigisIgnored = 0;
290 Long64_t fNofClusters = 0;
291 Long64_t fNofHits = 0;
292 Double_t fTimeTot = 0.;
293 Double_t fTime1 = 0.;
294 Double_t fTime2 = 0.;
295 Double_t fTime3 = 0.;
296 Double_t fTime4 = 0.;
297 double fTimeSortDigis = 0.;
298 double fTimeFindClusters = 0.;
299 double fTimeSortClusters = 0.;
300 double fTimeFindHits = 0.;
301
302 // --- Run counters
303 TStopwatch fTimer{};
304 Int_t fNofTs = 0;
305 Int_t fNofEvents = 0;
306 Double_t fNofDigisRun = 0;
307 Double_t fNofDigisUsedRun = 0;
308 Double_t fNofDigisIgnoredRun = 0;
309 Double_t fNofClustersRun = 0;
310 Double_t fNofHitsRun = 0;
311 Double_t fTimeRun = 0.;
312 Double_t fTime1Run = 0.;
313 Double_t fTime2Run = 0.;
314 Double_t fTime3Run = 0.;
315 Double_t fTime4Run = 0.;
316
317
318 // --- Reconstruction modules
319 std::map<UInt_t, CbmStsRecoModule*> fModules{};
320 std::vector<CbmStsRecoModule*> fModuleIndex{};
321
322 bool fUseGpuReco = false;
324
325 std::pair<size_t, size_t> ForwardGpuClusterAndHits();
326
328};
329
330#endif
ECbmRecoMode
Reconstruct the full time slice or event-by-event.
Definition CbmDefs.h:162
CbmDigiManager.
Class characterising one event by a collection of links (indices) to data objects,...
Definition CbmEvent.h:34
Task class for local reconstruction in the STS.
Definition CbmRecoSts.h:54
Long64_t fNofDigisUsed
Total number of used digis.
Definition CbmRecoSts.h:288
CbmRecoSts operator=(const CbmRecoSts &)=delete
Assignment operator (disabled)
void SetTimeCutDigisSig(Double_t value)
Time cut on digis for hit finding.
Definition CbmRecoSts.h:155
void SetTimeCutClustersSig(Double_t value)
Time cut on clusters for hit finding.
Definition CbmRecoSts.h:134
Double_t fTime2
Time for distributing data.
Definition CbmRecoSts.h:294
void GetSensorParameters(CbmStsElement *geoSensor)
Get the sensor parameters.
Double_t fTimeCutClustersSig
Time cut for hit finding.
Definition CbmRecoSts.h:282
CbmRecoSts(ECbmRecoMode mode=ECbmRecoMode::Timeslice, Bool_t writeClusters=kFALSE)
Constructor.
CbmStsParSetSensorCond * fParSetCond
Sensor conditions.
Definition CbmRecoSts.h:265
void SetEventMode(Bool_t choice=kTRUE)
Set event-by-event mode.
Definition CbmRecoSts.h:99
CbmStsParSetSensor * fParSetSensor
Sensor parameters.
Definition CbmRecoSts.h:264
double fTimeFindClusters
Definition CbmRecoSts.h:298
Int_t fNofTs
ROOT timer.
Definition CbmRecoSts.h:304
void DumpNewHits()
CbmRecoSts(const CbmRecoSts &)=delete
Copy constructor (disabled)
Double_t fTimeCutClustersAbs
Time cut for hit finding [ns].
Definition CbmRecoSts.h:283
void UseSensorParSet(CbmStsParSetSensor *sensorParSet)
User-defined module parameter set.
Definition CbmRecoSts.h:205
CbmStsParSetSensor * fUserParSetSensor
Definition CbmRecoSts.h:275
cbm::algo::sts::HitfinderChain fGpuReco
Definition CbmRecoSts.h:323
Double_t fNofDigisIgnoredRun
Total number of ignored digis.
Definition CbmRecoSts.h:308
Double_t fNofDigisRun
Total number of digis processed.
Definition CbmRecoSts.h:306
void UseModuleParSet(CbmStsParSetModule *moduleParSet)
User-defined module parameter set.
Definition CbmRecoSts.h:172
void ProcessDataGpu()
CbmStsParSim * fParSim
Instance of STS setup.
Definition CbmRecoSts.h:262
void InitParams()
Initialise parameters.
ECbmRecoMode fMode
Time-slice or event-by-event.
Definition CbmRecoSts.h:279
std::map< UInt_t, CbmStsRecoModule * > fModules
Definition CbmRecoSts.h:319
CbmStsSetup * fSetup
Output hit array.
Definition CbmRecoSts.h:261
Double_t fTime1Run
Time for resetting modules.
Definition CbmRecoSts.h:312
CbmStsParSetModule * fUserParSetModule
Definition CbmRecoSts.h:274
std::pair< Double_t, Double_t > LorentzShift(const CbmStsParSensorCond &conditions, Double_t dZ, Double_t bY)
Average Lorentz Shift in a sensor.
void SetTimeCutClustersAbs(Double_t value)
Time cut on clusters for hit finding.
Definition CbmRecoSts.h:125
Long64_t fNofDigisIgnored
Total number of ignored digis.
Definition CbmRecoSts.h:289
Double_t fNofHitsRun
Total number of clusters produced.
Definition CbmRecoSts.h:310
void SetUseGpuReco(bool useGPU)
std::vector< CbmStsRecoModule * > fModuleIndex
Definition CbmRecoSts.h:320
Int_t fNofEvents
Number of events processed.
Definition CbmRecoSts.h:305
TClonesArray * fClusters
Interface to digi branch.
Definition CbmRecoSts.h:257
double fTimeSortClusters
Definition CbmRecoSts.h:299
Double_t fTime1
Time for resetting modules.
Definition CbmRecoSts.h:293
CbmStsParSensorCond * fUserParCond
Definition CbmRecoSts.h:271
UInt_t CreateModules()
Instantiate reconstruction modules @value Number of modules created.
TClonesArray * fHits
Output cluster array.
Definition CbmRecoSts.h:258
double fTimeSortDigis
Definition CbmRecoSts.h:297
CbmDigiManager * fDigiManager
Input array of events.
Definition CbmRecoSts.h:256
TStopwatch fTimer
Definition CbmRecoSts.h:303
void DumpOldHits()
Double_t fTimeCutDigisSig
Time cut for cluster finding.
Definition CbmRecoSts.h:280
CbmStsParSetModule * fParSetModule
Module parameters.
Definition CbmRecoSts.h:263
void UseSensorPar(CbmStsParSensor *sensorPar)
User-defined sensor parameters.
Definition CbmRecoSts.h:197
Double_t fTime4Run
Time for output results.
Definition CbmRecoSts.h:315
Double_t fTime3
Time for reconstruction.
Definition CbmRecoSts.h:295
Bool_t fWriteClusters
Write clusters to tree.
Definition CbmRecoSts.h:284
Double_t fNofDigisUsedRun
Total number of used digis.
Definition CbmRecoSts.h:307
CbmStsParSensor * fUserParSensor
Definition CbmRecoSts.h:270
Long64_t fNofHits
Total number of clusters produced.
Definition CbmRecoSts.h:291
Double_t fTimeTot
Total execution time.
Definition CbmRecoSts.h:292
CbmStsParAsic * fUserParAsic
Definition CbmRecoSts.h:268
bool fUseGpuReco
Definition CbmRecoSts.h:322
TClonesArray * GetClusters()
Access to output array of clusters.
Definition CbmRecoSts.h:82
Long64_t fNofDigis
Total number of digis processed.
Definition CbmRecoSts.h:287
Double_t fTime2Run
Time for distributing data.
Definition CbmRecoSts.h:313
void SetTimeCutDigisAbs(Double_t value)
Time cut on digis for cluster finding.
Definition CbmRecoSts.h:145
Double_t fTimeCutDigisAbs
Time cut for cluster finding [ns].
Definition CbmRecoSts.h:281
Double_t fTimeRun
Total execution time.
Definition CbmRecoSts.h:311
Long64_t fNofClusters
Total number of clusters produced.
Definition CbmRecoSts.h:290
void UseSensorCond(CbmStsParSensorCond *sensorCond)
User-defined sensor condition parameters.
Definition CbmRecoSts.h:181
virtual ~CbmRecoSts()
Destructor
virtual InitStatus Init()
Initialisation.
Double_t fTime4
Time for output results.
Definition CbmRecoSts.h:296
virtual void SetParContainers()
Define the needed parameter containers.
Double_t fNofClustersRun
Total number of clusters produced.
Definition CbmRecoSts.h:309
std::pair< size_t, size_t > ForwardGpuClusterAndHits()
TClonesArray * fEvents
Definition CbmRecoSts.h:255
void UseSensorCondSet(CbmStsParSetSensorCond *sensorCondSet)
User-defined module parameter set.
Definition CbmRecoSts.h:188
CbmStsParSetSensorCond * fUserParSetCond
Definition CbmRecoSts.h:276
void UseModulePar(CbmStsParModule *modulePar)
User-defined module parameters.
Definition CbmRecoSts.h:164
CbmStsParModule * fUserParModule
Definition CbmRecoSts.h:269
virtual void Exec(Option_t *opt)
Task execution.
double fTimeFindHits
Definition CbmRecoSts.h:300
virtual void Finish()
End-of-run action.
ClassDef(CbmRecoSts, 1)
Double_t fTime3Run
Time for reconstruction.
Definition CbmRecoSts.h:314
void SetMode(ECbmRecoMode mode)
Set execution mode.
Definition CbmRecoSts.h:109
void ProcessData(CbmEvent *event=nullptr)
Process one time slice or event.
Class representing an element of the STS setup.
Parameters of the STS readout ASIC.
Parameters for one STS module.
Parameters for operating conditions of a STS sensor.
Constructional parameters of a STS sensor.
Parameters container for CbmStsParModule.
Parameters container for CbmStsParSensorCond.
Parameters container for CbmStsParSensor.
Settings for STS simulation (digitizer)
Class for reconstruction in one STS module.
Class representing an instance of a sensor in the CBM-STS.
Class representing the top level of the STS setup.
Definition CbmStsSetup.h:43