@@ -17,7 +17,7 @@ local printf, tblcat in MAD.utility
1717-- Import types functions
1818local deferred in MAD.typeid
1919-- Import from local toolbox
20- local twiss_4plot, plot_twiss, plot_chrom, tw_cols in require "toolbox"
20+ local twiss_4plot, plot_twiss, plot_chrom, plot_wchrom, tw_cols in require "toolbox"
2121
2222-- FODO Setup ------------------------------------------------------------------
2323
@@ -93,7 +93,13 @@ plot_twiss {
9393}
9494if chrm then
9595plot_chrom {
96- title = "FODO", -- plot title
96+ title = "FODO (chrom)", -- plot title
97+ sequence = fodo, -- sequence for layout
98+ table = twp, -- twiss table for plot
99+ output = fplt,
100+ }
101+ plot_wchrom {
102+ title = "FODO (chrom)", -- plot title
97103 sequence = fodo, -- sequence for layout
98104 table = twp, -- twiss table for plot
99105 output = fplt,
@@ -202,7 +208,13 @@ plot_twiss {
202208}
203209if chrm then
204210plot_chrom {
205- title = "Matched FODO", -- plot title
211+ title = "Matched FODO (chrom)", -- plot title
212+ sequence = fodo, -- sequence for layout
213+ table = twp, -- twiss table for plot
214+ output = fplt,
215+ }
216+ plot_wchrom {
217+ title = "Matched FODO (chrom)", -- plot title
206218 sequence = fodo, -- sequence for layout
207219 table = twp, -- twiss table for plot
208220 output = fplt,
@@ -225,8 +237,9 @@ local kopts = {
225237 "disp1_10" , "disp1_01" , "disp2_10" , "disp2_01" , -- 17
226238 "disp3_10" , "disp3_01" , "disp4_10" , "disp4_01"} , -- 21
227239 not chrm and {} or
228- {"wx_10" , "wx_01" , "wxp_10" , "wxp_01" , -- 25
229- "wy_10" , "wy_01" , "wyp_10" , "wyp_01" }) -- 29
240+ {"dmu1_10" , "dmu1_01" , "dmu2_10" , "dmu2_01" , -- 25
241+ "wx_10" , "wx_01" , "wxp_10" , "wxp_01" , -- 29
242+ "wy_10" , "wy_01" , "wyp_10" , "wyp_01" }) -- 33
230243 ,
231244 tblcat(
232245 {"beta11_20", "beta11_02", "beta22_20", "beta22_02", -- 1
@@ -236,16 +249,17 @@ local kopts = {
236249 "disp1_20" , "disp1_02" , "disp2_20" , "disp2_02" , -- 17
237250 "disp3_20" , "disp3_02" , "disp4_20" , "disp4_02"} , -- 21
238251 not chrm and {} or
239- {"wx_20" , "wx_02" , "wxp_20" , "wxp_02" , -- 25
240- "wy_20" , "wy_02" , "wyp_20" , "wyp_02" }) -- 29
252+ {"dmu1_20" , "dmu1_02" , "dmu2_20" , "dmu2_02" , -- 25
253+ "wx_20" , "wx_02" , "wxp_20" , "wxp_02" , -- 29
254+ "wy_20" , "wy_02" , "wyp_20" , "wyp_02" }) -- 33
241255}
242256
243257-- Loop over orders -------------------
244258
245259for ord=1,2 do
246260
247- local nk = 24+(chrm and 8 or 0)
248- assert(#kopts[ord] == nk, "invalid kopts, expecting 32 got "..#kopts[ord])
261+ local nk = 24+(chrm and 12 or 0)
262+ assert(#kopts[ord] == nk, "invalid kopts, expecting "..nk.." got "..#kopts[ord])
249263
250264-- Compute parametric twiss -----------
251265local mo = ord+(chrm and 2 or 1)
@@ -285,14 +299,18 @@ twp:addcol("dy_vs_k1d_da" , \ri -> twp[kopts[ord][22]][ri])
285299twp:addcol("dpy_vs_k1f_da" , \ri -> twp[kopts[ord][23]][ri])
286300twp:addcol("dpy_vs_k1d_da" , \ri -> twp[kopts[ord][24]][ri])
287301if chrm then
288- twp:addcol("wx_vs_k1f_da" , \ri -> twp[kopts[ord][25]][ri])
289- twp:addcol("wx_vs_k1d_da" , \ri -> twp[kopts[ord][26]][ri])
290- twp:addcol("wxp_vs_k1f_da" , \ri -> twp[kopts[ord][27]][ri])
291- twp:addcol("wxp_vs_k1d_da" , \ri -> twp[kopts[ord][28]][ri])
292- twp:addcol("wy_vs_k1f_da" , \ri -> twp[kopts[ord][29]][ri])
293- twp:addcol("wy_vs_k1d_da" , \ri -> twp[kopts[ord][30]][ri])
294- twp:addcol("wyp_vs_k1f_da" , \ri -> twp[kopts[ord][31]][ri])
295- twp:addcol("wyp_vs_k1d_da" , \ri -> twp[kopts[ord][32]][ri])
302+ twp:addcol("dmu1_vs_k1f_da" , \ri -> twp[kopts[ord][25]][ri])
303+ twp:addcol("dmu1_vs_k1d_da" , \ri -> twp[kopts[ord][26]][ri])
304+ twp:addcol("dmu2_vs_k1f_da" , \ri -> twp[kopts[ord][27]][ri])
305+ twp:addcol("dmu2_vs_k1d_da" , \ri -> twp[kopts[ord][28]][ri])
306+ twp:addcol("wx_vs_k1f_da" , \ri -> twp[kopts[ord][29]][ri])
307+ twp:addcol("wx_vs_k1d_da" , \ri -> twp[kopts[ord][30]][ri])
308+ twp:addcol("wxp_vs_k1f_da" , \ri -> twp[kopts[ord][31]][ri])
309+ twp:addcol("wxp_vs_k1d_da" , \ri -> twp[kopts[ord][32]][ri])
310+ twp:addcol("wy_vs_k1f_da" , \ri -> twp[kopts[ord][33]][ri])
311+ twp:addcol("wy_vs_k1d_da" , \ri -> twp[kopts[ord][34]][ri])
312+ twp:addcol("wyp_vs_k1f_da" , \ri -> twp[kopts[ord][35]][ri])
313+ twp:addcol("wyp_vs_k1d_da" , \ri -> twp[kopts[ord][36]][ri])
296314end
297315
298316-- Compute finite difference twiss ----
343361 twp:addcol("dpy_vs_k1f_fd" , \ri -> ((a*twfp.dpy [ri] + b*tw.dpy [ri] + c*twfm.dpy [ri])/(d*dh^e)))
344362 twp:addcol("dpy_vs_k1d_fd" , \ri -> ((a*twdp.dpy [ri] + b*tw.dpy [ri] + c*twdm.dpy [ri])/(d*dh^e)))
345363if chrm then
364+ twp:addcol("dmu1_vs_k1f_fd" , \ri -> ((a*twfp.dmu1 [ri] + b*tw.dmu1 [ri] + c*twfm.dmu1 [ri])/(d*dh^e)))
365+ twp:addcol("dmu1_vs_k1d_fd" , \ri -> ((a*twdp.dmu1 [ri] + b*tw.dmu1 [ri] + c*twdm.dmu1 [ri])/(d*dh^e)))
366+ twp:addcol("dmu2_vs_k1f_fd" , \ri -> ((a*twfp.dmu2 [ri] + b*tw.dmu2 [ri] + c*twfm.dmu2 [ri])/(d*dh^e)))
367+ twp:addcol("dmu2_vs_k1d_fd" , \ri -> ((a*twdp.dmu2 [ri] + b*tw.dmu2 [ri] + c*twdm.dmu2 [ri])/(d*dh^e)))
346368 twp:addcol("wx_vs_k1f_fd" , \ri -> ((a*twfp.wx [ri] + b*tw.wx [ri] + c*twfm.wx [ri])/(d*dh^e)))
347369 twp:addcol("wx_vs_k1d_fd" , \ri -> ((a*twdp.wx [ri] + b*tw.wx [ri] + c*twdm.wx [ri])/(d*dh^e)))
348370 twp:addcol("wxp_vs_k1f_fd" , \ri -> ((a*twfp.phix [ri] + b*tw.phix [ri] + c*twfm.phix [ri])/(d*dh^e)))
382404 twp:addcol("dpy_vs_k1f_dif" , \ri -> twp.dpy_vs_k1f_da [ri] - twp.dpy_vs_k1f_fd [ri])
383405 twp:addcol("dpy_vs_k1d_dif" , \ri -> twp.dpy_vs_k1d_da [ri] - twp.dpy_vs_k1d_fd [ri])
384406if chrm then
407+ twp:addcol("dmu1_vs_k1f_dif" , \ri -> twp.dmu1_vs_k1f_da [ri] - twp.dmu1_vs_k1f_fd [ri])
408+ twp:addcol("dmu1_vs_k1d_dif" , \ri -> twp.dmu1_vs_k1d_da [ri] - twp.dmu1_vs_k1d_fd [ri])
409+ twp:addcol("dmu2_vs_k1f_dif" , \ri -> twp.dmu2_vs_k1f_da [ri] - twp.dmu2_vs_k1f_fd [ri])
410+ twp:addcol("dmu2_vs_k1d_dif" , \ri -> twp.dmu2_vs_k1d_da [ri] - twp.dmu2_vs_k1d_fd [ri])
385411 twp:addcol("wx_vs_k1f_dif" , \ri -> twp.wx_vs_k1f_da [ri] - twp.wx_vs_k1f_fd [ri])
386412 twp:addcol("wx_vs_k1d_dif" , \ri -> twp.wx_vs_k1d_da [ri] - twp.wx_vs_k1d_fd [ri])
387413 twp:addcol("wxp_vs_k1f_dif" , \ri -> twp.wxp_vs_k1f_da [ri] - twp.wxp_vs_k1f_fd [ri])
@@ -403,6 +429,7 @@ plot {
403429 x1y1 = {s = {"beta11_vs_k1f_da", "beta11_vs_k1d_da", "beta22_vs_k1f_da", "beta22_vs_k1d_da"}},
404430 xlabel = "s [m]" , -- x-axis label
405431 ylabel = "β_{x,y} [m]", -- y-axis label left
432+ y2label = "", -- y-axis label right
406433 legend = {beta11_vs_k1f_da="β_x vs k1f", beta11_vs_k1d_da="β_x vs k1d",
407434 beta22_vs_k1f_da="β_y vs k1f", beta22_vs_k1d_da="β_y vs k1d"},
408435 styles = "lines", linewidth=1.5, fontsize=16, -- styles
@@ -602,6 +629,45 @@ plot {
602629
603630if chrm then
604631
632+ plot {
633+ title = "dmu vs params (order "..ord..")", -- plot title
634+ sequence = fodo, -- sequence for layout
635+ table = twp, -- twiss table for plot
636+ x1y1 = {s = {"dmu1_vs_k1f_da", "dmu1_vs_k1d_da", "dmu2_vs_k1f_da", "dmu2_vs_k1d_da"}},
637+ xlabel = "s [m]" , -- x-axis label
638+ ylabel = "dμ_{x,y} [m]", -- y-axis label left
639+ legend = {dmu1_vs_k1f_da="dμ_x vs k1f", dmu1_vs_k1d_da="dμ_x vs k1d",
640+ dmu2_vs_k1f_da="dμ_y vs k1f", dmu2_vs_k1d_da="dμ_y vs k1d"},
641+ styles = "lines", linewidth=1.5, fontsize=16, -- styles
642+ output = fplt,
643+ }
644+
645+ plot {
646+ title = "dmu vs fd (order "..ord..")", -- plot title
647+ sequence = fodo, -- sequence for layout
648+ table = twp, -- twiss table for plot
649+ x1y1 = {s = {"dmu1_vs_k1f_fd", "dmu1_vs_k1d_fd", "dmu2_vs_k1f_fd", "dmu2_vs_k1d_fd"}},
650+ xlabel = "s [m]" , -- x-axis labellabel
651+ ylabel = "dμ_{x,y} [m]", -- y-axis label left
652+ legend = {dmu1_vs_k1f_fd="dμ_x vs k1f", dmu1_vs_k1d_fd="dμ_x vs k1d",
653+ dmu2_vs_k1f_fd="dμ_y vs k1f", dmu2_vs_k1d_fd="dμ_y vs k1d"},
654+ styles = "lines", linewidth=1.5, fontsize=16, -- styles
655+ output = fplt,
656+ }
657+
658+ plot {
659+ title = "dmu vs prms and fd diff (order "..ord..")", -- plot title
660+ sequence = fodo, -- sequence for layout
661+ table = twp, -- twiss table for plot
662+ x1y1 = {s = {"dmu1_vs_k1f_dif", "dmu1_vs_k1d_dif", "dmu2_vs_k1f_dif", "dmu2_vs_k1d_dif"}},
663+ xlabel = "s [m]" , -- x-axis label
664+ ylabel = "Error on dμ_{x,y} [m]", -- y-axis label left
665+ legend = {dmu1_vs_k1f_dif="dμ_x vs k1f err", dmu1_vs_k1d_dif="dμ_x vs k1d err",
666+ dmu2_vs_k1f_dif="dμ_y vs k1f err", dmu2_vs_k1d_dif="dμ_y vs k1d err"},
667+ styles = "lines", linewidth=1.5, fontsize=16, -- styles
668+ output = fplt,
669+ }
670+
605671plot {
606672 title = "w vs params (order "..ord..")", -- plot title
607673 sequence = fodo, -- sequence for layout
0 commit comments