All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Types | Private Member Functions | List of all members
icarus::trigger::SingleChannelOpticalTriggerGate Class Reference

Logical multi-level gate associated to a optical detector channel. More...

#include <SingleChannelOpticalTriggerGate.h>

Inheritance diagram for icarus::trigger::SingleChannelOpticalTriggerGate:
icarus::trigger::OpticalTriggerGate icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > icarus::trigger::TriggerGateData< Tick, TickInterval > icarus::trigger::ReadoutTriggerGateTag

Public Member Functions

 SingleChannelOpticalTriggerGate (raw::OpDetWaveform const &waveform)
 Constructor: a closed gate for the channel in waveform. More...
 
 SingleChannelOpticalTriggerGate (ChannelID_t channel)
 Constructor: a closed gate for the specified channel. More...
 
 SingleChannelOpticalTriggerGate (SingleChannelOpticalTriggerGate const &)=default
 
 SingleChannelOpticalTriggerGate (SingleChannelOpticalTriggerGate &&)=default
 
SingleChannelOpticalTriggerGateoperator= (SingleChannelOpticalTriggerGate const &)=default
 
SingleChannelOpticalTriggerGateoperator= (SingleChannelOpticalTriggerGate &&)=default
 
bool add (raw::OpDetWaveform const &waveform)
 Adds another waveform to the channel (unless it has just been added). More...
 
decltype(auto) channels () const =delete
 Do not support multi-channel interface. More...
 
bool operator< (SingleChannelOpticalTriggerGate const &other) const
 Comparison operator: sorts by increasing channel number. More...
 
SingleChannelOpticalTriggerGateoperator= (GateData_t const &data)
 Copies/steals all the levels from the specified data. More...
 
SingleChannelOpticalTriggerGateoperator= (GateData_t &&data)
 
- Public Member Functions inherited from icarus::trigger::OpticalTriggerGate
 OpticalTriggerGate ()=default
 Constructor: a closed gate with no associated waveform (add() them). More...
 
 OpticalTriggerGate (OpticalTriggerGate const &)=default
 
 OpticalTriggerGate (OpticalTriggerGate &&)=default
 
OpticalTriggerGateoperator= (OpticalTriggerGate const &)=default
 
OpticalTriggerGateoperator= (OpticalTriggerGate &&)=default
 
 OpticalTriggerGate (raw::OpDetWaveform const &waveform)
 Constructor: a closed gate for the channel in waveform. More...
 
 fWaveforms ({&waveform})
 
 OpticalTriggerGate (ChannelID_t channel)
 Constructor: a closed gate for the specified channel. More...
 
bool add (raw::OpDetWaveform const &waveform)
 Adds another waveform to the gate (unless it has already been added). More...
 
bool operator== (OpticalTriggerGate const &) const
 
bool operator!= (OpticalTriggerGate const &) const
 
template<typename Op >
icarus::trigger::OpticalTriggerGate SymmetricCombination (Op &&op, OpticalTriggerGate const &a, OpticalTriggerGate const &b, TriggerGateTicks_t aDelay, TriggerGateTicks_t bDelay)
 
OpticalTriggerGateoperator= (GateData_t const &data)
 Copies/steals all the levels and channels from the specified data. More...
 
OpticalTriggerGateoperator= (GateData_t &&data)
 
GateData_tgateLevels ()
 Access to the underlying gate level data (mutable). More...
 
GateData_t const & gateLevels () const
 Access to the underlying gate level data (immutable). More...
 
std::vector
< raw::OpDetWaveform const * > 
waveforms () const
 
OpticalTriggerGateMin (OpticalTriggerGate const &other)
 Combines with a gate, keeping the minimum opening among the two. More...
 
OpticalTriggerGateMax (OpticalTriggerGate const &other)
 Combines with a gate, keeping the maximum opening among the two. More...
 
OpticalTriggerGateSum (OpticalTriggerGate const &other)
 Combines with a gate, keeping the sum of openings of the two. More...
 
OpticalTriggerGateMul (OpticalTriggerGate const &other)
 Combines with a gate, keeping the product of openings of the two. More...
 
- Public Member Functions inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >
 ReadoutTriggerGate ()=default
 
 ReadoutTriggerGate (ReadoutTriggerGate const &)=default
 
 ReadoutTriggerGate (ReadoutTriggerGate &&)=default
 
ReadoutTriggerGateoperator= (ReadoutTriggerGate const &)=default
 
ReadoutTriggerGateoperator= (ReadoutTriggerGate &&)=default
 
 ReadoutTriggerGate (std::initializer_list< ChannelID_t > channels)
 Constructor: a closed gate associated to the specified channels. More...
 
