-
Notifications
You must be signed in to change notification settings - Fork 3
Add a PPU component #71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
ba8d0b4
50399e4
38359f2
f107703
4aea70e
44e92b5
b2af097
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ::: extra.components.PPU |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -59,9 +59,17 @@ def _find_ppu(run: DataCollection, device: str = None): | |
|
|
||
|
|
||
| class PPU: | ||
| """Interface to a PPU (Pulse Picker Unit). | ||
| """Interface to a Pulse Picker Unit (PPU). | ||
|
|
||
| Despite its name, the PPU picks trains, not pulses. | ||
| Despite its name, the PPU selects a bunch train from within the 10Hz | ||
| structure and block the remainder of the beam. | ||
|
|
||
| Technical description: | ||
| A motor-driven absorber rotor is rotated into the beam axis in order to | ||
| block the XFEL beam when triggered. The rotor is contained within a UHV | ||
| chamber. In terms of temporal structure, the beam pipe is blocked by an | ||
| absorbing rotor for up to 9/10ths of a second or vice versa, | ||
| synchronized to the facility clock/trigger. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Very useful information for the docs, I only wonder (naive question) how the 9/10 blocking scheme, i.e. one train per second picked, fits to an overall run where 1 / 309 trains are selected - like run 3379, 50 for instance, shouln't it then be 30 trains with non-consecutive IDs? |
||
| """ | ||
|
|
||
| _DEVICE_CLASSES = ["PulsePickerTrainTrigger", "PulsePickerTrainTriggerCopy"] | ||
|
|
@@ -78,8 +86,8 @@ def __init__( | |
| contains more than one PPU. This can be any of: | ||
| - The device name of the source. | ||
| - A `SourceData` or [KeyData][extra_data.KeyData] of the | ||
| control source (e.g. `HED_XTD6_PPU/MDL/PPU_TRIGGER`) of an | ||
| XGM. | ||
| control source (e.g. `HED_XTD6_PPU/MDL/PPU_TRIGGER`) of a | ||
| PPU. | ||
| - The alias name of either a `SourceData` or | ||
| [KeyData][extra_data.KeyData] belonging to a PPU. | ||
| - A unique (case-insensitive) substring of a PPU source name. | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer if all pages were listed in the index. In general I dislike having disembodied pages because otherwise navigating to them requires that someone knows the right link to click on the right page (e.g. I always get confused when trying to find the xwiz docs).