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"
20#include "R3BParView.h"
21#include "R3BShared.h"
22#include "R3BValueError.h"
23#include <FairRootManager.h>
24#include <R3BIOConnector.h>
25#include <R3BNeulandBasePar.h>
27#include <R3BNeulandCommon.h>
28#include <string>
29#include <vector>
30
31class R3BEventHeader;
32class FairRuntimeDb;
33class TH1L;
34
35namespace R3B::Neuland
36{
37 class Map2CalTask;
39 {
41 bool enable = false;
42 bool enable_pulse_mode = false;
43 bool enable_walk_effect = true;
44 int min_stat = 1;
46 std::string name = "NeulandMap2CalTask";
47 std::string read = "NeulandMapData;NeulandTrigMapData;LandTCalPar;LandTrigTCalPar";
48 std::string write = "NeulandCalData";
49 };
51 {
52 public:
54 explicit Map2CalTask(const Config& config);
55
56 private:
58 float coarse_time_frequency_ = 0.; // MHz
61 unsigned int total_pmt_nums_ = 0;
62 unsigned int plane_num_ = 0;
63
64 // IO data and parameters:
68
71
72 void ExtraInit(FairRootManager* rootMan) override;
73 void HistogramInit(DataMonitor& histograms) override;
74 void BeginOfEvent() override { cal_data_.clear(); };
75 void TriggeredExec() override;
76 void FinishEvent() override;
77 void SetExtraPar(FairRuntimeDb* rtdb) override;
78 [[nodiscard]] auto CheckConditions([[maybe_unused]] TH1L* hist_condition) const -> bool override;
79
80 void set_pmt_num();
81 void set_ct_freq();
83 void calibrate();
84 void histogram_monitor(const BarCalData& cal, Side side);
85 void fill_cal_data(BarCalData& cal, const MapBarSignal& signals);
86 [[nodiscard]] auto doubleEdgeSignal_to_calSignal(const DoubleEdgeSignal& double_edge_signal,
87 R3B::Side side,
88 int module_num) const -> CalDataSignal;
89 [[nodiscard]] auto mapBarSignal_to_calSignals(const MapBarSignal& map_bar_signals,
90 int module_num,
91 R3B::Side side) const -> std::vector<CalDataSignal>;
92 [[nodiscard]] auto convert_to_real_time(R3BTCalPar2* calPar,
93 SingleEdgeSignal signal,
94 FTType ftType,
95 int module_num) const -> ValueError<double>;
96 [[nodiscard]] auto get_tot(const DoubleEdgeSignal& pmtSignal, int module_num, R3B::Side module_side) const
98 [[nodiscard]] auto get_trigger_time(int module_num, Side side) const -> ValueError<double>;
99 void overflow_correct(R3B::Neuland::CalDataSignal& calSignal) const;
100 };
101} // namespace R3B::Neuland
102
R3B::Map2CalPar R3BTCalPar2
R3B::Neuland::Map2CalTask R3BNeulandMapped2Cal2
void HistogramInit(DataMonitor &histograms) override
auto mapBarSignal_to_calSignals(const MapBarSignal &map_bar_signals, int module_num, R3B::Side side) const -> std::vector< CalDataSignal >
OutputVectorConnector< BarCalData > cal_data_
auto CheckConditions(TH1L *hist_condition) 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_
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