SixTrack / pysixtrack

Reference sixtrack tracking engine in pure python
Apache License 2.0
2 stars 4 forks source link

Thin Dipole + dpsi (tilting) error: missing curvature terms! #39

Closed aoeftiger closed 4 years ago

aoeftiger commented 4 years ago

PySixTrack's application of a transverse rotation misalignment error (dpsi in MAD-X) to a thin multipole with a dipole component k0l is missing the rotation of the curvature terms hxl and hyl. (cf. email thread between @rdemaria and me)

The problem is documented here: https://github.com/aoeftiger/sixtracklib_pyht_playground/blob/04e7c24cb318785171a4b3b757b2ea6c99c9b8f7/sis100/2020-01-10--multipole-error-comparison-MADX-STL/ThinDipole_with_dpsi-entering_on_axis.ipynb

Important to know: MAD-X Version 5.05.01 seems to yield slightly wrong results for strong k0l components -- as documented in the notebook above. This systematic error vanishes quickly for weaker k0l << 1e-4.

aoeftiger commented 4 years ago

PR https://github.com/SixTrack/pysixtrack/pull/41 fixes the rotation of the curvature.

The following notebook documents the implemented scheme (same as above, just re-run with the PR https://github.com/SixTrack/pysixtrack/pull/41): https://github.com/aoeftiger/sixtracklib_pyht_playground/blob/656a725f083dfeabdf60f20e54909884f71ab754/sis100/2020-01-10--multipole-error-comparison-MADX-STL/ThinDipole_with_dpsi-entering_on_axis.ipynb

==> MAD-X produces a 10^{-5} error in the px and py kicks (which should be equal to the given k0l strength of 0.01):

enter TRACK module
one pass is on

++++++ table: tracksumm

    number       turn                      x                     px 
         1          0   0.00000000000000e+00   0.00000000000000e+00 
         1          1   5.00066682337395e-03   1.00003333466672e-02 

                     y                     py                      t                     pt 
  0.00000000000000e+00   0.00000000000000e+00   0.00000000000000e+00   0.00000000000000e+00 
 -5.00091686713360e-03  -1.00008333841694e-02  -8.80997659244605e-05   0.00000000000000e+00 

                     s                      e 
  0.00000000000000e+00   0.00000000000000e+00 
  1.00000000000000e+00   0.00000000000000e+00 
exit TRACK module

(Note the px of 1.00003333466672e-02 instead of 1.0e-02, as well as the py of -1.00008333841694e-02 instead of -1.0e-02)