CbmRoot
Loading...
Searching...
No Matches
CbmCaParametersHandler.cxx
Go to the documentation of this file.
1/* Copyright (C) 2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer] */
4
9
11
13
14#include <Logger.h>
15
16#include <sstream>
17
18namespace cbm::ca
19{
20 // -------------------------------------------------------------------------------------------------------------------
21 //
23 {
24 static ParametersHandler instance;
25 return instance;
26 }
27
28 // -------------------------------------------------------------------------------------------------------------------
29 //
31 try {
32 if (fpParameters != nullptr) {
33 throw std::runtime_error("Attempt to initialize a ParametersHandler instance again. Please ensure, that the "
34 "instance was added to the FairTask-queue only once.");
35 }
36
37 auto builder = ParametersBuilder{};
39 builder.SetUserConfig(fsUserConfig);
40 builder.SetRequireHitPresence(!fbIgnoreHitPresence);
41 for (auto [detId, locId] : fvInactiveIds) {
42 builder.DisableStation(detId, locId);
43 }
44
47 std::make_shared<algo::ca::Parameters<double>>(std::move(builder.Build(FloatTag<double>{}, fFldMode)));
48
49 LOG(info) << fpParameters->ToString(3);
50
51 // Store tracking parameters, if required
52 if (!fsOutFilename.empty()) {
53 if (fpParameters->GetFieldMode() == algo::kf::EFieldMode::Original) {
54 // TODO: Provide a conversion method for EFieldMode::Original -> EFieldMode::Interpolated
55 LOG(fatal) << "cbm::ca::ParametersHandler: cannot store CA parameters with the original field mode";
56 }
57
58 LOG(info) << "cbm::ca::ParametersHandler: storing CA parameters to " << fsOutFilename;
60 }
61
62 return kSUCCESS;
63 }
64 catch (const std::exception& err) {
65 LOG(error) << "cbm::ca::ParametersHandler: initialization failed. Reason: " << err.what();
66 return kFATAL;
67 }
68
69 // -------------------------------------------------------------------------------------------------------------------
70 //
72 {
73 fpParameters = nullptr;
74 return Init();
75 }
76
77} // namespace cbm::ca
Handles an instance of the CA-parameters as a shared pointer (header)
Builds parameters for CBM CA tracking.
void SetMainConfig(const std::string &mainConfig)
Sets main config path.
std::string fsMainConfig
Main config.
InitStatus ReInit() override
Re-initializes the instance.
ParametersPtr_t fpParameters
ca::Parameters instance (double precision)
static ParametersHandler & Instance()
Instance.
ParametersHandler(const ParametersHandler &)=delete
InitStatus Init() override
Initializes the instance.
bool fbIgnoreHitPresence
ignores hit presence, when checks active detectors
std::string fsUserConfig
User config.
std::string fsOutFilename
Parameters output filename.
std::vector< std::pair< algo::ca::EDetectorID, int > > fvInactiveIds
Inactive stations.
algo::kf::EFieldMode fFldMode
magnetic field mode
@ Original
Original magnetic field function.
Definition KfDefs.h:110
A floating-point tag for tag dispatching.
Definition KfDefs.h:117
static void Store(const Parameters< double > &parameters, const std::string &fileName)
Stores parameter to file.
A floating-point tag for tag dispatching.
Definition KfDefs.h:117