data_event_handlers_zmq
Handling of data events from a ZMQ stream.
This module contains Data Event Handler classes that deal with events retrieved from a a ZMQ stream.
Jungfrau1MZmqDataEventHandler
Bases: OmDataEventHandlerProtocol
See documentation of the __init__
function.
__init__(*, source, data_sources, monitor_parameters)
Data Event Handler for Jungfrau 1M's ZMQ stream.
This class handles data events recovered from a ZMQ stream generated by a Jungfrau 1M detector.
This class implements the interface described by its base Protocol class. Please see the documentation of that class for additional information about the interface.
-
For this Event Handler, an event corresponds to all the information associated with the content of a single ZMQ message (a single detector data frame).
-
The source string required by this Data Event Handler is the URL (in ZeroMQ format) where the Jungfrau 1M detector broadcasts data.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
source |
str
|
A string describing the data event source. |
required |
data_sources |
Dict[str, OmDataSourceProtocol]
|
A dictionary containing a set of Data Source class instances.
|
required |
monitor_parameters |
MonitorParameters
|
An object storing OM's configuration parameters. |
required |
initialize_event_handling_on_collecting_node(*, node_rank, node_pool_size)
Initializes Jungfrau 1M ZMQ event handling on the collecting node.
Please see the documentation of the base Protocol class for additional information about this method.
Jungfrau 1M's ZMQ event handling does not need to be initialized on the collecting node, so this function actually does nothing.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node int the OM node pool. The rank is an integer that unambiguously identifies the node in the pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
initialize_event_handling_on_processing_node(*, node_rank, node_pool_size)
Initializes Jungfrau 1M ZMQ event handling on the processing nodes.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node int the OM node pool. The rank is an integer that unambiguously identifies the node in the pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
event_generator(*, node_rank, node_pool_size)
Retrieves Jungfrau 1M events from a ZMQ stream.
Please see the documentation of the base Protocol class for additional information about this method.
This function retrieves data events on the processing nodes. Each retrieved event corresponds to the content of an individual ZMQ message, which stores a single detector frame with all its associated data. The events are retrieved from a ZMQ data stream, and the server broadcasting the stream takes care of distributing the events across all processing nodes.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node int the OM node pool. The rank is an integer that unambiguously identifies the node in the pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
open_event(*, event)
Opens a Jungfrau 1M ZMQ event.
Please see the documentation of the base Protocol class for additional information about this method.
Jungfrau 1M data events retrieved from a ZMQ stream do not need to be opened, so this function actually does nothing.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event |
Dict[str, Any]
|
A dictionary storing the event data. |
required |
close_event(*, event)
Closes a Jungfrau 1M ZMQ event.
Please see the documentation of the base Protocol class for additional information about this method.
Jungfrau 1M data events retrieved from a ZMQ stream do not need to be closed, so this function actually does nothing.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event |
Dict[str, Any]
|
A dictionary storing the event data. |
required |
extract_data(*, event)
Extracts data from a Jungfrau 1M ZMQ event.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event |
Dict[str, Any]
|
A dictionary storing the event data. |
required |
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
A dictionary storing the extracted data.
|
Raises:
Type | Description |
---|---|
OmDataExtractionError
|
Raised when data cannot be extracted from the event. |
initialize_event_data_retrieval()
Initializes event data retrievals from psana.
Please see the documentation of the base Protocol class for additional information about this method.
Jungfrau 1M's ZMQ data stream does not allow the retrieval of single standalone data events, so this function has no implementation.
Raises:
Type | Description |
---|---|
NotImplementedError
|
This functionality has not been implemented for this Data Event Handler. |
retrieve_event_data(event_id)
Retrieves all data related to the requested event.
Please see the documentation of the base Protocol class for additional information about this method.
Jungfrau 1M's ZMQ data stream does not allow the retrieval of single standalone data events, so this function has no implementation.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event_id |
str
|
A string that uniquely identifies a data event. |
required |
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
All data related to the requested detector data frame. |
Raises:
Type | Description |
---|---|
NotImplementedError
|
This functionality has not been implemented for this Data Event Handler. |