4#include <FairRootManager.h>
5#include <FairRuntimeDb.h>
10#include <range/v3/all.hpp>
16 : FairTask(name.data(), iVerbose)
27 if (
auto* rtdb = FairRuntimeDb::instance(); rtdb !=
nullptr)
39 if (
auto* rootMan = FairRootManager::Instance(); rootMan !=
nullptr)
41 if (eventHeader_ =
dynamic_cast<R3BEventHeader*
>(rootMan->GetObject(
"EventHeader."));
42 eventHeader_ ==
nullptr)
48 offspill_tpat_bit_ = base_par_->GetOffSpillTpatPos();
52 if (not is_hist_disabled_)
58 fmt::format(
"Neuland calibration task \"{}\" has event trigger type: {}",
70 fmt::format(
"Event number: {}, tpat: {:016b}", eventHeader_->GetEventno(), eventHeader_->GetTpat()));
71 (is_hist_disabled_) ? execute_no_hist() : execute_with_hist();
74 void CalibrationTask::execute_with_hist()
78 hist_trig_check_->Fill(fmt::format(
"{:016b}", eventHeader_->
GetTpat()).c_str(), 1);
81 hist_trig_check_->Fill(
"triggered", 1);
84 hist_condition_check_->Fill(
"failure", 1);
87 hist_condition_check_->Fill(
"success", 1);
88 passed_num_of_events++;
92 void CalibrationTask::execute_no_hist()
96 passed_num_of_events++;
105 fmt::format(R
"(Passed events with the trigger type "{}" in task "{}": {})",
108 passed_num_of_events));
109 if (not is_hist_disabled_ and not is_write_hist_disabled_)
111 histograms_.save_to_sink(GetName());
117 "Figures not saved due to current configuration: hist_disabled = {}, write_hist_disabled = {}",
119 is_write_hist_disabled_));
121 ranges::for_each(output_pars_, [](FairParSet* par) { par->setChanged(); });
125 auto CalibrationTask::check_trigger() const ->
bool
128 fmt::format(R
"(From task "{}": tpat {}. Trig type {})",
135 void CalibrationTask::init_histogram()
137 hist_trig_check_ = histograms_.
add_hist<TH1I>(
"trig_check",
"check the triggered or passed events", 1, 0., 0.);
138 hist_condition_check_ = histograms_.
add_hist<TH1I>(
"condition_check",
"check the condition", 1, 0., 0.);
142 void CalibrationTask::check_input_par()
144 auto par_not_changed = ranges::find_if(input_pars_, [](
auto* par) {
return !par->hasChanged(); });
145 if (par_not_changed != input_pars_.end())
147 throw R3B::runtime_error(fmt::format(R
"(Calibration parameter "{}" is not initiated from the root file!)",
148 (*par_not_changed)->GetName()));
151 void CalibrationTask::reset()
153 passed_num_of_events = 0;
154 histograms_.reset_all_hists();
#define R3BLOG(severity, x)
auto add_hist(std::unique_ptr< TH1 > hist) -> TH1 *
virtual void SetExtraPar(FairRuntimeDb *rtdb)
virtual void ExtraInit(FairRootManager *rootMan)
virtual auto CheckConditions() const -> bool
virtual void HistogramInit(DataMonitor &histograms)
auto Init() -> InitStatus override
void FinishTask() override
virtual void TriggeredExec()=0
void Exec(Option_t *option) override
virtual void BeginOfEvent()
void SetParContainers() override
Simulation of NeuLAND Bar/Paddle.
auto CheckTriggerWithTpat(CalTrigger trigger, int tpat, int off_spill_bit) -> bool
auto CalTrigger2Str(CalTrigger cal_trigger) -> std::string
constexpr auto CalTrigger2Tpat(CalTrigger cal_trigger, int off_spill_bit) -> std::bitset< TPAT_BITSIZE >