R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BNeulandMapDataConverterTask.cxx
Go to the documentation of this file.
2#include "R3BException.h"
5#include "R3BShared.h"
6#include <FairRootManager.h>
7#include <FairTask.h>
8#include <RtypesCore.h>
9#include <TCollection.h>
10#include <string_view>
11
13{
14
15 // NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
16 MapDataConverterTask::MapDataConverterTask(std::string_view in_map_data_name,
17 std::string_view in_trig_map_data_name,
18 std::string_view out_map_data_name,
19 std::string_view out_trig_map_data_name)
20 : FairTask{ "NeulandMappedDataConverter", 1 }
21 , output_mapped_data_{ out_map_data_name }
22 , output_trig_mapped_data_{ out_trig_map_data_name }
23 , input_mapped_data_name{ in_map_data_name }
24 , input_trig_mapped_data_name{ in_trig_map_data_name }
25
26 {
27 }
28 auto MapDataConverterTask::Init() -> InitStatus
29 {
30
31 FairRootManager* mgr = FairRootManager::Instance();
32 input_mapped_data_ = dynamic_cast<TClonesArray*>(mgr->GetObject(input_mapped_data_name.c_str()));
33 if (input_mapped_data_ == nullptr)
34 {
35 throw R3B::runtime_error("Branch NeulandMapped not found");
36 }
37 input_trig_mapped_data_ = dynamic_cast<TClonesArray*>(mgr->GetObject(input_trig_mapped_data_name.c_str()));
38 if (input_trig_mapped_data_ == nullptr)
39 {
40 throw R3B::runtime_error("Branch NeulandTrigMapped not found");
41 }
42
45
46 return kSUCCESS;
47 }
48
49 void MapDataConverterTask::Exec(Option_t* /*option*/)
50 {
51 output_mapped_data_.clear();
53
56 }
57
59 {
60
61 auto& output_mapped_data = output_mapped_data_.get();
62
63 for (auto* input_mapped_data : TRangeDynCast<R3BPaddleTamexMappedData>(input_mapped_data_))
64 {
65 const auto plane_number = input_mapped_data->GetPlaneId();
66 const auto bar_number = input_mapped_data->GetBarId();
67
68 auto double_edge_signal = DoubleEdgeSignal{};
69
70 // TODO: is this true?
71 const auto side = (input_mapped_data->GetFineTime1LE() > 0) ? Side::left : Side::right;
72
73 if (side == Side::left)
74 {
75 double_edge_signal.leading.fine = input_mapped_data->GetFineTime1LE();
76 double_edge_signal.leading.coarse = input_mapped_data->GetCoarseTime1LE();
77 double_edge_signal.trailing.fine = input_mapped_data->GetFineTime1TE();
78 double_edge_signal.trailing.coarse = input_mapped_data->GetCoarseTime1TE();
79 }
80 else
81 {
82 double_edge_signal.leading.fine = input_mapped_data->GetFineTime2LE();
83 double_edge_signal.leading.coarse = input_mapped_data->GetCoarseTime2LE();
84 double_edge_signal.trailing.fine = input_mapped_data->GetFineTime2TE();
85 double_edge_signal.trailing.coarse = input_mapped_data->GetCoarseTime2TE();
86 }
87
88 auto& plane_map_data = output_mapped_data.try_emplace(plane_number).first->second;
89 plane_map_data.push_back(side, bar_number, double_edge_signal);
90 }
91 }
92
94 {
95
96 auto& output_trig_mapped_data = output_trig_mapped_data_.get();
97
98 for (auto* input_trig_mapped_data : TRangeDynCast<R3BPaddleTamexMappedData>(input_trig_mapped_data_))
99 {
100 const auto module_number = input_trig_mapped_data->GetBarId();
101 auto& module_map_data = output_trig_mapped_data.try_emplace(module_number).first->second;
102 module_map_data.signal.coarse = input_trig_mapped_data->GetCoarseTime1LE();
103 module_map_data.signal.fine = input_trig_mapped_data->GetFineTime1LE();
104 }
105 }
106
110
111} // namespace R3B::Neuland::Calibration
OutputMapConnector< int, PaddleTamexMappedData > output_mapped_data_
MapDataConverterTask(std::string_view in_map_data_name="NeulandMappedData", std::string_view in_trig_map_data_name="NeulandTrigMappedData", std::string_view out_map_data_name="NeulandMappedData", std::string_view out_trig_map_data_name="NeulandTrigMappedData")
OutputMapConnector< int, PaddleTamexTrigMappedData > output_trig_mapped_data_