CbmRoot
Loading...
Searching...
No Matches
CbmDefs.h
Go to the documentation of this file.
1/* Copyright (C) 2017-2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Florian Uhlig, Volker Friese [committer], Semen Lebedev */
4
11
12#ifndef CBMDEFS_H
13#define CBMDEFS_H 1
14
15#include "CbmEnumDict.h" // for CBM_ENUM_DICT
16
17#include <iosfwd> // for ostream
18#include <string>
19#include <type_traits> // for underlying_type
20
21#include <xpu/defines.h> // for XPU_D
22
31// FIXME: SZh 02.06.2025: This function should be moved to CbmUtility library
32template<typename T>
33XPU_D constexpr auto ToIntegralType(T enumerator) -> typename std::underlying_type<T>::type
34{
35 return static_cast<typename std::underlying_type<T>::type>(enumerator);
36}
37
44enum class ECbmModuleId
45{
46 kRef = 0,
47 kMvd = 1,
48 kSts = 2,
49 kRich = 3,
50 kMuch = 4,
51 kTrd = 5,
52 kTof = 6,
53 kMust = 7,
54 kPsd = 8,
55 kHodo = 9,
56 kDummyDet = 10,
57 kBmon = 11,
58 kTrd2d = 12,
59 kFsd = 13,
61 kMagnet = 17,
62 kTarget = 18,
63 kPipe = 19,
64 kShield = 20,
65 kPlatform = 21,
66 kCave = 22,
69};
70
77 {"Ref", ECbmModuleId::kRef},
78 {"Mvd", ECbmModuleId::kMvd},
79 {"Sts", ECbmModuleId::kSts},
80 {"Rich", ECbmModuleId::kRich},
81 {"Much", ECbmModuleId::kMuch},
82 {"Trd", ECbmModuleId::kTrd},
83 {"Tof", ECbmModuleId::kTof},
84 {"Must", ECbmModuleId::kMust},
85 {"Psd", ECbmModuleId::kPsd},
86 {"Hodo", ECbmModuleId::kHodo},
87 {"DummyDet", ECbmModuleId::kDummyDet},
88 {"Bmon", ECbmModuleId::kBmon},
89 {"Trd2d", ECbmModuleId::kTrd2d},
90 {"Fsd", ECbmModuleId::kFsd},
91 {"NofSystems", ECbmModuleId::kNofSystems},
92 {"Magnet", ECbmModuleId::kMagnet},
93 {"Target", ECbmModuleId::kTarget},
94 {"Pipe", ECbmModuleId::kPipe},
95 {"Shield", ECbmModuleId::kShield},
96 {"Platform", ECbmModuleId::kPlatform},
97 {"Cave", ECbmModuleId::kCave},
98 {"LastModule", ECbmModuleId::kLastModule},
99 {"NotExist", ECbmModuleId::kNotExist}
100);
101
116
117
176
181std::ostream& operator<<(std::ostream&, const ECbmDataType&);
182
197
207
210namespace cbm::algo::ca
211{
224
225
229 {
230 switch (detID) {
236 default: return ECbmModuleId::kNotExist;
237 }
238 }
239
243 {
244 switch (modId) {
250 default: return EDetectorID::END;
251 }
252 }
253} // namespace cbm::algo::ca
254
256// FIXME: SZh 02.06.2025:
257// These functions should to be static constexpr. Also they should be moved to a common
258// data-base of physics constants.
259inline double CbmProtonMass() { return 0.938272046; }
260inline double CbmNeutronMass() { return 0.939565379; }
261inline double CbmElectronMass() { return 0.000510998928; }
262
263#endif
ECbmModuleId & operator++(ECbmModuleId &)
operator ++ for ECbmModuleId for convenient usage in loops
Definition CbmDefs.cxx:24
ECbmRecoMode
Reconstruct the full time slice or event-by-event.
Definition CbmDefs.h:202
XPU_D constexpr auto ToIntegralType(T enumerator) -> typename std::underlying_type< T >::type
Converts an element of enum class to its underlying integral type.
Definition CbmDefs.h:33
double CbmProtonMass()
Definition CbmDefs.h:259
double CbmNeutronMass()
Definition CbmDefs.h:260
ECbmTreeAccess
Definition CbmDefs.h:192
std::ostream & operator<<(std::ostream &, const ECbmDataType &)
operator << for convenient output to std::ostream.
Definition CbmDefs.cxx:40
ECbmDataType
Enumerator for CBM data types.
Definition CbmDefs.h:122
@ kRichTrackParamZ
Definition CbmDefs.h:138
@ kRichTrackProjection
Definition CbmDefs.h:139
ECbmModuleId
Enumerator for module Identifiers.
Definition CbmDefs.h:45
@ kMvd
Micro-Vertex Detector.
Definition CbmDefs.h:47
@ kPipe
Beam pipe.
Definition CbmDefs.h:63
@ kHodo
Hodoscope (for test beam times)
Definition CbmDefs.h:55
@ kCave
Cave.
Definition CbmDefs.h:66
@ kTrd
Transition Radiation Detector.
Definition CbmDefs.h:51
@ kShield
Beam pipe shielding in MUCH section.
Definition CbmDefs.h:64
@ kMagnet
Magnet.
Definition CbmDefs.h:61
@ kTof
Time-of-flight Detector.
Definition CbmDefs.h:52
@ kNotExist
If not found.
Definition CbmDefs.h:68
@ kTarget
Target.
Definition CbmDefs.h:62
@ kPsd
Projectile spectator detector.
Definition CbmDefs.h:54
@ kSts
Silicon Tracking System.
Definition CbmDefs.h:48
@ kMust
MuSt detection system.
Definition CbmDefs.h:53
@ kTrd2d
TRD-FASP Detector (FIXME)
Definition CbmDefs.h:58
@ kDummyDet
Dummy for tutorials or tests.
Definition CbmDefs.h:56
@ kLastModule
For loops over all modules.
Definition CbmDefs.h:67
@ kPlatform
RICH rail platform.
Definition CbmDefs.h:65
@ kRef
Reference plane.
Definition CbmDefs.h:46
@ kMuch
Muon detection system.
Definition CbmDefs.h:50
@ kFsd
Forward spectator detector.
Definition CbmDefs.h:59
@ kBmon
Bmon Counter.
Definition CbmDefs.h:57
@ kNofSystems
For loops over active systems.
Definition CbmDefs.h:60
@ kRich
Ring-Imaging Cherenkov Detector.
Definition CbmDefs.h:49
double CbmElectronMass()
Definition CbmDefs.h:261
#define CBM_ENUM_DICT(type,...)
@ Undefined
Definition LmvmDef.h:29
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
constexpr ECbmModuleId ToCbmModuleId(EDetectorID detID)
Conversion map from EDetectorID to ECbmModuleId.
Definition CbmDefs.h:228
constexpr EDetectorID ToCaDetectorID(ECbmModuleId modId)
Conversion map from EDetectorID to ECbmModuleId.
Definition CbmDefs.h:242