bool hasChannels () const
 Returns whether there is any channel id associated to the gate data. More...
 
bool hasChannel () const
 Returns whether exactly one channel id associated to the gate data. More...
 
std::size_t nChannels () const
 Returns the number of associated channels. More...
 
decltype(auto) channels () const
 Returns the channels associated to the gate data. More...
 
ChannelID_t channel () const
 Returns the channel associated to the gate data. More...
 
This_taddChannel (ChannelID_t const channel)
 Associates the specified channel to this readout gate. More...
 
This_taddChannels (std::initializer_list< ChannelID_t > channels)
 Associates the specified channels to this readout gate. More...
 
bool operator== (ReadoutTriggerGate const &) const
 
bool operator!= (ReadoutTriggerGate const &) const
 
ReadoutTriggerGateoperator= (GateData_t const &data)
 Copies/steals all the levels from the specified data. More...
 
ReadoutTriggerGateoperator= (GateData_t &&data)
 
GateData_t const & gateLevels () const
 Access to the underlying gate level data. More...
 
GateData_tgateLevels ()
 Access to the underlying gate level data (mutable). More...
 
ReadoutTriggerGateMin (ReadoutTriggerGate const &other)
 Combines with a gate, keeping the minimum opening among the two. More...
 
ReadoutTriggerGateMax (ReadoutTriggerGate const &other)
 Combines with a gate, keeping the maximum opening among the two. More...
 
ReadoutTriggerGateSum (ReadoutTriggerGate const &other)
 Combines with a gate, keeping the sum of openings of the two. More...
 
ReadoutTriggerGateMul (ReadoutTriggerGate const &other)
 Combines with a gate, keeping the product of openings of the two. More...
 
- Public Member Functions inherited from icarus::trigger::TriggerGateData< Tick, TickInterval >
 TriggerGateData ()
 Constructor: a closed gate for the channel in waveform. More...
 
bool operator== (TriggerGateData const &) const
 
bool operator!= (TriggerGateData const &) const
 
ClockTick_t lastTick () const
 Returns the number of ticks this gate covers. More...
 
OpeningCount_t openingCount (ClockTick_t tick) const
 Returns the opening count of the gate at the specified tick. More...
 
bool alwaysClosed () const
 Returns whether this gate never opened. More...
 
bool isOpen (ClockTick_t tick) const
 Returns whether the gate is open at all at the specified tick. More...
 
ClockTick_t findOpen (OpeningCount_t minOpening=1U, ClockTick_t start=MinTick, ClockTick_t end=MaxTick) const
 Returns the tick at which the gate opened. More...
 
ClockTick_t findClose (OpeningCount_t minOpening=1U, ClockTick_t start=MinTick, ClockTick_t end=MaxTick) const
 Returns the tick at which the gate closed. More...
 
ClockTick_t findMaxOpen (ClockTick_t start=MinTick, ClockTick_t end=MaxTick) const
 Returns the tick at which the gate has the maximum opening. More...
 
std::pair< OpeningCount_t,
OpeningCount_t
openingRange (ClockTick_t start, ClockTick_t end) const
 Returns the range of trigger opening values in the specified range. More...
 
void setOpeningAt (ClockTick_t tick, OpeningCount_t openingCount)
 Changes the opening to match openingCount at the specified time. More...
 
void openAt (ClockTick_t tick, OpeningDiff_t count)
 Open this gate at the specified time (increase the opening by count). More...
 
void openAt (ClockTick_t tick)
 Open this gate at the specified time (increase the opening by 1). More...
 
void openBetween (ClockTick_t start, ClockTick_t end, OpeningDiff_t count=1)
 Open this gate at specified start tick, and close it at end tick. More...
 
void openFor (ClockTick_t tick, ClockTicks_t length, OpeningDiff_t count=1)
 Open this gate at the specified time, and close it length ticks later. More...
 
void closeAt (ClockTick_t tick, OpeningDiff_t count)
 Close this gate at the specified time (decrease the opening by count). More...
 
void closeAt (ClockTick_t tick)
 Close this gate at the specified time. More...
 
void closeAllAt (ClockTick_t tick)
 Completely close this gate at the specified time. More...
 
void clear ()
 Sets the gate levels in the state at construction. More...
 
triggergatedata_tMin (triggergatedata_t const &other)
 Combines with a gate, keeping the minimum opening among the two. More...
 
triggergatedata_tMax (triggergatedata_t const &other)
 Combines with a gate, keeping the maximum opening among the two. More...
 
triggergatedata_tSum (triggergatedata_t const &other)
 Combines with a gate, keeping the sum of openings of the two. More...
 
triggergatedata_tMul (triggergatedata_t const &other)
 Combines with a gate, keeping the product of openings of the two. More...
 

Private Types

using Base_t = icarus::trigger::OpticalTriggerGate
 

Private Member Functions

bool hasRefWaveform () const
 Returns the "reference" waveform, used when a single waveform is needed. More...
 
raw::OpDetWaveform const & refWaveform () const
 Returns the "reference" waveform, used when a single waveform is needed. More...
 
raw::OpDetWaveform const * refWaveformPtr () const
 Returns the "reference" waveform, used when a single waveform is needed. More...
 

Additional Inherited Members

- Public Types inherited from icarus::trigger::OpticalTriggerGate
using GateData_t = OpticalTriggerGateData_t
 Type for gate data access. More...
 
using ChannelID_t = GateData_t::ChannelID_t
 Type of channel identifier. More...
 
- Public Types inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >
using ClockTick_t = Tick
 Tick point. More...
 
using ClockTicks_t = TickInterval
 Tick interval. More...
 
using ChannelID_t = ChannelIDType
 Type of stored channel ID. More...
 
using GateData_t = Base_t
 Type for gate data access. More...
 
using ChannelList_t = std::vector< ChannelID_t >
 Type of list of associated channels. More...
 
- Public Types inherited from icarus::trigger::TriggerGateData< Tick, TickInterval >
using triggergatedata_t = TriggerGateData< Tick, TickInterval >
 This type. More...
 
using ClockTick_t = Tick
 Type of a point in time, measured in ticks. More...
 
using ClockTicks_t = TickInterval
 Type of a time interval, measured in ticks. More...
 
using OpeningCount_t = unsigned int
 Type of count of number of open channels. More...
 
using OpeningDiff_t = std::make_signed_t< OpeningCount_t >
 Type representing a variation of open channels. More...
 
- Static Public Member Functions inherited from icarus::trigger::OpticalTriggerGate
static OpticalTriggerGate Min (OpticalTriggerGate const &a, OpticalTriggerGate const &b)
 Returns a gate with the minimum opening between the specified two. More...
 
static OpticalTriggerGate Max (OpticalTriggerGate const &a, OpticalTriggerGate const &b)
 Returns a gate with the maximum opening between the specified two. More...
 
static OpticalTriggerGate Sum (OpticalTriggerGate const &a, OpticalTriggerGate const &b)
 Returns a gate with opening sum of the specified two. More...
 
static OpticalTriggerGate Mul (OpticalTriggerGate const &a, OpticalTriggerGate const &b)
 Returns a gate with opening product of the specified two. More...
 
template<typename Op >
static OpticalTriggerGate SymmetricCombination (Op &&op, OpticalTriggerGate const &a, OpticalTriggerGate const &b, TriggerGateTicks_t aDelay=TriggerGateTicks_t{0}, TriggerGateTicks_t bDelay=TriggerGateTicks_t{0})
 Returns a gate combination of the openings of two other gates. More...
 
- Static Public Member Functions inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >
static ReadoutTriggerGate Min (ReadoutTriggerGate const &a, ReadoutTriggerGate const &b)
 Returns a gate with the minimum opening between the specified two. More...
 
static ReadoutTriggerGate Max (ReadoutTriggerGate const &a, ReadoutTriggerGate const &b)
 Returns a gate with the maximum opening between the specified two. More...
 
static ReadoutTriggerGate Sum (ReadoutTriggerGate const &a, ReadoutTriggerGate const &b)
 Returns a gate with opening sum of the specified two. More...
 
static ReadoutTriggerGate Mul (ReadoutTriggerGate const &a, ReadoutTriggerGate const &b)
 Returns a gate with opening product of the specified two. More...
 
template<typename Op >
static ReadoutTriggerGate SymmetricCombination (Op &&op, ReadoutTriggerGate const &a, ReadoutTriggerGate const &b, ClockTicks_t aDelay=ClockTicks_t{0}, ClockTicks_t bDelay=ClockTicks_t{0})
 Returns a gate combination of the openings of two other gates. More...
 
- Static Public Member Functions inherited from icarus::trigger::TriggerGateData< Tick, TickInterval >
static triggergatedata_t Min (triggergatedata_t const &a, triggergatedata_t const &b)
 Returns a gate with the minimum opening between the specified two. More...
 
