Skip to content

add screen and wire definitions - #205

Open
roussel-ryan wants to merge 1 commit into
pals-project:mainfrom
roussel-ryan:diagnostics
Open

add screen and wire definitions#205
roussel-ryan wants to merge 1 commit into
pals-project:mainfrom
roussel-ryan:diagnostics

Conversation

@roussel-ryan

Copy link
Copy Markdown

Please remove any sensitive information (e.g., passwords, API keys) from your submission.
Please fill in the details for all of the relevant items below.
Thank you for taking the time to complete this PR. It will be reviewed as soon as possible.

If proposing a new type of lattice element, Please provide:

Element name

Screen, Wire

Element description

Screen: Transverse diagnostic screen that measures detailed 2-dimensional projections of the beam distribution.
Wire: Transverse wire that sweeps across a beam distribution to measure a 1-dimensional beam profile.

List of element parameters

ScreenP:
resolution_x: 0 # [int] Number of screen pixels in the horizontal direction.
resolution_y: 0 # [int] Number of screen pixels in the vertical direction.
pixel_size: 0 # [m] Size of screen pixels.
mirror_x: false # [Boolean] If true, mirror the horizontal image.
mirror_y: false # [Boolean] If turn, mirror the vertical image.

WireP:
angle: 0 # [radian] Angle of the wire with respect to the horizontal axis.
n_steps: 1 # [int] Number of steps used during a wire scan.
start_offset: 0 # [m] Wire scan start offset from beam axis.
end_offset: 0 # [m] Wire scan end offset from beam axis.
width: 0 # [m] Wire width.

Physical model

N/A

Alternative descriptions

N/A

Additional information

Screen implementation examples:
Cheetah: https://github.com/desy-ml/cheetah/blob/master/cheetah/accelerator/screen.py
Bmad/Lux: Detector class in https://www.classe.cornell.edu/bmad/manuals/lux.pdf

Comment on lines +4 to +12
The `ScreenP` parameter group contains parameters for describing a 2-dimensional diagnostic screen used to measure the transverse distribution of a particle beam.
The components of this group and their defaults are:
```{code} yaml
ScreenP:
resolution_x: 0 # [int] Number of screen pixels in the horizontal direction.
resolution_y: 0 # [int] Number of screen pixels in the vertical direction.
pixel_size: 0 # [m] Size of screen pixels.
mirror_x: false # [Boolean] If true, mirror the horizontal image.
mirror_y: false # [Boolean] If turn, mirror the vertical image.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments:

  • Pixels may not be square so there should be a size for x and y.
  • resolution is somewhat cryptic here. How about specifying the index bounds (like the Detector element in Bmad) and that way the mirror_x/y parameters can be eliminated.

Comment thread source/element-kinds.md
An Instrument element is a measurement element for diagnostics.

Under Construction...
An Screen element is a transverse profile monitor element that produces a 2-dimensional projection of

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
An Screen element is a transverse profile monitor element that produces a 2-dimensional projection of
A Screen element is a transverse profile monitor element that produces a 2-dimensional projection of

@wlin6927

Copy link
Copy Markdown
Member

At BNL we use Multi-wire profile monitors (also called harps) to measure 2D beam profile. See (https://proceedings.jacow.org/pac97/papers/pdf/5P048.PDF) for an example in the AGS. I would propose something like the following:

Element name
Multiwire

Element description
Multiwire: Transverse beam diagnostic consisting of arrays of thin wires that intercept the beam and measure the beam intensity distribution along horizontal and vertical axes.

List of element parameters
MultiwireP:
nbr_wires_x: 0 # [int] Number of wires in the horizontal measurement plane.
nbr_wires_y: 0 # [int] Number of wires in the vertical measurement plane.
spacing_x: 0 # [m] Wire spacing in the horizontal plane.
spacing_y: 0 # [m] Wire spacing in the vertical plane.
wire_diameter: 0 # [m] Diameter of the wires.
mirror_x: false # [Boolean] If true, reverse horizontal wire ordering.
mirror_y: false # [Boolean] If true, reverse vertical wire ordering.

In practical data analysis we usually ignore wire diameter since they are very thin, and assume the profile is not mirrored, but I thought it might be good to include them for completeness.

@DavidSagan

Copy link
Copy Markdown
Member

Since there is much overlap let me suggest that one element kind be used for both single and multi-wire elements.

@ax3l ax3l added the element kinds beamline elements & segments/lines label Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

element kinds beamline elements & segments/lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants