CbmRoot
Loading...
Searching...
No Matches
DigiData.cxx
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] */
5
6using namespace cbm::algo;
7
8// Ctor / Dtor defined in .cxx file so we can use forward declarations for digi types in the header
9
11
13
15 : fSts(ToPODVector(storable.fSts.fDigis))
16 , fMuch(ToPODVector(storable.fMuch.fDigis))
17 , fMvd(ToPODVector(storable.fMvd.fDigis))
18 // , fMvd(storable.fMvd.fDigis)
19 , fTof(ToPODVector(storable.fTof.fDigis))
20 , fBmon(ToPODVector(storable.fBmon.fDigis))
21 , fTrd(ToPODVector(storable.fTrd.fDigis))
22 , fTrd2d(ToPODVector(storable.fTrd2d.fDigis))
23 , fRich(ToPODVector(storable.fRich.fDigis))
24 , fPsd(ToPODVector(storable.fPsd.fDigis))
25 , fFsd(ToPODVector(storable.fFsd.fDigis))
26{
27}
28
29size_t DigiData::Size(ECbmModuleId system) const
30{
31 switch (system) {
32 case ECbmModuleId::kSts: return fSts.size();
33 case ECbmModuleId::kMuch: return fMuch.size();
34 case ECbmModuleId::kMvd: return fMvd.size();
35 case ECbmModuleId::kTof: return fTof.size();
36 case ECbmModuleId::kBmon: return fBmon.size();
37 case ECbmModuleId::kTrd: return fTrd.size();
38 case ECbmModuleId::kTrd2d: return fTrd2d.size();
39 case ECbmModuleId::kRich: return fRich.size();
40 case ECbmModuleId::kPsd: return fPsd.size();
41 case ECbmModuleId::kFsd: return fFsd.size();
42 default: throw std::runtime_error("DigiData: Invalid system Id " + std::string(util::ToString(system)));
43 }
44}
45
46size_t DigiData::TotalSize() const
47{
48 return fSts.size() + fMuch.size() + fMvd.size() + fTof.size() + fBmon.size() + fTrd.size() + fTrd2d.size()
49 + fRich.size() + fPsd.size() + fFsd.size();
50}
51
53{
54 return sizeof(CbmStsDigi) * fSts.size() + sizeof(CbmMuchDigi) * fMuch.size() + sizeof(CbmMvdRawDigi) * fMvd.size()
55 + sizeof(CbmTofDigi) * fTof.size() + sizeof(CbmBmonDigi) * fBmon.size() + sizeof(CbmTrdDigi) * fTrd.size()
56 + sizeof(CbmTrdDigi) * fTrd2d.size() + sizeof(CbmRichDigi) * fRich.size() + sizeof(CbmPsdDigi) * fPsd.size()
57 + sizeof(CbmFsdDigi) * fFsd.size();
58}
59
61{
62 return CbmDigiData{
63 .fBmon =
64 {
65 .fDigis = ToStdVector(fBmon),
66 },
67 .fSts =
68 {
69 .fDigis = ToStdVector(fSts),
70 },
71 .fMuch =
72 {
73 .fDigis = ToStdVector(fMuch),
74 },
75 .fMvd =
76 {
77 .fDigis = ToStdVector(fMvd),
78 },
79 .fRich =
80 {
81 .fDigis = ToStdVector(fRich),
82 },
83 .fTrd =
84 {
85 .fDigis = ToStdVector(fTrd),
86 },
87 .fTrd2d =
88 {
89 .fDigis = ToStdVector(fTrd2d),
90 },
91 .fTof =
92 {
93 .fDigis = ToStdVector(fTof),
94 },
95 .fPsd =
96 {
97 .fDigis = ToStdVector(fPsd),
98 },
99 .fFsd =
100 {
101 .fDigis = ToStdVector(fFsd),
102 },
103 };
104}
105
106std::vector<DigiEvent> DigiEvent::FromCbmDigiEvents(const std::vector<CbmDigiEvent>& events)
107{
108 std::vector<DigiEvent> result;
109 result.reserve(events.size());
110 for (const auto& event : events) {
111 result.emplace_back(event);
112 }
113 return result;
114}
115
116std::vector<CbmDigiEvent> DigiEvent::ToCbmDigiEvents(const std::vector<DigiEvent>& events)
117{
118 std::vector<CbmDigiEvent> result;
119 result.reserve(events.size());
120 for (const auto& event : events) {
121 result.emplace_back(event.ToStorable());
122 }
123 return result;
124}
125
127 : DigiData(storable.fData)
128 , fNumber(storable.fNumber)
129 , fTime(storable.fTime)
131{
132}
133
135{
136 return CbmDigiEvent{
137 .fData = DigiData::ToStorable(),
138 .fNumber = fNumber,
139 .fTime = fTime,
140 .fSelectionTriggers = fSelectionTriggers,
141 };
142}
ECbmModuleId
Enumerator for module Identifiers.
Definition CbmDefs.h:45
@ kMvd
Micro-Vertex Detector.
Definition CbmDefs.h:47
@ kTrd
Transition Radiation Detector.
Definition CbmDefs.h:51
@ kTof
Time-of-flight Detector.
Definition CbmDefs.h:52
@ kPsd
Projectile spectator detector.
Definition CbmDefs.h:54
@ kSts
Silicon Tracking System.
Definition CbmDefs.h:48
@ kTrd2d
TRD-FASP Detector (FIXME)
Definition CbmDefs.h:58
@ kMuch
Muon detection system.
Definition CbmDefs.h:50
@ kFsd
Forward spectator detector.
Definition CbmDefs.h:59
@ kBmon
Bmon Counter.
Definition CbmDefs.h:57
@ kRich
Ring-Imaging Cherenkov Detector.
Definition CbmDefs.h:49
Data class for a signal in the t-zero detector.
Definition CbmBmonDigi.h:31
Collection of digis from all detector systems.
Definition CbmDigiData.h:33
Collection of digis from all detector systems within one event.
Data class for FSD digital information.
Definition CbmFsdDigi.h:36
Data class for PSD digital information.
Definition CbmPsdDigi.h:36
Data class for a single-channel message in the STS.
Definition CbmStsDigi.h:40
Data class for expanded digital TOF information.
Definition CbmTofDigi.h:47
std::string_view ToString(T t)
Definition CbmEnumDict.h:64
PODVector< T > ToPODVector(const std::vector< T > &vec)
Definition PODVector.h:26
std::vector< T > ToStdVector(const PODVector< T > &vec)
Definition PODVector.h:20
PODVector< CbmRichDigi > fRich
Unpacked RICH digis.
Definition DigiData.h:41
PODVector< CbmTrdDigi > fTrd
Unpacked TRD digis.
Definition DigiData.h:39
PODVector< CbmStsDigi > fSts
Unpacked STS digis.
Definition DigiData.h:34
PODVector< CbmTrdDigi > fTrd2d
Unpacked TRD2D digis.
Definition DigiData.h:40
PODVector< CbmFsdDigi > fFsd
Unpacked FSD digis.
Definition DigiData.h:43
PODVector< CbmTofDigi > fTof
Unpacked TOF digis.
Definition DigiData.h:37
PODVector< CbmMvdRawDigi > fMvd
Unpacked MVD digis.
Definition DigiData.h:36
size_t TotalSize() const
Get the total number of digis across all subsystems.
Definition DigiData.cxx:46
CbmDigiData ToStorable() const
Convert to CbmDigiData for file storage.
Definition DigiData.cxx:60
PODVector< CbmPsdDigi > fPsd
Unpacked PSD digis.
Definition DigiData.h:42
PODVector< CbmMuchDigi > fMuch
Unpacked MUCH digis.
Definition DigiData.h:35
PODVector< CbmBmonDigi > fBmon
Unpacked Bmon digis.
Definition DigiData.h:38
size_t Size(ECbmModuleId system) const
Get the number of digis for a given subsystem.
Definition DigiData.cxx:29
size_t TotalSizeBytes() const
Get the total number of bytes used by all digis.
Definition DigiData.cxx:52
double fTime
Event trigger time [ns].
Definition DigiData.h:85
CbmEventTriggers fSelectionTriggers
Definition DigiData.h:86
static std::vector< CbmDigiEvent > ToCbmDigiEvents(const std::vector< DigiEvent > &events)
Definition DigiData.cxx:116
static std::vector< DigiEvent > FromCbmDigiEvents(const std::vector< CbmDigiEvent > &events)
Definition DigiData.cxx:106
uint64_t fNumber
Event identifier.
Definition DigiData.h:84
CbmDigiEvent ToStorable() const
Convert to CbmDigiEvent for file storage.
Definition DigiData.cxx:134