CbmRoot
Loading...
Searching...
No Matches
CaConfigReader.h
Go to the documentation of this file.
1/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer] */
4
9
10#pragma once // include this header only once per compilation unit
11
12#include "CaConfig.h"
13#include "CaIteration.h"
14#include "CbmYaml.h"
15
16#include <functional>
17#include <string>
18#include <unordered_map>
19#include <vector>
20
21#include <yaml-cpp/yaml.h>
22
23namespace YAML
24{
25 class Node;
26}
27
28namespace cbm::algo::ca
29{
30 enum class EDetectorID;
31
38 public:
40 explicit ConfigReader(int verbose = 1);
41
43 ~ConfigReader() = default;
44
46 void SetDetectorNames(const std::array<std::string, constants::size::MaxNdetectors>& input);
47
50 void SetMainConfigPath(const std::string& path);
51
54 void SetUserConfigPath(const std::string& path);
55
57 void SetVerbosity(int verbose) { fVerbose = verbose; }
58
60 int GetVerbosity() const { return fVerbose; }
61
63 Config CreateConfig() const;
64
67 std::vector<Iteration> ReadCAIterationVector() const;
68
72 std::vector<std::pair<EDetectorID, int>> ReadInactiveStationMap() const;
73
74 private:
84 YAML::Node GetNode(std::function<YAML::Node(YAML::Node)> fn, bool optional = false) const;
85
88
93 Iteration ReadSingleCAIteration(const YAML::Node& node, const Iteration& defaultIter) const;
94
98 std::vector<std::string> GetNodeKeys(const YAML::Node& node) const;
99
100 std::unordered_map<std::string, EDetectorID> fDetNameMap;
101
102 std::string fsMainConfigPath = "";
103 std::string fsUserConfigPath = "";
104
105 YAML::Node fMainConfigNode{YAML::NodeType::Undefined};
106 YAML::Node fUserConfigNode{YAML::NodeType::Undefined};
107
108 int fVerbose = 1;
109 };
110} // namespace cbm::algo::ca
EDetectorID
Enumeration for the tracking detector subsystems in CBM-CA.
Definition CbmDefs.h:216
Configuration for the CA tracking algorithm (source)
std::vector< Iteration > ReadCAIterationVector() const
Reads CA track finder iterations from YAML node.
YAML::Node fUserConfigNode
User configuration node.
int fVerbose
Verbosity level.
void SetDetectorNames(const std::array< std::string, constants::size::MaxNdetectors > &input)
Sets detector names.
void SetUserConfigPath(const std::string &path)
Sets user config file.
Config::MisalignmentTolArray_t ReadMisalignmentTolerances() const
Reads misalignment tolerances.
Iteration ReadSingleCAIteration(const YAML::Node &node, const Iteration &defaultIter) const
Reads iteration from config file.
void SetVerbosity(int verbose)
Sets verbosity level.
YAML::Node fMainConfigNode
Main configuration node.
std::unordered_map< std::string, EDetectorID > fDetNameMap
YAML::Node GetNode(std::function< YAML::Node(YAML::Node)> fn, bool optional=false) const
Accesses a node either from user config or from main config.
~ConfigReader()=default
Destructor.
int GetVerbosity() const
Gets verbosity level.
ConfigReader(int verbose=1)
Constructor.
std::vector< std::pair< EDetectorID, int > > ReadInactiveStationMap() const
Reads inactive tracking station map.
std::string fsUserConfigPath
Path to the user config file (optional)
std::vector< std::string > GetNodeKeys(const YAML::Node &node) const
Gets parameters content of the node.
std::string fsMainConfigPath
Path to the main config file (mandatory)
void SetMainConfigPath(const std::string &path)
Sets main config file.
Config CreateConfig() const
Creates a config.
Configuration of the CA tracking (excluding geometry)
Definition CaConfig.h:36
std::array< MisalignmentTolerance, constants::size::MaxNdetectors > MisalignmentTolArray_t
Definition CaConfig.h:41
A set of parameters for the CA Track finder iteration.
Definition CaIteration.h:31
TODO: SZh 8.11.2022: add selection of parameterisation.
Definition CaBranch.h:14