Example #1
0
def mad_benchmark(mtype, attrs, pc=0.2, x=0, px=0, y=0, py=0, t=0, pt=0):
    import pysixtrack
    from cpymad.madx import Madx

    mad = Madx(stdout=False)
    madtype = mad.command[mtype]
    mad.beam(particle="proton", pc=pc)
    madtype.clone("mm", **attrs)
    mad.input("bench: line=(mm)")
    mad.use(sequence="bench")
    mad.track(onepass=True, dump=False)
    mad.start(x=x, px=px, y=y, py=py, t=t, pt=pt)
    mad.run()
    mad.endtrack()
    p_mad = pysixtrack.Particles.from_madx_track(mad)
    p_six = p_mad.copy(0)
    line = pysixtrack.Line.from_madx_sequence(mad.sequence.bench,
                                              exact_drift=True)
    line.track(p_six)
    p_mad.copy(-1).compare(p_six, rel_tol=0)
    return mad, line, p_mad, p_six