CbmRoot
Loading...
Searching...
No Matches
Definitions.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] */
4#ifndef CBM_BASE_TYPES_H
5#define CBM_BASE_TYPES_H
6
7#include "MicrosliceDescriptor.hpp" // For fles::Subsystem
8#include "util/EnumDict.h"
9
10#include <cstdint>
11
12namespace cbm::algo
13{
14
15 // typealias for Rust-like fixed size integer types
16 using i8 = std::int8_t;
17 using u8 = std::uint8_t;
18 using i16 = std::int16_t;
19 using u16 = std::uint16_t;
20 using i32 = std::int32_t;
21 using u32 = std::uint32_t;
22 using i64 = std::int64_t;
23 using u64 = std::uint64_t;
24 using f32 = float;
25 using f64 = double;
26
27#ifdef CBM_ALGO_REAL64
28 using real = f64;
29#else
30 using real = f32;
31#endif
32
33 enum class Step
34 {
35 Unpack,
39 };
40
41 enum class RecoData
42 {
43 DigiTimeslice, //< Raw output from unpackers
44 DigiEvent, //< Digis after event building
45 Cluster,
46 Hit,
47 Track,
48 };
49
50 enum class Setup
51 {
56 };
57
84
85} // namespace cbm::algo
86
87CBM_ENUM_DICT(fles::Subsystem,
88 // CBM detectors
89 {"STS", fles::Subsystem::STS},
90 {"MVD", fles::Subsystem::MVD},
91 {"RICH", fles::Subsystem::RICH},
92 {"TRD", fles::Subsystem::TRD},
93 {"TRD2D", fles::Subsystem::TRD2D},
94 {"MUCH", fles::Subsystem::MUCH},
95 {"TOF", fles::Subsystem::TOF},
96
97 // Other detectors (experimental)
98 {"ECAL", fles::Subsystem::ECAL},
99 {"PSD", fles::Subsystem::PSD},
100 {"BMON", fles::Subsystem::BMON},
101 {"TRB3", fles::Subsystem::TRB3},
102 {"Hodoscope", fles::Subsystem::Hodoscope},
103 {"Cherenkov", fles::Subsystem::Cherenkov},
104 {"LeadGlass", fles::Subsystem::LeadGlass},
105
106 // FLES (pattern generators)
107 {"FLES", fles::Subsystem::FLES},
108);
109
111 {"Unpack", Step::Unpack},
112 {"DigiTrigger", Step::DigiTrigger},
113 {"LocalReco", Step::LocalReco},
114 {"Tracking", Step::Tracking}
115);
116
118 {"DigiTimeslice", RecoData::DigiTimeslice},
119 {"DigiEvent", RecoData::DigiEvent},
120 {"Cluster", RecoData::Cluster},
121 {"Hit", RecoData::Hit},
122 {"Track", RecoData::Track}
123);
124
126 {"mCBM2022", cbm::algo::Setup::mCBM2022},
127 {"mCBM2024_03", cbm::algo::Setup::mCBM2024_03},
128 {"mCBM2024_05", cbm::algo::Setup::mCBM2024_05},
129 {"mCBM2025_02", cbm::algo::Setup::mCBM2025_02}
130);
131
133 {"BeamBmon", cbm::algo::QaStep::BeamBmon},
134 {"UnpackBmon", cbm::algo::QaStep::UnpackBmon},
135 {"UnpackSts", cbm::algo::QaStep::UnpackSts},
136 {"UnpackMvd", cbm::algo::QaStep::UnpackMvd},
137 {"UnpackRich", cbm::algo::QaStep::UnpackRich},
138 {"UnpackTrd1d", cbm::algo::QaStep::UnpackTrd1d},
139 {"UnpackTrd2d", cbm::algo::QaStep::UnpackTrd2d},
140 {"UnpackMuch", cbm::algo::QaStep::UnpackMuch},
141 {"UnpackTof", cbm::algo::QaStep::UnpackTof},
142 {"UnpackFsd", cbm::algo::QaStep::UnpackFsd},
143 {"EventBuilding", cbm::algo::QaStep::EventBuilding},
144 {"RecoBmon", cbm::algo::QaStep::RecoBmon},
145 {"RecoSts", cbm::algo::QaStep::RecoSts},
146 {"RecoMvd", cbm::algo::QaStep::RecoMvd},
147 {"RecoRich", cbm::algo::QaStep::RecoRich},
148 {"RecoTrd1d", cbm::algo::QaStep::RecoTrd1d},
149 {"RecoTrd2d", cbm::algo::QaStep::RecoTrd2d},
150 {"RecoMuch", cbm::algo::QaStep::RecoMuch},
151 {"RecoTof", cbm::algo::QaStep::RecoTof},
152 {"RecoFsd", cbm::algo::QaStep::RecoFsd},
153 {"Tracking", cbm::algo::QaStep::Tracking},
154 {"V0Finder", cbm::algo::QaStep::V0Finder},
155 {"V0Trigger", cbm::algo::QaStep::V0Trigger}
156);
157
158#endif
#define CBM_ENUM_DICT(type,...)
Definition EnumDict.h:106
std::int64_t i64
Definition Definitions.h:22
std::int32_t i32
Definition Definitions.h:20
float f32
Definition Definitions.h:24
std::uint32_t u32
Definition Definitions.h:21
std::uint64_t u64
Definition Definitions.h:23
std::uint8_t u8
Definition Definitions.h:17
std::int16_t i16
Definition Definitions.h:18
std::int8_t i8
Definition Definitions.h:16
double f64
Definition Definitions.h:25
std::uint16_t u16
Definition Definitions.h:19