R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BNeulandMapToCalTask.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH *
3 * Copyright (C) 2019-2023 Members of R3B Collaboration *
4 * *
5 * This software is distributed under the terms of the *
6 * GNU General Public Licence (GPL) version 3, *
7 * copied verbatim in the file "LICENSE". *
8 * *
9 * In applying this license GSI does not waive the privileges and immunities *
10 * granted to it by virtue of its status as an Intergovernmental Organization *
11 * or submit itself to any jurisdiction. *
12 ******************************************************************************/
13#pragma once
14
15#include "R3BDataMonitor.h"
16#include "R3BNeulandCalData2.h"
19#include "R3BParView.h"
20#include "R3BShared.h"
21#include "R3BValueError.h"
22#include <FairRootManager.h>
23#include <R3BIOConnector.h>
24#include <R3BNeulandBasePar.h>
26#include <R3BNeulandCommon.h>
27#include <string_view>
28#include <vector>
29
30class R3BEventHeader;
31class FairRuntimeDb;
32namespace R3B::Neuland
33{
35 {
36 public:
37 explicit Map2CalTask(std::string_view map_data_name = "NeulandMapData",
38 std::string_view trig_map_data_name = "NeulandTrigMapData",
39 std::string_view par_name = "LandTCalPar",
40 std::string_view trig_par_name = "LandTrigTCalPar",
41 std::string_view cal_data_name = "NeulandCalData");
42 void SetPulserMode(bool pulser_mode = true) { is_pulse_mode_ = pulser_mode; }
43 void SetNhitmin(unsigned int size) { signal_min_size_ = size; }
44 void EnableWalk(bool is_walk_enabled = true) { is_walk_enabled_ = is_walk_enabled; }
45
46 private:
47 bool is_pulse_mode_ = false;
48 bool is_walk_enabled_ = true;
49 float coarse_time_frequency_ = 0.; // MHz
52 unsigned int total_pmt_nums_ = 0;
53 unsigned int signal_min_size_ = 1;
54 unsigned int plane_num_ = 0;
55
56 // IO data and paramters:
60
63
64 void ExtraInit(FairRootManager* rootMan) override;
65 void HistogramInit(DataMonitor& histograms) override;
66 void BeginOfEvent() override { cal_data_.clear(); };
67 void TriggeredExec() override;
68 void FinishEvent() override;
69 void SetExtraPar(FairRuntimeDb* rtdb) override;
70 [[nodiscard]] auto CheckConditions() const -> bool override;
71
72 void set_pmt_num();
73 void set_ct_freq();
75 void calibrate();
76 void histogram_monitor(const BarCalData& cal, Side side);
77 void fill_cal_data(BarCalData& cal, const MapBarSignal& signals);
78 [[nodiscard]] auto doubleEdgeSignal_to_calSignal(const DoubleEdgeSignal& double_edge_signal,
79 R3B::Side side,
80 int module_num) const -> CalDataSignal;
81 [[nodiscard]] auto mapBarSignal_to_calSignals(const MapBarSignal& map_bar_signals,
82 int module_num,
83 R3B::Side side) const -> std::vector<CalDataSignal>;
84 [[nodiscard]] auto convert_to_real_time(R3BTCalPar2* calPar,
85 SingleEdgeSignal signal,
86 FTType ftType,
87 int module_num) const -> ValueError<double>;
88 [[nodiscard]] auto get_tot(const DoubleEdgeSignal& pmtSignal,
89 int module_num,
90 R3B::Side module_side) const -> ValueError<double>;
91 [[nodiscard]] auto get_trigger_time(int module_num, Side side) const -> ValueError<double>;
92 void overflow_correct(R3B::Neuland::CalDataSignal& calSignal) const;
93 };
94} // namespace R3B::Neuland
95
R3B::Map2CalPar R3BTCalPar2
R3B::Neuland::Map2CalTask R3BNeulandMapped2Cal2
void HistogramInit(DataMonitor &histograms) override
Map2CalTask(std::string_view map_data_name="NeulandMapData", std::string_view trig_map_data_name="NeulandTrigMapData", std::string_view par_name="LandTCalPar", std::string_view trig_par_name="LandTrigTCalPar", std::string_view cal_data_name="NeulandCalData")
void SetPulserMode(bool pulser_mode=true)
auto mapBarSignal_to_calSignals(const MapBarSignal &map_bar_signals, int module_num, R3B::Side side) const -> std::vector< CalDataSignal >
OutputVectorConnector< BarCalData > cal_data_
void EnableWalk(bool is_walk_enabled=true)
auto CheckConditions() const -> bool override
auto convert_to_real_time(R3BTCalPar2 *calPar, SingleEdgeSignal signal, FTType ftType, int module_num) const -> ValueError< double >
InputMapConnector< int, PaddleTamexMappedData > map_data_
void SetNhitmin(unsigned int size)
auto get_trigger_time(int module_num, Side side) const -> ValueError< double >
InputMapConnector< int, PaddleTamexTrigMappedData > trig_map_data_
void overflow_correct(R3B::Neuland::CalDataSignal &calSignal) const
auto doubleEdgeSignal_to_calSignal(const DoubleEdgeSignal &double_edge_signal, R3B::Side side, int module_num) const -> CalDataSignal
void ExtraInit(FairRootManager *rootMan) override
void fill_cal_data(BarCalData &cal, const MapBarSignal &signals)
void SetExtraPar(FairRuntimeDb *rtdb) override
InputParView< Map2CalPar > calibration_par_
auto get_tot(const DoubleEdgeSignal &pmtSignal, int module_num, R3B::Side module_side) const -> ValueError< double >
void histogram_monitor(const BarCalData &cal, Side side)
InputParView< Map2CalPar > calibration_trig_par_
Simulation of NeuLAND Bar/Paddle.
constexpr auto MAXCTValue
constexpr auto MaxCalTime
InputConnector< std::map< KeyType, ValueType > > InputMapConnector
OutputConnector< std::vector< ElementType > > OutputVectorConnector