CbmRoot
Loading...
Searching...
No Matches
CbmCaTimeSliceReader.h
Go to the documentation of this file.
1/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer] */
4
9
10#pragma once
11
12#include "CaDataManager.h"
13#include "CaDefs.h"
14#include "CaToolsHitRecord.h"
15#include "CaVector.h"
16#include "CbmCaMCModule.h"
17#include "CbmEvent.h"
18#include "CbmL1DetectorID.h"
19#include "CbmL1HitId.h"
20#include "CbmL1Track.h"
21#include "CbmMuchPixelHit.h"
22#include "CbmMvdHit.h"
23#include "CbmPixelHit.h"
24#include "CbmStsHit.h"
25#include "CbmTofHit.h"
26#include "CbmTrdHit.h"
27#include "TClonesArray.h"
28
29class CbmTimeSlice;
30namespace cbm::algo::ca
31{
32 class DataManager;
33 template<typename DataT>
34 class Parameters;
35} // namespace cbm::algo::ca
36
37namespace cbm::ca
38{
45 public:
48 TimeSliceReader() = default;
49
51 ~TimeSliceReader() = default;
52
55
58
61
64
66 void Clear();
67
70 const auto& GetHitFirstIndexDet() const { return fvHitFirstIndexDet; }
71
76 {
77 return fvHitFirstIndexDet[int(iDet) + 1] - fvHitFirstIndexDet[int(iDet)];
78 }
79
82
87 bool InitRun();
88
93 void ReadEvent(CbmEvent* pEvent = nullptr);
94
99
104
107 void RegisterParameters(std::shared_ptr<const ca::Parameters<double>>& pParameters) { fpParameters = pParameters; }
108
112 void RegisterIODataManager(std::shared_ptr<ca::DataManager>& ioDataManager);
113
118
123 void SetDetector(ca::EDetectorID detID, bool flag = true) { fvbUseDet[detID] = flag; }
124
128
131 void SetSortQaHits(bool doSortQaHits) { fbSortQaHits = doSortQaHits; }
132
133 private:
136 void CheckInit() const;
137
139 void ReadHits();
140
142 void ReadRecoTracks();
143
148 template<ca::EDetectorID DetID>
150
152 void SortQaHits();
153
158 void StoreHitRecord(const tools::HitRecord& hitRecord);
159
160 // Input data branches
161 // CbmTimeSlice* fpBrTimeSlice = nullptr; ///< Pointer to the TS object
162 CbmEvent* fpEvent = nullptr;
164
165 // Branches for reconstructed tracks. The input at the moment (as for 27.02.2023) depends on the selected
166 // tracking mode. For simulations in CBM, the CA tracking is used only in STS + MVD detectors. In this case
167 // the reconstructed tracks are saved to the "StsTrack" branch as CbmStsTrack objects. For mCBM, the tracks from
168 // CA are saved as global tracks, and the local ones are used to keep indexes of hits in different subsystems
169 TClonesArray* fpBrRecoTracks = nullptr;
170 TClonesArray* fpBrStsTracks = nullptr;
171 TClonesArray* fpBrMuchTracks = nullptr;
172 TClonesArray* fpBrTrdTracks = nullptr;
173 TClonesArray* fpBrTofTracks = nullptr;
174
175 // Pointers to output data containers
179 std::shared_ptr<ca::DataManager> fpIODataManager = nullptr;
180 std::shared_ptr<const ca::Parameters<double>> fpParameters = nullptr;
181
182 // Maps of hit indexes: ext -> int
184
188
190
191 bool fbSortQaHits = false;
192
193 // Variables for storing cache
194 int fNofHits = 0;
195 int fNofHitKeys = 0;
196 int fFirstHitKey = 0;
197
198 std::array<int, constants::size::MaxNdetectors + 1> fvHitFirstIndexDet = {{0}};
199 };
200} // namespace cbm::ca
Input-output data manager for L1 tracking algorithm.
Compile-time constants definition for the CA tracking algorithm.
CA Tracking performance interface for CBM (header)
Implementation of L1DetectorID enum class for CBM.
ECbmCaTrackingMode
Enumeration for different tracking running modes.
@ kSTS
Local tracking in CBM (STS + MVD), results stored to the StsTrack branch.
Class for pixel hits in MUCH detector.
Data class for a reconstructed hit in the STS.
Class for hits in TRD detector.
Class characterising one event by a collection of links (indices) to data objects,...
Definition CbmEvent.h:34
Bookkeeping of time-slice content.
A manager for the input-output data of the CA tracking algorithm.
A container for all external parameters of the CA tracking algorithm.
TClonesArray * fpBrTrdTracks
Input branch for reconstructed TRD tracks ("TrdTrack")
std::shared_ptr< const ca::Parameters< double > > fpParameters
Pointer to tracking parameters object.
ca::Vector< CbmL1Track > * fpvTracks
Pointer to array of reconstructed tracks.
void SetTrackingMode(ECbmCaTrackingMode mode)
Sets the tracking mode.
int fFirstHitKey
First index of hit key for the detector subsystem.
void ReadRecoTracks()
Reads reconstructed tracks.
std::shared_ptr< ca::DataManager > fpIODataManager
Pointer to input data manager.
const auto & GetHitFirstIndexDet() const
Gets reference to container of first hit indexes in a detector subsystem.
void RegisterHitIndexContainer(ca::Vector< CbmL1HitId > &vHitIds)
Registers hit index container.
void StoreHitRecord(const tools::HitRecord &hitRecord)
Saves hit to data structures.
int GetNofHits(ca::EDetectorID iDet) const
Gets number of hits stored for a given detector.
void SetSortQaHits(bool doSortQaHits)
Sets flag to additionally sort QA hits by stations.
TClonesArray * fpBrRecoTracks
Input branch for reconstructed tracks ("GlobalTrack", "StsTrack")
TimeSliceReader(TimeSliceReader &&)=delete
Move constructor.
~TimeSliceReader()=default
Destructor.
TClonesArray * fpBrTofTracks
Input branch for reconstructed TOF tracks ("TofTrack")
TClonesArray * fpBrStsTracks
Input branch for reconstructed STS tracks ("StsTrack")
int fNofHitKeys
Recorded number of hit keys.
DetIdArr_t< bool > fvbUseDet
Flag: is detector subsystem used.
DetIdArr_t< TClonesArray * > fvpBrHits
Input branch for hits.
void RegisterParameters(std::shared_ptr< const ca::Parameters< double > > &pParameters)
Registers CA parameters object.
void ReadEvent(CbmEvent *pEvent=nullptr)
Reads time slice.
void SortQaHits()
Sorts QA hit objects by stations.
ECbmCaTrackingMode fTrackingMode
Tracking mode.
ca::Vector< cbm::algo::ca::McHitInfo > * fpvQaHits
Pointer to array of debug hits.
TimeSliceReader(const TimeSliceReader &)=delete
Copy constructor.
std::array< int, constants::size::MaxNdetectors+1 > fvHitFirstIndexDet
First hit index in detector.
DetIdArr_t< int > fvNofHitsUsed
Number of used hits in detector.
CbmEvent * fpEvent
Pointer to the event object.
TClonesArray * fpBrMuchTracks
Input branch for reconstructed MuCh tracks ("MuchTrack")
void SetDetector(ca::EDetectorID detID, bool flag=true)
Sets used detector subsystems.
TimeSliceReader & operator=(TimeSliceReader &&)=delete
Move assignment operator.
int ReadHitsForDetector()
Reads hits for a given detector subsystem.
int fNofHits
Stored number of hits.
void RegisterIODataManager(std::shared_ptr< ca::DataManager > &ioDataManager)
Registers the CA IO data manager instance.
ECbmCaTrackingMode GetTrackingMode() const
Gets CBM tracking mode.
TimeSliceReader & operator=(const TimeSliceReader &)=delete
Copy assignment operator.
DetIdArr_t< std::unordered_map< int, int > > fvmHitExtToIntIndexMap
Hit index map ext -> int.
bool InitRun()
Run initializer function.
TimeSliceReader()=default
Constructor from parameters.
void RegisterTracksContainer(ca::Vector< CbmL1Track > &vTracks)
Register the reconstructed tracks container.
ca::Vector< CbmL1HitId > * fpvHitIds
Pointer to array of hit index objects.
bool fbSortQaHits
Flag, if the QA hits must be sorted after reading.
void CheckInit() const
Check class initialization.
DetIdArr_t< int > fvNofHitsTotal
Total hit number in detector.
void RegisterQaHitContainer(ca::Vector< cbm::algo::ca::McHitInfo > &vQaHits)
Registers hit debug info container.
void Clear()
Clears class content.
TODO: SZh 8.11.2022: add selection of parameterisation.
Definition CaBranch.h:14
EDetectorID
Enumeration for the tracking detector subsystems in CBM-CA.
Definition CbmDefs.h:216
cbm::core::EnumArray< ca::EDetectorID, T > DetIdArr_t
Alias to array, indexed by L1DetectorID enum.
A helper structure to store hits information from different detectors in a uniform manner.