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 "R3BShared.h"
20#include "R3BValueError.h"
21#include <FairRootManager.h>
22#include <R3BIOConnector.h>
23#include <R3BNeulandBasePar.h>
25#include <R3BNeulandCommon.h>
26#include <string_view>
27#include <vector>
28
29class R3BEventHeader;
30namespace R3B::Neuland
31{
33 {
34 public:
36 Map2CalTask(std::string_view name, int iVerbose);
37 void SetPulserMode(bool pulser_mode = true) { is_pulse_mode_ = pulser_mode; }
38 void SetNhitmin(unsigned int size) { signal_min_size_ = size; }
39 void EnableWak(bool is_walk_enabled = true) { is_walk_enabled_ = is_walk_enabled; }
40
41 private:
42 bool is_pulse_mode_ = false;
43 bool is_walk_enabled_ = true;
44 float coarse_time_frequency_ = 0.; // MHz
47 unsigned int total_pmt_nums_ = 0;
48 unsigned int signal_min_size_ = 1;
49 unsigned int plane_num_ = 0;
50
51 // IO data and paramters:
55
59
60 void ExtraInit(FairRootManager* rootMan) override;
61 void HistogramInit(DataMonitor& histograms) override;
62 void BeginOfEvent() override { calData_.clear(); };
63 void TriggeredExec() override;
64 void FinishEvent() override;
65 [[nodiscard]] auto CheckConditions() const -> bool override;
66
67 void set_pmt_num();
68 void set_ct_freq();
70 void calibrate();
71 void histogram_monitor(const BarCalData& cal, Side side);
72 void fill_cal_data(BarCalData& cal, const MapBarSignal& signals);
73 [[nodiscard]] auto doubleEdgeSignal_to_calSignal(const DoubleEdgeSignal& double_edge_signal,
74 R3B::Side side,
75 unsigned int module_num) const -> CalDataSignal;
76 [[nodiscard]] auto mapBarSignal_to_calSignals(const MapBarSignal& map_bar_signals,
77 unsigned int module_num,
78 R3B::Side side) const -> std::vector<CalDataSignal>;
79 [[nodiscard]] auto convert_to_real_time(R3BTCalPar2* calPar,
80 SingleEdgeSignal signal,
81 FTType ftType,
82 unsigned int module_num) const -> ValueError<double>;
83 [[nodiscard]] auto get_tot(const DoubleEdgeSignal& pmtSignal,
84 unsigned int module_num,
85 R3B::Side module_side) const -> ValueError<double>;
86 [[nodiscard]] auto get_trigger_time(unsigned int module_num, Side side) const -> ValueError<double>;
87 void overflow_correct(R3B::Neuland::CalDataSignal& calSignal) const;
88 };
89} // namespace R3B::Neuland
90
R3B::Map2CalPar R3BTCalPar2
R3B::Neuland::Map2CalTask R3BNeulandMapped2Cal2
auto InputPar(std::string_view par_name, FairRuntimeDb *rtdb=FairRuntimeDb::instance()) -> ParType *
void HistogramInit(DataMonitor &histograms) override
InputMapConnector< unsigned int, PaddleTamexTrigMappedData > trigMappedData_
auto get_tot(const DoubleEdgeSignal &pmtSignal, unsigned int module_num, R3B::Side module_side) const -> ValueError< double >
void SetPulserMode(bool pulser_mode=true)
OutputVectorConnector< BarCalData > calData_
auto get_trigger_time(unsigned int module_num, Side side) const -> ValueError< double >
auto mapBarSignal_to_calSignals(const MapBarSignal &map_bar_signals, unsigned int module_num, R3B::Side side) const -> std::vector< CalDataSignal >
auto convert_to_real_time(R3BTCalPar2 *calPar, SingleEdgeSignal signal, FTType ftType, unsigned int module_num) const -> ValueError< double >
auto CheckConditions() const -> bool override
InputVectorConnector< PaddleTamexMappedData > mappedData_
void SetNhitmin(unsigned int size)
void overflow_correct(R3B::Neuland::CalDataSignal &calSignal) const
void EnableWak(bool is_walk_enabled=true)
void ExtraInit(FairRootManager *rootMan) override
void fill_cal_data(BarCalData &cal, const MapBarSignal &signals)
auto doubleEdgeSignal_to_calSignal(const DoubleEdgeSignal &double_edge_signal, R3B::Side side, unsigned int module_num) const -> CalDataSignal
void histogram_monitor(const BarCalData &cal, Side side)
Simulation of NeuLAND Bar/Paddle.
constexpr auto MAXCTValue
constexpr auto MaxCalTime
InputConnector< std::vector< ElementType > > InputVectorConnector
InputConnector< std::map< KeyType, ValueType > > InputMapConnector
OutputConnector< std::vector< ElementType > > OutputVectorConnector