Skip to content

Setting dE_ref in element causes track error #224

@DavidSagan

Description

@DavidSagan

@mattsignorelli Test program:

using BeamTracking
using Beamlines

@eles begin
  q = Drift(L = 1, tracking_method = Exact())
  q2 = Drift(L = 1, tracking_method = Exact(), dE_ref = 1e6)
  m = Marker(E_ref = 10e9, species_ref=Species("electron"))
  m2 = Marker(E_ref = 10e9, species_ref=Species("electron"))
end

lat = Lattice([m, q])
lat2 = Lattice([m2, q2])

v1 = [0.0  0.0  0.0  0.0  0.0  0.0]

b1 = Bunch(deepcopy(v1), species=Species("electron"), R_ref = -1e7)
track!(b1, q)
println(b1.coords.v)

b1 = Bunch(deepcopy(v1), species=Species("electron"), R_ref = -1e7)
track!(b1, q2)
println(b1.coords.v)

Output:

julia> include("local/z.jl")
[0.0 0.0 0.0 0.0 0.0 0.0]
ERROR: LoadError: Unable to get species_ref: species_ref of the Beamline has not been set
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] getproperty
    @ ~/.julia/dev/Beamlines/src/beamline.jl:214 [inlined]
  [3] getproperty(b::Beamline, key::Symbol)
    @ Beamlines ~/.julia/dev/Beamlines/src/beamline.jl:278
  [4] _track!(coords::BeamTracking.Coords{…}, bunch::Bunch{…}, ele::LineElement, tm::Exact, ramp_without_rf::Bool; kwargs::@Kwargs{})
    @ BeamTrackingBeamlinesExt ~/.julia/dev/BeamTracking/ext/BeamTrackingBeamlinesExt/unpack.jl:23
  [5] _track!(coords::BeamTracking.Coords{Vector{…}, Matrix{…}, Nothing}, bunch::Bunch{Float64, Float64, BeamTracking.Coords{…}}, ele::LineElement, tm::Exact, ramp_without_rf::Bool)
    @ BeamTrackingBeamlinesExt ~/.julia/dev/BeamTracking/ext/BeamTrackingBeamlinesExt/unpack.jl:2
  [6] track!(bunch::Bunch{Float64, Float64, BeamTracking.Coords{Vector{UInt8}, Matrix{Float64}, Nothing}}, ele::LineElement; ramp_particle_energy_without_rf::Bool, kwargs::@Kwargs{})
    @ BeamTrackingBeamlinesExt ~/.julia/dev/BeamTracking/ext/BeamTrackingBeamlinesExt/BeamTrackingBeamlinesExt.jl:19
  [7] track!(bunch::Bunch{Float64, Float64, BeamTracking.Coords{Vector{UInt8}, Matrix{Float64}, Nothing}}, ele::LineElement)
    @ BeamTrackingBeamlinesExt ~/.julia/dev/BeamTracking/ext/BeamTrackingBeamlinesExt/BeamTrackingBeamlinesExt.jl:12
  [8] top-level scope
    @ ~/.julia/dev/BeamTracking/local/z.jl:21
  [9] include(fname::String)
    @ Main ./sysimg.jl:38
 [10] top-level scope
    @ REPL[3]:1
in expression starting at /Users/dcs16/.julia/dev/BeamTracking/local/z.jl:21
Some type information was truncated. Use `show(err)` to see complete types.

The first call to track! is OK but the second call fails due to q3 setting dE_ref.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions