R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BDigitizingPaddleNeuland.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH *
3 * Copyright (C) 2019-2025 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
15#include "R3BDigitizingPaddle.h"
16#include "R3BNeulandCommon.h"
17#include "R3BShared.h"
18#include <cmath>
19#include <vector>
20
26
27namespace R3B::Neuland
28{
29 class Cal2HitPar;
30}
31
33{
35 {
36 public:
37 explicit Paddle(int paddle_id);
38 explicit Paddle(int paddle_id, R3B::Neuland::Cal2HitPar* cal_to_hit_par);
39
40 [[nodiscard]] auto match_hits(const AbstractChannel::Hit& firstSignal,
41 const AbstractChannel::Hit& secondSignal) const -> float override;
42 [[nodiscard]] static auto HitCouplingNeuland(const AbstractPaddle& self,
43 const AbstractChannel::Hits& firstSignals,
44 const AbstractChannel::Hits& secondSignals)
45 -> std::vector<ChannelSignalPair>;
46 [[nodiscard]] auto GenerateChannelSignal(double mcTime,
47 double mcLight,
48 double dist,
49 enum Side channel_side) const -> AbstractChannel::Signal;
50
51 static constexpr double HALF_BAR_LENGTH = 135.; // [cm]
52 static constexpr double DEFAULT_ATTENUATION = 0.008; // light attenuation of plastic scintillator [1/cm]
53
54 private:
58 double time_offset_ = 0.0;
59 double time_sync_ = 0.0;
60
62
63 void pre_construct() override;
64
65 [[nodiscard]] auto compute_time(const AbstractChannel::Hit& firstSignal,
66 const AbstractChannel::Hit& secondSignal) const -> double override;
67 [[nodiscard]] auto compute_energy(const AbstractChannel::Hit& firstSignal,
68 const AbstractChannel::Hit& secondSignal) const -> double override;
69 [[nodiscard]] auto compute_position(const AbstractChannel::Hit& leftSignal,
70 const AbstractChannel::Hit& rightSignal) const -> double override;
71 [[nodiscard]] auto compute_channel_signals(const Signal& signal) const
73 };
74} // namespace R3B::Digitizing::Neuland
AbstractPaddle(int paddleID, SignalCouplingStrategy strategy=SignalCouplingByTime)
auto compute_channel_signals(const Signal &signal) const -> Pair< AbstractChannel::Signal > override
auto match_hits(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> float override
auto compute_energy(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> double override
auto compute_position(const AbstractChannel::Hit &leftSignal, const AbstractChannel::Hit &rightSignal) const -> double override
auto GenerateChannelSignal(double mcTime, double mcLight, double dist, enum Side channel_side) const -> AbstractChannel::Signal
auto compute_time(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> double override
static auto HitCouplingNeuland(const AbstractPaddle &self, const AbstractChannel::Hits &firstSignals, const AbstractChannel::Hits &secondSignals) -> std::vector< ChannelSignalPair >
Simulation of Mock Bar/Paddle.
Simulation of NeuLAND Bar/Paddle.
constexpr auto DEFAULT_EFFECTIVE_C