diff --git a/Scripts/switchyard.madx b/Scripts/switchyard.madx new file mode 100644 index 0000000..3f8f151 --- /dev/null +++ b/Scripts/switchyard.madx @@ -0,0 +1,86 @@ +MATCH,SEQUENCE=swissfel,range=#s/#e,betx=betax0,alfx=alphax0,bety=betay0,alfy=alphay0; +VARY, NAME=satsy01.mqua020.k1, STEP=0.00001,LOWER=-4,UPPER=4; +VARY, NAME=satsy01.mqua040.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +VARY, NAME=satsy01.mqua070.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +VARY, NAME=satsy01.mqua090.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DX = 0.082; ! +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DPX = 0.0084; +!CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DPX = DPXM*1.2; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DY < 0.09; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01.mbnd200, DPY < 1; +LMDIF, CALLS=1000, TOLERANCE=1.E-21; +ENDMATCH; + + +!------------------------------------- +! match second half of SATSY01 - closing dispersion + +if (initquads ==1){ +satsy01.mqua210.k1=satsy01.mqua090.k1; +satsy01.mqua230.k1=satsy01.mqua070.k1; +satsy01.mqua260.k1=satsy01.mqua040.k1; +satsy01.mqua280.k1=satsy01.mqua020.k1; +satsy01.mqua300.k1 := 5.27400e-01; +} + +DXS = -0.030; +DPXS = -0.001; + +MATCH,SEQUENCE=swissfel,range=#s/#e,betx=betax0,alfx=alphax0,bety=betay0,alfy=alphay0; +VARY, NAME=satsy01.mqua280.k1, STEP=0.00001,LOWER=-4,UPPER=4; +VARY, NAME=satsy01.mqua300.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, DX = DXS; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, DPX =DPXS; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy01$end, X < 0.1; +LMDIF, CALLS=1000, TOLERANCE=1.E-21; +ENDMATCH; + +matching.xdispersion=TAR; + + +!------------------------------------------ +! close vertical dispersion + +if (initquads==1){ +satsy02.mqua010.k1 := - 1.71; +satsy02.mqua110.k1 := 1.22622; +satsy02.mqua120.k1 := 1.64073; +satsy02.mqua230.k1 = -1.61620; +} + +MATCH,SEQUENCE=swissfel,range=#s/#e,betx=betax0,alfx=alphax0,bety=betay0,alfy=alphay0; +VARY, NAME=satsy02.mqua010.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +VARY, NAME=satsy02.mqua110.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +VARY, NAME=satsy02.mqua120.k1, STEP=0.00001,LOWER=Kmin,UPPER=Kmax; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy02$end, DY = 0.0; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy02$end, DPY = 0.0; +CONSTRAINT, SEQUENCE=swissfel, RANGE=satsy02$end, X = 0.0; +LMDIF, CALLS=1000, TOLERANCE=1.E-21; +ENDMATCH; + +matching.ydispersion=TAR; + + +!--------------------------------- +! match sextupoles + +if (initquads==1){ +satsy01.msex050.k2 = 100; +satsy01.msex080.k2 = -100; +satsy01.msex220.k2 = -100; +satsy01.msex250.k2 = 100; +} + + +MATCH,chrom, SEQUENCE=swissfel,range=#s/#e,betx=betax0,alfx=alphax0,bety=betay0,alfy=alphay0; +VARY, NAME=satsy01.msex050.k2, STEP=0.00001; +VARY, NAME=satsy01.msex080.k2, STEP=0.00001; +VARY, NAME=satsy01.msex220.k2, STEP=0.00001; +VARY, NAME=satsy01.msex250.k2, STEP=0.00001; + +CONSTRAINT, SEQUENCE=swissFEL, RANGE=satsy02$end, DDX = 0; +CONSTRAINT, SEQUENCE=swissFEL, RANGE=satsy02$end, DDY = 0; +CONSTRAINT, SEQUENCE=swissFEL, RANGE=satsy02$end, DDPX = 0; +CONSTRAINT, SEQUENCE=swissFEL, RANGE=satsy02$end, DDPY = 0; +LMDIF, CALLS=1000, TOLERANCE=1.E-21; +ENDMATCH; diff --git a/Scripts/switchyard_kicker.madx b/Scripts/switchyard_kicker.madx new file mode 100644 index 0000000..9fcab3f --- /dev/null +++ b/Scripts/switchyard_kicker.madx @@ -0,0 +1,34 @@ +!----------------------------------- +! switch yard +! matching condition at the septum, the new design by Natalia on 27th July 2011 +! find the correct kicker strength to have the right dispersion and offset. + +y_sep=0.01; +py_sep=0.0; +dy_sep=-y_sep; +dpy_sep=-py_sep; + + +S20SY02.MKDC010.cory := SYKICK*2; +S20SY02.MKAC020.cory := SYKICK*3; +S20SY02.MKDC030.cory := SYKICK*2; +S20SY02.MKAC040.cory := SYKICK*3; +S20SY02.MKDC050.cory := SYKICK*2; + + +use,sequence=s20sy02; +MATCH,SEQUENCE=s20sy02,range=#s/#e,betx=20,alfx=0,bety=20,alfy=0; +VARY,NAME=s20sy02.mqua070.k1,STEP=0.0001,lower=-3,upper=3; +VARY,NAME=s20sy02.mqua100.k1,STEP=0.0001,lower=-3,upper=3; +VARY,NAME=s20sy02.mqua140.k1,STEP=0.0001,lower=-3,upper=3; +VARY,NAME=s20sy02.mqua180.k1,STEP=0.0001,lower=-3,upper=3; +VARY,NAME=SYKICK,STEP=0.0001; +CONSTRAINT,SEQUENCE=s20sy02,range=S20SY02.mbnd200,y=y_sep; +CONSTRAINT,SEQUENCE=s20sy02,range=S20SY02.mbnd200,py=py_sep; +CONSTRAINT,SEQUENCE=s20sy02,range=S20SY02.mbnd200,dy=-0.007; +CONSTRAINT,SEQUENCE=s20sy02,range=S20SY02.mbnd200,dpy<1; +CONSTRAINT,SEQUENCE=s20sy02,range=S20SY02.mqua180, BETY < 60; +LMDIF,CALLS=8000,TOLERANCE=1.e-21; +ENDMATCH; + +twiss,sequence=s20sy02,range=#s/#e,rmatrix,betx=20,alfx=0,bety=20,alfy=0; diff --git a/Settings/Reference.json b/Settings/Reference.json new file mode 100644 index 0000000..d31e07a --- /dev/null +++ b/Settings/Reference.json @@ -0,0 +1,449 @@ +{ + "Label": "Reference", + "Order": [ + { + "Reference": "Start", + "MatchID": "Laser Heater", + "End": "SINLH02", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": null, + "MatchID": "SINSB04", + "End": null, + "Destination": "SATBD01", + "Sequence": "SINSB04", + "Save": true + }, + { + "Reference": "Laser Heater", + "MatchID": "Match to SINSB04", + "End": "SINSB04", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": "Laser Heater", + "MatchID": "Bunch Compressor 1", + "End": "SINDI02", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": null, + "MatchID": "Linac 1", + "End": null, + "Destination": "SATBD01", + "Sequence": "S10CB02", + "Save": true + }, + { + "Reference": "Bunch Compressor 1", + "MatchID": "Match to Linac 1", + "End": "S10CB02", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": "Bunch Compressor 1", + "MatchID": "End of Linac 1", + "End": "S10BC01", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": "Bunch Compressor 1", + "MatchID": "Bunch Compressor 2", + "End": "S10MA01", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": null, + "MatchID": "Linac 2", + "End": null, + "Destination": "SATBD01", + "Sequence": [ + "S20CB01", + "S20CB02" + ], + "Save": true + }, + { + "Reference": "Bunch Compressor 2", + "MatchID": "Match to Linac 2", + "End": "S20CB04", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": "Bunch Compressor 2", + "MatchID": "Match to Switchyard", + "End": "S20SY02", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + }, + { + "Reference": "Switchyard", + "MatchID": "Resonant Kicker", + "End": "S20SY02", + "Destination": "SATBD01", + "Sequence": null, + "Save": null + } + ], + "Dependence": { + "SINSB04-MQUA230": [ + "SINSB03-MQUA230" + ], + "S10CB02-MQUA230": [ + "S10DI01-MQUA120", + "S10CB03-MQUA430", + "S10CB04-MQUA430", + "S10CB05-MQUA430", + "S10CB06-MQUA430", + "S10CB07-MQUA430", + "S10CB08-MQUA430" + ], + "S10CB02-MQUA430": [ + "S10CB03-MQUA230", + "S10CB04-MQUA230", + "S10CB05-MQUA230", + "S10CB06-MQUA230", + "S10CB07-MQUA230", + "S10CB08-MQUA230" + ], + "S20CB01-MQUA430": [ + "S20CB03-MQUA430" + ], + "SATSY01-MQUA090": [ + "SATSY01-MQUA210" + ], + "SATSY01-MQUA070": [ + "SATSY01-MQUA230" + ], + "SATSY01-MQUA040": [ + "SATSY01-MQUA260" + ] + }, + "Reference": { + "Start": { + "Location": "start", + "Twiss": { + "betax": 29.971, + "alphax": 0.003, + "betay": 26.0, + "alphay": -0.288 + } + }, + "Laser Heater": { + "Location": "sinlh02.mqua410$start", + "Twiss": { + "betax": 11.2, + "alphax": 3.2, + "betay": 0.8, + "alphay": 0.75 + } + }, + "Bunch Compressor 1": { + "Location": "sindi02.mqua020$start", + "Twiss": { + "betax": 11.1557, + "alphax": -1.17, + "betay": 50, + "alphay": 0.0 + } + }, + "Bunch Compressor 2": { + "Location": "s10ma01.mqua020$start", + "Twiss": { + "betax": 6.14, + "alphax": -0.83, + "betay": 22.86, + "alphay": -1.18 + } + }, + "Switchyard": { + "Location": "s20sy02$start", + "Twiss": { + "betax": 48.26, + "alphax": 7.322, + "betay": 14.293, + "alphay": -3.513 + } + }, + "Linac3": { + "Location": "s30cb10.mqua430$start", + "Twiss": { + "betax": 8.83, + "alphax": 0.548, + "betay": 30.44, + "alphay": -1.866 + } + }, + "Aramis Stopper": { + "Location": "sarma01.mqua010$start", + "Twiss": { + "betax": 2.304, + "alphax": -1.4045, + "betay": 25.929, + "alphay": -6.363 + } + }, + "Athos HERO": { + "Location": "satdi01.mqua250$start", + "Twiss": { + "betax": 35.76, + "alphax": -1.166, + "betay": 24.087, + "alphay": 0.648 + } + }, + "Athos Deflector": { + "Location": "satbd01.mqua010$start", + "Twiss": { + "betax": 50, + "alphax": 0, + "betay": 50, + "alphay": 0 + } + } + }, + "Parameter": { + "Laser Heater": { + "Variable": [ + "SINLH01-MQUA020", + "SINLH01-MQUA040", + "SINLH01-MQUA050", + "SINLH01-MQUA070", + "SINLH02-MQUA010" + ], + "Target": [ + { + "Location": "sinlh02.mqua410$start", + "Twiss": { + "betax": 11.2, + "alphax": 3.2, + "betay": 0.8, + "alphay": 0.75 + } + } + ] + }, + "SINSB04": { + "Variable": [ + "SINSB04-MQUA130", + "SINSB04-MQUA230" + ], + "Target": [ + { + "Location": "#e", + "Twiss": { + "MUX": 0.2, + "MUY": 0.2 + } + } + ] + }, + "Match to SINSB04": { + "Variable": [ + "SINLH02-MQUA410", + "SINLH03-MQUA030", + "SINLH03-MQUA040", + "SINLH03-MQUA060", + "SINLH03-MQUA080", + "SINSB03-MQUA130" + ], + "Target": [ + { + "Location": "sinsb04$start", + "SavedID": "SINSB04" + } + ] + }, + "Bunch Compressor 1": { + "Variable": [ + "SINBC01-MQUA020", + "SINBC01-MQUA050", + "SINBC01-MQUA070", + "SINBC01-MQUA090", + "SINBC01-MQUA110", + "SINDI01-MQUA020", + "SINDI01-MQUA070" + ], + "Target": [ + { + "Location": "sindi02.mqua020$start", + "Twiss": { + "betax": 11.1557, + "alphax": -1.17, + "betay": 50, + "alphay": 0.0 + } + }, + { + "Location": "sinbc02.mbnd400", + "Twiss": { + "betax": 5.1, + "betay": 100 + }, + "Limit": 1 + }, + { + "Location": "sinbc01.mqua110$end", + "Twiss": { + "betax": 100 + }, + "Limit": 1 + } + ] + }, + "Linac 1": { + "Variable": [ + "S10CB02-MQUA230", + "S10CB02-MQUA430" + ], + "Target": [ + { + "Location": "#e", + "Twiss": { + "MUX": 0.1883, + "MUY": 0.1883 + } + } + ] + }, + "Match to Linac 1": { + "Variable": [ + "S10CB01-MQUA230", + "S10CB01-MQUA430", + "SINDI02-MQUA020", + "SINDI02-MQUA030", + "SINDI02-MQUA050", + "SINDI02-MQUA060", + "SINDI02-MQUA090" + ], + "Target": [ + { + "Location": "s10cb02$start", + "SavedID": "Linac 1" + } + ] + }, + "End of Linac 1": { + "Variable": [ + "S10CB07-MQUA430", + "S10CB08-MQUA230", + "S10CB08-MQUA430", + "S10CB09-MQUA230" + ], + "Target": [ + { + "Location": "s10bc01.mqua020$start", + "Twiss": { + "betax": 4.88, + "betay": 16.11, + "alphax": 0.5546, + "alphay": -1.81 + } + } + ] + }, + "Bunch Compressor 2": { + "Variable": [ + "S10BC01-MQUA020", + "S10BC01-MQUA040", + "S10BC01-MQUA060", + "S10BC01-MQUA080", + "S10BC01-MQUA100" + ], + "Target": [ + { + "Location": "s10ma01.mqua020$start", + "Twiss": { + "betax": 6.14, + "alphax": -0.83, + "betay": 22.86, + "alphay": -1.18 + } + } + ] + }, + "Linac 2": { + "Variable": [ + "S20CB01-MQUA430", + "S20CB02-MQUA430" + ], + "Target": [ + { + "Location": "#e", + "Twiss": { + "MUX": 0.2, + "MUY": 0.2 + } + } + ] + }, + "Match to Linac 2": { + "Variable": [ + "S10MA01-MQUA020", + "S10MA01-MQUA050", + "S10MA01-MQUA070", + "S10MA01-MQUA110", + "S10MA01-MQUA130" + ], + "Target": [ + { + "Location": "s20cb01$start", + "SavedID": "Linac 2" + } + ] + }, + "Match to Switchyard": { + "Variable": [ + "S20SY01-MQUA020", + "S20SY01-MQUA030", + "S20SY01-MQUA050", + "S20SY01-MQUA080" + ], + "Target": [ + { + "Location": "s20sy02$start", + "Twiss": { + "betax": 48.26, + "alphax": 7.322, + "betay": 14.293, + "alphay": -3.513 + } + } + ] + }, + "Resonant Kicker": { + "Variable": [ + "S20SY02-MQUA070", + "S20SY02-MQUA100", + "S20SY02-MQUA140", + "S20SY02-MQUA180", + "S20SY02-MKDC010", + "S20SY02-MKAC020", + "S20SY02-MKDC030", + "S20SY02-MKAC040", + "S20SY02-MKDC050" + ], + "Target": [ + { + "Script": "Scripts/switchyard_kicker.madx" + } + ] + } + } +} \ No newline at end of file