14#ifndef DIGITIZING_PADDLE_H
15#define DIGITIZING_PADDLE_H
19#include <RtypesCore.h>
26 template <
typename Type>
72 template <
typename Type>
111 std::unique_ptr<
Channel> fLeftChannel{};
112 std::unique_ptr<Channel> fRightChannel{};
ChannelCalSignal CalSignal
std::vector< Signal > Signals
auto GetLeftChannel() const -> const Channel *
void SetChannel(std::unique_ptr< Channel > channel)
std::function< std::vector< ChannelSignalPair >(const Paddle &, const Channel::Signals &, const Channel::Signals &)> SignalCouplingStrategy
virtual auto ComputePosition(const Channel::Signal &rightSignal, const Channel::Signal &leftSignal) const -> double=0
auto & GetRightChannelRef()
std::vector< Signal > Signals
static auto SignalCouplingByTime(const Paddle &self, const Channel::Signals &firstSignals, const Channel::Signals &secondSignals) -> std::vector< ChannelSignalPair >
Pair< std::reference_wrapper< const Channel::Signal > > ChannelSignalPair
auto HasHalfFired() const -> bool
virtual auto ComputeChannelHits(const Hit &hit) const -> Pair< Channel::Hit >=0
Paddle(int paddleID, SignalCouplingStrategy strategy=SignalCouplingByTime)
void DepositLight(const Hit &hit)
auto GetSignals() const -> const std::vector< Signal > &
virtual auto ComputeEnergy(const Channel::Signal &firstSignal, const Channel::Signal &secondSignal) const -> double=0
auto GetTrigTime() const -> double
auto & GetLeftChannelRef()
auto GetPaddleID() const -> int
auto GetSignalCouplingStragtegy() const -> const SignalCouplingStrategy &
void SetSignalCouplingStrategy(const SignalCouplingStrategy &strategy)
virtual auto ConstructPaddelSignals(const Channel::Signals &firstSignals, const Channel::Signals &secondSignals) const -> Signals
virtual auto ComputeTime(const Channel::Signal &firstSignal, const Channel::Signal &secondSignal) const -> double=0
auto HasFired() const -> bool
virtual auto MatchSignals(const Channel::Signal &firstSignal, const Channel::Signal &secondSignal) const -> float
auto GetRightChannel() const -> const Channel *
std::reference_wrapper< const Channel::Signal > right
std::reference_wrapper< const Channel::Signal > left
LRPair(Type p_left, Type p_right)
double DistToPaddleCenter
PaddleSignal(LRPair< std::reference_wrapper< const Channel::Signal > > p_signals)
const Channel::CalSignal * rightChannelCal
const Channel::Signal * rightChannel
const Channel::Signal * leftChannel
PaddleSignal(LRPair< std::reference_wrapper< const Channel::CalSignal > > p_signals)
const Channel::CalSignal * leftChannelCal