static triggergatedata_t Max (triggergatedata_t const &a, triggergatedata_t const &b)
 Returns a gate with the maximum opening between the specified two. More...
 
static triggergatedata_t Sum (triggergatedata_t const &a, triggergatedata_t const &b)
 Returns a gate with opening sum of the specified two. More...
 
static triggergatedata_t Mul (triggergatedata_t const &a, triggergatedata_t const &b)
 Returns a gate with opening product of the specified two. More...
 
template<typename Op >
static triggergatedata_t SymmetricCombination (Op &&op, triggergatedata_t const &a, triggergatedata_t const &b, ClockTicks_t aDelay=ClockTicks_t{}, ClockTicks_t bDelay=ClockTicks_t{})
 Returns a gate combination of the openings of two other gates. More...
 
- Static Public Attributes inherited from icarus::trigger::TriggerGateData< Tick, TickInterval >
static constexpr ClockTick_t MinTick = std::numeric_limits<ClockTick_t>::min()
 An unbearably small tick number. More...
 
static constexpr ClockTick_t MaxTick = std::numeric_limits<ClockTick_t>::max()
 An unbearably large tick number. More...
 
- Protected Types inherited from icarus::trigger::OpticalTriggerGate
using Waveforms_t = std::vector< raw::OpDetWaveform const * >
 Internal list of registered waveforms. More...
 
- Protected Types inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >
using GateEvolution_t = typename Base_t::GateEvolution_t
 
- Protected Types inherited from icarus::trigger::TriggerGateData< Tick, TickInterval >
using EventType = details::TriggerGateEventType
 
using Status = details::TriggerGateStatus< ClockTick_t, OpeningCount_t >
 
using GateEvolution_t = std::vector< Status >
 Type to describe the time evolution of the gate. More...
 
- Protected Member Functions inherited from icarus::trigger::OpticalTriggerGate
 OpticalTriggerGate (GateEvolution_t &&gateLevel, Waveforms_t &&waveforms)
 Protected constructor: set the data directly. More...
 
void registerWaveforms (Waveforms_t const &moreWaveforms)
 Registers the waveforms from the specified list. More...
 
void mergeWaveformsFromGate (OpticalTriggerGate const &other)
 Registers the waveforms from the other gate into this one. More...
 
- Protected Member Functions inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >
 ReadoutTriggerGate (GateEvolution_t &&gateLevel, ChannelList_t &&channels)
 Protected constructor: set the data directly. More...
 
template<typename BIter , typename EIter >
 ReadoutTriggerGate (GateEvolution_t &&gateLevel, BIter b, EIter e)
 Protected constructor: set the data directly. More...
 
ChannelList_tnormalizeChannels ()
 Removes duplicate channel IDs and sorts the remaining ones. More...
 
void associateChannelsFromGate (ReadoutTriggerGate const &other)
 Associates this data with the channels from the other gate. More...
 
void associateChannels (std::initializer_list< ChannelID_t > const &moreChannels)
 Associates this data with the channels from the specified list. More...
 
void associateChannels (ChannelList_t const &moreChannels)
 
- Protected Member Functions inherited from icarus::trigger::TriggerGateData< Tick, TickInterval >
 TriggerGateData (GateEvolution_t &&gateLevel)
 Protected constructor: set the data directly. More...
 
- Static Protected Member Functions inherited from icarus::trigger::OpticalTriggerGate
static Waveforms_t mergeWaveforms (Waveforms_t const &a, Waveforms_t const &b)
 Registers the waveforms from the other gate into this one. More...
 
- Static Protected Member Functions inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >
template<typename BIter , typename EIter >
static ChannelList_tmergeSortedChannelsInto (ChannelList_t &channels, BIter b, EIter e)
 
static ChannelList_tnormalizeSortedChannels (ChannelList_t &channels)
 Removes duplicate channel IDs. More...
 
template<typename BIter , typename EIter >
static ChannelList_tmergeChannelsInto (ChannelList_t &channels, BIter b, EIter e)
 Adds channels from iterators b to e into channels (returned). More...
 
static ChannelList_t mergeChannels (ChannelList_t const &a, ChannelList_t const &b)
 Returns a merged list of channels from a and b. More...
 
static ChannelList_tnormalizeChannels (ChannelList_t &channels)
 Removes duplicate channel IDs and sorts the remaining ones. More...
 
static ChannelList_t normalizeChannels (ChannelList_t &&channels)
 

Detailed Description

Logical multi-level gate associated to a optical detector channel.

This object is a trigger gate associated with one readout channel.

Definition at line 45 of file SingleChannelOpticalTriggerGate.h.

Member Typedef Documentation

Definition at line 54 of file SingleChannelOpticalTriggerGate.h.

Constructor & Destructor Documentation

icarus::trigger::SingleChannelOpticalTriggerGate::SingleChannelOpticalTriggerGate ( raw::OpDetWaveform const &  waveform)
inline

Constructor: a closed gate for the channel in waveform.

Definition at line 59 of file SingleChannelOpticalTriggerGate.h.

60  : Base_t(waveform)
61  {}
icarus::trigger::SingleChannelOpticalTriggerGate::SingleChannelOpticalTriggerGate ( ChannelID_t  channel)
inline

Constructor: a closed gate for the specified channel.

Definition at line 64 of file SingleChannelOpticalTriggerGate.h.

64 : Base_t(channel) {}
ChannelID_t channel() const
Returns the channel associated to the gate data.
icarus::trigger::SingleChannelOpticalTriggerGate::SingleChannelOpticalTriggerGate ( SingleChannelOpticalTriggerGate const &  )
default
icarus::trigger::SingleChannelOpticalTriggerGate::SingleChannelOpticalTriggerGate ( SingleChannelOpticalTriggerGate &&  )
default

Member Function Documentation

bool icarus::trigger::SingleChannelOpticalTriggerGate::add ( raw::OpDetWaveform const &  waveform)

Adds another waveform to the channel (unless it has just been added).

Definition at line 24 of file SingleChannelOpticalTriggerGate.cxx.

25 {
27  && (channel() != waveform.ChannelNumber())
28  ) {
29  // currently we require each gate to be on the same channel
30  throw cet::exception("TriggerGateBuilder")
31  << "icarus::trigger::SingleChannelOpticalTriggerGate::add(): "
32  << "can't add a waveform on channel " << waveform.ChannelNumber()
33  << " to a gate on channel " << channel() << "\n";
34  }
35  return OpticalTriggerGate::add(waveform);
36 } // icarus::trigger::SingleChannelOpticalTriggerGate::add()
ChannelID_t channel() const
Returns the channel associated to the gate data.
constexpr bool isValidChannel(Channel_t channel)
Returns whether the specified one is a valid channel number.
bool add(raw::OpDetWaveform const &waveform)
Adds another waveform to the gate (unless it has already been added).
bool hasChannel() const
Returns whether exactly one channel id associated to the gate data.
decltype(auto) icarus::trigger::SingleChannelOpticalTriggerGate::channels ( ) const
delete

Do not support multi-channel interface.

bool icarus::trigger::SingleChannelOpticalTriggerGate::hasRefWaveform ( ) const
inlineprivate

Returns the "reference" waveform, used when a single waveform is needed.

Definition at line 97 of file SingleChannelOpticalTriggerGate.h.

97 { return !waveforms().empty(); }
std::vector< raw::OpDetWaveform const * > waveforms() const

Comparison operator: sorts by increasing channel number.

Definition at line 91 of file SingleChannelOpticalTriggerGate.h.

92  { return channel() < other.channel(); }
ChannelID_t channel() const
Returns the channel associated to the gate data.

Copies/steals all the levels from the specified data.

Definition at line 80 of file SingleChannelOpticalTriggerGate.h.

81  { Base_t::operator=(data); return *this; }
OpticalTriggerGate & operator=(OpticalTriggerGate const &)=default

Definition at line 82 of file SingleChannelOpticalTriggerGate.h.

83  { Base_t::operator=(std::move(data)); return *this; }
OpticalTriggerGate & operator=(OpticalTriggerGate const &)=default
raw::OpDetWaveform const& icarus::trigger::SingleChannelOpticalTriggerGate::refWaveform ( ) const
inlineprivate

Returns the "reference" waveform, used when a single waveform is needed.

Definition at line 100 of file SingleChannelOpticalTriggerGate.h.

101  { return *(waveforms().front()); }
std::vector< raw::OpDetWaveform const * > waveforms() const
raw::OpDetWaveform const* icarus::trigger::SingleChannelOpticalTriggerGate::refWaveformPtr ( ) const
inlineprivate

Returns the "reference" waveform, used when a single waveform is needed.

Definition at line 104 of file SingleChannelOpticalTriggerGate.h.

105  { return hasRefWaveform()? nullptr: &(refWaveform()); }
bool hasRefWaveform() const
Returns the &quot;reference&quot; waveform, used when a single waveform is needed.
raw::OpDetWaveform const & refWaveform() const
Returns the &quot;reference&quot; waveform, used when a single waveform is needed.

The documentation for this class was generated from the following files: