Logical multi-level gate associated to one or more waveforms. More...
#include <OpticalTriggerGate.h>
Public Types | |
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... | |
Public Member Functions | |
OpticalTriggerGate ()=default | |
Constructor: a closed gate with no associated waveform (add() them). More... | |
OpticalTriggerGate (OpticalTriggerGate const &)=default | |
OpticalTriggerGate (OpticalTriggerGate &&)=default | |
OpticalTriggerGate & | operator= (OpticalTriggerGate const &)=default |
OpticalTriggerGate & | operator= (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) |
OpticalTriggerGate & | operator= (GateData_t const &data) |
Copies/steals all the levels and channels from the specified data. More... | |
OpticalTriggerGate & | operator= (GateData_t &&data) |
Query | |
GateData_t & | gateLevels () |
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 |
Public Member Functions inherited from icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > | |
ReadoutTriggerGate ()=default | |
ReadoutTriggerGate (ReadoutTriggerGate const &)=default | |
ReadoutTriggerGate (ReadoutTriggerGate &&)=default | |
ReadoutTriggerGate & | operator= (ReadoutTriggerGate const &)=default |
ReadoutTriggerGate & | operator= (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_t & | addChannel (ChannelID_t const channel) |
Associates the specified channel to this readout gate. More... | |
This_t & | addChannels (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 |
ReadoutTriggerGate & | operator= (GateData_t const &data) |
Copies/steals all the levels from the specified data. More... | |
ReadoutTriggerGate & | operator= (GateData_t &&data) |
GateData_t const & | gateLevels () const |
Access to the underlying gate level data. More... | |
GateData_t & | gateLevels () |
Access to the underlying gate level data (mutable). More... | |
ReadoutTriggerGate & | Min (ReadoutTriggerGate const &other) |
Combines with a gate, keeping the minimum opening among the two. More... | |
ReadoutTriggerGate & | Max (ReadoutTriggerGate const &other) |
Combines with a gate, keeping the maximum opening among the two. More... | |
ReadoutTriggerGate & | Sum (ReadoutTriggerGate const &other) |
Combines with a gate, keeping the sum of openings of the two. More... | |
ReadoutTriggerGate & | Mul (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_t & | Min (triggergatedata_t const &other) |
Combines with a gate, keeping the minimum opening among the two. More... | |
triggergatedata_t & | Max (triggergatedata_t const &other) |
Combines with a gate, keeping the maximum opening among the two. More... | |
triggergatedata_t & | Sum (triggergatedata_t const &other) |
Combines with a gate, keeping the sum of openings of the two. More... | |
triggergatedata_t & | Mul (triggergatedata_t const &other) |
Combines with a gate, keeping the product of openings of the two. More... | |
Protected Types | |
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 | |
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_t & | normalizeChannels () |
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 | |
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_t & | mergeSortedChannelsInto (ChannelList_t &channels, BIter b, EIter e) |
static ChannelList_t & | normalizeSortedChannels (ChannelList_t &channels) |
Removes duplicate channel IDs. More... | |
template<typename BIter , typename EIter > | |
static ChannelList_t & | mergeChannelsInto (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_t & | normalizeChannels (ChannelList_t &channels) |
Removes duplicate channel IDs and sorts the remaining ones. More... | |
static ChannelList_t | normalizeChannels (ChannelList_t &&channels) |
Static Private Member Functions | |
static GateData_t::ChannelList_t | extractChannels (Waveforms_t const &waveforms) |
Returns the list of all channels from the waveforms (duplicate allowed). More... | |
static GateData_t::ChannelList_t | waveformChannels (Waveforms_t const &waveforms) |
Returns the list of all unique channels (sorted) from the waveforms . More... | |
Private Attributes | |
std::vector < raw::OpDetWaveform const * > | fWaveforms |
List of waveforms involved in this channel. More... | |
Combination operations | |
OpticalTriggerGate & | Min (OpticalTriggerGate const &other) |
Combines with a gate, keeping the minimum opening among the two. More... | |
OpticalTriggerGate & | Max (OpticalTriggerGate const &other) |
Combines with a gate, keeping the maximum opening among the two. More... | |
OpticalTriggerGate & | Sum (OpticalTriggerGate const &other) |
Combines with a gate, keeping the sum of openings of the two. More... | |
OpticalTriggerGate & | Mul (OpticalTriggerGate const &other) |
Combines with a gate, keeping the product of openings of the two. More... | |
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... | |
Additional Inherited Members | |
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... | |
Logical multi-level gate associated to one or more waveforms.
This object is a trigger gate associated with one or more optical waveforms.
detinfo::timescales::optical_tick
). But currently the quantities (util::quantity
derived objects) are not well suited to be serialized by ROOT, becauselardataalg
rather than lardataobj
Definition at line 64 of file OpticalTriggerGate.h.
Type of channel identifier.
Definition at line 72 of file OpticalTriggerGate.h.
Type for gate data access.
Definition at line 70 of file OpticalTriggerGate.h.
|
protected |
Internal list of registered waveforms.
Definition at line 238 of file OpticalTriggerGate.h.
|
default |
Constructor: a closed gate with no associated waveform (add()
them).
|
default |
|
default |
|
inline |
Constructor: a closed gate for the channel in waveform
.
Definition at line 83 of file OpticalTriggerGate.h.
|
inline |
Constructor: a closed gate for the specified channel.
Definition at line 89 of file OpticalTriggerGate.h.
|
inlineprotected |
Protected constructor: set the data directly.
Definition at line 241 of file OpticalTriggerGate.h.
bool icarus::trigger::OpticalTriggerGate::add | ( | raw::OpDetWaveform const & | waveform | ) |
Adds another waveform to the gate (unless it has already been added).
Definition at line 201 of file OpticalTriggerGate.cxx.
|
staticprivate |
Returns the list of all channels from the waveforms
(duplicate allowed).
Definition at line 216 of file OpticalTriggerGate.cxx.
|
inline |
Definition at line 85 of file OpticalTriggerGate.h.
|
inline |
Access to the underlying gate level data (mutable).
Definition at line 109 of file OpticalTriggerGate.h.
|
inline |
Access to the underlying gate level data (immutable).
Definition at line 112 of file OpticalTriggerGate.h.
icarus::trigger::OpticalTriggerGate & icarus::trigger::OpticalTriggerGate::Max | ( | OpticalTriggerGate const & | other | ) |
Combines with a gate, keeping the maximum opening among the two.
other | gate to combine to |
Multi-level equivalent of an or logical operation.
Definition at line 111 of file OpticalTriggerGate.cxx.
|
static |
Returns a gate with the maximum opening between the specified two.
a | first gate |
b | second gate |
a
and b
Multi-level equivalent of an or logical operation.
Definition at line 147 of file OpticalTriggerGate.cxx.
|
staticprotected |
Registers the waveforms from the other
gate into this one.
Definition at line 81 of file OpticalTriggerGate.cxx.
|
inlineprotected |
Registers the waveforms from the other
gate into this one.
Definition at line 251 of file OpticalTriggerGate.h.
icarus::trigger::OpticalTriggerGate & icarus::trigger::OpticalTriggerGate::Min | ( | OpticalTriggerGate const & | other | ) |
Combines with a gate, keeping the minimum opening among the two.
other | gate to combine to |
Max()
Multi-level equivalent of an and logical operation.
Definition at line 101 of file OpticalTriggerGate.cxx.
|
static |
Returns a gate with the minimum opening between the specified two.
a | first gate |
b | second gate |
a
and b
Max()
Multi-level equivalent of an and logical operation.
Definition at line 141 of file OpticalTriggerGate.cxx.
icarus::trigger::OpticalTriggerGate & icarus::trigger::OpticalTriggerGate::Mul | ( | OpticalTriggerGate const & | other | ) |
Combines with a gate, keeping the product of openings of the two.
other | gate to combine to |
Definition at line 131 of file OpticalTriggerGate.cxx.
|
static |
Returns a gate with opening product of the specified two.
a | first gate |
b | second gate |
a
and b
Max()
Definition at line 159 of file OpticalTriggerGate.cxx.
bool icarus::trigger::OpticalTriggerGate::operator!= | ( | OpticalTriggerGate const & | other | ) | const |
Definition at line 192 of file OpticalTriggerGate.cxx.
|
default |
|
default |
|
inline |
Copies/steals all the levels and channels from the specified data.
Definition at line 97 of file OpticalTriggerGate.h.
|
inline |
Definition at line 99 of file OpticalTriggerGate.h.
bool icarus::trigger::OpticalTriggerGate::operator== | ( | OpticalTriggerGate const & | other | ) | const |
Definition at line 183 of file OpticalTriggerGate.cxx.
|
protected |
Registers the waveforms from the specified list.
Definition at line 55 of file OpticalTriggerGate.cxx.
icarus::trigger::OpticalTriggerGate & icarus::trigger::OpticalTriggerGate::Sum | ( | OpticalTriggerGate const & | other | ) |
Combines with a gate, keeping the sum of openings of the two.
other | gate to combine to |
Definition at line 121 of file OpticalTriggerGate.cxx.
|
static |
Returns a gate with opening sum of the specified two.
a | first gate |
b | second gate |
a
and b
Max()
Definition at line 153 of file OpticalTriggerGate.cxx.
icarus::trigger::OpticalTriggerGate icarus::trigger::OpticalTriggerGate::SymmetricCombination | ( | Op && | op, |
OpticalTriggerGate const & | a, | ||
OpticalTriggerGate const & | b, | ||
TriggerGateTicks_t | aDelay, | ||
TriggerGateTicks_t | bDelay | ||
) |
Definition at line 166 of file OpticalTriggerGate.cxx.
|
static |
Returns a gate combination of the openings of two other gates.
Op | binary operation: OpeningCount_t (x2) to OpeningCount_t |
op | symmetric binary combination operation |
a | first gate |
b | second gate |
a
and b
For this algorithm to work, the operation needs to be symmetric, i.e. op(c1, c2) == op(c2, c1)
for every valid combinations of counts c1
and c2
.
|
staticprivate |
Returns the list of all unique channels (sorted) from the waveforms
.
Definition at line 230 of file OpticalTriggerGate.cxx.
|
inline |
Returns a list of pointers to the waveforms associated to the gate, sorted.
Definition at line 116 of file OpticalTriggerGate.h.
|
private |
List of waveforms involved in this channel.
Definition at line 261 of file OpticalTriggerGate.h.