12#include <boost/archive/binary_iarchive.hpp>
13#include <boost/archive/binary_oarchive.hpp>
14#include <boost/filesystem.hpp>
15#include <boost/serialization/vector.hpp>
36 default:
return false;
46 std::ifstream ifs(filename, std::ios::binary);
48 std::stringstream msg;
49 msg <<
"RecoSetup::Load: input file \"" << filename <<
"\" was not found";
50 throw std::runtime_error(msg.str());
54 boost::archive::binary_iarchive ia(ifs);
57 catch (
const std::exception& err) {
58 std::stringstream msg;
59 msg <<
"RecoSetup::Load: input file \"" << filename
60 <<
"\" has inconsistent format or was corrupted. Details: " << err.what();
61 throw std::runtime_error(msg.str());
71 namespace fs = boost::filesystem;
72 auto path = fs::absolute(fs::weakly_canonical(filename));
73 fs::create_directories(path.parent_path());
75 std::ofstream ofs(path.string(), std::ios::binary);
77 std::stringstream msg;
78 msg <<
"RecoSetup::Store: failed opening file \"" << filename <<
"\" to store a setup";
79 throw std::runtime_error(msg.str());
81 boost::archive::binary_oarchive oa(ofs);
89 std::stringstream msg;
90 msg <<
"======== CBM Reconstruction Setup ============================================";
91 ForEachUnit([&](
const auto& unit) { msg <<
'\n' << unit.TableOfTrackingStations(); });
92 msg <<
"==============================================================================";
ECbmModuleId
Enumerator for module Identifiers.
@ kMvd
Micro-Vertex Detector.
@ kTrd
Transition Radiation Detector.
@ kTof
Time-of-flight Detector.
@ kSts
Silicon Tracking System.
@ kMuch
Muon detection system.
A collection of reconstruction setup unit interfaces for different CBM subsystems.
RecoSetup()=default
Default constructor.
An instance of reconstruction setup unit interfaces for online/offline data reconstruction.
void ForEachUnit(Visitor &&visitor) const
A for-each method, which is applied to each unit, if it has a value (constant access)
std::string ToString() const
Dumps contents to string.
static RecoSetup Load(const std::string &filename)
Loads setup from a file.
static void Store(const RecoSetup &setup, const std::string &filename)
Stores setup in a file.
bool Has() const
Checks, if a setup unit is available (compile-time)
RecoSetup()=default
Default constructor.