trailing whitespace

This commit is contained in:
2024-03-22 17:00:05 +01:00
parent c31e10a79f
commit 44af41b2f2
7 changed files with 120 additions and 120 deletions

View File

@ -28,7 +28,7 @@ Clone and install dap
git clone https://gitlab.psi.ch/sf-daq/dap.git
cd dap
make install
```
```
# Architecture
@ -37,7 +37,7 @@ The dap architecture is designed for horizontal scalability, processing various
- Metadata-only results to the accumulator for storage.
## Worker
Each worker runs independently and processes frames received via ZeroMQ. Before applying algorithms, it converts raw (ADC) detector values to energy using [jungfrau_utils](https://github.com/paulscherrerinstitute/jungfrau_utils).
Each worker runs independently and processes frames received via ZeroMQ. Before applying algorithms, it converts raw (ADC) detector values to energy using [jungfrau_utils](https://github.com/paulscherrerinstitute/jungfrau_utils).
Input parameters:
```bash
python dap/worker.py --help
@ -65,7 +65,7 @@ options:
send to streamvis each of skip_frames_rate frames
```
The number of required workers varies based on detector size and algorithm complexity.
The number of required workers varies based on detector size and algorithm complexity.
Workers can be pinned to specific processor cores and distributed across multiple nodes.
## Accumulator
@ -87,9 +87,9 @@ options:
```
# Implemented algorithms
* **peakfinder Algorithm**
* **peakfinder Algorithm**
This algorithm is based on peakfinder8 from the [cheetah package](https://www.desy.de/~barty/cheetah/Cheetah/Welcome.html). It identifies peaks as connected pixels exhibiting intensity above the background. The background is determined iteratively by radial averaging, excluding signal pixels.
Input parameters:
@ -106,16 +106,16 @@ options:
* `'is_hit_frame': True/False` - Marks whether a frame qualifies as a hit based on the number of identified peaks exceeding the defined threshold.
* **Radial Profile Integration**
This algorithm integrates pixel intensities radially based on defined parameters.
Input parameters:
Input parameters:
* `'do_radial_integration': 1/0` - Indicates whether radial integration should occur within dap.
* `'beam_center_x/beam_center_y': float/float` - Specifies the beam center coordinates in the detector space.
* `'apply_threshold': 1/0` - Determines whether to apply a threshold to pixel intensities before radial integration.
* `'radial_integration_silent_min/radial_integration_silent_max': float/float` - If both values are present, normalizes the radial integrated profile within this specified range. This is crucial for frame combination to eliminate variations in beam intensity across frames.
Output of algorithm:
Output of algorithm:
* `'radint_I': list[float]` - Represents the radial integrated profile in pixel coordinates.
* `'radint_q' : [float, float]` - Represents the minimum and maximum x-coordinate values considered during integration in pixel coordinates.
@ -139,7 +139,7 @@ options:
* `'roi_intensities': list[float]` - Sum of pixel intensities within the ROI.
* `'roi_intensities_normalised': list[float]` - Intensity within the defined ROI normalized to the ROI size (the count of active pixels within the ROI).
* `'roi_intensities_x': list(float, float)` - x1/x2 (left/right) x-coordinates of the ROI.
* `'roi_intensities_proj_x': list(value)` - Projection onto the x-coordinate of pixel intensities (sum).
* `'roi_intensities_proj_x': list(value)` - Projection onto the x-coordinate of pixel intensities (sum).
* **Detecting Frames with High intensity in Specific Regions**
@ -156,10 +156,10 @@ options:
* 0: if intensity in both ROIs falls below the respective thresholds
* 25: ROI1 has high energy but not ROI2
* 50: ROI2 has high energy but not ROI1
* 75: intensities in both ROIs exceed the thresholds
* 75: intensities in both ROIs exceed the thresholds
* **Frame aggregation**
When dealing with faint signals that are challenging to discern in individual frames, dap offers the option to aggregate frames, combining them at the dap level before sending the resulting aggregate frame to visualization. It's important to note that this aggregation occurs independently for each worker. Thus, it's crucial to maintain a reasonable balance between the number of frames to aggregate and the number of active dap workers for a given detector. This aggregation process does not impact other algorithms, as they operate on individual frames (example: the threshold algorithm runs before frame aggregation).
Input parameters:
@ -167,22 +167,22 @@ options:
* `'aggregation_max': int` - Specifies the maximum number of frames to aggregate before transmitting to visualization. This value pertains to each worker.
Algorithm Output:
* `'aggregated_images': int` - Indicates the count of aggregated images.
* `'aggregated_images': int` - Indicates the count of aggregated images.
* **Frame Tagging**
When event propagation is integrated into the detector, dap allows frames to be tagged accordingly, facilitating their categorization during visualization.
Presently supported markers:
* `'laser_on': True/False` - Marks frames as "laser activated" when the darkshot event code is False and the laser event code is True. Otherwise, frames are labeled as "not laser activated".
* **Detection of Saturated Pixels**
For every frame received by dap, an analysis is performed to ascertain the quantity and positions of saturated pixels.
Algorithm Output:
* `'saturated_pixels': int` - Number of saturated pixels within the frame.
* `'saturated_pixels_x/saturated_pixels_y': list[float]/list[float]` - Coordinates of the saturated pixels.
* `'saturated_pixels_x/saturated_pixels_y': list[float]/list[float]` - Coordinates of the saturated pixels.
* **Transmitted Parameters from dap Input to Visualization**
@ -194,12 +194,12 @@ options:
* **Implement Additional Masking**
Sensitive algorithms, such as the peakfinder, often necessitate the exclusion of specific detector regions (like defective or module edge pixels). Presently, defining these detector segments requires manual hardcoding within the worker.py code.
Use the `'apply_additional_mask': 0/1` - Input flag to enable this functionality.
* **Filter based on pulse picker information**
If the event propagation capability is accessible for the detector and the pulse picker information is correctly configured for propagation, the filtration based on pulse picker information becomes feasible by using the
If the event propagation capability is accessible for the detector and the pulse picker information is correctly configured for propagation, the filtration based on pulse picker information becomes feasible by using the
`'select_only_ppicker_events': 0/1` - Input flag.
## Input parameters (File)