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
14#include "R3BDigitizingEngine.h"
15#include "R3BNeulandCommon.h"
16
22
23namespace R3B::Neuland
24{
25 class Cal2HitPar;
26}
27
29{
31 {
32 public:
33 explicit NeulandPaddle(uint16_t paddleID);
34
35 explicit NeulandPaddle(uint16_t paddleID, R3B::Neuland::Cal2HitPar* cal_to_hit_par);
36
37 private:
38 [[nodiscard]] auto ComputeTime(const Channel::Signal& firstSignal,
39 const Channel::Signal& secondSignal) const -> double override;
40 [[nodiscard]] auto ComputeEnergy(const Channel::Signal& firstSignal,
41 const Channel::Signal& secondSignal) const -> double override;
42 [[nodiscard]] auto ComputePosition(const Channel::Signal& leftSignal,
43 const Channel::Signal& rightSignal) const -> double override;
44 auto ComputeChannelHits(const Hit& hit) const -> Pair<Channel::Hit> override;
45
46 public:
47 static constexpr double gHalfLength = 135.; // [cm]
48 static constexpr double gAttenuation = 0.008; // light attenuation of plastic scintillator [1/cm]
49 static constexpr double gLambda = 1. / 2.1;
50
51 auto MatchSignals(const Channel::Signal& firstSignal,
52 const Channel::Signal& secondSignal) const -> float override;
53 [[nodiscard]] static auto SignalCouplingNeuland(const Paddle& self,
54 const Channel::Signals& firstSignals,
55 const Channel::Signals& secondSignals)
56 -> std::vector<ChannelSignalPair>;
57 auto GenerateChannelHit(double mcTime,
58 double mcLight,
59 double dist,
60 enum ChannelSide channel_side) const -> Channel::Hit;
61
62 private:
63 // Paula: non static member variables, are not used in TacQuila
64 double gHalfLength_ = 135.; // [cm]
65 double attenuation_ = 0.008; // light attenuation of plastic scintillator [1/cm]
66 double gLambda_ = 1. / 2.1;
67 double ReverseAttenFac_ = std::exp(NeulandPaddle::gHalfLength * NeulandPaddle::gAttenuation);
68 double effective_speed_ = R3B::Neuland::DEFAULT_EFFECTIVE_C;
69 double time_offset_ = 0.0;
70 double time_sync_ = 0.0;
71 };
72} // namespace R3B::Digitizing::Neuland
Digitizing::Neuland::NeulandPaddle NeulandPaddle
std::vector< Signal > Signals
auto ComputeTime(const Channel::Signal &firstSignal, const Channel::Signal &secondSignal) const -> double override
auto ComputeChannelHits(const Hit &hit) const -> Pair< Channel::Hit > override
auto ComputeEnergy(const Channel::Signal &firstSignal, const Channel::Signal &secondSignal) const -> double override
auto GenerateChannelHit(double mcTime, double mcLight, double dist, enum ChannelSide channel_side) const -> Channel::Hit
static auto SignalCouplingNeuland(const Paddle &self, const Channel::Signals &firstSignals, const Channel::Signals &secondSignals) -> std::vector< ChannelSignalPair >
auto ComputePosition(const Channel::Signal &leftSignal, const Channel::Signal &rightSignal) const -> double override
auto MatchSignals(const Channel::Signal &firstSignal, const Channel::Signal &secondSignal) const -> float override
Paddle(int paddleID, SignalCouplingStrategy strategy=SignalCouplingByTime)
Simulation of Mock Bar/Paddle.
Simulation of NeuLAND Bar/Paddle.
constexpr auto DEFAULT_EFFECTIVE_C