CbmRoot
Loading...
Searching...
No Matches
CaConfig.h
Go to the documentation of this file.
1/* Copyright (C) 2025 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 "CaDefs.h"
13#include "CaIteration.h"
15#include "CbmYaml.h"
16
17#include <boost/serialization/access.hpp>
18#include <boost/serialization/array.hpp>
19#include <boost/serialization/utility.hpp>
20#include <boost/serialization/vector.hpp>
21
22#include <string>
23#include <vector>
24
25namespace cbm::algo::ca
26{
27 enum class EDetectorID;
28
36 class alignas(constants::misc::Alignment) Config {
37 public:
38 template<typename T>
39 using DynArray_t = std::vector<T>;
40
41 using MisalignmentTolArray_t = std::array<MisalignmentTolerance, constants::size::MaxNdetectors>;
42
43
46 struct alignas(constants::misc::Alignment) Control {
50 bool ghostSuppression{false};
51
53 yaml::Property(&Control::maxDoubletsPerSinglet, "max_doublets_per_singlet",
54 "Max number of doublets per singlet to accept branching"),
55 yaml::Property(&Control::maxTripletsPerDoublet, "max_triplets_per_doublet",
56 "Max number of triplets per doublet to accept branching"),
57 //yaml::Property(&Control::defaultMass, "default_mass",
58 // "Default mass of tracked particle for fitting"),
59 yaml::Property(&Control::ghostSuppression, "is_ghost_suppression", "Enable ghost suppression"));
60
61 private:
63
65 template<class Archive>
66 void serialize(Archive& ar, const unsigned int)
67 {
70 ar& defaultMass;
72 }
73 };
74
75
80 struct alignas(constants::misc::Alignment) Dev {
81 bool extendTracksViaMc{false};
84 bool matchDoubletsViaMc{false};
85 bool matchTripletsViaMc{false};
87 bool useParSearchWindows{false};
88
90 yaml::Property(&Dev::extendTracksViaMc, "extend_tracks_via_mc", "Extend tracks using MC information"),
91 yaml::Property(&Dev::forceUseOriginalField, "use_of_original_field", "Force using original magnetic field"),
92 yaml::Property(&Dev::ignoreHitSearchAreas, "ignore_hit_search_areas", "Process all hits on the station ignoring hit search areas"),
93 yaml::Property(&Dev::matchDoubletsViaMc, "match_doublets_via_mc", "Match doublets using MC information"),
94 yaml::Property(&Dev::matchTripletsViaMc, "match_triplets_via_mc", "Match triplets using MC information"),
95 yaml::Property(&Dev::suppressOverlapHitsViaMc, "suppress_overlap_hits_via_mc", "Suppress hits in sensor overlaps using MC information"),
96 yaml::Property(&Dev::useParSearchWindows, "par_search_w_used", "Parameterized search windows are used in track finding")
97 );
98
99 private:
101
103 template<class Archive>
104 void serialize(Archive& ar, const unsigned int)
105 {
113 }
114 };
115
116
117 // FIXME: remove
118 Config() = default;
119
125 Config(DynArray_t<Iteration>&& iterations, Control&& controlFlags, Dev&& devFlags,
126 MisalignmentTolArray_t&& misalignment);
127
129 bool DevExtendTracksViaMc() const { return fDev.extendTracksViaMc; }
130
132 bool DevForceUseOriginalField() const { return fDev.forceUseOriginalField; }
133
135 bool DevIgnoreHitSearchAreas() const { return fDev.ignoreHitSearchAreas; }
136
138 bool DevMatchDoubletsViaMc() const { return fDev.matchDoubletsViaMc; }
139
141 bool DevMatchTripletsViaMc() const { return fDev.matchTripletsViaMc; }
142
144 bool DevSuppressOverlapHitsViaMc() const { return fDev.suppressOverlapHitsViaMc; }
145
147 bool DevUseParSearchWindows() const { return fDev.useParSearchWindows; }
148
150 int GetNofIterations() const { return fvCaIterations.size(); }
151
154 const Iteration& GetIteration(int iIteration) const { return fvCaIterations[iIteration]; }
155
158
160 float GetDefaultMass() const { return fControl.defaultMass; }
161
163 int GetMaxDoubletsPerSinglet() const { return fControl.maxDoubletsPerSinglet; }
164
166 int GetMaxTripletsPerDoublet() const { return fControl.maxTripletsPerDoublet; }
167
171 {
172 return fvMisalignment[static_cast<int>(detId)];
173 }
174
176 bool SuppressGhost() const { return fControl.ghostSuppression; }
177
180 std::string ToString(int indentLevel = 0) const;
181
182 private:
187
190 template<class Archive>
191 void serialize(Archive& ar, const unsigned int)
192 {
193 ar& fvCaIterations;
194 ar& fControl;
195 ar& fDev;
196 ar& fvMisalignment;
197 }
198 };
199} // namespace cbm::algo::ca
Compile-time constants definition for the CA tracking algorithm.
Misalignment correction for different detector subsystems.
int GetNofIterations() const
Gets number of CA iterations.
Definition CaConfig.h:150
const Iteration & GetIteration(int iIteration) const
Gets an iteraion.
Definition CaConfig.h:154
Dev fDev
Development flags.
Definition CaConfig.h:185
std::string ToString(int indentLevel=0) const
String representation of the class.
Definition CaConfig.cxx:33
bool DevSuppressOverlapHitsViaMc() const
Dev. flag: if to suppress hits in sensor overlaps using MC information.
Definition CaConfig.h:144
bool DevMatchDoubletsViaMc() const
Dev. flag: if to match doublets with MC information.
Definition CaConfig.h:138
MisalignmentTolArray_t fvMisalignment
Misalignment tolerances vs. detID.
Definition CaConfig.h:186
const MisalignmentTolerance & GetMisalignmentTolerance(EDetectorID detId) const
Gets misalignment tolerance.
Definition CaConfig.h:170
bool DevExtendTracksViaMc() const
Dev. flag: if to extend tracks using MC infromation.
Definition CaConfig.h:129
bool DevUseParSearchWindows() const
Dev. flag: use pre-estimated parameterized search windows.
Definition CaConfig.h:147
int GetMaxDoubletsPerSinglet() const
Gets maximal number of doublets per singlet allowed in triplet finding.
Definition CaConfig.h:163
float GetDefaultMass() const
Gets default mass of a particle for fitting tracks.
Definition CaConfig.h:160
std::array< MisalignmentTolerance, constants::size::MaxNdetectors > MisalignmentTolArray_t
Definition CaConfig.h:41
bool DevIgnoreHitSearchAreas() const
Dev. flag: if to ignore hit search areas.
Definition CaConfig.h:135
bool SuppressGhost() const
Enables ghost track suppression.
Definition CaConfig.h:176
std::vector< T > DynArray_t
A type of container for a dynamic array.
Definition CaConfig.h:39
Control fControl
Control flags.
Definition CaConfig.h:184
friend class boost::serialization::access
Definition CaConfig.h:188
void serialize(Archive &ar, const unsigned int)
Serialization method.
Definition CaConfig.h:191
const DynArray_t< Iteration > & GetIterations() const
Constant accessor to iterations array.
Definition CaConfig.h:157
bool DevMatchTripletsViaMc() const
Dev. flag: if to match triplets with MC information.
Definition CaConfig.h:141
bool DevForceUseOriginalField() const
Dev. flag: if to forse using the original magnetic field.
Definition CaConfig.h:132
int GetMaxTripletsPerDoublet() const
Gets maximal number of triplets per doublet allowed in triplet finding.
Definition CaConfig.h:166
DynArray_t< Iteration > fvCaIterations
Vector of CA iteration properties.
Definition CaConfig.h:183
A set of parameters for the CA Track finder iteration.
Definition CaIteration.h:31
Misalignment correction for x, y and time measurements in tracking.
constexpr fscal MuonMass
Particle masses etc used for the track fit, fscal precision.
Definition CaDefs.h:90
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
CA control flags and parametrs.
Definition CaConfig.h:46
int maxTripletsPerDoublet
Max number of triplets per doublet to accept branching.
Definition CaConfig.h:48
void serialize(Archive &ar, const unsigned int)
Serialization method.
Definition CaConfig.h:66
CBM_YAML_PROPERTIES(yaml::Property(&Control::maxDoubletsPerSinglet, "max_doublets_per_singlet", "Max number of doublets per singlet to accept branching"), yaml::Property(&Control::maxTripletsPerDoublet, "max_triplets_per_doublet", "Max number of triplets per doublet to accept branching"), yaml::Property(&Control::ghostSuppression, "is_ghost_suppression", "Enable ghost suppression"))
float defaultMass
Default particle mass for track fitting.
Definition CaConfig.h:49
friend class boost::serialization::access
Definition CaConfig.h:62
int maxDoubletsPerSinglet
Max number of doublets per singlet to accept branching.
Definition CaConfig.h:47
bool ghostSuppression
Enable ghost suppression.
Definition CaConfig.h:50
CA development flags.
Definition CaConfig.h:80
bool matchTripletsViaMc
Match triplets using MC information.
Definition CaConfig.h:85
bool extendTracksViaMc
Extend tracks using MC information.
Definition CaConfig.h:81
CBM_YAML_PROPERTIES(yaml::Property(&Dev::extendTracksViaMc, "extend_tracks_via_mc", "Extend tracks using MC information"), yaml::Property(&Dev::forceUseOriginalField, "use_of_original_field", "Force using original magnetic field"), yaml::Property(&Dev::ignoreHitSearchAreas, "ignore_hit_search_areas", "Process all hits on the station ignoring hit search areas"), yaml::Property(&Dev::matchDoubletsViaMc, "match_doublets_via_mc", "Match doublets using MC information"), yaml::Property(&Dev::matchTripletsViaMc, "match_triplets_via_mc", "Match triplets using MC information"), yaml::Property(&Dev::suppressOverlapHitsViaMc, "suppress_overlap_hits_via_mc", "Suppress hits in sensor overlaps using MC information"), yaml::Property(&Dev::useParSearchWindows, "par_search_w_used", "Parameterized search windows are used in track finding"))
bool suppressOverlapHitsViaMc
Suppress hits in sensor overlaps using MC information.
Definition CaConfig.h:86
bool useParSearchWindows
Use pre-estimated seach windows in track finding. If false, use KF.
Definition CaConfig.h:87
bool matchDoubletsViaMc
Match doublets using MC information.
Definition CaConfig.h:84
void serialize(Archive &ar, const unsigned int)
Serialization method.
Definition CaConfig.h:104
friend class boost::serialization::access
Definition CaConfig.h:100
bool forceUseOriginalField
Force using the original magnetic field.
Definition CaConfig.h:82
bool ignoreHitSearchAreas
Process all hits on the station ignoring hit search areas.
Definition CaConfig.h:83