Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 77 additions & 30 deletions source/element-kinds.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@ cleo: # [string] user-defined name
(s:ackicker)=
## ACKicker Element

Time varying kicker element

Under Construction...
An ACKicker element simulates a time-dependent kicker.
It is like a Kicker element except that the field varies in time.

Element parameter groups associated with this element kind are:
- [**ACKickerP**](#s:ackicker.params): AC kicker parameters.
Expand All @@ -30,13 +29,22 @@ Element parameter groups associated with this element kind are:
- [**ReferenceChangeP**](#s:ref.change.params): Reference energy change and/or reference time correction.
- [**TrackingP**](#s:tracking.params): Tracking parameters.

Example:
```{code} yaml
ack1:
kind: ACKicker
length: 0.3
t_offset: 0.1e-8
scale_multipoles: = F
b1: = 0.27
amplitude_vs_time: = {(-1.2e-6, 0.02), ... }

%---------------------------------------------------------------------------------------------------
(s:beambeam)=
## BeamBeam Element

Element for simulating colliding beams.

Under Construction...
A BeamBeam element defines the parameters of a oppositely moving "strong" beam that generates electromagnetic fields at the interaction point. This strong beam is assumed to have a three-dimensional (3D) Gaussian density distribution.
Copy link
Member

Choose a reason for hiding this comment

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

Do we really want to have the assumption that the strong beam is Gaussian. If a program does not make this assumption then what kind of lattice element should it use?


Element parameter groups associated with this element kind are:
- [**ApertureP**](#s:aperture.params): Aperture parameters.
Expand All @@ -48,14 +56,21 @@ Element parameter groups associated with this element kind are:
- [**ReferenceChangeP**](#s:ref.change.params): Reference energy change and/or reference time correction.
- [**TrackingP**](#s:tracking.params): Tracking parameters.

The length of this element is considered to be zero so if `length` is specified, it must be zero.
Example:
```{code} yaml
bb1:
kind: BeamBeam
sigma_x: 0.1e-3
sigma_y: 0.1e-3
sigma_z: 5.0e-2
energy: 1.0e10
N_particle: 1.0e11

%---------------------------------------------------------------------------------------------------
(s:beginningele)=
## BeginningEle Element

Initial element at start of a branch.

A BeginningEle element is an initial element at start of a branch.
Under Construction...

Element parameter groups associated with this element kind are:
Expand All @@ -66,8 +81,6 @@ Element parameter groups associated with this element kind are:
- [**ReferenceP**](#s:ref.params): Reference parameters.
- [**TrackingP**](#s:tracking.params): Tracking parameters.

The length of this element is considered to be zero so if `length` is specified, it must be zero.

%---------------------------------------------------------------------------------------------------
(s:bend)=
## Bend Elements: RBend and SBend
Expand Down Expand Up @@ -105,7 +118,9 @@ between `e1` and `e1_rect`, and `e2` and `e2_rect` satisfied.
(s:converter)=
## Converter Element

Target to produce new species. EG: Positron converter.
A Converter element represents a target (plate) onto which
particles are slammed in order to generate
particles of a different type. For example, a tungsten plate which is bombarded with electrons to generate positrons.

Under Construction...

Expand All @@ -126,9 +141,8 @@ The length of this element is considered to be zero so if `length` is specified,
(s:crabcavity)=
## CrabCavity Element

RF crab cavity

Under Construction...
A CrabCavity element is an zero length RF cavity that gives a longitudinal dependent
transverse kick.

Element parameter groups associated with this element kind are:
- [**ApertureP**](#s:aperture.params): Aperture parameters.
Expand All @@ -141,6 +155,14 @@ Element parameter groups associated with this element kind are:
- [**ReferenceChangeP**](#s:ref.change.params): Reference energy change and/or reference time correction.
- [**TrackingP**](#s:tracking.params): Tracking parameters.

Example:
```{code} yaml
cc1:
kind: CrabCavity
frequency: 394.0e6
phase: 0.0
voltage: 1.0e6

%---------------------------------------------------------------------------------------------------
(s:drift)=
## Drift Element
Expand Down Expand Up @@ -168,8 +190,8 @@ d01:
%---------------------------------------------------------------------------------------------------
(s:egun)=
## EGun Element

Electron gun.
An EGun element represents an electron gun and encompasses a region starting from the cathode were
the electrons are generated.

Under Construction...

Expand All @@ -188,7 +210,12 @@ Element parameter groups associated with this element kind are:
(s:feedback)=
## Feedback Circuit

Element used to simulate a feedback circuit.
A Feedback element is a lord element used to simulate a feedback circuit.
It gathers information about particle trajectories from the inputs
and uses this
to either adjust beam trajectories in the outputs and/or adjust parameters in the outputs.
A feedback element could be used, for example, to simulate RF feedback systems or beam position
feedback, or cooling of a proton beam by a beam of electrons.

Under Construction...

Expand All @@ -198,12 +225,12 @@ Note: This element does not have a `length` nor an `s_position`.
(s:fiducial)=
## Fiducial Element

Global coordinate system fiducial point.
A Fiducial element is used to fix the position and orientation of the reference orbit within the global
coordinate system at the location of the fiducial element. A fiducial element will affect the global
floor coordinates of elements both upstream and downstream of the fiducial element.

Under Construction...

The length of this element is considered to be zero so if `length` is specified, it must be zero.

%---------------------------------------------------------------------------------------------------
(s:floorshift)=
## FloorShift Element
Expand All @@ -225,8 +252,10 @@ Element parameter groups associated with this element kind are:
(s:foil)=
## Foil Element

Material that can strip electrons from a particle.
Will also cause energy loss and diffusion.
A Foil element represents a planar sheet of material which can strip electrons from a particle. In
conjunction, there will be scattering of the particle trajectory as well as an associated energy loss.
Material that can strip electrons from a particle
will also cause energy loss and diffusion.

Under Construction...

Expand All @@ -245,7 +274,9 @@ The length of this element is considered to be zero so if `length` is specified,
(s:fork)=
## Fork Element

Element used to connect lattice branches together.
A Fork element marks the start of an alternative branch for the beam (or X-rays or
other particles generated by the beam) to follow.
This element is used to connect lattice branches together.

Under Construction...

Expand All @@ -264,7 +295,11 @@ The length of this element is considered to be zero so if `length` is specified,
(s:girder)=
## Girder Element

Element to support in space a group of other elements.
A Girder element is a support structure that orients the
elements that are attached to it in space. This element can
be used to simulate any rigid support structure and there are
no restrictions on how the lattice elements
that are supported are oriented with respect to one another.

Under Construction...

Expand All @@ -274,7 +309,7 @@ Note: This element does not have a `length` nor an `s_position`.
(s:instrument)=
## Instrument Element

Measurement element.
An Instrument element is a measurement element for diagnostics.

Under Construction...

Expand All @@ -293,7 +328,9 @@ Element parameter groups associated with this element kind are:
(s:kicker)=
## Kicker Element

Particle kicker element.
A kicker element is an element that can deflect a beam transversely in both planes.
It uses the hkick and vkick parameters to deflect the beam in
horizontal and vertical directions.
Comment on lines +332 to +333
Copy link
Member

Choose a reason for hiding this comment

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

Do we really want different names for kicks as opposed to zeroth order multipoles?


Under Construction...
Copy link
Contributor

Choose a reason for hiding this comment

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

Note: There is currently no separate parameter group (e.g. KickerP) for describing kicker-specific parameters. I suppose one could re-use the bend parameter group (BendP), but that doesn't provide an option to give a simple integrated kick. If you like, I could draft something in parameters/kicker.md.

Copy link
Contributor

Choose a reason for hiding this comment

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

@DavidSagan I overlooked that zero-order (dipole) multipole components are allowed in PALS. In that case, re-using those here seems optimal.


Expand Down Expand Up @@ -332,7 +369,8 @@ a case, the `BodyShiftP` parameter group can be used to misalign the BPM.
(s:mask)=
## Mask Element

Collimation element.
A Mask element defines an aperture where the mask area can essentially have an arbitrary shape.
It is a collimation element to remove unwanted particles.

Under Construction...

Expand All @@ -351,7 +389,8 @@ Element parameter groups associated with this element kind are:
(s:match)=
## Match Element

Orbit, Twiss, and dispersion matching element.
A Match element is used to match the orbit, Twiss, and dispersion parameters
between two locations.

Under Construction...

Expand Down Expand Up @@ -432,7 +471,10 @@ oct01w:
(s:patch)=
## Patch Element

Crooked drift used to shift the reference curve.
A Patch element is an element used to shift the reference orbit and time.
A common application of this element is to orient two lines with respect
to each other. For example,
to orient an injection line with the ring it is injecting into.

Under Construction...

Expand Down Expand Up @@ -480,6 +522,8 @@ q01w:
(s:rfcavity)=
## RFCavity Element

An RFCavity element represents an RF cavity that accelerates or decelerates, and focuses or defocuses, a charged particle beam longitudinally and transversely using RF fields.

Under Construction...

Element parameter groups associated with this element kind are:
Expand Down Expand Up @@ -555,7 +599,9 @@ sol01w:
(s:taylor)=
## Taylor Element

Taylor map element
A Taylor element is a Taylor map that maps the input orbital phase space and possibly spin coordinates
of a particle at the entrance end of the element to the output orbital and spin coordinates at the exit
end of the element.

Under Construction...

Expand Down Expand Up @@ -621,6 +667,7 @@ together with the [`placement`](#s:placement) construct within a `BeamLine` and
%---------------------------------------------------------------------------------------------------
(s:wiggler)=
## Wiggler Element
A Wiggler element consists of a periodic array of alternating bending magnets. From a particle tracking perspective, it is equivalent to an undulator. Hereafter, the term "wiggler" will be used to denote either a wiggler or an undulator.

Under Construction...

Expand Down
20 changes: 18 additions & 2 deletions source/parameters/beambeam.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
(s:beambeam.params)=
## BeamBeamP: Beambeam Parameters
## BeamBeamP: BeamBeam Parameters

In Construction...
The `BeamBeamP` parameter group describes a particle beam element
from the opposite moving colliding beam.

The inputs of `BeamBeamP` are:
```{code} yaml
BeamBeamP:
sigma_x: 0.001 # The horizontal beam size of the opposite beam (default: 1 mm).
sigma_y: 0.001 # The vertical beam size of the opposite beam (default: 1 mm).
sigma_z: 0.0 # The longitudinal beam size of the opposite beam (default: 0 m).
alpha_x: 0.0 # The horizontal Twiss parameter alpha at interaction point (default: 0).
beta_x: 1.0 # The horizontal Twiss parameter beta at interaction point (default 1 m).
alpha_y: 0.0 # The vertical Twiss parameter alpha at interaction point (default 0 m).
beta_y: 1.0 # The vertical Twiss parameter beta at interaction point (default 1 m).
charge: 1.0 # The charge of the opposite beam (default: 1 for proton).
energy: 1e12 # The total energy in eV of the opposite beam (default: 1e12.
N_particle: 0.0 # Number of particles in the opposite beam (default: 0).
```

23 changes: 22 additions & 1 deletion source/parameters/initialparticle.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,26 @@
(s:init.particle.params)=
## InitialParticleP: Initial Particle Coordinates Parameters

In Construction...
The `InitialParticleP` parameter group contains parameters for describing the
initial beam particle distribution.
The components of this group are:
```{code} yaml
InitialParticleP:
distribution_type: "" # [string] name of initial distribution type
sigma_x: null # RMS x = sqrt(<x^2>)
sigma_px: null # RMS px = sqrt(<px^2>)
mu_xpx: null # <xpx>/(sigma_x*sigma_px) where <> denotes average over distribution
x_off: null # <x>
px_off: null # <px>
sigma_y: null # RMS y = sqrt(<y^2>)
sigma_py: null # RMS py = sqrt(<py^2>)
y_off: null # <y>
py_off: null # <py>
mu_ypy: null # <ypy>/(sigma_y*sigma_py)
sigma_z: null # RMS z = sqrt(<z^2>)
sigma_pz: null # RMS pz = sqrt(<pz^2>)
mu_zpz: null # <zpz>/(sigma_z*sigma_pz)
z_off: null # <z>
pz_off: null # <pz>
```
Comment on lines +9 to +26
Copy link
Member

Choose a reason for hiding this comment

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

There are 21 moments so setting any should be available. How about something like sigma_xpy or sigma_14 for <x*py>. Also something like <xpx>/(sigma_x*sigma_px) will be singular if sigma_x or sigma_px are zero and these are redundant if sigma_14 notation is used.


7 changes: 7 additions & 0 deletions source/parameters/tracking.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,12 @@
Tracking parameters are highly program specific but it is useful to have a group
having some standardization.

The `TrackingP` parameter group contains parameters for describing the particle
tracking.
The components of this group are:
```{code} yaml
ReferenceP:
...
```
In Construction...