Logical multi-level gate associated to one or more readout channels. More...
#include <ReadoutTriggerGate.h>
Public Types | |
| 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 | |
| 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) |
Gate query | |
| 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... | |
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 | 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 | |
| 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 | |
| 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) |
Private Types | |
| using | Base_t = icarus::trigger::TriggerGateData< Tick, TickInterval > |
| Type of the base class. More... | |
| using | This_t = icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > |
| Type of this class. More... | |
Private Attributes | |
| ChannelList_t | fChannels |
| List of readout channels associated to this data. More... | |
Combination operations | |
| 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... | |
| 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... | |
Additional Inherited Members | |
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 readout channels.
| Tick | type used to count the ticks |
| TickInterval | type used to quantify tick difference |
| ChannelIDType | type of channel ID |
This object is a trigger gate associated with one or more readout channels. The channels are expressed as channel identifiers.
detinfo::timescales::optical_tick). But currently the quantities (util::quantity derived objects) are not well suited to be serialized by ROOT, becauselardataalg rather than lardataobjDefinition at line 41 of file ReadoutTriggerGate.h.
|
private |
Type of the base class.
Definition at line 108 of file ReadoutTriggerGate.h.
| using icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::ChannelID_t = ChannelIDType |
Type of stored channel ID.
Definition at line 118 of file ReadoutTriggerGate.h.
| using icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::ChannelList_t = std::vector<ChannelID_t> |
Type of list of associated channels.
Definition at line 124 of file ReadoutTriggerGate.h.
| using icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::ClockTick_t = Tick |
Tick point.
Definition at line 116 of file ReadoutTriggerGate.h.
| using icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::ClockTicks_t = TickInterval |
Tick interval.
Definition at line 117 of file ReadoutTriggerGate.h.
| using icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::GateData_t = Base_t |
Type for gate data access.
Definition at line 121 of file ReadoutTriggerGate.h.
|
protected |
Definition at line 327 of file ReadoutTriggerGate.h.
|
private |
Type of this class.
Definition at line 112 of file ReadoutTriggerGate.h.
|
default |
Constructor: a closed gate with no associated channels
ReadoutTriggerGate(std::initializer_list<ChannelID_t>), addChannel(), addChannels()
|
default |
|
default |
| icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::ReadoutTriggerGate | ( | std::initializer_list< ChannelID_t > | channels | ) |
Constructor: a closed gate associated to the specified channels.
|
inlineprotected |
Protected constructor: set the data directly.
Definition at line 330 of file ReadoutTriggerGate.h.
|
inlineprotected |
Protected constructor: set the data directly.
Definition at line 336 of file ReadoutTriggerGate.h.
| This_t& icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::addChannel | ( | ChannelID_t const | channel | ) |
Associates the specified channel to this readout gate.
|
inline |
Associates the specified channels to this readout gate.
Definition at line 206 of file ReadoutTriggerGate.h.
|
protected |
Associates this data with the channels from the specified list.
|
protected |
|
inlineprotected |
Associates this data with the channels from the other gate.
Definition at line 352 of file ReadoutTriggerGate.h.
| ChannelID_t icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::channel | ( | ) | const |
Returns the channel associated to the gate data.
| MoreThanOneChannelError | if more than one associated channel |
| NoChannelError | if no channel is associated |
hasChannel() | decltype(auto) icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::channels | ( | ) | const |
Returns the channels associated to the gate data.
hasChannels(), channel()
|
inline |
Access to the underlying gate level data.
Definition at line 155 of file ReadoutTriggerGate.h.
|
inline |
Access to the underlying gate level data (mutable).
Definition at line 158 of file ReadoutTriggerGate.h.
|
inline |
Returns whether exactly one channel id associated to the gate data.
channel()If this methods returns true, channel() can safely be used.
Definition at line 180 of file ReadoutTriggerGate.h.
|
inline |
Returns whether there is any channel id associated to the gate data.
hasChannel() Definition at line 171 of file ReadoutTriggerGate.h.
| ReadoutTriggerGate& icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::Max | ( | ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > const & | other | ) |
|
static |
|
staticprotected |
Returns a merged list of channels from a and b.
|
staticprotected |
Adds channels from iterators b to e into channels (returned).
|
staticprotected |
| ReadoutTriggerGate& icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::Min | ( | ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > 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.
|
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.
| ReadoutTriggerGate& icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::Mul | ( | ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > const & | other | ) |
|
static |
Returns a gate with opening product of the specified two.
| a | first gate |
| b | second gate |
a and b Max()
|
inline |
Returns the number of associated channels.
Definition at line 183 of file ReadoutTriggerGate.h.
|
inlineprotected |
Removes duplicate channel IDs and sorts the remaining ones.
Definition at line 342 of file ReadoutTriggerGate.h.
|
staticprotected |
Removes duplicate channel IDs and sorts the remaining ones.
|
staticprotected |
|
staticprotected |
Removes duplicate channel IDs.
| bool icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::operator!= | ( | ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > const & | ) | const |
|
default |
|
default |
|
inline |
Copies/steals all the levels from the specified data.
Definition at line 143 of file ReadoutTriggerGate.h.
|
inline |
Definition at line 145 of file ReadoutTriggerGate.h.
| bool icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::operator== | ( | ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > const & | ) | const |
| ReadoutTriggerGate& icarus::trigger::ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >::Sum | ( | ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > const & | other | ) |
|
static |
Returns a gate with opening sum of the specified two.
| a | first gate |
| b | second gate |
a and b Max()
|
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 bFor 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.
|
private |
List of readout channels associated to this data.
Definition at line 382 of file ReadoutTriggerGate.h.
1.8.5