Psyllid  v1.12.4
Project 8 Data Acquisisition Software
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
event_builder Class Reference

A transformer that considers a sequence of triggered packets and decides what constitutes a contiguous event. More...

#include <event_builder.hh>

Inheritance diagram for event_builder:
Inheritance graph

Public Types

typedef boost::circular_buffer< uint64_t > pretrigger_buffer_t
 

Public Member Functions

 event_builder ()
 
virtual ~event_builder ()
 
 mv_accessible (uint64_t, length)
 
 mv_accessible (uint64_t, pretrigger)
 
 mv_accessible (uint64_t, skip_tolerance)
 
 mv_accessible (uint64_t, n_triggers)
 
virtual void initialize ()
 
virtual void execute (midge::diptera *a_midge=nullptr)
 
virtual void finalize ()
 
bool is_triggered () const
 
const pretrigger_buffer_tpretrigger_buffer () const
 
const pretrigger_buffer_tskip_buffer () const
 

Private Types

enum  state_t { untriggered, triggered, skipping, collecting_triggers }
 

Private Member Functions

bool write_output_from_ptbuff_front (bool a_flag, trigger_flag *a_data)
 
bool write_output_from_skipbuff_front (bool a_flag, trigger_flag *a_data)
 
void advance_output_stream (trigger_flag *a_write_flag, uint64_t a_id, bool a_trig_flag)
 

Private Attributes

state_t f_state
 
pretrigger_buffer_t f_pretrigger_buffer
 
pretrigger_buffer_t f_skip_buffer
 

Detailed Description

A transformer that considers a sequence of triggered packets and decides what constitutes a contiguous event.

Author
N. S. Oblath

Keeps track of the state of the packet sequence (is-triggered, or not).

When going from untriggered to triggered, adds some number of pretrigger packets.

Includes a skip tolerance for untriggered packets between two triggered packets.

In untriggered state, the flag and the high_threshold variables of the trigger flags are checked. Only if both are true the event builder switches state. If f_n_triggers > 1 the next state is collecting_triggers, otherwise triggered. In collecting_triggers state the event builder counts the incomming trigger flags with flag = true. Only if this count == f_n_triggers the state is switched to triggered.

Events are built by switching some untriggered packets to triggered packets according to the pretrigger and skip-tolerance parameters. Contiguous sequences of triggered packets constitute events.

Parameter setting is not thread-safe. Executing is thread-safe.

The cofigurable value "time-length" in the tf_roach_receiver must be set to a value greater than "pretrigger" and "skip-tolerance" (+5 is advised). Otherwise the time domain buffer gets filled and blocks further packet processing.

Node type: "packet-receiver-socket"

Available configuration values:

Input Streams:

Output Streams:

Definition at line 68 of file event_builder.hh.

Member Typedef Documentation

◆ pretrigger_buffer_t

typedef boost::circular_buffer< uint64_t > pretrigger_buffer_t

Definition at line 72 of file event_builder.hh.

Member Enumeration Documentation

◆ state_t

enum state_t
strongprivate
Enumerator
untriggered 
triggered 
skipping 
collecting_triggers 

Definition at line 102 of file event_builder.hh.

Constructor & Destructor Documentation

◆ event_builder()

Definition at line 20 of file event_builder.cc.

◆ ~event_builder()

~event_builder ( )
virtual

Definition at line 31 of file event_builder.cc.

Member Function Documentation

◆ advance_output_stream()

void advance_output_stream ( trigger_flag a_write_flag,
uint64_t  a_id,
bool  a_trig_flag 
)
private

Definition at line 557 of file event_builder.cc.

◆ execute()

void execute ( midge::diptera *  a_midge = nullptr)
virtual

Definition at line 43 of file event_builder.cc.

◆ finalize()

void finalize ( )
virtual

Definition at line 566 of file event_builder.cc.

◆ initialize()

void initialize ( )
virtual

Definition at line 35 of file event_builder.cc.

◆ is_triggered()

bool is_triggered ( ) const
inline

Definition at line 111 of file event_builder.hh.

◆ mv_accessible() [1/4]

mv_accessible ( uint64_t  ,
length   
)

◆ mv_accessible() [2/4]

mv_accessible ( uint64_t  ,
pretrigger   
)

◆ mv_accessible() [3/4]

mv_accessible ( uint64_t  ,
skip_tolerance   
)

◆ mv_accessible() [4/4]

mv_accessible ( uint64_t  ,
n_triggers   
)

◆ pretrigger_buffer()

const event_builder::pretrigger_buffer_t & pretrigger_buffer ( ) const
inline

Definition at line 116 of file event_builder.hh.

◆ skip_buffer()

const event_builder::pretrigger_buffer_t & skip_buffer ( ) const
inline

Definition at line 120 of file event_builder.hh.

◆ write_output_from_ptbuff_front()

bool write_output_from_ptbuff_front ( bool  a_flag,
trigger_flag a_data 
)
inlineprivate

Definition at line 125 of file event_builder.hh.

◆ write_output_from_skipbuff_front()

bool write_output_from_skipbuff_front ( bool  a_flag,
trigger_flag a_data 
)
inlineprivate

Definition at line 139 of file event_builder.hh.

Member Data Documentation

◆ f_pretrigger_buffer

pretrigger_buffer_t f_pretrigger_buffer
private

Definition at line 105 of file event_builder.hh.

◆ f_skip_buffer

pretrigger_buffer_t f_skip_buffer
private

Definition at line 106 of file event_builder.hh.

◆ f_state

state_t f_state
private

Definition at line 103 of file event_builder.hh.


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