CbmRoot
Loading...
Searching...
No Matches
StorableRecoResults.h
Go to the documentation of this file.
1/* Copyright (C) 2023 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Felix Weiglhofer [committer], P.-A. Loizeau */
4#ifndef CBM_ALGO_GLOBAL_STORABLE_RECO_RESULTS_H
5#define CBM_ALGO_GLOBAL_STORABLE_RECO_RESULTS_H
6
7#include "CaTrack.h"
8#include "CaVector.h"
9#include "CbmDigiEvent.h"
10#include "PartitionedVector.h"
12#include "algo/data/sts/Hit.h"
16
17#include <boost/serialization/access.hpp>
18#include <boost/serialization/utility.hpp>
19#include <boost/serialization/vector.hpp>
20
21#include <cstdint>
22
23namespace cbm::algo
24{
25
27
28 public:
30
35
36 StorableRecoResults(uint64_t tsIndex, uint64_t tsStartTime) : fTsIndex(tsIndex), fTsStartTime(tsStartTime) {}
37
41 uint64_t TsIndex() const { return fTsIndex; }
42
46 uint64_t index() const { return fTsIndex; }
47
51 uint64_t TsStartTime() const { return fTsStartTime; }
52
56 uint64_t start_time() const { return fTsStartTime; }
57
61 size_t SizeBytes() const;
62
63 std::vector<CbmBmonDigi>& BmonDigis() { return fBmonDigis; }
64 const std::vector<CbmBmonDigi>& BmonDigis() const { return fBmonDigis; }
65
66 std::vector<CbmStsDigi>& StsDigis() { return fStsDigis; }
67 const std::vector<CbmStsDigi>& StsDigis() const { return fStsDigis; }
68
69 std::vector<CbmMuchDigi>& MuchDigis() { return fMuchDigis; }
70 const std::vector<CbmMuchDigi>& MuchDigis() const { return fMuchDigis; }
71
72 std::vector<CbmTrdDigi>& Trd2dDigis() { return fTrd2dDigis; }
73 const std::vector<CbmTrdDigi>& Trd2dDigis() const { return fTrd2dDigis; }
74
75 std::vector<CbmTrdDigi>& TrdDigis() { return fTrdDigis; }
76 const std::vector<CbmTrdDigi>& TrdDigis() const { return fTrdDigis; }
77
78 std::vector<CbmTofDigi>& TofDigis() { return fTofDigis; }
79 const std::vector<CbmTofDigi>& TofDigis() const { return fTofDigis; }
80
81 std::vector<CbmRichDigi>& RichDigis() { return fRichDigis; }
82 const std::vector<CbmRichDigi>& RichDigis() const { return fRichDigis; }
83
84 std::vector<CbmMvdRawDigi>& MvdDigis() { return fMvdDigis; }
85 const std::vector<CbmMvdRawDigi>& MvdDigis() const { return fMvdDigis; }
86
87 std::vector<CbmFsdDigi>& FsdDigis() { return fFsdDigis; }
88 const std::vector<CbmFsdDigi>& FsdDigis() const { return fFsdDigis; }
89
90 std::vector<CbmDigiEvent>& DigiEvents() { return fDigiEvents; }
91 const std::vector<CbmDigiEvent>& DigiEvents() const { return fDigiEvents; }
92
95
98
101
104
107
109 const ca::Vector<ca::Track>& Tracks() const { return fTracks; }
110
113
116
119
120 private:
121 uint64_t fTsIndex = UINT64_MAX;
122 uint64_t fTsStartTime = UINT64_MAX;
123
124 // Unpackers output
125 std::vector<CbmBmonDigi> fBmonDigis;
126 std::vector<CbmStsDigi> fStsDigis;
127 std::vector<CbmMuchDigi> fMuchDigis;
128 std::vector<CbmTrdDigi> fTrd2dDigis;
129 std::vector<CbmTrdDigi> fTrdDigis;
130 std::vector<CbmTofDigi> fTofDigis;
131 std::vector<CbmRichDigi> fRichDigis;
132 std::vector<CbmMvdRawDigi> fMvdDigis;
133 std::vector<CbmFsdDigi> fFsdDigis;
134
135 // Event builder/filter output
136 std::vector<CbmDigiEvent> fDigiEvents;
137
138 // Local Reconstruction output
144
145 // Tracking output
147
151
155
159
161
162 template<class Archive>
163 void serialize(Archive& ar, unsigned int /*version*/)
164 {
165 ar& fTsIndex;
166 ar& fTsStartTime;
167
168 ar& fBmonDigis;
169 ar& fStsDigis;
170 ar& fMuchDigis;
171 ar& fTrd2dDigis;
172 ar& fTrdDigis;
173 ar& fTofDigis;
174 ar& fRichDigis;
175 ar& fMvdDigis;
176 ar& fFsdDigis;
177
178 ar& fDigiEvents;
179
180 ar& fStsClusters;
181 ar& fBmonHits;
182 ar& fStsHits;
183 ar& fTofHits;
184 ar& fTrdHits;
185
186 ar& fTracks;
190 }
191 };
192
193} // namespace cbm::algo
194
195#endif // CBM_ALGO_GLOBAL_STORABLE_RECO_RESULTS_H
source file for the ca::Track class
A vector that is partitioned into multiple subvectors.
std::vector< CbmMuchDigi > & MuchDigis()
const PartitionedVector< sts::Hit > & StsHits() const
std::vector< CbmMuchDigi > fMuchDigis
uint64_t start_time() const
Same as TsStartTime. Required for fles interface compatibility.
ca::Vector< ca::Track > & Tracks()
const TrackHitIndexContainer_t & TrackTrdHitIndices() const
PartitionedVector< bmon::Hit > & BmonHits()
ca::Vector< std::vector< std::pair< uint32_t, uint32_t > > > TrackHitIndexContainer_t
const PartitionedVector< bmon::Hit > & BmonHits() const
PartitionedVector< sts::Cluster > fStsClusters
TrackHitIndexContainer_t & TrackStsHitIndices()
const TrackHitIndexContainer_t & TrackStsHitIndices() const
TrackHitIndexContainer_t fTrackTrdHitIndices
TRD hit indices of tracks.
const std::vector< CbmTrdDigi > & Trd2dDigis() const
TrackHitIndexContainer_t fTrackTofHitIndices
TOF hit indices of tracks.
std::vector< CbmTrdDigi > & Trd2dDigis()
const TrackHitIndexContainer_t & TrackTofHitIndices() const
TrackHitIndexContainer_t fTrackStsHitIndices
STS hit indices of tracks.
const std::vector< CbmTofDigi > & TofDigis() const
const PartitionedVector< sts::Cluster > & StsClusters() const
std::vector< CbmBmonDigi > & BmonDigis()
TrackHitIndexContainer_t & TrackTofHitIndices()
const std::vector< CbmTrdDigi > & TrdDigis() const
std::vector< CbmMvdRawDigi > fMvdDigis
std::vector< CbmStsDigi > & StsDigis()
const std::vector< CbmDigiEvent > & DigiEvents() const
PartitionedVector< bmon::Hit > fBmonHits
StorableRecoResults(uint64_t tsIndex, uint64_t tsStartTime)
uint64_t TsIndex() const
Index of the timeslice during the run.
std::vector< CbmTofDigi > & TofDigis()
std::vector< CbmRichDigi > fRichDigis
const ca::Vector< ca::Track > & Tracks() const
std::vector< CbmFsdDigi > fFsdDigis
const std::vector< CbmStsDigi > & StsDigis() const
std::vector< CbmRichDigi > & RichDigis()
std::vector< CbmMvdRawDigi > & MvdDigis()
const std::vector< CbmMuchDigi > & MuchDigis() const
std::vector< CbmStsDigi > fStsDigis
PartitionedVector< tof::Hit > fTofHits
uint64_t index() const
Same as TsIndex. Required for fles interface compatibility.
const PartitionedVector< trd::Hit > & TrdHits() const
const PartitionedVector< tof::Hit > & TofHits() const
uint64_t TsStartTime() const
Start time of the timeslice.
friend class boost::serialization::access
const std::vector< CbmRichDigi > & RichDigis() const
PartitionedVector< sts::Cluster > & StsClusters()
PartitionedVector< trd::Hit > fTrdHits
std::vector< CbmTofDigi > fTofDigis
StorableRecoResults()=default
Default constructor (required by boost::serialization)
PartitionedVector< sts::Hit > fStsHits
std::vector< CbmFsdDigi > & FsdDigis()
const std::vector< CbmBmonDigi > & BmonDigis() const
PartitionedVector< trd::Hit > & TrdHits()
PartitionedVector< sts::Hit > & StsHits()
std::vector< CbmTrdDigi > & TrdDigis()
std::vector< CbmTrdDigi > fTrd2dDigis
std::vector< CbmTrdDigi > fTrdDigis
std::vector< CbmDigiEvent > & DigiEvents()
const std::vector< CbmFsdDigi > & FsdDigis() const
std::vector< CbmBmonDigi > fBmonDigis
void serialize(Archive &ar, unsigned int)
TrackHitIndexContainer_t & TrackTrdHitIndices()
const std::vector< CbmMvdRawDigi > & MvdDigis() const
PartitionedVector< tof::Hit > & TofHits()
size_t SizeBytes() const
Total size in bytes.
std::vector< CbmDigiEvent > fDigiEvents
A light-weight TRD hit class for online reconstruction, based on CbmTrdHit. .