19#include <RtypesCore.h>
27 template <
typename Type>
75 template <
typename Type>
79 using Hits = std::vector<Hit>;
86 [[nodiscard]]
auto HasFired() const ->
bool;
ChannelCalSignal CalSignal
virtual auto compute_energy(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> double=0
virtual void pre_construct()
auto HasFired() const -> bool
virtual auto compute_position(const AbstractChannel::Hit &rightSignal, const AbstractChannel::Hit &leftSignal) const -> double=0
virtual void extra_reset()
virtual auto compute_channel_signals(const Signal &hit) const -> Pair< AbstractChannel::Signal >=0
std::unique_ptr< AbstractChannel > left_channel_
auto GetRightChannel() const -> const AbstractChannel *
virtual auto match_hits(const AbstractChannel::Hit &, const AbstractChannel::Hit &) const -> float
auto GetLeftChannel() const -> const AbstractChannel *
auto GetRightChannelRef() const -> auto &
void construct_paddle_signals(Hits &paddle_signals, const AbstractChannel::Hits &firstSignals, const AbstractChannel::Hits &secondSignals) const
std::unique_ptr< AbstractChannel > right_channel_
auto GetTrigTime() const -> double
std::function< std::vector< ChannelSignalPair >(const AbstractPaddle &, const AbstractChannel::Hits &, const AbstractChannel::Hits &)> SignalCouplingStrategy
void DepositLight(const Signal &signal)
auto HasHalfFired() const -> bool
virtual auto compute_time(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> double=0
Pair< std::reference_wrapper< const AbstractChannel::Hit > > ChannelSignalPair
void SetPaddleID(int paddle_id)
void SetChannel(std::unique_ptr< AbstractChannel > channel)
auto GetPaddleID() const -> int
auto GetSignalCouplingStragtegy() const -> const SignalCouplingStrategy &
static auto SignalCouplingByTime(const AbstractPaddle &self, const AbstractChannel::Hits &firstSignals, const AbstractChannel::Hits &secondSignals) -> std::vector< ChannelSignalPair >
auto GetLeftChannelRef() const -> auto &
auto GetChannel(R3B::Side side) const -> const Digitizing::AbstractChannel &
void SetSignalCouplingStrategy(const SignalCouplingStrategy &strategy)
auto GetHits() const -> const std::vector< Hit > &
SignalCouplingStrategy signal_coupling_strategy_
AbstractPaddle(int paddleID, SignalCouplingStrategy strategy=SignalCouplingByTime)
std::reference_wrapper< const AbstractChannel::Hit > right
std::reference_wrapper< const AbstractChannel::Hit > left
LRPair(Type p_left, Type p_right)
const AbstractChannel::CalSignal * right_channel_cal
Reference to the right channel cal.
const AbstractChannel::Hit * right_channel_hit
Reference to the right channel hit.
const AbstractChannel::Hit * left_channel_hit
Reference to the left channel hit.
PaddleHit(LRPair< const AbstractChannel::Hit * > p_signals)
double energy
The energy of the paddle hit [MeV].
const AbstractChannel::CalSignal * left_channel_cal
Reference to the left channel cal.
PaddleHit(LRPair< const AbstractChannel::CalSignal * > p_signals)
double position
The distance to the center point of the paddle [cm].
double time
The time of the paddle hit [ns].
double distance_to_center