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 "R3BNeulandCalData2.h"
18#include <R3BIOConnector.h>
19#include <R3BNeulandBasePar.h>
20#include <R3BNeulandCalData.h>
22#include <R3BNeulandCommon.h>
23
24class R3BEventHeader;
25namespace R3B::Neuland
26{
28 {
29 public:
31 Map2CalTask(std::string_view name, int iVerbose);
32 void SetPulserMode(bool pulser_mode = true) { is_pulse_mode_ = pulser_mode; }
33 void SetNhitmin(unsigned int size) { signal_min_size_ = size; }
34 void EnableWak(bool is_walk_enabled = true) { is_walk_enabled_ = is_walk_enabled; }
35
36 private:
37 bool is_pulse_mode_ = false;
38 bool is_walk_enabled_ = true;
39 float coarse_time_frequency_ = 0.; // MHz
40 unsigned int coarse_time_max_num_ = MAXCTValue;
41 double max_coarse_time_ = R3B::Neuland::MaxCalTime;
42 unsigned int total_pmt_nums_ = 0;
43 unsigned int signal_min_size_ = 1;
44 unsigned int plane_num_ = 0;
45
46 // IO data and paramters:
47 InputVectorConnector<PaddleTamexMappedData> mappedData_{ "NeulandMappedData" };
48 InputMapConnector<unsigned int, PaddleTamexTrigMappedData> trigMappedData_{ "NeulandTrigMappedData" };
49 OutputVectorConnector<BarCalData> calData_{ "NeulandCalData" };
50
51 CalibrationBasePar* base_par_ = InputPar<CalibrationBasePar>("NeulandCalibrationBasePar");
52 Map2CalPar* calibrationPar_ = InputPar<Map2CalPar>("LandTCalPar");
53 Map2CalPar* calibrationTrigPar_ = InputPar<Map2CalPar>("LandTrigTCalPar");
54
55 void ExtraInit(FairRootManager* rootMan) override;
56 void HistogramInit(DataMonitor& histograms) override;
57 void BeginOfEvent() override { calData_.clear(); };
58 void TriggeredExec() override;
59 void FinishEvent() override;
60 [[nodiscard]] auto CheckConditions() const -> bool override;
61
62 void set_pmt_num();
63 void set_ct_freq();
64 void sample_parameters();
65 void calibrate();
66 void histogram_monitor(const BarCalData& cal, Side side);
67 void fill_cal_data(BarCalData& cal, const MapBarSignal& signals);
68 [[nodiscard]] auto doubleEdgeSignal_to_calSignal(const DoubleEdgeSignal& double_edge_signal,
69 R3B::Side side,
70 unsigned int module_num) const -> CalDataSignal;
71 [[nodiscard]] auto mapBarSignal_to_calSignals(const MapBarSignal& map_bar_signals,
72 unsigned int module_num,
73 R3B::Side side) const -> std::vector<CalDataSignal>;
74 [[nodiscard]] auto convert_to_real_time(R3BTCalPar2* calPar,
75 SingleEdgeSignal signal,
76 FTType ftType,
77 unsigned int module_num) const -> ValueError<double>;
78 [[nodiscard]] auto get_tot(DoubleEdgeSignal pmtSignal,
79 unsigned int module_num,
80 Side side) const -> ValueError<double>;
81 [[nodiscard]] auto get_trigger_time(unsigned int module_num, Side side) const -> ValueError<double>;
82 void overflow_correct(R3B::Neuland::CalDataSignal& calSignal) const;
83 };
84} // namespace R3B::Neuland
85
R3B::Map2CalPar R3BTCalPar2
R3B::Neuland::Map2CalTask R3BNeulandMapped2Cal2
auto InputPar(std::string_view par_name, FairRuntimeDb *rtdb=FairRuntimeDb::instance()) -> ParType *
void HistogramInit(DataMonitor &histograms) override
void SetPulserMode(bool pulser_mode=true)
auto CheckConditions() const -> bool override
void SetNhitmin(unsigned int size)
void EnableWak(bool is_walk_enabled=true)
void ExtraInit(FairRootManager *rootMan) override
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