diff --git a/HL-LHC/Efcomp_MBRD.madx b/HL-LHC/Efcomp_MBRD.madx index d2aa289..1f9cc4d 100644 --- a/HL-LHC/Efcomp_MBRD.madx +++ b/HL-LHC/Efcomp_MBRD.madx @@ -3,83 +3,36 @@ ! The orientation for D2 left is LE-BODY-NLE in IR1 and IR5, and then mirror symmetry w.r.t. IP ! F.F. Van der Veken January 2019 ! orientation is IP .. (=D2) +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded exec new_magnetfamily_MB(MBRD); + +abs_or_rel:=0; order:=0; + !D2.L1 if (print_errors==1){print, text="Errors for MBRD.4L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MBRD\.4L1.*$"; -iap=1; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam1,ssr,ssr); -iap=2; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam2,ssr,ssr); -if(use_average_errors_MBRD==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam2); -}; -if(use_average_errors_MBRD==0){ - if(mylhcbeam==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam1); - }; - if(mylhcbeam>1){ - exec average_of_randoms(ssr,ssrBeam2,ssrBeam2); - }; -}; -exec errorgenerate_dip_inv(MBRD); +exec Efcomp_Random_Multi(MBRD, MBRD.4L1, abs_or_rel, order); !D2.R1 if (print_errors==1){print, text="Errors for MBRD.4R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MBRD\.4R1.*$"; -iap=1; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam1,ssr,ssr); -iap=2; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam2,ssr,ssr); -if(use_average_errors_MBRD==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam2); -}; -if(use_average_errors_MBRD==0){ - if(mylhcbeam==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam1); - }; - if(mylhcbeam>1){ - exec average_of_randoms(ssr,ssrBeam2,ssrBeam2); - }; -}; -exec errorgenerate_dip(MBRD); +exec Efcomp_Random_Multi(MBRD, MBRD.4R1, abs_or_rel, order); !D2.L5 if (print_errors==1){print, text="Errors for MBRD.4L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MBRD\.4L5.*$"; -iap=1; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam1,ssr,ssr); -iap=2; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam2,ssr,ssr); -if(use_average_errors_MBRD==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam2); -}; -if(use_average_errors_MBRD==0){ - if(mylhcbeam==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam1); - }; - if(mylhcbeam>1){ - exec average_of_randoms(ssr,ssrBeam2,ssrBeam2); - }; -}; -exec errorgenerate_dip_inv(MBRD); +exec Efcomp_Random_Multi(MBRD, MBRD.4L5, abs_or_rel, order); !D2.R5 if (print_errors==1){print, text="Errors for MBRD.4R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MBRD\.4R5.*$"; -iap=1; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam1,ssr,ssr); -iap=2; exec new_magnetindividual(MBRD,iap); exec average_of_randoms(ssrBeam2,ssr,ssr); -if(use_average_errors_MBRD==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam2); -}; -if(use_average_errors_MBRD==0){ - if(mylhcbeam==1){ - exec average_of_randoms(ssr,ssrBeam1,ssrBeam1); - }; - if(mylhcbeam>1){ - exec average_of_randoms(ssr,ssrBeam2,ssrBeam2); - }; -}; -exec errorgenerate_dip(MBRD); +exec Efcomp_Random_Multi(MBRD, MBRD.4R5, abs_or_rel, order); diff --git a/HL-LHC/Efcomp_MBXAB.madx b/HL-LHC/Efcomp_MBXAB.madx index 93d62fa..b7adfe4 100644 --- a/HL-LHC/Efcomp_MBXAB.madx +++ b/HL-LHC/Efcomp_MBXAB.madx @@ -5,32 +5,35 @@ ! The second module MBXB does no longer exist ! F.F. Van der Veken Aug 2019 ! The new orientation is IP ... (D1=) +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded exec new_magnetfamily(MBXAB); -iap=0; + +abs_or_rel:=0; order:=0; !D1.L1 if (print_errors==1){print, text="Errors for MBXF.4L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MBXF\.4L1.*$"; -exec new_magnetindividual(MBXAB,iap);exec errorgenerate_dip(MBXAB); +exec Efcomp_Random_Multi(MBXAB, MBXF.4L1, abs_or_rel, order); !D1.R1 if (print_errors==1){print, text="Errors for MBXF.4R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MBXF\.4R1.*$"; -exec new_magnetindividual(MBXAB,iap);exec errorgenerate_dip_inv(MBXAB); +exec Efcomp_Random_Multi(MBXAB, MBXF.4R1, abs_or_rel, order); !D1.L5 if (print_errors==1){print, text="Errors for MBXF.4L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MBXF\.4L5.*$"; -exec new_magnetindividual(MBXAB,iap);exec errorgenerate_dip(MBXAB); +exec Efcomp_Random_Multi(MBXAB, MBXF.4L5, abs_or_rel, order); !D1.R5 if (print_errors==1){print, text="Errors for MBXF.4R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MBXF\.4R5.*$"; -exec new_magnetindividual(MBXAB,iap);exec errorgenerate_dip_inv(MBXAB); +exec Efcomp_Random_Multi(MBXAB, MBXF.4R5, abs_or_rel, order); return; diff --git a/HL-LHC/Efcomp_MCBRD.madx b/HL-LHC/Efcomp_MCBRD.madx index 29e71eb..9cac175 100644 --- a/HL-LHC/Efcomp_MCBRD.madx +++ b/HL-LHC/Efcomp_MCBRD.madx @@ -1,5 +1,7 @@ ! F.F. Van der Veken ! Error generation for the new D2 correctors (MCBRD) +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded ! ! The layout for v1.4 is: ! B2 <- (=MCBRDV.L.B2 MCBRDH.L.B2= D2=) IP (=D2 =MCBRDH.R.B1 MCBRDV.R.B1=) -> B1 @@ -24,6 +26,10 @@ if (ver_hllhc_optics<>1.4 && ver_hllhc_optics<>1.5){ stop; }; + +abs_or_rel:=1; order:=0; + + ! ----------------------------------------------------------------------- ! *********************** Magnet type : MCBRDH ************************ ! ----------------------------------------------------------------------- @@ -31,64 +37,32 @@ exec new_magnetfamily_MB(MCBRDH); ! systematic error klRef_MCBRDH_abs = BRef_MCBRDH*l.MCBRDH*CLIGHT/(1E9*NRJ); !MCBRDH.L1 -iap=2; -if(mylhcbeam==1){ - inv_MCBRD=0; - klRef_MCBRDH = sign_MCBRDH.4L1.B1*klRef_MCBRDH_abs; -}; -if(mylhcbeam>1){ - inv_MCBRD=1; - klRef_MCBRDH = sign_MCBRDH.4L1.B2*klRef_MCBRDH_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDH = sign_MCBRDH.4L1.B1*klRef_MCBRDH_abs; }; +if(mylhcbeam >1){ klRef_MCBRDH = sign_MCBRDH.4L1.B2*klRef_MCBRDH_abs; }; if (print_errors==1){print, text="Errors for MCBRDH.4L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDH\.4L1.*\.\.r$"; -exec new_magnetindividual(MCBRDH,iap); -exec errorgenerate_abs(MCBRDH, inv_MCBRD, 0, klRef_MCBRDH); +exec Efcomp_Random_Multi(MCBRDH, MCBRDH.4L1, abs_or_rel, order); !MCBRDH.R1 -if (ver_hllhc_optics==1.4){ iap=1; }; if (ver_hllhc_optics==1.5){ iap=2; }; -if(mylhcbeam==1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=0; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=1; }; - klRef_MCBRDH = sign_MCBRDH.4R1.B1*klRef_MCBRDH_abs; -}; -if(mylhcbeam>1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=1; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=0; }; - klRef_MCBRDH = sign_MCBRDH.4R1.B2*klRef_MCBRDH_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDH = sign_MCBRDH.4R1.B1*klRef_MCBRDH_abs; }; +if(mylhcbeam >1){ klRef_MCBRDH = sign_MCBRDH.4R1.B2*klRef_MCBRDH_abs; }; if (print_errors==1){print, text="Errors for MCBRDH.4R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDH\.4R1.*\.\.r$"; -exec new_magnetindividual(MCBRDH,iap); -exec errorgenerate_abs(MCBRDH, inv_MCBRD, 0, klRef_MCBRDH); +exec Efcomp_Random_Multi(MCBRDH, MCBRDH.4R1, abs_or_rel, order); !MCBRDH.L5 -iap=2; -if(mylhcbeam==1){ - inv_MCBRD=0; - klRef_MCBRDH = sign_MCBRDH.4L5.B1*klRef_MCBRDH_abs; -}; -if(mylhcbeam>1){ - inv_MCBRD=1; - klRef_MCBRDH = sign_MCBRDH.4L5.B2*klRef_MCBRDH_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDH = sign_MCBRDH.4L5.B1*klRef_MCBRDH_abs; }; +if(mylhcbeam >1){ klRef_MCBRDH = sign_MCBRDH.4L5.B2*klRef_MCBRDH_abs; }; if (print_errors==1){print, text="Errors for MCBRDH.4L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDH\.4L5.*\.\.r$"; -exec new_magnetindividual(MCBRDH,iap); -exec errorgenerate_abs(MCBRDH, inv_MCBRD, 0, klRef_MCBRDH); +exec Efcomp_Random_Multi(MCBRDH, MCBRDH.4L5, abs_or_rel, order); !MCBRDH.R5 -if (ver_hllhc_optics==1.4){ iap=1; }; if (ver_hllhc_optics==1.5){ iap=2; }; -if(mylhcbeam==1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=0; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=1; }; - klRef_MCBRDH = sign_MCBRDH.4R5.B1*klRef_MCBRDH_abs; -}; -if(mylhcbeam>1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=1; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=0; }; - klRef_MCBRDH = sign_MCBRDH.4R5.B2*klRef_MCBRDH_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDH = sign_MCBRDH.4R5.B1*klRef_MCBRDH_abs; }; +if(mylhcbeam >1){ klRef_MCBRDH = sign_MCBRDH.4R5.B2*klRef_MCBRDH_abs; }; if (print_errors==1){print, text="Errors for MCBRDH.4R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDH\.4R5.*\.\.r$"; -exec new_magnetindividual(MCBRDH,iap); -exec errorgenerate_abs(MCBRDH, inv_MCBRD, 0, klRef_MCBRDH); +exec Efcomp_Random_Multi(MCBRDH, MCBRDH.4R5, abs_or_rel, order); @@ -99,64 +73,33 @@ exec new_magnetfamily_MB(MCBRDV); ! systematic error klRef_MCBRDV_abs = BRef_MCBRDV*l.MCBRDV*CLIGHT/(1E9*NRJ); !MCBRDV.L1 -iap=1; -if(mylhcbeam==1){ - inv_MCBRD=1; - klRef_MCBRDV = sign_MCBRDV.4L1.B1*klRef_MCBRDV_abs; -}; -if(mylhcbeam>1){ - inv_MCBRD=0; - klRef_MCBRDV = sign_MCBRDV.4L1.B2*klRef_MCBRDV_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDV = sign_MCBRDV.4L1.B1*klRef_MCBRDV_abs; }; +if(mylhcbeam >1){ klRef_MCBRDV = sign_MCBRDV.4L1.B2*klRef_MCBRDV_abs; }; if (print_errors==1){print, text="Errors for MCBRDV.4L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDV\.4L1.*\.\.r$"; -exec new_magnetindividual(MCBRDV,iap); -exec errorgenerate_abs(MCBRDV, inv_MCBRD, 0, klRef_MCBRDV); +exec Efcomp_Random_Multi(MCBRDV, MCBRDV.4L1, abs_or_rel, order); !MCBRDV.R1 -if (ver_hllhc_optics==1.4){ iap=2; }; if (ver_hllhc_optics==1.5){ iap=1; }; -if(mylhcbeam==1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=1; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=0; }; - klRef_MCBRDV = sign_MCBRDV.4R1.B1*klRef_MCBRDV_abs; -}; -if(mylhcbeam>1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=0; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=1; }; - klRef_MCBRDV = sign_MCBRDV.4R1.B2*klRef_MCBRDV_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDV = sign_MCBRDV.4R1.B1*klRef_MCBRDV_abs; }; +if(mylhcbeam >1){ klRef_MCBRDV = sign_MCBRDV.4R1.B2*klRef_MCBRDV_abs; }; if (print_errors==1){print, text="Errors for MCBRDV.4R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDV\.4R1.*\.\.r$"; -exec new_magnetindividual(MCBRDV,iap); -exec errorgenerate_abs(MCBRDV, inv_MCBRD, 0, klRef_MCBRDV); +exec Efcomp_Random_Multi(MCBRDV, MCBRDV.4R1, abs_or_rel, order); !MCBRDV.L5 -iap=1; -if(mylhcbeam==1){ - inv_MCBRD=1; - klRef_MCBRDV = sign_MCBRDV.4L5.B1*klRef_MCBRDV_abs; -}; -if(mylhcbeam>1){ - inv_MCBRD=0; - klRef_MCBRDV = sign_MCBRDV.4L5.B2*klRef_MCBRDV_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDV = sign_MCBRDV.4L5.B1*klRef_MCBRDV_abs; }; +if(mylhcbeam >1){ klRef_MCBRDV = sign_MCBRDV.4L5.B2*klRef_MCBRDV_abs; }; if (print_errors==1){print, text="Errors for MCBRDV.4L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDV\.4L5.*\.\.r$"; -exec new_magnetindividual(MCBRDV,iap); -exec errorgenerate_abs(MCBRDV, inv_MCBRD, 0, klRef_MCBRDV); +exec Efcomp_Random_Multi(MCBRDV, MCBRDV.4L5, abs_or_rel, order); !MCBRDV.R5 -if (ver_hllhc_optics==1.4){ iap=2; }; if (ver_hllhc_optics==1.5){ iap=1; }; -if(mylhcbeam==1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=1; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=0; }; - klRef_MCBRDV = sign_MCBRDV.4R5.B1*klRef_MCBRDV_abs; -}; -if(mylhcbeam>1){ - if (ver_hllhc_optics==1.4){ inv_MCBRD=0; }; if (ver_hllhc_optics==1.5){ inv_MCBRD=1; }; - klRef_MCBRDV = sign_MCBRDV.4R5.B2*klRef_MCBRDV_abs; -}; +if(mylhcbeam==1){ klRef_MCBRDV = sign_MCBRDV.4R5.B1*klRef_MCBRDV_abs; }; +if(mylhcbeam >1){ klRef_MCBRDV = sign_MCBRDV.4R5.B2*klRef_MCBRDV_abs; }; if (print_errors==1){print, text="Errors for MCBRDV.4R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBRDV\.4R5.*\.\.r$"; -exec new_magnetindividual(MCBRDV,iap); -exec errorgenerate_abs(MCBRDV, inv_MCBRD, 0, klRef_MCBRDV); +exec Efcomp_Random_Multi(MCBRDV, MCBRDV.4R5, abs_or_rel, order); + diff --git a/HL-LHC/Efcomp_MCBXFAB.madx b/HL-LHC/Efcomp_MCBXFAB.madx index af9c364..950b9d1 100644 --- a/HL-LHC/Efcomp_MCBXFAB.madx +++ b/HL-LHC/Efcomp_MCBXFAB.madx @@ -1,5 +1,7 @@ ! F.F Van der Veken 2015 ! Generation of errors for the corrector magnets in Q2, Q3 and CP. +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded ! Connections for the right side of IP: IP (=FBa Q2a=) (=Q2b FBb=) (=Q3=) (=FA ..) => only FBb needs inversion @@ -8,39 +10,39 @@ ! a2L: 1, a2R: 0, b2L: 0, b2R: 1, 3L: 1, 3R: 0 -iap=0; !Rref_MCBXFAH=Rr_MCBXAB; !Rref_MCBXFBH=Rr_MCBXAB; !Rref_MCBXFAV=-Rr_MCBXAB;!skew reference !Rref_MCBXFBV=-Rr_MCBXAB;!skew reference +abs_or_rel:=1; order:=0; + ! ----------------------------------------------------------------------- ! *********************** Magnet type : MCBXFAH ************************ ! ----------------------------------------------------------------------- exec new_magnetfamily(MCBXFAH); ! systematic error klRef_MCBXFAH_abs = BRef_MCBXFAH*l.MCBXFA*CLIGHT/(1E9*NRJ); -inv_MCBX=1; klRef_MCBXFAH = sign_MCBXFAH.3L1*klRef_MCBXFAH_abs; if (print_errors==1){print, text="Errors for MCBXFAH.3L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAH\.3L1\.\.r$"; -exec new_magnetindividual(MCBXFAH,iap);exec errorgenerate_abs(MCBXFAH, inv_MCBX, 0, klRef_MCBXFAH); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFAH, MCBXFAH.3L1, abs_or_rel, order); + klRef_MCBXFAH = sign_MCBXFAH.3R1*klRef_MCBXFAH_abs; if (print_errors==1){print, text="Errors for MCBXFAH.3R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAH\.3R1\.\.r$"; -exec new_magnetindividual(MCBXFAH,iap);exec errorgenerate_abs(MCBXFAH, inv_MCBX, 0, klRef_MCBXFAH); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFAH, MCBXFAH.3R1, abs_or_rel, order); + klRef_MCBXFAH = sign_MCBXFAH.3L5*klRef_MCBXFAH_abs; if (print_errors==1){print, text="Errors for MCBXFAH.3L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAH\.3L5\.\.r$"; -exec new_magnetindividual(MCBXFAH,iap);exec errorgenerate_abs(MCBXFAH, inv_MCBX, 0, klRef_MCBXFAH); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFAH, MCBXFAH.3L5, abs_or_rel, order); + klRef_MCBXFAH = sign_MCBXFAH.3R5*klRef_MCBXFAH_abs; if (print_errors==1){print, text="Errors for MCBXFAH.3R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAH\.3R5\.\.r$"; -exec new_magnetindividual(MCBXFAH,iap);exec errorgenerate_abs(MCBXFAH, inv_MCBX, 0, klRef_MCBXFAH); +exec Efcomp_Random_Multi(MCBXFAH, MCBXFAH.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- ! *********************** Magnet type : MCBXFAV ************************ @@ -48,26 +50,25 @@ exec new_magnetindividual(MCBXFAH,iap);exec errorgenerate_abs(MCBXFAH, inv_MCBX, exec new_magnetfamily(MCBXFAV); ! systematic error klRef_MCBXFAV_abs = BRef_MCBXFAV*l.MCBXFA*CLIGHT/(1E9*NRJ)*bv_aux; ! Main field gets a sign flip in case of Beam 4 (bv_aux) -inv_MCBX=1; klRef_MCBXFAV = sign_MCBXFAV.3L1*klRef_MCBXFAV_abs; if (print_errors==1){print, text="Errors for MCBXFAV.3L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAV\.3L1\.\.r$"; -exec new_magnetindividual(MCBXFAV,iap);exec errorgenerate_abs(MCBXFAV, inv_MCBX, 0, klRef_MCBXFAV); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFAV, MCBXFAV.3L1, abs_or_rel, order); + klRef_MCBXFAV = sign_MCBXFAV.3R1*klRef_MCBXFAV_abs; if (print_errors==1){print, text="Errors for MCBXFAV.3R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAV\.3R1\.\.r$"; -exec new_magnetindividual(MCBXFAV,iap);exec errorgenerate_abs(MCBXFAV, inv_MCBX, 0, klRef_MCBXFAV); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFAV, MCBXFAV.3R1, abs_or_rel, order); + klRef_MCBXFAV = sign_MCBXFAV.3L5*klRef_MCBXFAV_abs; if (print_errors==1){print, text="Errors for MCBXFAV.3L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAV\.3L5\.\.r$"; -exec new_magnetindividual(MCBXFAV,iap);exec errorgenerate_abs(MCBXFAV, inv_MCBX, 0, klRef_MCBXFAV); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFAV, MCBXFAV.3L5, abs_or_rel, order); + klRef_MCBXFAV = sign_MCBXFAV.3R5*klRef_MCBXFAV_abs; if (print_errors==1){print, text="Errors for MCBXFAV.3R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFAV\.3R5\.\.r$"; -exec new_magnetindividual(MCBXFAV,iap);exec errorgenerate_abs(MCBXFAV, inv_MCBX, 0, klRef_MCBXFAV); +exec Efcomp_Random_Multi(MCBXFAV, MCBXFAV.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -76,46 +77,45 @@ exec new_magnetindividual(MCBXFAV,iap);exec errorgenerate_abs(MCBXFAV, inv_MCBX, exec new_magnetfamily(MCBXFBH); ! systematic error klRef_MCBXFBH_abs = BRef_MCBXFBH*l.MCBXFB*CLIGHT/(1E9*NRJ); -inv_MCBX=1; klRef_MCBXFBH = sign_MCBXFBH.a2L1*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.a2L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.a2L1\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.a2L1, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.a2R1*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.a2R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.a2R1\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.a2R1, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.a2L5*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.a2L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.a2L5\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.a2L5, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.a2R5*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.a2R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.a2R5\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.a2R5, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.b2L1*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.b2L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.b2L1\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.b2L1, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.b2R1*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.b2R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.b2R1\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.b2R1, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.b2L5*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.b2L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.b2L5\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.b2L5, abs_or_rel, order); + klRef_MCBXFBH = sign_MCBXFBH.b2R5*klRef_MCBXFBH_abs; if (print_errors==1){print, text="Errors for MCBXFBH.b2R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBH\.b2R5\.\.r$"; -exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, 0, klRef_MCBXFBH); +exec Efcomp_Random_Multi(MCBXFBH, MCBXFBH.b2R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -124,47 +124,44 @@ exec new_magnetindividual(MCBXFBH,iap);exec errorgenerate_abs(MCBXFBH, inv_MCBX, exec new_magnetfamily(MCBXFBV); ! systematic error klRef_MCBXFBV_abs = BRef_MCBXFBV*l.MCBXFB*CLIGHT/(1E9*NRJ)*bv_aux; ! Main field gets a sign flip in case of Beam 4 (bv_aux) -inv_MCBX=1; klRef_MCBXFBV = sign_MCBXFBV.a2L1*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.a2L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.a2L1\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.a2L1, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.a2R1*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.a2R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.a2R1\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.a2R1, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.a2L5*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.a2L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.a2L5\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.a2L5, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.a2R5*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.a2R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.a2R5\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.a2R5, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.b2L1*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.b2L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.b2L1\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.b2L1, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.b2R1*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.b2R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.b2R1\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=0; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.b2R1, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.b2L5*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.b2L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.b2L5\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); -inv_MCBX=1; +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.b2L5, abs_or_rel, order); + klRef_MCBXFBV = sign_MCBXFBV.b2R5*klRef_MCBXFBV_abs; if (print_errors==1){print, text="Errors for MCBXFBV.b2R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MCBXFBV\.b2R5\.\.r$"; -exec new_magnetindividual(MCBXFBV,iap);exec errorgenerate_abs(MCBXFBV, inv_MCBX, 0, klRef_MCBXFBV); - - +exec Efcomp_Random_Multi(MCBXFBV, MCBXFBV.b2R5, abs_or_rel, order); return; diff --git a/HL-LHC/Efcomp_MQXFA.madx b/HL-LHC/Efcomp_MQXFA.madx index 4ec3cee..3f2881e 100644 --- a/HL-LHC/Efcomp_MQXFA.madx +++ b/HL-LHC/Efcomp_MQXFA.madx @@ -6,89 +6,95 @@ ! Update new names and lead end on the cryostat convention IP =Q1a||Q1b= =Q2a||Q2b= =Q3a||Q3b= ! F.F. Van der Veken Aug 2019 ! Update Q2 has opposite connection (due to MCBXF): IP (=Q1a Q1b=) (=MCBXFBa Q2a=) (=Q2b MCBXFBb=) (=Q3a Q3b=) +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded -exec new_magnetfamily(MQXFA); iap=0; +exec new_magnetfamily(MQXFA); + +abs_or_rel:=0; order:=1; !Q1a.R5 if (print_errors==1){print, text="Errors for MQXFA.A1R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A1R5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A1R5, abs_or_rel, order); !Q1b.R5 if (print_errors==1){print, text="Errors for MQXFA.B1R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B1R5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B1R5, abs_or_rel, order); !Q3a.R5 if (print_errors==1){print, text="Errors for MQXFA.A3R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A3R5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A3R5, abs_or_rel, order); !Q3b.R5 if (print_errors==1){print, text="Errors for MQXFA.B3R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B3R5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B3R5, abs_or_rel, order); !Q1a.L5 if (print_errors==1){print, text="Errors for MQXFA.A1L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A1L5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A1L5, abs_or_rel, order); !Q1b.L5 if (print_errors==1){print, text="Errors for MQXFA.B1L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B1L5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B1L5, abs_or_rel, order); !Q3a.L5 if (print_errors==1){print, text="Errors for MQXFA.A3L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A3L5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A3L5, abs_or_rel, order); !Q3b.L5 if (print_errors==1){print, text="Errors for MQXFA.B3L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B3L5.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B3L5, abs_or_rel, order); !Q1a.R1 if (print_errors==1){print, text="Errors for MQXFA.A1R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A1R1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A1R1, abs_or_rel, order); !Q1b.R1 if (print_errors==1){print, text="Errors for MQXFA.B1R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B1R1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B1R1); !Q3a.R1 if (print_errors==1){print, text="Errors for MQXFA.A3R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A3R1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A3R1, abs_or_rel, order); !Q3b.R1 if (print_errors==1){print, text="Errors for MQXFA.B3R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B3R1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B3R1, abs_or_rel, order); !Q1a.L1 if (print_errors==1){print, text="Errors for MQXFA.A1L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A1L1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A1L1, abs_or_rel, order); !Q1b.L1 if (print_errors==1){print, text="Errors for MQXFA.B1L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B1L1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B1L1, abs_or_rel, order); !Q3a.L1 if (print_errors==1){print, text="Errors for MQXFA.A3L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.A3L1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad_inv(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.A3L1, abs_or_rel, order); !Q3b.L1 if (print_errors==1){print, text="Errors for MQXFA.B3L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFA\.B3L1.*[0-9]$"; -exec new_magnetindividual(MQXFA,iap);exec errorgenerate_quad(MQXFA); +exec Efcomp_Random_Multi(MQXFA, MQXFA.B3L1, abs_or_rel, order); + +return; diff --git a/HL-LHC/Efcomp_MQXFB.madx b/HL-LHC/Efcomp_MQXFB.madx index 06f1fa9..d000585 100644 --- a/HL-LHC/Efcomp_MQXFB.madx +++ b/HL-LHC/Efcomp_MQXFB.madx @@ -6,45 +6,51 @@ ! Update new names and lead end on the cryostat convention IP =Q1a||Q1b= =Q2a||Q2b= =Q3a||Q3b= ! F.F. Van der Veken Aug 2019 ! Update Q2 has opposite connection (due to MCBXF): IP (=Q1a Q1b=) (=MCBXFBa Q2a=) (=Q2b MCBXFBb=) (=Q3a Q3b=) +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded -exec new_magnetfamily(MQXFB); iap=0; +exec new_magnetfamily(MQXFB); + +abs_or_rel:=0; order:=1; !Q2a.R5 if (print_errors==1){print, text="Errors for MQXFB.A2R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.A2R5.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad_inv(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.A2R5, abs_or_rel, order); !Q2b.R5 if (print_errors==1){print, text="Errors for MQXFB.B2R5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.B2R5.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.B2R5, abs_or_rel, order); !Q2a.L5 if (print_errors==1){print, text="Errors for MQXFB.A2L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.A2L5.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.A2L5, abs_or_rel, order); !Q2b.L5 if (print_errors==1){print, text="Errors for MQXFB.B2L5.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.B2L5.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad_inv(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.B2L5, abs_or_rel, order); !Q2a.R1 if (print_errors==1){print, text="Errors for MQXFB.A2R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.A2R1.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad_inv(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.A2R1, abs_or_rel, order); !Q2b.R1 if (print_errors==1){print, text="Errors for MQXFB.B2R1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.B2R1.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.B2R1, abs_or_rel, order); !Q2a.L1 if (print_errors==1){print, text="Errors for MQXFB.A2L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.A2L1.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.A2L1, abs_or_rel, order); !Q2b.L1 if (print_errors==1){print, text="Errors for MQXFB.B2L1.*";}; select,flag=error,clear;select,flag=error,pattern="^MQXFB\.B2L1.*[0-9]$"; -exec new_magnetindividual(MQXFB,iap);exec errorgenerate_quad_inv(MQXFB); +exec Efcomp_Random_Multi(MQXFB, MQXFB.B2L1, abs_or_rel, order); + +return; diff --git a/HL-LHC/Efcomp_MQXFends.madx b/HL-LHC/Efcomp_MQXFends.madx index d26ee3d..426e326 100644 --- a/HL-LHC/Efcomp_MQXFends.madx +++ b/HL-LHC/Efcomp_MQXFends.madx @@ -1,27 +1,35 @@ ! F.F. Van der Veken Aug 2019 ! Update Q2 has opposite connection (due to MCBXF): IP (=Q1a Q1b=) (=MCBXFBa Q2a=) (=Q2b MCBXFBb=) (=Q3a Q3b=) +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded -generate_fringe(eee,ttt,llrr,ks,kref,isinv):macro={ - klref=kref*l.ttt*ks; - exec,new_magnetfamily(ttt); - exec,new_magnetindividual(ttt,iap); - select,flag=error,clear;select,flag=error,pattern="^eee..llrr$"; - if (print_errors==1){ - print, text="Errors for fringe llrr of eee.*"; - value,klref,Rr_ttt,l.ttt; - }; - exec,errorgenerate_abs(ttt,isinv,1,klref); +generate_fringe(slot,ttt,llrr,ks,kref,isinv):macro={ + inout := table(HLLHCROTATIONS, slot, inout); // 0: single bore 1: outer 2: inner + + klref=kref*l.ttt*ks; + exec,new_magnetfamily(ttt); + exec,new_magnetindividual(ttt,inout); + select,flag=error,clear;select,flag=error,pattern="^slot..llrr$"; + if (print_errors==1){ + print, text="Errors for fringe llrr of slot.*"; + value,klref,Rr_ttt,l.ttt; + }; + exec,errorgenerate_abs(ttt,isinv,1,klref); }; -generate_fringe_lr(eee,ttt,ks,kref,isinv):macro={ - if(isinv==0){ - exec,generate_fringe(eee,tttcs,FL,ks,kref,isinv); - exec,generate_fringe(eee,tttnc,FR,ks,kref,isinv); - }; - if(isinv==1){ - exec,generate_fringe(eee,tttnc,FL,ks,kref,isinv); - exec,generate_fringe(eee,tttcs,FR,ks,kref,isinv); - }; +generate_fringe_lr(slot,ttt,ks,kref):macro={ + yrotangle := table(HLLHCROTATIONS, slot, yrota); // rotation around vertical axis + ! srotangle := table(HLLHCROTATIONS, slot, srota); // rotation around beam axis + if (yrotangle == 180) {yrotangle = 1;}; + + if(yrotangle==0){ + exec,generate_fringe(slot,tttcs,FL,ks,kref,yrotangle); + exec,generate_fringe(slot,tttnc,FR,ks,kref,yrotangle); + }; + if(yrotangle==1){ + exec,generate_fringe(slot,tttnc,FL,ks,kref,yrotangle); + exec,generate_fringe(slot,tttcs,FR,ks,kref,yrotangle); + }; }; @@ -30,30 +38,32 @@ generate_fringe_lr(eee,ttt,ks,kref,isinv):macro={ !assumes: ! e.g. b8_MQXFnc_inj, b8_MQXFcs_inj ! e.g. l.MQXFnc, l.MQXFcs, Rr_MQXFcs, Rr_MQXFnc -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.A1R1,MQXF,ks,kqx1.r1,isinv); -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.B1R1,MQXF,ks,kqx1.r1,isinv); -isinv=1;ks=-1;exec,generate_fringe_lr(MQXFB.A2R1,MQXF,ks,kqx2a.r1,isinv); -isinv=0;ks=-1;exec,generate_fringe_lr(MQXFB.B2R1,MQXF,ks,kqx2b.r1,isinv); -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.A3R1,MQXF,ks,kqx3.r1,isinv); -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.B3R1,MQXF,ks,kqx3.r1,isinv); - -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.A1R5,MQXF,ks,kqx1.r5,isinv); -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.B1R5,MQXF,ks,kqx1.r5,isinv); -isinv=1;ks=-1;exec,generate_fringe_lr(MQXFB.A2R5,MQXF,ks,kqx2a.r5,isinv); -isinv=0;ks=-1;exec,generate_fringe_lr(MQXFB.B2R5,MQXF,ks,kqx2b.r5,isinv); -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.A3R5,MQXF,ks,kqx3.r5,isinv); -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.B3R5,MQXF,ks,kqx3.r5,isinv); - -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.A1L1,MQXF,ks,kqx1.l1,isinv); -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.B1L1,MQXF,ks,kqx1.l1,isinv); -isinv=0;ks=-1;exec,generate_fringe_lr(MQXFB.A2L1,MQXF,ks,kqx2a.l1,isinv); -isinv=1;ks=-1;exec,generate_fringe_lr(MQXFB.B2L1,MQXF,ks,kqx2b.l1,isinv); -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.A3L1,MQXF,ks,kqx3.l1,isinv); -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.B3L1,MQXF,ks,kqx3.l1,isinv); - -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.A1L5,MQXF,ks,kqx1.l5,isinv); -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.B1L5,MQXF,ks,kqx1.l5,isinv); -isinv=0;ks=-1;exec,generate_fringe_lr(MQXFB.A2L5,MQXF,ks,kqx2a.l5,isinv); -isinv=1;ks=-1;exec,generate_fringe_lr(MQXFB.B2L5,MQXF,ks,kqx2b.l5,isinv); -isinv=1;ks= 1;exec,generate_fringe_lr(MQXFA.A3L5,MQXF,ks,kqx3.l5,isinv); -isinv=0;ks= 1;exec,generate_fringe_lr(MQXFA.B3L5,MQXF,ks,kqx3.l5,isinv); +ks= 1;exec,generate_fringe_lr(MQXFA.A1R1,MQXF,ks,kqx1.r1); +ks= 1;exec,generate_fringe_lr(MQXFA.B1R1,MQXF,ks,kqx1.r1); +ks=-1;exec,generate_fringe_lr(MQXFB.A2R1,MQXF,ks,kqx2a.r1); +ks=-1;exec,generate_fringe_lr(MQXFB.B2R1,MQXF,ks,kqx2b.r1); +ks= 1;exec,generate_fringe_lr(MQXFA.A3R1,MQXF,ks,kqx3.r1); +ks= 1;exec,generate_fringe_lr(MQXFA.B3R1,MQXF,ks,kqx3.r1); + +ks= 1;exec,generate_fringe_lr(MQXFA.A1R5,MQXF,ks,kqx1.r5); +ks= 1;exec,generate_fringe_lr(MQXFA.B1R5,MQXF,ks,kqx1.r5); +ks=-1;exec,generate_fringe_lr(MQXFB.A2R5,MQXF,ks,kqx2a.r5); +ks=-1;exec,generate_fringe_lr(MQXFB.B2R5,MQXF,ks,kqx2b.r5); +ks= 1;exec,generate_fringe_lr(MQXFA.A3R5,MQXF,ks,kqx3.r5); +ks= 1;exec,generate_fringe_lr(MQXFA.B3R5,MQXF,ks,kqx3.r5); + +ks= 1;exec,generate_fringe_lr(MQXFA.A1L1,MQXF,ks,kqx1.l1); +ks= 1;exec,generate_fringe_lr(MQXFA.B1L1,MQXF,ks,kqx1.l1); +ks=-1;exec,generate_fringe_lr(MQXFB.A2L1,MQXF,ks,kqx2a.l1); +ks=-1;exec,generate_fringe_lr(MQXFB.B2L1,MQXF,ks,kqx2b.l1); +ks= 1;exec,generate_fringe_lr(MQXFA.A3L1,MQXF,ks,kqx3.l1); +ks= 1;exec,generate_fringe_lr(MQXFA.B3L1,MQXF,ks,kqx3.l1); + +ks= 1;exec,generate_fringe_lr(MQXFA.A1L5,MQXF,ks,kqx1.l5); +ks= 1;exec,generate_fringe_lr(MQXFA.B1L5,MQXF,ks,kqx1.l5); +ks=-1;exec,generate_fringe_lr(MQXFB.A2L5,MQXF,ks,kqx2a.l5); +ks=-1;exec,generate_fringe_lr(MQXFB.B2L5,MQXF,ks,kqx2b.l5); +ks= 1;exec,generate_fringe_lr(MQXFA.A3L5,MQXF,ks,kqx3.l5); +ks= 1;exec,generate_fringe_lr(MQXFA.B3L5,MQXF,ks,kqx3.l5); + +return; diff --git a/HL-LHC/Efcomp_NLC.madx b/HL-LHC/Efcomp_NLC.madx index a760dbe..a60b93a 100644 --- a/HL-LHC/Efcomp_NLC.madx +++ b/HL-LHC/Efcomp_NLC.madx @@ -3,9 +3,11 @@ ! Connections do not matter, as only random errors are assigned ! Choose for the right side of IP: IP (.. CP=) => all inverted ! Hence for the left side of IP: none inverted +! T. Pugnat Sep 2022 +! Change routine such that orientation is given by tables instead of hardcoded + -iap=0; ! single-bore magnets ! ----------------------------------------------------------------------- ! *********************** A2 CORRECTOR ************************ @@ -13,12 +15,12 @@ iap=0; ! single-bore magnets exec new_magnetfamily(MQSXF); ! systematic error klRef_L=l.MQSXF; klRef_MQSXF_abs = Kmax_MQSXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=1; -inv_MQSXF=0; if (print_errors==1){print, text="Errors for MQSXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KQSX3.L1==0.){ + if (KQSX3.L1==0.){ sign_MQSXF.3L1 = 1; } else { sign_MQSXF.3L1 = KQSX3.L1 / ABS(KQSX3.L1); @@ -30,13 +32,12 @@ if (NLC_errors_Kref_max==1){ klRef_MQSXF = KQSX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MQSXF\.3L1\.\.r$"; -exec new_magnetindividual(MQSXF,iap);exec errorgenerate_abs(MQSXF, inv_MQSXF, 1, klRef_MQSXF); +exec Efcomp_Random_Multi(MQSXF, MQSXF.3L1, abs_or_rel, order); -inv_MQSXF=1; if (print_errors==1){print, text="Errors for MQSXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KQSX3.R1==0.){ + if (KQSX3.R1==0.){ sign_MQSXF.3R1 = 1; } else { sign_MQSXF.3R1 = KQSX3.R1 / ABS(KQSX3.R1); @@ -48,13 +49,12 @@ if (NLC_errors_Kref_max==1){ klRef_MQSXF = KQSX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MQSXF\.3R1\.\.r$"; -exec new_magnetindividual(MQSXF,iap);exec errorgenerate_abs(MQSXF, inv_MQSXF, 1, klRef_MQSXF); +exec Efcomp_Random_Multi(MQSXF, MQSXF.3R1, abs_or_rel, order); -inv_MQSXF=0; if (print_errors==1){print, text="Errors for MQSXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KQSX3.L5==0.){ + if (KQSX3.L5==0.){ sign_MQSXF.3L5 = 1; } else { sign_MQSXF.3L5 = KQSX3.L5 / ABS(KQSX3.L5); @@ -66,13 +66,12 @@ if (NLC_errors_Kref_max==1){ klRef_MQSXF = KQSX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MQSXF\.3L5\.\.r$"; -exec new_magnetindividual(MQSXF,iap);exec errorgenerate_abs(MQSXF, inv_MQSXF, 1, klRef_MQSXF); +exec Efcomp_Random_Multi(MQSXF, MQSXF.3L5, abs_or_rel, order); -inv_MQSXF=1; if (print_errors==1){print, text="Errors for MQSXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KQSX3.R5==0.){ + if (KQSX3.R5==0.){ sign_MQSXF.3R5 = 1; } else { sign_MQSXF.3R5 = KQSX3.R5 / ABS(KQSX3.R5); @@ -84,7 +83,7 @@ if (NLC_errors_Kref_max==1){ klRef_MQSXF = KQSX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MQSXF\.3R5\.\.r$"; -exec new_magnetindividual(MQSXF,iap);exec errorgenerate_abs(MQSXF, inv_MQSXF, 1, klRef_MQSXF); +exec Efcomp_Random_Multi(MQSXF, MQSXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -93,12 +92,12 @@ exec new_magnetindividual(MQSXF,iap);exec errorgenerate_abs(MQSXF, inv_MQSXF, 1, exec new_magnetfamily(MCSXF); ! systematic error klRef_L=l.MCSXF; klRef_MCSXF_abs = Kmax_MCSXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=2; -inv_MCSXF=0; if (print_errors==1){print, text="Errors for MCSXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSX3.L1==0.){ + if (KCSX3.L1==0.){ sign_MCSXF.3L1 = 1; } else { sign_MCSXF.3L1 = KCSX3.L1 / ABS(KCSX3.L1); @@ -110,13 +109,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCSXF = KCSX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSXF\.3L1\.\.r$"; -exec new_magnetindividual(MCSXF,iap);exec errorgenerate_abs(MCSXF, inv_MCSXF, 2, klRef_MCSXF); +exec Efcomp_Random_Multi(MCSXF, MCSXF.3L1, abs_or_rel, order); -inv_MCSXF=1; if (print_errors==1){print, text="Errors for MCSXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSX3.R1==0.){ + if (KCSX3.R1==0.){ sign_MCSXF.3R1 = 1; } else { sign_MCSXF.3R1 = KCSX3.R1 / ABS(KCSX3.R1); @@ -128,13 +126,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCSXF = KCSX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSXF\.3R1\.\.r$"; -exec new_magnetindividual(MCSXF,iap);exec errorgenerate_abs(MCSXF, inv_MCSXF, 2, klRef_MCSXF); +exec Efcomp_Random_Multi(MCSXF, MCSXF.3R1, abs_or_rel, order); -inv_MCSXF=0; if (print_errors==1){print, text="Errors for MCSXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSX3.L5==0.){ + if (KCSX3.L5==0.){ sign_MCSXF.3L5 = 1; } else { sign_MCSXF.3L5 = KCSX3.L5 / ABS(KCSX3.L5); @@ -146,13 +143,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCSXF = KCSX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSXF\.3L5\.\.r$"; -exec new_magnetindividual(MCSXF,iap);exec errorgenerate_abs(MCSXF, inv_MCSXF, 2, klRef_MCSXF); +exec Efcomp_Random_Multi(MCSXF, MCSXF.3L5, abs_or_rel, order); -inv_MCSXF=1; if (print_errors==1){print, text="Errors for MCSXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSX3.R5==0.){ + if (KCSX3.R5==0.){ sign_MCSXF.3R5 = 1; } else { sign_MCSXF.3R5 = KCSX3.R5 / ABS(KCSX3.R5); @@ -164,7 +160,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCSXF = KCSX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSXF\.3R5\.\.r$"; -exec new_magnetindividual(MCSXF,iap);exec errorgenerate_abs(MCSXF, inv_MCSXF, 2, klRef_MCSXF); +exec Efcomp_Random_Multi(MCSXF, MCSXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -173,12 +169,12 @@ exec new_magnetindividual(MCSXF,iap);exec errorgenerate_abs(MCSXF, inv_MCSXF, 2, exec new_magnetfamily(MCSSXF); ! systematic error klRef_L=l.MCSSXF*bv_aux; ! Main field gets a sign flip in case of Beam 4 klRef_MCSSXF_abs = Kmax_MCSSXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=2; -inv_MCSSXF=0; if (print_errors==1){print, text="Errors for MCSSXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSSX3.L1==0.){ + if (KCSSX3.L1==0.){ sign_MCSSXF.3L1 = 1; } else { sign_MCSSXF.3L1 = KCSSX3.L1 / ABS(KCSSX3.L1); @@ -190,13 +186,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCSSXF = KCSSX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSSXF\.3L1\.\.r$"; -exec new_magnetindividual(MCSSXF,iap);exec errorgenerate_abs(MCSSXF, inv_MCSSXF, 2, klRef_MCSSXF); +exec Efcomp_Random_Multi(MCSSXF, MCSSXF.3L1, abs_or_rel, order); -inv_MCSSXF=1; if (print_errors==1){print, text="Errors for MCSSXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSSX3.R1==0.){ + if (KCSSX3.R1==0.){ sign_MCSSXF.3R1 = 1; } else { sign_MCSSXF.3R1 = KCSSX3.R1 / ABS(KCSSX3.R1); @@ -208,13 +203,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCSSXF = KCSSX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSSXF\.3R1\.\.r$"; -exec new_magnetindividual(MCSSXF,iap);exec errorgenerate_abs(MCSSXF, inv_MCSSXF, 2, klRef_MCSSXF); +exec Efcomp_Random_Multi(MCSSXF, MCSSXF.3R1, abs_or_rel, order); -inv_MCSSXF=0; if (print_errors==1){print, text="Errors for MCSSXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSSX3.L5==0.){ + if (KCSSX3.L5==0.){ sign_MCSSXF.3L5 = 1; } else { sign_MCSSXF.3L5 = KCSSX3.L5 / ABS(KCSSX3.L5); @@ -226,13 +220,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCSSXF = KCSSX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSSXF\.3L5\.\.r$"; -exec new_magnetindividual(MCSSXF,iap);exec errorgenerate_abs(MCSSXF, inv_MCSSXF, 2, klRef_MCSSXF); +exec Efcomp_Random_Multi(MCSSXF, MCSSXF.3L5, abs_or_rel, order); -inv_MCSSXF=1; if (print_errors==1){print, text="Errors for MCSSXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCSSX3.R5==0.){ + if (KCSSX3.R5==0.){ sign_MCSSXF.3R5 = 1; } else { sign_MCSSXF.3R5 = KCSSX3.R5 / ABS(KCSSX3.R5); @@ -244,7 +237,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCSSXF = KCSSX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCSSXF\.3R5\.\.r$"; -exec new_magnetindividual(MCSSXF,iap);exec errorgenerate_abs(MCSSXF, inv_MCSSXF, 2, klRef_MCSSXF); +exec Efcomp_Random_Multi(MCSSXF, MCSSXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -253,12 +246,12 @@ exec new_magnetindividual(MCSSXF,iap);exec errorgenerate_abs(MCSSXF, inv_MCSSXF, exec new_magnetfamily(MCOXF); ! systematic error klRef_L=l.MCOXF*bv_aux; ! Main field gets a sign flip in case of Beam 4 klRef_MCOXF_abs = Kmax_MCOXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=3; -inv_MCOXF=0; if (print_errors==1){print, text="Errors for MCOXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOX3.L1==0.){ + if (KCOX3.L1==0.){ sign_MCOXF.3L1 = 1; } else { sign_MCOXF.3L1 = KCOX3.L1 / ABS(KCOX3.L1); @@ -270,13 +263,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCOXF = KCOX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOXF\.3L1\.\.r$"; -exec new_magnetindividual(MCOXF,iap);exec errorgenerate_abs(MCOXF, inv_MCOXF, 3, klRef_MCOXF); +exec Efcomp_Random_Multi(MCOXF, MCOXF.3L1, abs_or_rel, order); -inv_MCOXF=1; if (print_errors==1){print, text="Errors for MCOXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOX3.R1==0.){ + if (KCOX3.R1==0.){ sign_MCOXF.3R1 = 1; } else { sign_MCOXF.3R1 = KCOX3.R1 / ABS(KCOX3.R1); @@ -288,13 +280,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCOXF = KCOX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOXF\.3R1\.\.r$"; -exec new_magnetindividual(MCOXF,iap);exec errorgenerate_abs(MCOXF, inv_MCOXF, 3, klRef_MCOXF); +exec Efcomp_Random_Multi(MCOXF, MCOXF.3R1, abs_or_rel, order); -inv_MCOXF=0; if (print_errors==1){print, text="Errors for MCOXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOX3.L5==0.){ + if (KCOX3.L5==0.){ sign_MCOXF.3L5 = 1; } else { sign_MCOXF.3L5 = KCOX3.L5 / ABS(KCOX3.L5); @@ -306,13 +297,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCOXF = KCOX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOXF\.3L5\.\.r$"; -exec new_magnetindividual(MCOXF,iap);exec errorgenerate_abs(MCOXF, inv_MCOXF, 3, klRef_MCOXF); +exec Efcomp_Random_Multi(MCOXF, MCOXF.3L5, abs_or_rel, order); -inv_MCOXF=1; if (print_errors==1){print, text="Errors for MCOXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOX3.R5==0.){ + if (KCOX3.R5==0.){ sign_MCOXF.3R5 = 1; } else { sign_MCOXF.3R5 = KCOX3.R5 / ABS(KCOX3.R5); @@ -324,7 +314,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCOXF = KCOX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOXF\.3R5\.\.r$"; -exec new_magnetindividual(MCOXF,iap);exec errorgenerate_abs(MCOXF, inv_MCOXF, 3, klRef_MCOXF); +exec Efcomp_Random_Multi(MCOXF, MCOXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -333,12 +323,12 @@ exec new_magnetindividual(MCOXF,iap);exec errorgenerate_abs(MCOXF, inv_MCOXF, 3, exec new_magnetfamily(MCOSXF); ! systematic error klRef_L=l.MCOSXF; klRef_MCOSXF_abs = Kmax_MCOSXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=3; -inv_MCOSXF=0; if (print_errors==1){print, text="Errors for MCOSXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOSX3.L1==0.){ + if (KCOSX3.L1==0.){ sign_MCOSXF.3L1 = 1; } else { sign_MCOSXF.3L1 = KCOSX3.L1 / ABS(KCOSX3.L1); @@ -350,13 +340,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCOSXF = KCOSX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOSXF\.3L1\.\.r$"; -exec new_magnetindividual(MCOSXF,iap);exec errorgenerate_abs(MCOSXF, inv_MCOSXF, 3, klRef_MCOSXF); +exec Efcomp_Random_Multi(MCOSXF, MCOSXF.3L1, abs_or_rel, order); -inv_MCOSXF=1; if (print_errors==1){print, text="Errors for MCOSXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOSX3.R1==0.){ + if (KCOSX3.R1==0.){ sign_MCOSXF.3R1 = 1; } else { sign_MCOSXF.3R1 = KCOSX3.R1 / ABS(KCOSX3.R1); @@ -368,13 +357,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCOSXF = KCOSX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOSXF\.3R1\.\.r$"; -exec new_magnetindividual(MCOSXF,iap);exec errorgenerate_abs(MCOSXF, inv_MCOSXF, 3, klRef_MCOSXF); +exec Efcomp_Random_Multi(MCOSXF, MCOSXF.3R1, abs_or_rel, order); -inv_MCOSXF=0; if (print_errors==1){print, text="Errors for MCOSXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOSX3.L5==0.){ + if (KCOSX3.L5==0.){ sign_MCOSXF.3L5 = 1; } else { sign_MCOSXF.3L5 = KCOSX3.L5 / ABS(KCOSX3.L5); @@ -386,13 +374,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCOSXF = KCOSX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOSXF\.3L5\.\.r$"; -exec new_magnetindividual(MCOSXF,iap);exec errorgenerate_abs(MCOSXF, inv_MCOSXF, 3, klRef_MCOSXF); +exec Efcomp_Random_Multi(MCOSXF, MCOSXF.3L5, abs_or_rel, order); -inv_MCOSXF=1; if (print_errors==1){print, text="Errors for MCOSXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCOSX3.R5==0.){ + if (KCOSX3.R5==0.){ sign_MCOSXF.3R5 = 1; } else { sign_MCOSXF.3R5 = KCOSX3.R5 / ABS(KCOSX3.R5); @@ -404,7 +391,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCOSXF = KCOSX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCOSXF\.3R5\.\.r$"; -exec new_magnetindividual(MCOSXF,iap);exec errorgenerate_abs(MCOSXF, inv_MCOSXF, 3, klRef_MCOSXF); +exec Efcomp_Random_Multi(MCOSXF, MCOSXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -413,12 +400,12 @@ exec new_magnetindividual(MCOSXF,iap);exec errorgenerate_abs(MCOSXF, inv_MCOSXF, exec new_magnetfamily(MCDXF); ! systematic error klRef_L=l.MCDXF; klRef_MCDXF_abs = Kmax_MCDXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=4; -inv_MCDXF=0; if (print_errors==1){print, text="Errors for MCDXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDX3.L1==0.){ + if (KCDX3.L1==0.){ sign_MCDXF.3L1 = 1; } else { sign_MCDXF.3L1 = KCDX3.L1 / ABS(KCDX3.L1); @@ -430,13 +417,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCDXF = KCDX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDXF\.3L1\.\.r$"; -exec new_magnetindividual(MCDXF,iap);exec errorgenerate_abs(MCDXF, inv_MCDXF, 4, klRef_MCDXF); +exec Efcomp_Random_Multi(MCDXF, MCDXF.3L1, abs_or_rel, order); -inv_MCDXF=1; if (print_errors==1){print, text="Errors for MCDXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDX3.R1==0.){ + if (KCDX3.R1==0.){ sign_MCDXF.3R1 = 1; } else { sign_MCDXF.3R1 = KCDX3.R1 / ABS(KCDX3.R1); @@ -448,13 +434,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCDXF = KCDX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDXF\.3R1\.\.r$"; -exec new_magnetindividual(MCDXF,iap);exec errorgenerate_abs(MCDXF, inv_MCDXF, 4, klRef_MCDXF); +exec Efcomp_Random_Multi(MCDXF, MCDXF.3R1, abs_or_rel, order); -inv_MCDXF=0; if (print_errors==1){print, text="Errors for MCDXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDX3.L5==0.){ + if (KCDX3.L5==0.){ sign_MCDXF.3L5 = 1; } else { sign_MCDXF.3L5 = KCDX3.L5 / ABS(KCDX3.L5); @@ -466,13 +451,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCDXF = KCDX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDXF\.3L5\.\.r$"; -exec new_magnetindividual(MCDXF,iap);exec errorgenerate_abs(MCDXF, inv_MCDXF, 4, klRef_MCDXF); +exec Efcomp_Random_Multi(MCDXF, MCDXF.3L5, abs_or_rel, order); -inv_MCDXF=1; if (print_errors==1){print, text="Errors for MCDXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDX3.R5==0.){ + if (KCDX3.R5==0.){ sign_MCDXF.3R5 = 1; } else { sign_MCDXF.3R5 = KCDX3.R5 / ABS(KCDX3.R5); @@ -484,7 +468,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCDXF = KCDX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDXF\.3R5\.\.r$"; -exec new_magnetindividual(MCDXF,iap);exec errorgenerate_abs(MCDXF, inv_MCDXF, 4, klRef_MCDXF); +exec Efcomp_Random_Multi(MCDXF, MCDXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -493,12 +477,12 @@ exec new_magnetindividual(MCDXF,iap);exec errorgenerate_abs(MCDXF, inv_MCDXF, 4, exec new_magnetfamily(MCDSXF); ! systematic error klRef_L=l.MCDSXF*bv_aux; ! Main field gets a sign flip in case of Beam 4 klRef_MCDSXF_abs = Kmax_MCDSXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=4; -inv_MCDSXF=0; if (print_errors==1){print, text="Errors for MCDSXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDSX3.L1==0.){ + if (KCDSX3.L1==0.){ sign_MCDSXF.3L1 = 1; } else { sign_MCDSXF.3L1 = KCDSX3.L1 / ABS(KCDSX3.L1); @@ -510,13 +494,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCDSXF = KCDSX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDSXF\.3L1\.\.r$"; -exec new_magnetindividual(MCDSXF,iap);exec errorgenerate_abs(MCDSXF, inv_MCDSXF, 4, klRef_MCDSXF); +exec Efcomp_Random_Multi(MCDSXF, MCDSXF.3L1, abs_or_rel, order); -inv_MCDSXF=1; if (print_errors==1){print, text="Errors for MCDSXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDSX3.R1==0.){ + if (KCDSX3.R1==0.){ sign_MCDSXF.3R1 = 1; } else { sign_MCDSXF.3R1 = KCDSX3.R1 / ABS(KCDSX3.R1); @@ -528,14 +511,13 @@ if (NLC_errors_Kref_max==1){ klRef_MCDSXF = KCDSX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDSXF\.3R1\.\.r$"; -exec new_magnetindividual(MCDSXF,iap);exec errorgenerate_abs(MCDSXF, inv_MCDSXF, 4, klRef_MCDSXF); +exec Efcomp_Random_Multi(MCDSXF, MCDSXF.3R1, abs_or_rel, order); -inv_MCDSXF=0; if (print_errors==1){print, text="Errors for MCDSXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDSX3.L5==0.){ - sign_MCDSXF.3L5 = 1; + if (KCDSX3.L5==0.){ + sign_MCDSXF.3L5 = 1; } else { sign_MCDSXF.3L5 = KCDSX3.L5 / ABS(KCDSX3.L5); }; @@ -546,13 +528,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCDSXF = KCDSX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDSXF\.3L5\.\.r$"; -exec new_magnetindividual(MCDSXF,iap);exec errorgenerate_abs(MCDSXF, inv_MCDSXF, 4, klRef_MCDSXF); +exec Efcomp_Random_Multi(MCDSXF, MCDSXF.3L5, abs_or_rel, order); -inv_MCDSXF=1; if (print_errors==1){print, text="Errors for MCDSXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCDSX3.R5==0.){ + if (KCDSX3.R5==0.){ sign_MCDSXF.3R5 = 1; } else { sign_MCDSXF.3R5 = KCDSX3.R5 / ABS(KCDSX3.R5); @@ -564,7 +545,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCDSXF = KCDSX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCDSXF\.3R5\.\.r$"; -exec new_magnetindividual(MCDSXF,iap);exec errorgenerate_abs(MCDSXF, inv_MCDSXF, 4, klRef_MCDSXF); +exec Efcomp_Random_Multi(MCDSXF, MCDSXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -573,12 +554,12 @@ exec new_magnetindividual(MCDSXF,iap);exec errorgenerate_abs(MCDSXF, inv_MCDSXF, exec new_magnetfamily(MCTXF); ! systematic error klRef_L=l.MCTXF*bv_aux; ! Main field gets a sign flip in case of Beam 4 klRef_MCTXF_abs = Kmax_MCTXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=5; -inv_MCTXF=0; if (print_errors==1){print, text="Errors for MCTXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTX3.L1==0.){ + if (KCTX3.L1==0.){ sign_MCTXF.3L1 = 1; } else { sign_MCTXF.3L1 = KCTX3.L1 / ABS(KCTX3.L1); @@ -590,13 +571,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCTXF = KCTX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTXF\.3L1\.\.r$"; -exec new_magnetindividual(MCTXF,iap);exec errorgenerate_abs(MCTXF, inv_MCTXF, 5, klRef_MCTXF); +exec Efcomp_Random_Multi(MCTXF, MCTXF.3L1, abs_or_rel, order); -inv_MCTXF=1; if (print_errors==1){print, text="Errors for MCTXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTX3.R1==0.){ + if (KCTX3.R1==0.){ sign_MCTXF.3R1 = 1; } else { sign_MCTXF.3R1 = KCTX3.R1 / ABS(KCTX3.R1); @@ -608,13 +588,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCTXF = KCTX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTXF\.3R1\.\.r$"; -exec new_magnetindividual(MCTXF,iap);exec errorgenerate_abs(MCTXF, inv_MCTXF, 5, klRef_MCTXF); +exec Efcomp_Random_Multi(MCTXF, MCTXF.3R1, abs_or_rel, order); -inv_MCTXF=0; if (print_errors==1){print, text="Errors for MCTXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTX3.L5==0.){ + if (KCTX3.L5==0.){ sign_MCTXF.3L5 = 1; } else { sign_MCTXF.3L5 = KCTX3.L5 / ABS(KCTX3.L5); @@ -626,13 +605,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCTXF = KCTX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTXF\.3L5\.\.r$"; -exec new_magnetindividual(MCTXF,iap);exec errorgenerate_abs(MCTXF, inv_MCTXF, 5, klRef_MCTXF); +exec Efcomp_Random_Multi(MCTXF, MCTXF.3L5, abs_or_rel, order); -inv_MCTXF=1; if (print_errors==1){print, text="Errors for MCTXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTX3.R5==0.){ + if (KCTX3.R5==0.){ sign_MCTXF.3R5 = 1; } else { sign_MCTXF.3R5 = KCTX3.R5 / ABS(KCTX3.R5); @@ -644,7 +622,7 @@ if (NLC_errors_Kref_max==1){ klRef_MCTXF = KCTX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTXF\.3R5\.\.r$"; -exec new_magnetindividual(MCTXF,iap);exec errorgenerate_abs(MCTXF, inv_MCTXF, 5, klRef_MCTXF); +exec Efcomp_Random_Multi(MCTXF, MCTXF.3R5, abs_or_rel, order); ! ----------------------------------------------------------------------- @@ -653,12 +631,13 @@ exec new_magnetindividual(MCTXF,iap);exec errorgenerate_abs(MCTXF, inv_MCTXF, 5, exec new_magnetfamily(MCTSXF); ! systematic error klRef_L=l.MCTSXF; klRef_MCTSXF_abs = Kmax_MCTSXF*CLIGHT/(1E9*NRJ); +abs_or_rel:=1; order:=5; + -inv_MCTSXF=0; if (print_errors==1){print, text="Errors for MCTSXF.3L1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTSX3.L1==0.){ + if (KCTSX3.L1==0.){ sign_MCTSXF.3L1 = 1; } else { sign_MCTSXF.3L1 = KCTSX3.L1 / ABS(KCTSX3.L1); @@ -670,13 +649,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCTSXF = KCTSX3.L1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTSXF\.3L1\.\.r$"; -exec new_magnetindividual(MCTSXF,iap);exec errorgenerate_abs(MCTSXF, inv_MCTSXF, 5, klRef_MCTSXF); +exec Efcomp_Random_Multi(MCTSXF, MCTSXF.3L1, abs_or_rel, order); -inv_MCTSXF=1; if (print_errors==1){print, text="Errors for MCTSXF.3R1";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTSX3.R1==0.){ + if (KCTSX3.R1==0.){ sign_MCTSXF.3R1 = 1; } else { sign_MCTSXF.3R1 = KCTSX3.R1 / ABS(KCTSX3.R1); @@ -688,13 +666,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCTSXF = KCTSX3.R1*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTSXF\.3R1\.\.r$"; -exec new_magnetindividual(MCTSXF,iap);exec errorgenerate_abs(MCTSXF, inv_MCTSXF, 5, klRef_MCTSXF); +exec Efcomp_Random_Multi(MCTSXF, MCTSXF.3R1, abs_or_rel, order); -inv_MCTSXF=0; if (print_errors==1){print, text="Errors for MCTSXF.3L5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTSX3.L5==0.){ + if (KCTSX3.L5==0.){ sign_MCTSXF.3L5 = 1; } else { sign_MCTSXF.3L5 = KCTSX3.L5 / ABS(KCTSX3.L5); @@ -706,13 +683,12 @@ if (NLC_errors_Kref_max==1){ klRef_MCTSXF = KCTSX3.L5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTSXF\.3L5\.\.r$"; -exec new_magnetindividual(MCTSXF,iap);exec errorgenerate_abs(MCTSXF, inv_MCTSXF, 5, klRef_MCTSXF); +exec Efcomp_Random_Multi(MCTSXF, MCTSXF.3L5, abs_or_rel, order); -inv_MCTSXF=1; if (print_errors==1){print, text="Errors for MCTSXF.3R5";}; if (NLC_errors_Kref_max==1){ if (NLC_errors_Kref_autosign==1){ - if (KCTSX3.R5==0.){ + if (KCTSX3.R5==0.){ sign_MCTSXF.3R5 = 1; } else { sign_MCTSXF.3R5 = KCTSX3.R5 / ABS(KCTSX3.R5); @@ -724,8 +700,6 @@ if (NLC_errors_Kref_max==1){ klRef_MCTSXF = KCTSX3.R5*klRef_L; }; select,flag=error,clear;select,flag=error,pattern="^MCTSXF\.3R5\.\.r$"; -exec new_magnetindividual(MCTSXF,iap);exec errorgenerate_abs(MCTSXF, inv_MCTSXF, 5, klRef_MCTSXF); - - +exec Efcomp_Random_Multi(MCTSXF, MCTSXF.3R5, abs_or_rel, order); return; diff --git a/HL-LHC/Layout_Rotations_HLLHCv1.4.tab b/HL-LHC/Layout_Rotations_HLLHCv1.4.tab new file mode 100644 index 0000000..9c1672f --- /dev/null +++ b/HL-LHC/Layout_Rotations_HLLHCv1.4.tab @@ -0,0 +1,121 @@ +@ NAME %07s "HLLHCROTATIONS" +@ TYPE %07s "HLLHCROTATIONS" +@ TITLE %11s "hllhc v1.4 magnet rotations" +@ ORIGIN %16s "T PUGNAT" +@ DATE %08s "26/09/22" +@ TIME %08s "11.33.00" +* NAME YROTA SROTA INOUT +$ %s %le %le %le +not_found -1 -1 -1 +MBXF.4L1 0 0 0 +MBXF.4R1 180 0 0 +MBXF.4L5 0 0 0 +MBXF.4R5 180 0 0 +MQXFA.B3L1 0 0 0 +MQXFA.A3L1 180 0 0 +MQXFA.B1L1 0 0 0 +MQXFA.A1L1 180 0 0 +MQXFA.A1R1 0 0 0 +MQXFA.B1R1 180 0 0 +MQXFA.A3R1 0 0 0 +MQXFA.B3R1 180 0 0 +MQXFA.B3L5 0 0 0 +MQXFA.A3L5 180 0 0 +MQXFA.B1L5 0 0 0 +MQXFA.A1L5 180 0 0 +MQXFA.A1R5 0 0 0 +MQXFA.B1R5 180 0 0 +MQXFA.A3R5 0 0 0 +MQXFA.B3R5 180 0 0 +MQXFB.B2L1 180 0 0 +MQXFB.A2L1 0 0 0 +MQXFB.A2R1 180 0 0 +MQXFB.B2R1 0 0 0 +MQXFB.B2L5 180 0 0 +MQXFB.A2L5 0 0 0 +MQXFB.A2R5 180 0 0 +MQXFB.B2R5 0 0 0 +MBRD.4L1.B1 180 0 1 +MBRD.4L1.B2 180 0 2 +MBRD.4R1.B1 0 0 1 +MBRD.4R1.B2 0 0 2 +MBRD.4L5.B1 180 0 1 +MBRD.4L5.B2 180 0 2 +MBRD.4R5.B1 0 0 1 +MBRD.4R5.B2 0 0 2 +MCBFXAH.3L1 180 0 0 +MCBFXAH.3R1 0 0 0 +MCBFXAH.3L5 180 0 0 +MCBFXAH.3R5 0 0 0 +MCBFXAV.3L1 180 0 0 +MCBFXAV.3R1 0 0 0 +MCBFXAV.3L5 180 0 0 +MCBFXAV.3R5 0 0 0 +MCBFXBH.a2L1 180 0 0 +MCBFXBH.a2R1 0 0 0 +MCBFXBH.a2L5 180 0 0 +MCBFXBH.a2R5 0 0 0 +MCBFXBH.b2L1 0 0 0 +MCBFXBH.b2R1 180 0 0 +MCBFXBH.b2L5 0 0 0 +MCBFXBH.b2R5 180 0 0 +MCBFXBV.a2L1 180 0 0 +MCBFXBV.a2R1 0 0 0 +MCBFXBV.a2L5 180 0 0 +MCBFXBV.a2R5 0 0 0 +MCBFXBV.b2L1 0 0 0 +MCBFXBV.b2R1 180 0 0 +MCBFXBV.b2L5 0 0 0 +MCBFXBV.b2R5 180 0 0 +MCBRDH.4L1.B1 0 0 2 +MCBRDH.4L1.B2 180 0 2 +MCBRDH.4R1.B1 0 0 1 +MCBRDH.4R1.B2 180 0 1 +MCBRDH.4L5.B1 0 0 2 +MCBRDH.4L5.B2 180 0 2 +MCBRDH.4R5.B1 0 0 1 +MCBRDH.4R5.B2 180 0 1 +MCBRDV.4L1.B1 180 0 1 +MCBRDV.4L1.B2 0 0 1 +MCBRDV.4R1.B1 180 0 2 +MCBRDV.4R1.B2 0 0 2 +MCBRDV.4L5.B1 180 0 1 +MCBRDV.4L5.B2 0 0 1 +MCBRDV.4R5.B1 180 0 2 +MCBRDV.4R5.B2 0 0 2 +MQSXF.3L1 0 0 0 +MQSXF.3R1 180 0 0 +MQSXF.3L5 0 0 0 +MQSXF.3R5 180 0 0 +MCSXF.3L1 0 0 0 +MCSXF.3R1 180 0 0 +MCSXF.3L5 0 0 0 +MCSXF.3R5 180 0 0 +MCSSXF.3L1 0 0 0 +MCSSXF.3R1 180 0 0 +MCSSXF.3L5 0 0 0 +MCSSXF.3R5 180 0 0 +MCOXF.3L1 0 0 0 +MCOXF.3R1 180 0 0 +MCOXF.3L5 0 0 0 +MCOXF.3R5 180 0 0 +MCOSXF.3L1 0 0 0 +MCOSXF.3R1 180 0 0 +MCOSXF.3L5 0 0 0 +MCOSXF.3R5 180 0 0 +MCDXF.3L1 0 0 0 +MCDXF.3R1 180 0 0 +MCDXF.3L5 0 0 0 +MCDXF.3R5 180 0 0 +MCDSXF.3L1 0 0 0 +MCDSXF.3R1 180 0 0 +MCDSXF.3L5 0 0 0 +MCDSXF.3R5 180 0 0 +MCTXF.3L1 0 0 0 +MCTXF.3R1 180 0 0 +MCTXF.3L5 0 0 0 +MCTXF.3R5 180 0 0 +MCTSXF.3L1 0 0 0 +MCTSXF.3R1 180 0 0 +MCTSXF.3L5 0 0 0 +MCTSXF.3R5 180 0 0 \ No newline at end of file diff --git a/HL-LHC/Layout_Rotations_HLLHCv1.5.tab b/HL-LHC/Layout_Rotations_HLLHCv1.5.tab new file mode 100644 index 0000000..edc11ca --- /dev/null +++ b/HL-LHC/Layout_Rotations_HLLHCv1.5.tab @@ -0,0 +1,121 @@ +@ NAME %07s "HLLHCROTATIONS" +@ TYPE %07s "HLLHCROTATIONS" +@ TITLE %11s "hllhc v1.5 magnet rotations" +@ ORIGIN %16s "T PUGNAT" +@ DATE %08s "26/09/22" +@ TIME %08s "11.33.00" +* NAME YROTA SROTA INOUT +$ %s %le %le %le +not_found -1 -1 -1 +MBXF.4L1 0 0 0 +MBXF.4R1 180 0 0 +MBXF.4L5 0 0 0 +MBXF.4R5 180 0 0 +MQXFA.B3L1 0 0 0 +MQXFA.A3L1 180 0 0 +MQXFA.B1L1 0 0 0 +MQXFA.A1L1 180 0 0 +MQXFA.A1R1 0 0 0 +MQXFA.B1R1 180 0 0 +MQXFA.A3R1 0 0 0 +MQXFA.B3R1 180 0 0 +MQXFA.B3L5 0 0 0 +MQXFA.A3L5 180 0 0 +MQXFA.B1L5 0 0 0 +MQXFA.A1L5 180 0 0 +MQXFA.A1R5 0 0 0 +MQXFA.B1R5 180 0 0 +MQXFA.A3R5 0 0 0 +MQXFA.B3R5 180 0 0 +MQXFB.B2L1 180 0 0 +MQXFB.A2L1 0 0 0 +MQXFB.A2R1 180 0 0 +MQXFB.B2R1 0 0 0 +MQXFB.B2L5 180 0 0 +MQXFB.A2L5 0 0 0 +MQXFB.A2R5 180 0 0 +MQXFB.B2R5 0 0 0 +MBRD.4L1.B1 180 0 1 +MBRD.4L1.B2 180 0 2 +MBRD.4R1.B1 0 0 1 +MBRD.4R1.B2 0 0 2 +MBRD.4L5.B1 180 0 1 +MBRD.4L5.B2 180 0 2 +MBRD.4R5.B1 0 0 1 +MBRD.4R5.B2 0 0 2 +MCBFXAH.3L1 180 0 0 +MCBFXAH.3R1 0 0 0 +MCBFXAH.3L5 180 0 0 +MCBFXAH.3R5 0 0 0 +MCBFXAV.3L1 180 0 0 +MCBFXAV.3R1 0 0 0 +MCBFXAV.3L5 180 0 0 +MCBFXAV.3R5 0 0 0 +MCBFXBH.a2L1 180 0 0 +MCBFXBH.a2R1 0 0 0 +MCBFXBH.a2L5 180 0 0 +MCBFXBH.a2R5 0 0 0 +MCBFXBH.b2L1 0 0 0 +MCBFXBH.b2R1 180 0 0 +MCBFXBH.b2L5 0 0 0 +MCBFXBH.b2R5 180 0 0 +MCBFXBV.a2L1 180 0 0 +MCBFXBV.a2R1 0 0 0 +MCBFXBV.a2L5 180 0 0 +MCBFXBV.a2R5 0 0 0 +MCBFXBV.b2L1 0 0 0 +MCBFXBV.b2R1 180 0 0 +MCBFXBV.b2L5 0 0 0 +MCBFXBV.b2R5 180 0 0 +MCBRDH.4L1.B1 0 0 2 +MCBRDH.4L1.B2 180 0 2 +MCBRDH.4R1.B1 180 0 2 +MCBRDH.4R1.B2 0 0 2 +MCBRDH.4L5.B1 0 0 2 +MCBRDH.4L5.B2 180 0 2 +MCBRDH.4R5.B1 180 0 2 +MCBRDH.4R5.B2 0 0 2 +MCBRDV.4L1.B1 180 0 1 +MCBRDV.4L1.B2 0 0 1 +MCBRDV.4R1.B1 0 0 1 +MCBRDV.4R1.B2 180 0 1 +MCBRDV.4L5.B1 180 0 1 +MCBRDV.4L5.B2 0 0 1 +MCBRDV.4R5.B1 0 0 1 +MCBRDV.4R5.B2 180 0 1 +MQSXF.3L1 0 0 0 +MQSXF.3R1 180 0 0 +MQSXF.3L5 0 0 0 +MQSXF.3R5 180 0 0 +MCSXF.3L1 0 0 0 +MCSXF.3R1 180 0 0 +MCSXF.3L5 0 0 0 +MCSXF.3R5 180 0 0 +MCSSXF.3L1 0 0 0 +MCSSXF.3R1 180 0 0 +MCSSXF.3L5 0 0 0 +MCSSXF.3R5 180 0 0 +MCOXF.3L1 0 0 0 +MCOXF.3R1 180 0 0 +MCOXF.3L5 0 0 0 +MCOXF.3R5 180 0 0 +MCOSXF.3L1 0 0 0 +MCOSXF.3R1 180 0 0 +MCOSXF.3L5 0 0 0 +MCOSXF.3R5 180 0 0 +MCDXF.3L1 0 0 0 +MCDXF.3R1 180 0 0 +MCDXF.3L5 0 0 0 +MCDXF.3R5 180 0 0 +MCDSXF.3L1 0 0 0 +MCDSXF.3R1 180 0 0 +MCDSXF.3L5 0 0 0 +MCDSXF.3R5 180 0 0 +MCTXF.3L1 0 0 0 +MCTXF.3R1 180 0 0 +MCTXF.3L5 0 0 0 +MCTXF.3R5 180 0 0 +MCTSXF.3L1 0 0 0 +MCTSXF.3R1 180 0 0 +MCTSXF.3L5 0 0 0 +MCTSXF.3R5 180 0 0 diff --git a/HL-LHC/Layout_Rotations_HLLHCv1.6.tab b/HL-LHC/Layout_Rotations_HLLHCv1.6.tab new file mode 100644 index 0000000..76670f2 --- /dev/null +++ b/HL-LHC/Layout_Rotations_HLLHCv1.6.tab @@ -0,0 +1,121 @@ +@ NAME %07s "HLLHCROTATIONS" +@ TYPE %07s "HLLHCROTATIONS" +@ TITLE %11s "hllhc v1.6 magnet rotations" +@ ORIGIN %16s "T PUGNAT" +@ DATE %08s "26/09/22" +@ TIME %08s "11.33.00" +* NAME YROTA SROTA INOUT +$ %s %le %le %le +not found -1 -1 -1 +MBXF.4L1 0 0 0 +MBXF.4R1 180 0 0 +MBXF.4L5 0 0 0 +MBXF.4R5 180 0 0 +MQXFA.B3L1 0 0 0 +MQXFA.A3L1 180 0 0 +MQXFA.B1L1 0 0 0 +MQXFA.A1L1 180 0 0 +MQXFA.A1R1 0 0 0 +MQXFA.B1R1 180 0 0 +MQXFA.A3R1 0 0 0 +MQXFA.B3R1 180 0 0 +MQXFA.B3L5 0 0 0 +MQXFA.A3L5 180 0 0 +MQXFA.B1L5 0 0 0 +MQXFA.A1L5 180 0 0 +MQXFA.A1R5 0 0 0 +MQXFA.B1R5 180 0 0 +MQXFA.A3R5 0 0 0 +MQXFA.B3R5 180 0 0 +MQXFB.B2L1 180 0 0 +MQXFB.A2L1 0 0 0 +MQXFB.A2R1 180 0 0 +MQXFB.B2R1 0 0 0 +MQXFB.B2L5 180 0 0 +MQXFB.A2L5 0 0 0 +MQXFB.A2R5 180 0 0 +MQXFB.B2R5 0 0 0 +MBRD.4L1.B1 180 0 1 +MBRD.4L1.B2 180 0 2 +MBRD.4R1.B1 0 0 1 +MBRD.4R1.B2 0 0 2 +MBRD.4L5.B1 180 0 1 +MBRD.4L5.B2 180 0 2 +MBRD.4R5.B1 0 0 1 +MBRD.4R5.B2 0 0 2 +MCBFXAH.3L1 180 0 0 +MCBFXAH.3R1 0 0 0 +MCBFXAH.3L5 180 0 0 +MCBFXAH.3R5 0 0 0 +MCBFXAV.3L1 180 0 0 +MCBFXAV.3R1 0 0 0 +MCBFXAV.3L5 180 0 0 +MCBFXAV.3R5 0 0 0 +MCBFXBH.a2L1 180 0 0 +MCBFXBH.a2R1 0 0 0 +MCBFXBH.a2L5 180 0 0 +MCBFXBH.a2R5 0 0 0 +MCBFXBH.b2L1 0 0 0 +MCBFXBH.b2R1 180 0 0 +MCBFXBH.b2L5 0 0 0 +MCBFXBH.b2R5 180 0 0 +MCBFXBV.a2L1 180 0 0 +MCBFXBV.a2R1 0 0 0 +MCBFXBV.a2L5 180 0 0 +MCBFXBV.a2R5 0 0 0 +MCBFXBV.b2L1 0 0 0 +MCBFXBV.b2R1 180 0 0 +MCBFXBV.b2L5 0 0 0 +MCBFXBV.b2R5 180 0 0 +MCBRDH.4L1.B1 0 0 2 +MCBRDH.4L1.B2 180 0 2 +MCBRDH.4R1.B1 180 0 2 +MCBRDH.4R1.B2 0 0 2 +MCBRDH.4L5.B1 0 0 2 +MCBRDH.4L5.B2 180 0 2 +MCBRDH.4R5.B1 180 0 2 +MCBRDH.4R5.B2 0 0 2 +MCBRDV.4L1.B1 180 0 1 +MCBRDV.4L1.B2 0 0 1 +MCBRDV.4R1.B1 0 0 1 +MCBRDV.4R1.B2 180 0 1 +MCBRDV.4L5.B1 180 0 1 +MCBRDV.4L5.B2 0 0 1 +MCBRDV.4R5.B1 0 0 1 +MCBRDV.4R5.B2 180 0 1 +MQSXF.3L1 0 0 0 +MQSXF.3R1 180 0 0 +MQSXF.3L5 0 0 0 +MQSXF.3R5 180 0 0 +MCSXF.3L1 0 0 0 +MCSXF.3R1 180 0 0 +MCSXF.3L5 0 0 0 +MCSXF.3R5 180 0 0 +MCSSXF.3L1 0 0 0 +MCSSXF.3R1 180 0 0 +MCSSXF.3L5 0 0 0 +MCSSXF.3R5 180 0 0 +MCOXF.3L1 0 0 0 +MCOXF.3R1 180 0 0 +MCOXF.3L5 0 0 0 +MCOXF.3R5 180 0 0 +MCOSXF.3L1 0 0 0 +MCOSXF.3R1 180 0 0 +MCOSXF.3L5 0 0 0 +MCOSXF.3R5 180 0 0 +MCDXF.3L1 0 0 0 +MCDXF.3R1 180 0 0 +MCDXF.3L5 0 0 0 +MCDXF.3R5 180 0 0 +MCDSXF.3L1 0 0 0 +MCDSXF.3R1 180 0 0 +MCDSXF.3L5 0 0 0 +MCDSXF.3R5 180 0 0 +MCTXF.3L1 0 0 0 +MCTXF.3R1 180 0 0 +MCTXF.3L5 0 0 0 +MCTXF.3R5 180 0 0 +MCTSXF.3L1 0 0 0 +MCTSXF.3R1 180 0 0 +MCTSXF.3L5 0 0 0 +MCTSXF.3R5 180 0 0 diff --git a/HL-LHC/macro_error_v3.madx b/HL-LHC/macro_error_v3.madx index 11eae03..5b52f9b 100644 --- a/HL-LHC/macro_error_v3.madx +++ b/HL-LHC/macro_error_v3.madx @@ -8,6 +8,8 @@ if ( ver_hllhc_optics < 1.3) { ! bug corrected in reset_MQX_corr 12/05/2009 (the IT correction was always on) !! S. Fartoukh March 2012 update the error assignement routine for an arbitrary ref radius (defined in the error table) ! and the resetIT corrector routine for new IT correctors +!! T. Pugnat Sep. 2022: new macros for error generation in HL-LHC magnets using +! external table for magnets orientation. !------------------------------------------------------------------------------- @@ -573,3 +575,105 @@ Efcomp_Measured_Quad_Switch(slot1,slot2) : macro = { if (inout == 1) {exec, Set_Quadru_Mult(slot1, slot2.v1);} ; if (inout == 2) {exec, Set_Quadru_Mult(slot1, slot2.v2);} ; }; + + + + + + +Efcomp_Random_Multi(typm, slot, abs_or_rel, order) : macro = { + ! abs_or_rel:= 0: relative strength 1: absolut stength + ! order := magnet order (1: dipole, 2:quadrupole, ...) + + inout_B1 := table(HLLHCROTATIONS, slot.B1, inout); // 0: single bore else: double bore + inout_B2 := table(HLLHCROTATIONS, slot.B2, inout); // 0: single bore else: double bore + !inout := table(HLLHCROTATIONS, typm, inout); // 0: single bore else: double bore + + print, text="NEW error routines used (master)"; + value, ver_hllhc_optics, typm, slot, inout_B1, inout_B2, abs_or_rel, order; + + if (inout_B1 == 0 && inout_B2 == 0) { + exec, Efcomp_Random_Multi_SingleBore(typm, slot, abs_or_rel, order); } + else { + exec, Efcomp_Random_Multi_DoubleBore(typm, slot, abs_or_rel, order); + }; +}; + + +Efcomp_Random_Multi_SingleBore(typm, slot, abs_or_rel, order) : macro = { + ! abs_or_rel:= 0: relative strength 1: absolut stength + ! order := magnet order (1: dipole, 2:quadrupole, ...) + + yrotangle := table(HLLHCROTATIONS, slot, yrota); // rotation around vertical axis + ! srotangle := table(HLLHCROTATIONS, slot, srota); // rotation around beam axis + inout := table(HLLHCROTATIONS, slot, inout); // 0: single bore 1: outer 2: inner + if (yrotangle == 180) {yrotangle = 1;}; + + print, text="NEW error routines used (Single Bore)"; + value, ver_hllhc_optics, typm, slot, iap, inout, yrotangle, abs_or_rel, order; + + exec new_magnetindividual(typm,inout); + + ! build aperture name from slotname + + if (abs_or_rel == 0) { exec, errorgenerate_rel(typm,$yrotangle,$order); }; + if (abs_or_rel == 1) { exec, errorgenerate_abs(typm,$yrotangle,$order,klRef_typm); }; +}; + + +Efcomp_Random_Multi_DoubleBore(typm, slot, abs_or_rel, order) : macro = { + ! abs_or_rel:= 0: relative strength 1: absolut stength + ! order := magnet order (1: dipole, 2:quadrupole, ...) +! if (use_average_errors_typm == 0) { +! if (mylhcbeam == 1) { slot_new=slot.B1 }; +! if (mylhcbeam > 1) { slot_new=slot.B2 }; +! yrotangle := table(HLLHCROTATIONS, slot_new, yrota); // rotation around vertical axis +! ! srotangle := table(HLLHCROTATIONS, slot_new, srota); // rotation around beam axis +! inout := table(HLLHCROTATIONS, slot_new, inout); // 0: single bore 1: outer 2: inner +! if (yrotangle == 180) {yrotangle = 1;}; +! +! exec new_magnetindividual(typm,inout); +! }; + if (use_average_errors_typm == 0) { + yrotangle := table(HLLHCROTATIONS, slot.B1, yrota); // rotation around vertical axis + ! srotangle := table(HLLHCROTATIONS, slot.B1, srota); // rotation around beam axis + inout := table(HLLHCROTATIONS, slot.B1, inout); // 0: single bore 1: outer 2: inner + if (yrotangle == 180) {yrotangle = 1;}; + + exec new_magnetindividual(typm,inout); + exec average_of_randoms(ssr_B1,ssr,ssr); + + + yrotangle := table(HLLHCROTATIONS, slot.B2, yrota); // rotation around vertical axis + ! srotangle := table(HLLHCROTATIONS, slot.B2, srota); // rotation around beam axis + inout := table(HLLHCROTATIONS, slot.B2, inout); // 0: single bore 1: outer 2: inner + if (yrotangle == 180) {yrotangle = 1;}; + + exec new_magnetindividual(typm,inout); + exec average_of_randoms(ssr_B2,ssr,ssr); + + + exec average_of_randoms(ssr,ssr_B1,ssr_B2); + if (mylhcbeam == 1) { exec average_of_randoms(ssr,ssr_B1,ssr_B1); }; + if (mylhcbeam > 1) { exec average_of_randoms(ssr,ssr_B2,ssr_B2); }; + }; + if (use_average_errors_typm == 1) { + yrotangle := table(HLLHCROTATIONS, slot.B1, yrota); // rotation around vertical axis + ! srotangle := table(HLLHCROTATIONS, slot.B1, srota); // rotation around beam axis + if (yrotangle == 180) {yrotangle = 1;}; + + inout_B1 := table(HLLHCROTATIONS, slot.B1, inout); // 0: single bore 1: outer 2: inner + exec new_magnetindividual(typm,inout_B1); exec average_of_randoms(ssr_B1,ssr,ssr); + + inout_B2 := table(HLLHCROTATIONS, slot.B2, inout); // 0: single bore 1: outer 2: inner + exec new_magnetindividual(typm,inout_B2); exec average_of_randoms(ssr_B2,ssr,ssr); + + exec average_of_randoms(ssr,ssr_B1,ssr_B2); + }; + + print, text="NEW error routines used (Double Bore)"; + value, ver_hllhc_optics, typm, slot, iap, inout, yrotangle, abs_or_rel, order; + + if (abs_or_rel == 0) { exec, errorgenerate_rel(typm,$yrotangle,$order); }; + if (abs_or_rel == 1) { exec, errorgenerate_abs(typm,$yrotangle,$order,klRef_typm); }; +};