3#include <FairMCEventHeader.h>
11 void convert_event_header(FairMCEventHeader* mc_header, R3BEventHeader* header)
13 if (mc_header ==
nullptr)
15 throw R3B::runtime_error(
"MCEventHeader is nullptr!");
17 if (header ==
nullptr)
19 throw R3B::runtime_error(
"EventHeader is nullptr!");
21 header->SetRunId(mc_header->GetRunID());
27 : sim_cal_data_{ sim_cal_data_name }
28 , cal_data_{ cal_data_name }
40 void SimCal2Cal::init_event_header()
42 auto* root_manager = FairRootManager::Instance();
43 if (event_header_ =
dynamic_cast<R3BEventHeader*
>(root_manager->GetObject(
"EventHeader."));
44 event_header_ ==
nullptr)
48 if (mc_event_header_ =
dynamic_cast<FairMCEventHeader*
>(root_manager->GetObject(
"MCEventHeader."));
49 mc_event_header_ ==
nullptr)
51 throw R3B::logic_error(
"Cannot find MCEventHeader from the input simulated data file.");
55 void SimCal2Cal::init_base_par()
57 auto* rtdb = FairRuntimeDb::instance();
58 base_par_ = std::make_unique<CalibrationBasePar>().release();
59 base_par_->set_num_of_planes(number_of_dp_ * 2);
60 if (rtdb->addContainer(base_par_); base_par_ ==
nullptr)
62 throw R3B::runtime_error(
"Calibration parameter becomes nullptr!");
68 const auto& sim_cal_data = sim_cal_data_.get();
69 auto& cal_data = cal_data_.get();
72 convert_event_header(mc_event_header_, event_header_);
73 convert(sim_cal_data, cal_data);
80 void SimCal2Cal::convert(
const std::vector<R3B::Neuland::SimCalData>& sim_cal_data,
81 std::vector<BarCalData>& cal_data)
83 bar_map_data_.clear();
84 for (
const auto& sim_data : sim_cal_data)
86 auto module_id = sim_data.bar_module;
87 auto [iter, _] = bar_map_data_.try_emplace(module_id,
static_cast<unsigned int>(module_id));
91 left_signal.time_over_threshold = ValueError<double>{ sim_data.tot_l, 0 };
93 auto right_signal = CalDataSignal{};
94 right_signal.leading_time = ValueError<double>{ sim_data.let_r, 0 };
95 right_signal.time_over_threshold = ValueError<double>{ sim_data.tot_r, 0 };
97 auto& obj = iter->second;
98 obj.left.push_back(left_signal);
99 obj.right.push_back(right_signal);
101 for (
const auto& pair : bar_map_data_)
103 cal_data.push_back(pair.second);
auto Init() -> InitStatus override
SimCal2Cal(std::string_view sim_cal_data_name="NeulandSimCal", std::string_view cal_data_name="NeulandCalData")
void Exec(Option_t *) override
void FinishTask() override
void SetParContainers() override
Simulation of NeuLAND Bar/Paddle.
ValueError< double > leading_time