Skip to main content

Magnet Class

Overview

The Magnet class extends Element and is the standard atom-layer base class for many magnetic element families. It adds magnetic strengths and provides generic hooks for linear, second-order, and kick-based tracking.

In the public API, users usually work with wrappers such as Quadrupole, Sextupole, or Bend. Those wrappers hold atoms that derive from Magnet.

Added Physics State

  • angle (float): bending angle in radians
  • k1 (float): quadrupole gradient in 1/m^2
  • k2 (float): sextupole strength in 1/m^3

These are added on top of the generic geometry and offset attributes inherited from Element.

Main Responsibilities

  • build first-order magnetic parameters for TransferMap
  • build second-order parameters for SecondTM
  • provide kick parameters for KickTM
  • provide transfer geometry for both straight and bending magnets

Hook Methods

create_first_order_main_params(energy, delta_length=None)

Returns FirstOrderParams for the main body of the magnet. The generic implementation includes the bending curvature angle / l and the quadrupole term k1.

create_second_order_main_params(energy, delta_length=0.0)

Returns SecondOrderParams for magnets that use the generic magnetic second-order model. This includes k1, k2, offsets, and the corresponding R, B, and T.

create_kick_entrance_params(), create_kick_main_params(), create_kick_exit_params()

Return KickParams objects for kick-based tracking. These hooks provide the strengths and offsets needed by KickTM.

Geometry and Tilt

Magnet.get_transfer_geometry() distinguishes between straight and bending cases:

  • if angle == 0, the magnet uses the straight reference geometry inherited from Element
  • if angle != 0, the reference trajectory is an arc in the bending plane
  • for dipoles, tilt rotates the bending plane
  • for straight magnets such as quadrupoles and sextupoles, tilt does not change the reference trajectory

Typical Families Built on Magnet

  • Quadrupole
  • Sextupole
  • Octupole
  • Bend, SBend, RBend
  • UnknownElement

Not every magnetic-looking element derives from Magnet. For example, Hcor and Vcor use their own atom class and therefore do not inherit the generic kick hooks from Magnet.

Summary

Magnet is the main atom-layer base class for magnetic element families. It extends the generic Element contract with magnetic strengths, nonlinear hooks, kick hooks, and geometry for bending trajectories.