809 lines
55 KiB
Python
809 lines
55 KiB
Python
|
|
import warnings
|
|
import math
|
|
import numpy as np
|
|
|
|
|
|
|
|
from time import sleep
|
|
|
|
class SLS2Magnet:
|
|
|
|
def __init__(self):
|
|
|
|
|
|
self.TF={}
|
|
# [PhysicalLength,MagneticLength,Imax,Ilin,b0,b1,b2,b3,R] # b1/R is the gradient at Imax.
|
|
# If Ilin = Imax, Ilin is not specified (Completely linear magnet)
|
|
|
|
# TF as in the hard edge model (OPA, MADX): Magnetic length needs to be updated.
|
|
# The reference radius R is to be updated as well.
|
|
# N.B. The coefficients b0...b3 are the values for the magnetic length self.TF[TYPE][1]
|
|
|
|
# Quadrupoles
|
|
#self.TF['QP'] = [0.1, 0.1, 70.0, 70.0, 0.0, 0.93, 0.0, 0.0, 10e-3] # B' = 93 T/m
|
|
#self.TF['QPH'] = [0.14, 0.14, 70.0, 70.0, 0.0, 0.98, 0.0, 0.0, 10e-3]
|
|
#self.TF['QA-SLS'] = [0.2, 0.2, 100.0, 100.0, 0.0, 0.232, 0.0, 0.0, 10e-3] # Imax? Assumed 100 A
|
|
|
|
|
|
# Quadrupoles, RC measurement , Average
|
|
self.TF['QP']=[0.1, 0.1, 70, 30, 0.0124054210164, 1.17036699272, -0.0365565108681, -0.170883350929, 0.01] # B' = 97.5 T/m
|
|
self.TF['QPH']=[0.14, 0.14, 70, 30, 0.0102827462421, 1.17181174371, -0.011395413075, -0.159266318031, 0.01] # B' = 101 T/m
|
|
self.TF['QA-SLS']=[0.2, 0.2, 140, 60, 0.00136432203379, 0.27820143007, 0.0176124050321, -0.0382317191743, 0.01]
|
|
|
|
|
|
# Quad TF for individual magnets, RC measurements. The fitting parameters were optimized for the design KL.
|
|
|
|
# QA-SLS. PS is 200A but it is limited by 140 A because the masurement is up to 140 A.
|
|
self.TF['ARS01-MQUA-0550']=[0.2, 0.2, 140, 100, 0.00488, 0.2713445, -0.0049465, -0.012803, 0.01] # QA-SLS, Iop ~100 A
|
|
self.TF['ARS01-MQUA-0630']=[0.2, 0.2, 140, 80, 0.002286, 0.2762515, -0.00340875, -0.00876825, 0.01] # QA-SLS, Iop ~90 A
|
|
self.TF['ARS01-MQUA-0710']=[0.2, 0.2, 140, 60, 0.001557, 0.27769, 0.00252044992238, -0.0149713056857, 0.01] # QA-SLS, Iop ~70 A
|
|
self.TF['ARS01-MQUA-0790']=[0.2, 0.2, 140, 80, 0.00225, 0.275947, -0.002493, -0.0102735, 0.01] # QA-SLS, Iop ~80 A
|
|
|
|
# QPQPH
|
|
self.TF['ARS01-MQUA-1050']=[0.14, 0.14, 70, 20, 0.0079816469117, 1.18426791131, 0.0607856512304, -0.240357941024, 0.01] # QPHI, Iop ~7.7 A
|
|
self.TF['ARS01-MQUA-1150']=[0.14, 0.14, 70, 20, 0.00780358419145, 1.18327391369, 0.0592729332282, -0.237078966931, 0.01] # QPHI, Iop ~9.0 A
|
|
self.TF['ARS01-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0247799757689, 1.13441076405, -0.12621890086, -0.0593464732633, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS01-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00848221658502, 1.18858462161, 0.053299271752, -0.27387803496, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS01-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00889372897434, 1.18708702888, 0.0468748602597, -0.268231245943, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS01-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0260260881338, 1.13154607743, -0.126546336342, -0.0570747831374, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS01-MQUA-5840']=[0.14, 0.14, 70, 40, 0.0211814862285, 1.13867427654, -0.0758619050232, -0.0727559666234, 0.01] # QPHO, Iop ~38.6 A
|
|
self.TF['ARS01-MQUA-5940']=[0.14, 0.14, 70, 40, 0.021218804957, 1.14130843974, -0.0820442421302, -0.0701489583562, 0.01] # QPHO, Iop ~44.6 A
|
|
self.TF['ARS02-MQUA-1050']=[0.14, 0.14, 70, 40, 0.0206876279741, 1.14384909713, -0.0868747005732, -0.0670370106246, 0.01] # QPHI, Iop ~44.6 A
|
|
self.TF['ARS02-MQUA-1150']=[0.14, 0.14, 70, 40, 0.0210358327099, 1.1408488786, -0.0825655559607, -0.0695451730122, 0.01] # QPHI, Iop ~38.6 A
|
|
self.TF['ARS02-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0281344468765, 1.12829322512, -0.11147754187, -0.068230198569, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS02-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00975104251237, 1.18629392371, 0.0432965311437, -0.261556210155, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS02-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00887526988747, 1.18673090298, 0.0550926317902, -0.272720818131, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS02-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0254463436238, 1.13067866503, -0.124119384679, -0.0587013887557, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS02-MQUA-5840']=[0.14, 0.14, 70, 30, 0.0103821620424, 1.17320069866, -0.00993066582094, -0.161935823288, 0.01] # QPHO, Iop ~33.4 A
|
|
self.TF['ARS02-MQUA-5940']=[0.14, 0.14, 70, 40, 0.020648451604, 1.1439090513, -0.0823157071707, -0.0702809483788, 0.01] # QPHO, Iop ~36.3 A
|
|
self.TF['ARS03-MQUA-0790']=[0.1, 0.1, 70, 40, 0.0272066497068, 1.12841779995, -0.115233383507, -0.0645004640065, 0.01] # QPI, Iop ~53.1 A
|
|
self.TF['ARS03-MQUA-0850']=[0.14, 0.14, 70, 40, 0.0209160870773, 1.14211267618, -0.0820081546424, -0.0706922398986, 0.01] # QPHI, Iop ~36.7 A
|
|
self.TF['ARS03-MQUA-1050']=[0.14, 0.14, 70, 20, 0.00819675364402, 1.18562474712, 0.0597058598824, -0.23890894014, 0.01] # QPHI, Iop ~22.9 A
|
|
self.TF['ARS03-MQUA-1150']=[0.14, 0.14, 70, 20, 0.00858152465222, 1.18197092671, 0.0529375528162, -0.231703365243, 0.01] # QPHI, Iop ~17.5 A
|
|
self.TF['ARS03-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0269406186117, 1.12955549412, -0.118907416087, -0.0619703797266, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS03-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00965256963755, 1.18401903318, 0.0467911845914, -0.264203812484, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS03-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00857027952163, 1.18889972891, 0.0505494793685, -0.271872116878, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS03-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0256548352751, 1.13230392888, -0.129341990792, -0.0544080071894, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS03-MQUA-5840']=[0.14, 0.14, 70, 40, 0.0213806820773, 1.13950226217, -0.0782507183232, -0.0721058497186, 0.01] # QPHO, Iop ~38.6 A
|
|
self.TF['ARS03-MQUA-5940']=[0.14, 0.14, 70, 40, 0.0206628710298, 1.14212719542, -0.0795591345361, -0.0715860089672, 0.01] # QPHO, Iop ~44.6 A
|
|
self.TF['ARS04-MQUA-1050']=[0.14, 0.14, 70, 40, 0.0209345318443, 1.14046892518, -0.0786355600943, -0.071896728547, 0.01] # QPHI, Iop ~44.6 A
|
|
self.TF['ARS04-MQUA-1150']=[0.14, 0.14, 70, 40, 0.0216322849976, 1.13818073211, -0.0798716183076, -0.070319861398, 0.01] # QPHI, Iop ~38.6 A
|
|
self.TF['ARS04-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0265365959324, 1.13033441086, -0.120305946845, -0.0607396225677, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS04-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00963430309403, 1.18643320353, 0.042977616531, -0.263226334512, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS04-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00861983962921, 1.18624182868, 0.0507152161104, -0.270666875622, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS04-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0251328199829, 1.1332744067, -0.127577980309, -0.056985026738, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS04-MQUA-5840']=[0.14, 0.14, 70, 20, 0.00790583701142, 1.18530354203, 0.0659552290113, -0.245122745463, 0.01] # QPHO, Iop ~16.4 A
|
|
self.TF['ARS04-MQUA-5940']=[0.14, 0.14, 70, 20, 0.00804610678733, 1.186385026, 0.0606395931537, -0.241377878168, 0.01] # QPHO, Iop ~15.6 A
|
|
self.TF['ARS05-MQUA-0400']=[0.1, 0.1, 70, 30, 0.0125790177572, 1.17281702, -0.0347460504964, -0.172653881113, 0.01] # QPI, Iop ~28.0 A
|
|
self.TF['ARS05-MQUA-0440']=[0.14, 0.14, 70, 40, 0.0211634853755, 1.14413196707, -0.0793531303093, -0.0716327579334, 0.01] # QPHI, Iop ~40.4 A
|
|
self.TF['ARS05-MQUA-0460']=[0.1, 0.1, 70, 30, 0.0126579317795, 1.16922925137, -0.0375603205641, -0.168705762093, 0.01] # QPI, Iop ~27.0 A
|
|
self.TF['ARS05-MQUA-1050']=[0.14, 0.14, 70, 20, 0.00774486989439, 1.18754949481, 0.0620179277666, -0.24114682342, 0.01] # QPHI, Iop ~23.3 A
|
|
self.TF['ARS05-MQUA-1150']=[0.14, 0.14, 70, 20, 0.00802871824166, 1.18431759806, 0.0576122341581, -0.236502845788, 0.01] # QPHI, Iop ~22.8 A
|
|
self.TF['ARS05-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0271287901891, 1.13414292589, -0.121261721603, -0.0604158205581, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS05-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00960159948821, 1.18333529506, 0.0436891146943, -0.261119481475, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS05-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00876466294849, 1.1853873149, 0.0498332611993, -0.269059748251, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS05-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0255139951502, 1.12924950946, -0.124584766918, -0.0573399883576, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS05-MQUA-5840']=[0.14, 0.14, 70, 40, 0.0213666428504, 1.13999184379, -0.0799300156275, -0.0699959750481, 0.01] # QPHO, Iop ~38.6 A
|
|
self.TF['ARS05-MQUA-5940']=[0.14, 0.14, 70, 40, 0.0218895438638, 1.13758969545, -0.0756379705509, -0.0734605282405, 0.01] # QPHO, Iop ~44.6 A
|
|
self.TF['ARS06-MQUA-1050']=[0.14, 0.14, 70, 40, 0.0206159749159, 1.14193423012, -0.0806427533998, -0.0711219067748, 0.01] # QPHI, Iop ~44.6 A
|
|
self.TF['ARS06-MQUA-1150']=[0.14, 0.14, 70, 40, 0.0208669606643, 1.14211127137, -0.0811107642473, -0.0701542973755, 0.01] # QPHI, Iop ~38.6 A
|
|
self.TF['ARS06-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0268325856985, 1.12641137526, -0.122382240161, -0.0577017897957, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS06-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00930736510072, 1.18441021623, 0.048972494037, -0.266253683669, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS06-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00865003188391, 1.18545647308, 0.0434107952861, -0.265108650677, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS06-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0255249681458, 1.13475658895, -0.131813158637, -0.0535355978289, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS06-MQUA-5840']=[0.14, 0.14, 70, 30, 0.010044621805, 1.17515051983, -0.0128135520533, -0.1590811517, 0.01] # QPHO, Iop ~33.4 A
|
|
self.TF['ARS06-MQUA-5940']=[0.14, 0.14, 70, 40, 0.0223744436868, 1.13354277752, -0.0722763427687, -0.0745863421613, 0.01] # QPHO, Iop ~36.3 A
|
|
self.TF['ARS07-MQUA-0790']=[0.1, 0.1, 70, 40, 0.0268261240229, 1.12850775962, -0.118800652519, -0.0628860550894, 0.01] # QPI, Iop ~53.1 A
|
|
self.TF['ARS07-MQUA-0850']=[0.14, 0.14, 70, 40, 0.0208905323449, 1.13952490478, -0.0799232788124, -0.0703853281269, 0.01] # QPHI, Iop ~36.7 A
|
|
self.TF['ARS07-MQUA-1050']=[0.14, 0.14, 70, 20, 0.00804233260923, 1.18227651418, 0.0547790934989, -0.233560353823, 0.01] # QPHI, Iop ~22.9 A
|
|
self.TF['ARS07-MQUA-1150']=[0.14, 0.14, 70, 20, 0.00802871824166, 1.18431759806, 0.0576122341581, -0.236502845788, 0.01] # QPHI, Iop ~17.5 A
|
|
self.TF['ARS07-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0281031810394, 1.12893170363, -0.117669105678, -0.0625133783651, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS07-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00980882672538, 1.18872328962, 0.0374271684138, -0.256366123299, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS07-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00847524785543, 1.18992810605, 0.0544746450998, -0.275611678451, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS07-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0249982564086, 1.13441872059, -0.1267857731, -0.0578763307642, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS07-MQUA-5840']=[0.14, 0.14, 70, 40, 0.0214016570398, 1.13618633301, -0.0772154462687, -0.0715549107099, 0.01] # QPHO, Iop ~38.6 A
|
|
self.TF['ARS07-MQUA-5940']=[0.14, 0.14, 70, 40, 0.021270649292, 1.13808807646, -0.0834245165349, -0.0663986333325, 0.01] # QPHO, Iop ~44.6 A
|
|
self.TF['ARS08-MQUA-1050']=[0.14, 0.14, 70, 40, 0.021866214922, 1.14100488468, -0.0847840451378, -0.0676795914515, 0.01] # QPHI, Iop ~44.6 A
|
|
self.TF['ARS08-MQUA-1150']=[0.14, 0.14, 70, 40, 0.021583400373, 1.1374895233, -0.0780905864371, -0.0709151165956, 0.01] # QPHI, Iop ~38.6 A
|
|
self.TF['ARS08-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0262205362497, 1.1325643365, -0.120885991747, -0.0617708042626, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS08-MQUA-1370']=[0.1, 0.1, 70, 20, 0.0100496738163, 1.18381400068, 0.0451620927184, -0.264181428461, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS08-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00847462872389, 1.18869636031, 0.0467484847972, -0.267916853268, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS08-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0253903831111, 1.13613484907, -0.123237046266, -0.060971293687, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS08-MQUA-5840']=[0.14, 0.14, 70, 20, 0.00836745561575, 1.17950303913, 0.0503519252676, -0.227065469804, 0.01] # QPHO, Iop ~22.8 A
|
|
self.TF['ARS08-MQUA-5940']=[0.14, 0.14, 70, 20, 0.00810429348709, 1.18288656076, 0.0631416700628, -0.242320436554, 0.01] # QPHO, Iop ~23.3 A
|
|
self.TF['ARS09-MQUA-0530']=[0.1, 0.1, 70, 30, 0.0127891751638, 1.16692866622, -0.0409710312471, -0.164789851012, 0.01] # QPI, Iop ~27.0 A
|
|
self.TF['ARS09-MQUA-0560']=[0.14, 0.14, 70, 40, 0.0214713744249, 1.14073041109, -0.0856866562901, -0.0665440469885, 0.01] # QPHI, Iop ~40.4 A
|
|
self.TF['ARS09-MQUA-0600']=[0.1, 0.1, 70, 30, 0.0127619782193, 1.16828383793, -0.0361652515646, -0.170749694948, 0.01] # QPI, Iop ~28.0 A
|
|
self.TF['ARS09-MQUA-1050']=[0.14, 0.14, 70, 20, 0.00779032031895, 1.18265637839, 0.0594775676297, -0.237358884081, 0.01] # QPHI, Iop ~15.6 A
|
|
self.TF['ARS09-MQUA-1150']=[0.14, 0.14, 70, 20, 0.0080277997637, 1.18191264557, 0.0597399764031, -0.238021257565, 0.01] # QPHI, Iop ~16.4 A
|
|
self.TF['ARS09-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0267706894238, 1.13076827934, -0.12013134413, -0.0609304526397, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS09-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00975022252034, 1.1851528742, 0.0462951187818, -0.264920831307, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS09-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00855153353985, 1.18824348557, 0.0472851933418, -0.26792967913, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS09-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0255240672583, 1.13334352816, -0.124209703075, -0.0597870566735, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS09-MQUA-5840']=[0.14, 0.14, 70, 40, 0.0209767380866, 1.1426776217, -0.0830055429835, -0.0700440208241, 0.01] # QPHO, Iop ~38.6 A
|
|
self.TF['ARS09-MQUA-5940']=[0.14, 0.14, 70, 40, 0.0199847664639, 1.1460043739, -0.08413546869, -0.0695934332314, 0.01] # QPHO, Iop ~44.6 A
|
|
self.TF['ARS10-MQUA-1050']=[0.14, 0.14, 70, 40, 0.0217641858904, 1.14140891045, -0.0854203959054, -0.0667485107897, 0.01] # QPHI, Iop ~44.6 A
|
|
self.TF['ARS10-MQUA-1150']=[0.14, 0.14, 70, 40, 0.0207292846941, 1.14423904487, -0.080135185258, -0.0718125452506, 0.01] # QPHI, Iop ~38.6 A
|
|
self.TF['ARS10-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0258090656403, 1.13553947618, -0.130644282989, -0.0533206254614, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS10-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00947055560653, 1.18815632538, 0.0411679839075, -0.260723655328, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS10-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00911052864507, 1.18393663418, 0.0488972528733, -0.266237706673, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS10-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0260113983687, 1.13095518645, -0.132058997795, -0.0522074038276, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS10-MQUA-5840']=[0.14, 0.14, 70, 30, 0.0106285443939, 1.16665730475, -0.0110844546315, -0.157408907481, 0.01] # QPHO, Iop ~33.6 A
|
|
self.TF['ARS10-MQUA-5940']=[0.14, 0.14, 70, 40, 0.0218788903308, 1.1376141267, -0.0785207911539, -0.0709542819546, 0.01] # QPHO, Iop ~36.6 A
|
|
self.TF['ARS11-MQUA-0830']=[0.1, 0.1, 70, 40, 0.0265181957302, 1.13383540023, -0.127380182735, -0.0547182574518, 0.01] # QPI, Iop ~55.1 A
|
|
self.TF['ARS11-MQUA-0890']=[0.14, 0.14, 70, 40, 0.0205970408064, 1.14515548387, -0.083934978866, -0.0695185459798, 0.01] # QPHI, Iop ~37.6 A
|
|
self.TF['ARS11-MQUA-1050']=[0.14, 0.14, 70, 20, 0.0079358870871, 1.18061941427, 0.0614609673978, -0.238016106498, 0.01] # QPHI, Iop ~14.5 A
|
|
self.TF['ARS11-MQUA-1150']=[0.14, 0.14, 70, 20, 0.00800634347948, 1.18471069605, 0.0603066884021, -0.239723573916, 0.01] # QPHI, Iop ~9.4 A
|
|
self.TF['ARS11-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0273752271128, 1.13241152476, -0.125645642304, -0.0566159720971, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS11-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00965935297016, 1.19194142929, 0.0405792648832, -0.261956785075, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS11-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00849380670863, 1.1894190651, 0.0485528210467, -0.26993497585, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS11-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0256314514959, 1.12963122732, -0.126061205037, -0.0573436886644, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS11-MQUA-5840']=[0.14, 0.14, 70, 40, 0.0213763770321, 1.13734894957, -0.0750542249952, -0.0737853659135, 0.01] # QPHO, Iop ~38.6 A
|
|
self.TF['ARS11-MQUA-5940']=[0.14, 0.14, 70, 40, 0.0204266463933, 1.14314697383, -0.0813557115322, -0.0701256402485, 0.01] # QPHO, Iop ~44.6 A
|
|
self.TF['ARS12-MQUA-1050']=[0.14, 0.14, 70, 40, 0.0205229308439, 1.14304301399, -0.08119174372, -0.070698637475, 0.01] # QPHI, Iop ~44.6 A
|
|
self.TF['ARS12-MQUA-1150']=[0.14, 0.14, 70, 40, 0.0202362585845, 1.1468959314, -0.0868251723613, -0.0671963440997, 0.01] # QPHI, Iop ~38.6 A
|
|
self.TF['ARS12-MQUA-1260']=[0.1, 0.1, 70, 40, 0.0275665929965, 1.12839886306, -0.117736405417, -0.0623624641848, 0.01] # QPI, Iop ~53.0 A
|
|
self.TF['ARS12-MQUA-1370']=[0.1, 0.1, 70, 20, 0.00934141409333, 1.18981443873, 0.0480146676568, -0.267751345363, 0.01] # QPI, Iop ~24.3 A
|
|
self.TF['ARS12-MQUA-5620']=[0.1, 0.1, 70, 20, 0.00843531827322, 1.18999128935, 0.0506938763075, -0.273164664944, 0.01] # QPO, Iop ~24.3 A
|
|
self.TF['ARS12-MQUA-5730']=[0.1, 0.1, 70, 40, 0.0247221190877, 1.13800703358, -0.132283214609, -0.0554632926452, 0.01] # QPO, Iop ~53.0 A
|
|
self.TF['ARS12-MQUA-5840']=[0.14, 0.14, 70, 20, 0.00786389740308, 1.18513390968, 0.0617435132693, -0.24107128681, 0.01] # QPHO, Iop ~23.2 A
|
|
self.TF['ARS12-MQUA-5940']=[0.14, 0.14, 70, 20, 0.00828198631199, 1.1825837794, 0.0563437707965, -0.233951363216, 0.01] # QPHO, Iop ~22.4 A
|
|
|
|
|
|
|
|
|
|
# S extupoles
|
|
# Specification from Andreas' note (or TDR BD chapter) # Keep them for history tacking
|
|
#self.TF['HS2A'] = [0.09, 0.09, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3] # B''/2 = 5850 T/m**2
|
|
#self.TF['HS2B'] = [0.09, 0.09, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2G'] = [0.08, 0.08, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2H'] = [0.08, 0.08, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2K'] = [0.08, 0.08, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2L'] = [0.08, 0.08, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2M'] = [0.08, 0.08, 50.0, 50.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
|
|
#self.TF['SXQ'] = [0.09, 0.09, 70.0, 70.0, 0.0, 58.5, 0.0, 0.0, 10e-3]
|
|
|
|
# Simulation by Vjeran. No neighboring magnet. 24.08.2022
|
|
#self.TF['HS2A'] = [0.09, 0.09, 50.0, 50.0, 0.0, 60.378, 0.0, 0.0, 10e-3] # B''/2 = 5850 T/m**2
|
|
#self.TF['HS2B'] = [0.09, 0.09, 50.0, 50.0, 0.0, 67.378, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2G'] = [0.08, 0.08, 50.0, 50.0, 0.0, 59.100, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2H'] = [0.08, 0.08, 50.0, 50.0, 0.0, 59.100, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2K'] = [0.08, 0.08, 50.0, 50.0, 0.0, 59.038, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2L'] = [0.08, 0.08, 50.0, 50.0, 0.0, 59.038, 0.0, 0.0, 10e-3]
|
|
#self.TF['HS2M'] = [0.08, 0.08, 50.0, 50.0, 0.0, 58.650, 0.0, 0.0, 10e-3]
|
|
|
|
#self.TF['SXQ'] = [0.09, 0.09, 70.0, 70.0, 0.0, 64.556, 0.0, 0.0, 10e-3]
|
|
|
|
# Rotation coil measurement, Average
|
|
# /afs/psi.ch/project/SLS2/Magnets/MeasurementData/Data2OM_SX.py
|
|
self.TF['HS2A']=[0.09, 0.09, 50.0, 30.0, 0.268672570371, 68.6573024724, 3.63950855666, -10.8627324327, 0.01]
|
|
self.TF['HS2B']=[0.09, 0.09, 50.0, 30.0, 0.268672570371, 68.6573024724, 3.63950855666, -10.8627324327, 0.01]
|
|
self.TF['HS2G']=[0.08, 0.08, 50.0, 30.0, 0.275523116667, 68.5291754064, 3.76726246385, -11.6558744619, 0.01]
|
|
self.TF['HS2H']=[0.08, 0.08, 50.0, 30.0, 0.275523116667, 68.5291754064, 3.76726246385, -11.6558744619, 0.01]
|
|
self.TF['HS2K']=[0.08, 0.08, 50.0, 30.0, 0.31366815, 68.4752835626, 3.57602204301, -11.4685644869, 0.01]
|
|
self.TF['HS2L']=[0.08, 0.08, 50.0, 30.0, 0.31366815, 68.4752835626, 3.57602204301, -11.4685644869, 0.01]
|
|
self.TF['HS2M']=[0.08, 0.08, 50.0, 30.0, 0.312616666667, 68.4330312501, 4.0780833326, -12.5120999994, 0.01]
|
|
|
|
self.TF['SXQ']=[0.09, 0.09, 70.0, 38.0, 0.356884451852, 86.4520837835, -21.2484787107, 0.669766969922, 0.01]
|
|
|
|
|
|
# Including cross-talk and hysteresis. Documentation: "Transfer function based on RC data and Opera.pptx"
|
|
# Note that the dictionary key is BD name (element.BDN), since the cross talk effect depends on the neiboring magnets
|
|
self.TF['SXX']=[0.09, 0.09, 50.0, 32.0, 0.268672570371, 68.6573024724, 1.69650336984, -8.91972724591, 0.01] # 32 A with an educated guess
|
|
self.TF['SXY']=[0.09, 0.09, 50.0, 32.0, 0.268672570371, 68.6573024724, 1.69650336984, -8.91972724591, 0.01]
|
|
self.TF['SYY']=[0.09, 0.09, 50.0, 32.0, 0.268672570371, 68.6573024724, 1.69650336984, -8.91972724591, 0.01]
|
|
|
|
|
|
self.TF['SDM']=[0.09, 0.09, 70.0, 35.2, 0.715160903971, 86.1953605446, -29.1497302221, 6.90040275271, 0.01]
|
|
self.TF['SD5']=[0.08, 0.08, 50.0, 32.0, -1.97091476148, 69.1754314874, -4.11968288296, -4.45067935221, 0.01]
|
|
self.TF['SD4']=[0.08, 0.08, 50.0, 32.0, -1.97091476148, 69.1754314874, -4.11968288296, -4.45067935221, 0.01] # HS2M (SD4I) is approximated with HS2G (SD4O)
|
|
self.TF['SD3']=[0.08, 0.08, 50.0, 32.0, -1.97091476148, 69.1754314874, -4.11968288296, -4.45067935221, 0.01]
|
|
self.TF['SD2']=[0.08, 0.08, 50.0, 32.0, -1.97091476148, 69.1754314874, -4.11968288296, -4.45067935221, 0.01]
|
|
self.TF['SD1']=[0.08, 0.08, 50.0, 32.0, -1.97091476148, 69.1754314874, -4.11968288296, -4.45067935221, 0.01]
|
|
|
|
self.TF['SFM']=[0.08, 0.08, 50.0, 32.0, 0.6360058481379699, 68.93581758298821, -9.424073445272223, -0.050151019762392335, 0.01] #
|
|
self.TF['SF2']=[0.08, 0.08, 50.0, 32.0, 0.251363431128, 68.9500649825, -5.92252125704, -3.02979404361, 0.01]
|
|
self.TF['SF1']=[0.08, 0.08, 50.0, 32.0, 0.251363431128, 68.9500649825, -5.92252125704, -3.02979404361, 0.01]
|
|
|
|
|
|
# Octupoles
|
|
# Specification from Andreas' note (or TDR BD chapter)
|
|
#self.TF['OS2A'] = [0.0, 0.05, 5.0, 5.0, 0.0, 630.0, 0.0, 0.0, 10e-3] # B'''/6 = 63000 T/m**3
|
|
#self.TF['OS2B'] = [0.0, 0.05, 5.0, 5.0, 0.0, 630.0, 0.0, 0.0, 10e-3]
|
|
#self.TF['OS2E'] = [0.0, 0.05, 5.0, 5.0, 0.0, 630.0, 0.0, 0.0, 10e-3]
|
|
#self.TF['OS2F'] = [0.0, 0.05, 5.0, 5.0, 0.0, 630.0, 0.0, 0.0, 10e-3]
|
|
|
|
# Simulation by Vjeran. No neighboring magnet. 24.08.2022
|
|
# Magnetic length is not defined. Keep 5 cm for now. 31.08.2022
|
|
#self.TF['OS2A'] = [0.0, 0.05, 5.0, 5.0, 0.0, 695.8, 0.0, 0.0, 10e-3] # B'''/6 = 69580 T/m**3
|
|
#self.TF['OS2B'] = [0.0, 0.05, 5.0, 5.0, 0.0, 695.8, 0.0, 0.0, 10e-3]
|
|
#self.TF['OS2E'] = [0.0, 0.05, 5.0, 5.0, 0.0, 695.6, 0.0, 0.0, 10e-3]
|
|
#self.TF['OS2F'] = [0.0, 0.05, 5.0, 5.0, 0.0, 695.6, 0.0, 0.0, 10e-3]
|
|
|
|
# RC measurement
|
|
# /afs/psi.ch/project/SLS2/Magnets/MeasurementData/Data2OM_OC.py
|
|
# To be verified and on-line
|
|
self.TF['OS2A']=[0.0, 0.05, 5.0, 0, 0.0, 669.303622067, 86.1565359977, -49.6460189903, 0.01] # B'''/6 = 74934 T/m**3
|
|
self.TF['OS2B']=[0.0, 0.05, 5.0, 0, 0.0, 668.321158671, 86.5072962136, -49.0092030546, 0.01]
|
|
self.TF['OS2E']=[0.0, 0.05, 5.0, 0, 0.0, 667.935924897, 88.7205354028, -49.4010112743, 0.01]
|
|
self.TF['OS2F']=[0.0, 0.05, 5.0, 0, 0.0, 667.618682856, 87.0688628959, -48.4244780922, 0.01]
|
|
|
|
|
|
# Including cross-talk. Hysteresis is excluded since the PS is bipolar. Documentation: "Transfer function based on RC data and Opera.pptx"
|
|
# Note that the dictionary key is BD name (element.BDN), since the cross talk effect depends on the neiboring magnets
|
|
# Three cases considered, 1) with no cross talk anticipated, 2) with no direct cross talk anticipated but there is an octupole component nearby, and 3) with cross talk
|
|
# For OXX, OXY, OYY (Case 1), use the above TFs from RC data, SM.I2KL(element.TYPE, I), provided the cross talk between electromagnets is not signigficant.
|
|
# For OCY1/OCY2 (Case 2), set option in SM.I2KL(element.TYPE, I, CrossTalk=element.BDN) -> The follwing offset is then included.
|
|
# For OCX1, OCX2 and OCXM (Case3), use the TFs below. SM.I2KL(element.BDN, I, CrossTalk=element.BDN): Note that both TYPE and CrossTalk = element.BDN
|
|
self.TF0={}
|
|
self.TF0['OCY2']=70.070791927 # K3L offset in SDn. Its current dependency is not included here since it is not significant as for OCX
|
|
self.TF0['OCY1']=70.070791927
|
|
|
|
|
|
self.TF0['OCXM']=56.1877821522+10.7526313278 # C13(ANM) + C10 (Oct off)
|
|
self.TF0['OCX2']=55.2440968811+10.7526313278 # C11 + C10 (Oct off)
|
|
self.TF0['OCX1']=28.8497357133+10.7526313278 # C9 + C10 (Oct off)
|
|
|
|
|
|
self.TF['OCXM']=[0.05, 0.05, 5.0, 1.0, 0.0, 727.309735329, -54.0658393851, 35.9640331277, 0.01] # OS2A RC + Opera cross talk + Opera single mag
|
|
self.TF['OCX2']=[0.05, 0.05, 5.0, 1.0, 0.0, 727.309735329, -54.0658393851, 35.9640331277, 0.01]
|
|
self.TF['OCX1']=[0.05, 0.05, 5.0, 1.0, 0.0, 727.309735329, -54.0658393851, 35.9640331277, 0.01]
|
|
|
|
# Corrector quad, spec requested
|
|
# Specification from Andreas' note (or TDR BD chapter)
|
|
#self.TF['QAOS2A'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3] # B' = 5.6 T/m
|
|
#self.TF['QAOS2B'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3]
|
|
#self.TF['QAOS2E'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3]
|
|
#self.TF['QAOS2F'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3]
|
|
|
|
# Simulation by Vjeran. No neighboring magnet. 24.08.2022
|
|
#self.TF['QAOS2A'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.06764, 0.0, 0.0, 10e-3] # B' = 6.7 T/m :)
|
|
#self.TF['QAOS2B'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.06764, 0.0, 0.0, 10e-3]
|
|
#self.TF['QAOS2E'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.06754, 0.0, 0.0, 10e-3]
|
|
#self.TF['QAOS2F'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.06754, 0.0, 0.0, 10e-3]
|
|
|
|
|
|
# RC measurement, average
|
|
self.TF['QAOS2A']=[0.05, 0.05, 5.0, 0, 0.0, 0.063439478074, 0.00894565593072, -0.0047472221448, 0.01] # B' = 6.76 T/m :)
|
|
self.TF['QAOS2B']=[0.05, 0.05, 5.0, 0, 0.0, 0.0632856330626, 0.00912884806541, -0.00482820798325, 0.01]
|
|
self.TF['QAOS2E']=[0.05, 0.05, 5.0, 0, 0.0, 0.0628063944775, 0.00978968479097, -0.00512004704693, 0.01]
|
|
self.TF['QAOS2F']=[0.05, 0.05, 5.0, 0, 0.0, 0.0628383904087, 0.00965142365802, -0.00505041790927, 0.01]
|
|
|
|
# Corrector skew, spec requested
|
|
#self.TF['QSOS2A'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3] # B' = 5.6 T/m
|
|
#self.TF['QSOS2B'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3]
|
|
#self.TF['QSOS2E'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3]
|
|
#self.TF['QSOS2F'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.056, 0.0, 0.0, 10e-3]
|
|
|
|
|
|
# Simulation by Vjeran. No neighboring magnet. 24.08.2022
|
|
#self.TF['QSOS2A'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.06314, 0.0, 0.0, 10e-3] # B' = 6.3 T/m
|
|
#self.TF['QSOS2B'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.06314, 0.0, 0.0, 10e-3]
|
|
#self.TF['QSOS2E'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.06312, 0.0, 0.0, 10e-3]
|
|
#self.TF['QSOS2F'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.06312, 0.0, 0.0, 10e-3]
|
|
|
|
# RC measurement, average
|
|
self.TF['QSOS2A']=[0.05, 0.05, 5.0, 0, 0.0, 0.0590039543127, 0.00881466567091, -0.00463485306762, 0.01] # B' = 6.32 T/m
|
|
self.TF['QSOS2B']=[0.05, 0.05, 5.0, 0, 0.0, 0.0588472565198, 0.00900380966447, -0.00471795253389, 0.01]
|
|
self.TF['QSOS2E']=[0.05, 0.05, 5.0, 0, 0.0, 0.0588507592533, 0.0090524480532, -0.00471766261077, 0.01]
|
|
self.TF['QSOS2F']=[0.05, 0.05, 5.0, 0, 0.0, 0.0589230620203, 0.00884305456705, -0.00460527483071, 0.01]
|
|
|
|
# Corrector. Magnetic/Physical length?
|
|
#self.TF['CH'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.00072*1.5, 0.0, 0.0, 10e-3] # B = 0.072+0.036 T
|
|
#self.TF['CHS'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.00072*1.5, 0.0, 0.0, 10e-3] # B = 0.072+0.036 T
|
|
#self.TF['CV'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.00072, 0.0, 0.0, 10e-3] # B = 0.072 T
|
|
self.TF['CHY'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.00072*1.5, 0.0, 0.0, 10e-3] # B = 0.072+0.036 T
|
|
self.TF['CVY'] = [0.0, 0.05, 5.0, 5.0, 0.0, 0.00072, 0.0, 0.0, 10e-3] # B = 0.072 T
|
|
|
|
|
|
# Measurement, average
|
|
self.TF['CHS']=[0.05, 0.05, 5.0, 0, 0.0, 0.00143101755247, 0.000512080877263, -0.000519022672712, 0.01] # 820 urad!
|
|
self.TF['CV']=[0.05, 0.05, 5.0, 0, 0.0, 0.00103560521719, 0.000121693453739, -7.77922718062e-05, 0.01] # 600 urad!
|
|
# Measurement, id3 : Factor 0.92 from LOCO, 2025 02 13
|
|
self.TF['CH']=[0.05, 0.05, 5.0, 0, 0.0, 0.00157085011963*0.92, 0.000195329502438*0.92, -0.000160199545181*0.92, 0.01]
|
|
|
|
# Experimental. Correction from LOCO calibration
|
|
self.TF['CH1470']=[0.05, 0.05, 5.0, 0, 0.0, 0.00157085011963*0.84, 0.000195329502438*0.84, -0.000160199545181*0.84, 0.01]
|
|
|
|
# kicker bump
|
|
self.TF['KIN'] = [0.6, 0.6, 2500.0, 2500.0, 0.0, 0.0007125, 0.0, 0.0, 10e-3] # 4.75 mrad @ 2500 A @ peak, Mail from Martin on 11.07.2024
|
|
|
|
|
|
|
|
|
|
|
|
# BTR magnets
|
|
self.TF['QFA'] =[0.15, 0.173, 150.0, 91.1, 0.0, 0.74521, -0.00813, -0.03542, 22.5e-3] # From MEASUREMENT. Documentation: https://intranet.psi.ch/pub/Swiss_FEL/FinQuadrupoles/QFA.pdf (Link is now invalid...)
|
|
|
|
self.TF['CVTO'] = [0.05, 0.05, 5.0, 5.0, 0.0, 0.0036, 0.0, 0.0, 10e-3] # 2 mrad at 5A. The length is arbitrarily set to 0.05 m.
|
|
self.TF['CVTN'] = [0.171, 0.171, 5.0, 5.0, 0.0, 0.0009984310369419486, 0.0, 0.0, 10e-3] # BL= 0.014 Tm at 4.1 A. If it is at 5A, b1=0.0008187134502923977
|
|
self.TF['CHTN'] = [0.171, 0.171, 5.0, 5.0, 0.0, 0.0009984310369419486, 0.0, 0.0, 10e-3] # BL= 0.014 Tm at 4.1 A. If it is at 5A, b1=0.0008187134502923977
|
|
|
|
self.TF['SYINCH'] = [0.171, 0.171, 5.0, 5.0, 0.0, 0.0019883040935672514, 0.0, 0.0, 10e-3] # BL= 0.034 Tm at 5.0 A. If it is at 5A, b1=0.0008187134502923977
|
|
|
|
|
|
|
|
|
|
# brho for 2.7 GeV beam
|
|
gamma=(2.7e9+511e3)/511e3
|
|
beta=math.sqrt(1-1/gamma**2)
|
|
p=511e3*beta*gamma/1e9 # momentum in GeV/c
|
|
self.brho=p/0.299792 # P[GeV/c]=0.3*Brho[T.m]
|
|
|
|
|
|
|
|
# Multipole errors based on Vjeran's simulation. Experimental 29.08.2022
|
|
|
|
|
|
self.ME={}
|
|
# 20 poles is upper limit in tracy-null?
|
|
#self.ME['OS2A'] = [['k11',-232.9E+15/self.brho]]
|
|
#self.ME['OS2B'] = [['k11',-232.9E+15/self.brho]]
|
|
#self.ME['OS2E'] = [['k11',-232.5E+15/self.brho]]
|
|
#self.ME['OS2F'] = [['k11',-232.5E+15/self.brho]]
|
|
|
|
self.ME['QAOS2A'] = [['k5',4.969e6/self.brho/0.05],['k9',-4.993e12/self.brho/0.05]]
|
|
self.ME['QAOS2B'] = [['k5',4.969e6/self.brho/0.05],['k9',-4.993e12/self.brho/0.05]]
|
|
self.ME['QAOS2E'] = [['k5',4.966e6/self.brho/0.05],['k9',-4.521e12/self.brho/0.05]]
|
|
self.ME['QAOS2F'] = [['k5',4.966e6/self.brho/0.05],['k9',-4.521e12/self.brho/0.05]]
|
|
|
|
self.ME['QSOS2A'] = [['j5',-4.612e6/self.brho/0.05],['j9',-4.103e12/self.brho/0.05]]
|
|
self.ME['QSOS2B'] = [['j5',-4.612e6/self.brho/0.05],['j9',-4.103e12/self.brho/0.05]]
|
|
self.ME['QSOS2E'] = [['j5',-4.617e6/self.brho/0.05],['j9',-4.182e12/self.brho/0.05]]
|
|
self.ME['QSOS2F'] = [['j5',-4.617e6/self.brho/0.05],['j9',-4.182e12/self.brho/0.05]]
|
|
|
|
|
|
|
|
# k3 is static
|
|
self.ME['HS2A'] = [['k8',-1.189e12/self.brho/0.09]]
|
|
self.ME['HS2B'] = [['k8',-1.189e12/self.brho/0.09]]
|
|
#self.ME['HS2G'] = [['k8',-1.126e12/self.brho/S2.Type['HS2G']['L']]]
|
|
#self.ME['HS2H'] = [['k8',-1.126e12/self.brho/S2.Type['HS2H']['L']]]
|
|
#self.ME['HS2K'] = [['k8',-1.063e12/self.brho/S2.Type['HS2K']['L']]]
|
|
#self.ME['HS2L'] = [['k8',-1.063e12/self.brho/S2.Type['HS2L']['L']]]
|
|
#self.ME['HS2M'] = [['k8', -870.5e9/self.brho/S2.Type['HS2M']['L']]]
|
|
|
|
|
|
|
|
self.ME['HS2G'] = [['k3',540.0],['k8',-1.126e12/self.brho/0.08]]
|
|
self.ME['HS2H'] = [['k3',315.0],['k8',-1.126e12/self.brho/0.08]]
|
|
self.ME['HS2K'] = [['k3',315.0],['k8',-1.063e12/self.brho/0.08]]
|
|
self.ME['HS2L'] = [['k3',315.0],['k8',-1.063e12/self.brho/0.08]]
|
|
self.ME['HS2M'] = [['k3',315.0],['k8',-870.5e9/self.brho/0.08]]
|
|
|
|
|
|
self.ME['SXQ'] = [['k8',-712.9e9/self.brho/0.09]]
|
|
|
|
|
|
# Permanent magnets, experimental. 30.08.2022
|
|
self.ME['ANI'] = [['k2',0.3714/0.14],
|
|
['k3',13.884/0.14],
|
|
['k4',939.21/0.14],
|
|
['k5',-44425/0.14]]
|
|
self.ME['ANO'] = self.ME['ANI']
|
|
|
|
self.ME['ANMI'] = [['k2',0.072/0.15],
|
|
['k3',-28.72/0.15],
|
|
['k4',5563.4/0.15],
|
|
['k5',-341404/0.15]]
|
|
self.ME['ANMO'] = self.ME['ANMI']
|
|
|
|
self.ME['BEHI'] = [['k2',-0.3909/0.2287216],
|
|
['k3',5.5647/0.2287216],
|
|
['k4',-1273.8/0.2287216],
|
|
['k5',7580.6/0.2287216]]
|
|
self.ME['BEHO'] = self.ME['BEHI']
|
|
|
|
self.ME['BN'] = [['k2',-0.3010*2/0.405],
|
|
['k3',3.4507*2/0.405],
|
|
['k4',-484.29*2/0.405],
|
|
['k5',-8805.5*2/0.405]]
|
|
|
|
self.ME['VBI'] = [['k2',2.3935/0.185],
|
|
['k3',71.468/0.185],
|
|
['k4',183.93/0.185],
|
|
['k5',66049.5/0.185]]
|
|
self.ME['VBO'] = self.ME['VBI']
|
|
self.ME['VBXI'] = self.ME['VBI'] # No simulation available at the moment. 30.08.2022
|
|
self.ME['VBXO'] = self.ME['VBI']
|
|
|
|
self.ME['VEI'] = [['k2',-0.13577/0.24],
|
|
['k3',20.263/0.24],
|
|
['k4',-2990.5/0.24],
|
|
['k5',470512.2/0.24]]
|
|
self.ME['VEO'] = self.ME['VEI']
|
|
|
|
|
|
# Quad and Skew quad axeis shifts with respect to the paired sextupole axis
|
|
# [qx, qy, sqx, sqy] (mm)
|
|
self.OctShift={}
|
|
self.OctShift['ARS01-MOCT-1230']=[0.003, -0.008, 0.02, 0.009]
|
|
self.OctShift['ARS01-MOCT-1330']=[-0.004, 0.021, -0.002, 0.024]
|
|
self.OctShift['ARS01-MOCT-1440']=[-0.012, 0.004, -0.007, -0.001]
|
|
self.OctShift['ARS01-MOCT-1840']=[-0.005, 0.025, 0.007, 0.035]
|
|
self.OctShift['ARS01-MOCT-1950']=[-0.011, -0.001, -0.005, -0.002]
|
|
self.OctShift['ARS01-MOCT-2230']=[0.013, 0.037, 0.059, 0.038]
|
|
self.OctShift['ARS01-MOCT-2360']=[0.004, 0.011, 0.012, 0.018]
|
|
self.OctShift['ARS01-MOCT-2450']=[0.002, 0.02, 0.009, 0.019]
|
|
self.OctShift['ARS01-MOCT-2730']=[-0.001, 0.034, 0.015, 0.041]
|
|
self.OctShift['ARS01-MOCT-2860']=[-0.002, 0.034, 0.005, 0.032]
|
|
self.OctShift['ARS01-MOCT-2950']=[0.006, 0.017, 0.016, 0.014]
|
|
self.OctShift['ARS01-MOCT-4040']=[-0.015, -0.005, -0.005, 0.014]
|
|
self.OctShift['ARS01-MOCT-4130']=[-0.007, 0.043, -0.004, 0.033]
|
|
self.OctShift['ARS01-MOCT-4260']=[0.009, 0.022, 0.002, 0.026]
|
|
self.OctShift['ARS01-MOCT-4540']=[0.005, 0.002, 0.027, 0.009]
|
|
self.OctShift['ARS01-MOCT-4630']=[0.004, -0.003, 0.007, -0.002]
|
|
self.OctShift['ARS01-MOCT-4760']=[0.008, 0.006, 0.008, 0.0]
|
|
self.OctShift['ARS01-MOCT-5040']=[0.006, 0.039, 0.014, 0.045]
|
|
self.OctShift['ARS01-MOCT-5150']=[0.01, 0.015, 0.012, 0.015]
|
|
self.OctShift['ARS01-MOCT-5550']=[-0.006, 0.011, 0.001, 0.006]
|
|
self.OctShift['ARS01-MOCT-5660']=[0.012, -0.001, 0.028, -0.015]
|
|
self.OctShift['ARS01-MOCT-5760']=[0.007, 0.019, 0.014, 0.009]
|
|
self.OctShift['ARS02-MOCT-1230']=[-0.012, -0.001, 0.011, 0.018]
|
|
self.OctShift['ARS02-MOCT-1330']=[0.004, 0.023, -0.007, 0.018]
|
|
self.OctShift['ARS02-MOCT-1440']=[-0.005, 0.018, -0.002, 0.03]
|
|
self.OctShift['ARS02-MOCT-1840']=[0.006, 0.018, 0.001, 0.046]
|
|
self.OctShift['ARS02-MOCT-1950']=[-0.005, 0.03, -0.006, 0.033]
|
|
self.OctShift['ARS02-MOCT-2230']=[-0.012, -0.003, -0.019, -0.006]
|
|
self.OctShift['ARS02-MOCT-2360']=[-0.002, 0.025, 0.005, 0.026]
|
|
self.OctShift['ARS02-MOCT-2450']=[0.011, 0.013, -0.001, 0.001]
|
|
self.OctShift['ARS02-MOCT-2730']=[-0.007, 0.01, -0.016, 0.027]
|
|
self.OctShift['ARS02-MOCT-2860']=[0.013, -0.004, 0.007, 0.006]
|
|
self.OctShift['ARS02-MOCT-2950']=[-0.012, 0.022, -0.024, 0.029]
|
|
self.OctShift['ARS02-MOCT-4040']=[-0.01, 0.001, 0.002, -0.003]
|
|
self.OctShift['ARS02-MOCT-4130']=[-0.008, 0.014, -0.012, -0.009]
|
|
self.OctShift['ARS02-MOCT-4260']=[-0.007, 0.015, -0.024, 0.027]
|
|
self.OctShift['ARS02-MOCT-4540']=[-0.004, 0.003, -0.014, -0.003]
|
|
self.OctShift['ARS02-MOCT-4630']=[0.007, 0.029, 0.03, 0.03]
|
|
self.OctShift['ARS02-MOCT-4760']=[-0.006, 0.015, 0.011, 0.0]
|
|
self.OctShift['ARS02-MOCT-5040']=[-0.001, 0.012, 0.0, 0.015]
|
|
self.OctShift['ARS02-MOCT-5150']=[-0.002, 0.009, -0.019, 0.004]
|
|
self.OctShift['ARS02-MOCT-5550']=[0.005, -0.007, -0.01, 0.012]
|
|
self.OctShift['ARS02-MOCT-5660']=[-0.012, -0.013, -0.017, -0.012]
|
|
self.OctShift['ARS02-MOCT-5760']=[0.014, 0.001, 0.007, 0.006]
|
|
self.OctShift['ARS03-MOCT-1230']=[0.013, -0.026, 0.004, -0.027]
|
|
self.OctShift['ARS03-MOCT-1330']=[-0.004, 0.01, -0.006, 0.019]
|
|
self.OctShift['ARS03-MOCT-1440']=[-0.012, 0.004, -0.01, 0.019]
|
|
self.OctShift['ARS03-MOCT-1840']=[-0.002, 0.023, 0.004, 0.03]
|
|
self.OctShift['ARS03-MOCT-1950']=[-0.002, 0.026, -0.012, 0.018]
|
|
self.OctShift['ARS03-MOCT-2230']=[-0.001, -0.001, 0.012, -0.0]
|
|
self.OctShift['ARS03-MOCT-2360']=[0.007, -0.001, -0.003, -0.011]
|
|
self.OctShift['ARS03-MOCT-2450']=[0.004, 0.016, 0.003, 0.016]
|
|
self.OctShift['ARS03-MOCT-2730']=[-0.01, 0.009, 0.002, 0.028]
|
|
self.OctShift['ARS03-MOCT-2860']=[-0.003, -0.009, -0.004, -0.009]
|
|
self.OctShift['ARS03-MOCT-2950']=[-0.013, 0.014, -0.015, 0.031]
|
|
self.OctShift['ARS03-MOCT-4040']=[0.007, 0.015, 0.0, 0.028]
|
|
self.OctShift['ARS03-MOCT-4130']=[0.011, -0.019, 0.013, -0.002]
|
|
self.OctShift['ARS03-MOCT-4260']=[0.001, 0.041, 0.016, 0.078]
|
|
self.OctShift['ARS03-MOCT-4540']=[-0.014, 0.04, -0.028, 0.049]
|
|
self.OctShift['ARS03-MOCT-4630']=[0.009, 0.006, 0.02, 0.011]
|
|
self.OctShift['ARS03-MOCT-4760']=[0.009, 0.022, -0.002, 0.02]
|
|
self.OctShift['ARS03-MOCT-5040']=[0.002, -0.013, 0.013, -0.026]
|
|
self.OctShift['ARS03-MOCT-5150']=[0.001, 0.023, -0.005, 0.018]
|
|
self.OctShift['ARS03-MOCT-5550']=[0.011, 0.011, 0.008, 0.017]
|
|
self.OctShift['ARS03-MOCT-5660']=[0.003, 0.038, 0.017, 0.052]
|
|
self.OctShift['ARS03-MOCT-5760']=[0.002, -0.007, -0.006, -0.015]
|
|
self.OctShift['ARS04-MOCT-1230']=[0.005, 0.01, 0.012, 0.0]
|
|
self.OctShift['ARS04-MOCT-1330']=[0.006, -0.007, 0.005, 0.001]
|
|
self.OctShift['ARS04-MOCT-1440']=[-0.005, -0.019, 0.007, -0.03]
|
|
self.OctShift['ARS04-MOCT-1840']=[-0.007, 0.003, 0.014, 0.019]
|
|
self.OctShift['ARS04-MOCT-1950']=[0.011, 0.021, 0.007, 0.027]
|
|
self.OctShift['ARS04-MOCT-2230']=[-0.004, 0.024, -0.026, 0.037]
|
|
self.OctShift['ARS04-MOCT-2360']=[-0.011, -0.016, -0.016, -0.026]
|
|
self.OctShift['ARS04-MOCT-2450']=[-0.006, -0.008, -0.008, 0.0]
|
|
self.OctShift['ARS04-MOCT-2730']=[0.011, 0.041, 0.012, 0.038]
|
|
self.OctShift['ARS04-MOCT-2860']=[-0.001, 0.016, 0.005, 0.017]
|
|
self.OctShift['ARS04-MOCT-2950']=[0.008, 0.02, 0.008, 0.009]
|
|
self.OctShift['ARS04-MOCT-4040']=[0.015, 0.02, 0.006, 0.021]
|
|
self.OctShift['ARS04-MOCT-4130']=[-0.013, 0.015, -0.023, 0.008]
|
|
self.OctShift['ARS04-MOCT-4260']=[0.01, 0.026, 0.011, 0.044]
|
|
self.OctShift['ARS04-MOCT-4540']=[-0.006, 0.012, 0.012, 0.014]
|
|
self.OctShift['ARS04-MOCT-4630']=[0.008, 0.014, 0.019, 0.034]
|
|
self.OctShift['ARS04-MOCT-4760']=[0.002, 0.035, 0.004, 0.038]
|
|
self.OctShift['ARS04-MOCT-5040']=[0.003, -0.009, 0.017, -0.01]
|
|
self.OctShift['ARS04-MOCT-5150']=[0.004, 0.014, -0.005, 0.008]
|
|
self.OctShift['ARS04-MOCT-5550']=[-0.009, 0.029, -0.01, 0.037]
|
|
self.OctShift['ARS04-MOCT-5660']=[-0.012, 0.029, -0.003, 0.023]
|
|
self.OctShift['ARS04-MOCT-5760']=[0.006, 0.008, 0.005, 0.011]
|
|
self.OctShift['ARS05-MOCT-1230']=[-0.013, 0.001, -0.013, -0.006]
|
|
self.OctShift['ARS05-MOCT-1330']=[-0.002, 0.011, -0.018, 0.001]
|
|
self.OctShift['ARS05-MOCT-1440']=[-0.01, 0.034, -0.013, 0.048]
|
|
self.OctShift['ARS05-MOCT-1840']=[0.004, 0.028, -0.002, 0.038]
|
|
self.OctShift['ARS05-MOCT-1950']=[-0.0, 0.02, 0.015, 0.041]
|
|
self.OctShift['ARS05-MOCT-2230']=[-0.013, -0.006, -0.014, -0.002]
|
|
self.OctShift['ARS05-MOCT-2360']=[0.011, 0.021, 0.013, 0.021]
|
|
self.OctShift['ARS05-MOCT-2450']=[-0.004, 0.037, 0.003, 0.035]
|
|
self.OctShift['ARS05-MOCT-2730']=[0.003, -0.0, 0.014, 0.013]
|
|
self.OctShift['ARS05-MOCT-2860']=[0.01, 0.029, 0.014, 0.028]
|
|
self.OctShift['ARS05-MOCT-2950']=[0.01, 0.024, 0.006, 0.023]
|
|
self.OctShift['ARS05-MOCT-4040']=[-0.001, -0.019, -0.015, -0.009]
|
|
self.OctShift['ARS05-MOCT-4130']=[0.012, 0.002, 0.026, 0.003]
|
|
self.OctShift['ARS05-MOCT-4260']=[0.0, 0.018, 0.011, 0.02]
|
|
self.OctShift['ARS05-MOCT-4540']=[-0.001, 0.029, -0.009, 0.027]
|
|
self.OctShift['ARS05-MOCT-4630']=[-0.005, 0.014, 0.009, 0.006]
|
|
self.OctShift['ARS05-MOCT-4760']=[0.003, 0.004, -0.008, 0.027]
|
|
self.OctShift['ARS05-MOCT-5040']=[-0.0, 0.012, 0.002, 0.021]
|
|
self.OctShift['ARS05-MOCT-5150']=[-0.006, 0.005, 0.003, 0.006]
|
|
self.OctShift['ARS05-MOCT-5550']=[0.008, 0.001, 0.008, -0.002]
|
|
self.OctShift['ARS05-MOCT-5660']=[0.002, 0.002, 0.001, 0.016]
|
|
self.OctShift['ARS05-MOCT-5760']=[0.006, 0.019, 0.017, 0.033]
|
|
self.OctShift['ARS06-MOCT-1230']=[0.006, -0.007, 0.001, 0.001]
|
|
self.OctShift['ARS06-MOCT-1330']=[0.005, 0.027, 0.0, 0.018]
|
|
self.OctShift['ARS06-MOCT-1440']=[0.0, 0.016, -0.013, 0.018]
|
|
self.OctShift['ARS06-MOCT-1840']=[0.008, 0.007, 0.011, 0.016]
|
|
self.OctShift['ARS06-MOCT-1950']=[0.004, 0.014, -0.009, 0.033]
|
|
self.OctShift['ARS06-MOCT-2230']=[0.004, 0.008, -0.011, -0.0]
|
|
self.OctShift['ARS06-MOCT-2360']=[0.004, 0.001, 0.02, 0.007]
|
|
self.OctShift['ARS06-MOCT-2450']=[0.005, 0.041, 0.002, 0.04]
|
|
self.OctShift['ARS06-MOCT-2730']=[-0.008, 0.024, 0.009, 0.041]
|
|
self.OctShift['ARS06-MOCT-2860']=[-0.01, 0.024, -0.019, 0.028]
|
|
self.OctShift['ARS06-MOCT-2950']=[-0.006, 0.022, 0.005, 0.024]
|
|
self.OctShift['ARS06-MOCT-4040']=[0.003, -0.008, -0.001, 0.002]
|
|
self.OctShift['ARS06-MOCT-4130']=[0.003, 0.028, -0.018, 0.055]
|
|
self.OctShift['ARS06-MOCT-4260']=[-0.013, 0.007, -0.026, -0.0]
|
|
self.OctShift['ARS06-MOCT-4540']=[-0.005, 0.004, -0.007, 0.006]
|
|
self.OctShift['ARS06-MOCT-4630']=[0.004, 0.037, 0.004, 0.063]
|
|
self.OctShift['ARS06-MOCT-4760']=[-0.0, 0.044, -0.006, 0.043]
|
|
self.OctShift['ARS06-MOCT-5040']=[0.012, 0.019, 0.008, 0.032]
|
|
self.OctShift['ARS06-MOCT-5150']=[0.002, 0.011, 0.002, 0.009]
|
|
self.OctShift['ARS06-MOCT-5550']=[0.013, 0.022, -0.0, 0.03]
|
|
self.OctShift['ARS06-MOCT-5660']=[0.008, 0.019, 0.014, 0.037]
|
|
self.OctShift['ARS06-MOCT-5760']=[0.013, 0.028, -0.0, 0.035]
|
|
self.OctShift['ARS07-MOCT-1230']=[0.003, 0.012, 0.009, 0.013]
|
|
self.OctShift['ARS07-MOCT-1330']=[-0.007, 0.001, 0.003, 0.003]
|
|
self.OctShift['ARS07-MOCT-1440']=[0.009, 0.01, 0.014, 0.015]
|
|
self.OctShift['ARS07-MOCT-1840']=[-0.001, 0.009, -0.004, 0.017]
|
|
self.OctShift['ARS07-MOCT-1950']=[-0.005, 0.032, 0.004, 0.026]
|
|
self.OctShift['ARS07-MOCT-2230']=[0.013, -0.004, 0.01, 0.004]
|
|
self.OctShift['ARS07-MOCT-2360']=[-0.009, 0.023, -0.019, 0.023]
|
|
self.OctShift['ARS07-MOCT-2450']=[-0.011, 0.016, -0.013, 0.019]
|
|
self.OctShift['ARS07-MOCT-2730']=[0.003, 0.034, 0.0, 0.035]
|
|
self.OctShift['ARS07-MOCT-2860']=[0.003, 0.024, 0.003, 0.022]
|
|
self.OctShift['ARS07-MOCT-2950']=[-0.012, 0.031, -0.003, 0.106]
|
|
self.OctShift['ARS07-MOCT-4040']=[0.0, 0.01, -0.002, 0.013]
|
|
self.OctShift['ARS07-MOCT-4130']=[0.0, 0.005, -0.013, 0.009]
|
|
self.OctShift['ARS07-MOCT-4260']=[-0.002, 0.04, 0.004, 0.052]
|
|
self.OctShift['ARS07-MOCT-4540']=[0.011, -0.009, -0.004, 0.009]
|
|
self.OctShift['ARS07-MOCT-4630']=[-0.004, 0.012, -0.009, 0.019]
|
|
self.OctShift['ARS07-MOCT-4760']=[-0.001, 0.016, -0.011, 0.021]
|
|
self.OctShift['ARS07-MOCT-5040']=[0.008, 0.01, -0.003, 0.003]
|
|
self.OctShift['ARS07-MOCT-5150']=[-0.011, 0.02, -0.002, 0.023]
|
|
self.OctShift['ARS07-MOCT-5550']=[-0.007, 0.023, 0.001, 0.024]
|
|
self.OctShift['ARS07-MOCT-5660']=[-0.014, 0.021, -0.02, 0.023]
|
|
self.OctShift['ARS07-MOCT-5760']=[-0.007, 0.013, -0.006, 0.012]
|
|
self.OctShift['ARS08-MOCT-1230']=[0.011, 0.012, 0.008, 0.049]
|
|
self.OctShift['ARS08-MOCT-1330']=[-0.001, -0.007, -0.007, -0.009]
|
|
self.OctShift['ARS08-MOCT-1440']=[-0.008, 0.001, 0.005, -0.006]
|
|
self.OctShift['ARS08-MOCT-1840']=[-0.005, -0.003, -0.007, 0.013]
|
|
self.OctShift['ARS08-MOCT-1950']=[0.007, 0.011, 0.011, 0.001]
|
|
self.OctShift['ARS08-MOCT-2230']=[-0.007, -0.005, 0.002, -0.011]
|
|
self.OctShift['ARS08-MOCT-2360']=[0.0, -0.007, -0.009, -0.007]
|
|
self.OctShift['ARS08-MOCT-2450']=[-0.004, 0.012, -0.007, 0.03]
|
|
self.OctShift['ARS08-MOCT-2730']=[0.011, 0.022, 0.015, 0.036]
|
|
self.OctShift['ARS08-MOCT-2860']=[-0.006, 0.012, -0.006, 0.013]
|
|
self.OctShift['ARS08-MOCT-2950']=[0.002, 0.006, 0.001, 0.017]
|
|
self.OctShift['ARS08-MOCT-4040']=[-0.002, 0.018, -0.008, 0.039]
|
|
self.OctShift['ARS08-MOCT-4130']=[-0.002, 0.041, -0.012, 0.041]
|
|
self.OctShift['ARS08-MOCT-4260']=[-0.011, 0.013, -0.022, 0.013]
|
|
self.OctShift['ARS08-MOCT-4540']=[-0.008, -0.002, -0.016, -0.004]
|
|
self.OctShift['ARS08-MOCT-4630']=[-0.01, -0.01, -0.006, -0.014]
|
|
self.OctShift['ARS08-MOCT-4760']=[0.012, 0.021, 0.01, 0.018]
|
|
self.OctShift['ARS08-MOCT-5040']=[0.01, 0.018, 0.02, 0.008]
|
|
self.OctShift['ARS08-MOCT-5150']=[-0.002, 0.003, -0.005, 0.014]
|
|
self.OctShift['ARS08-MOCT-5550']=[0.011, 0.001, 0.007, 0.005]
|
|
self.OctShift['ARS08-MOCT-5660']=[-0.0, 0.037, 0.004, 0.036]
|
|
self.OctShift['ARS08-MOCT-5760']=[-0.008, 0.007, -0.02, 0.017]
|
|
self.OctShift['ARS09-MOCT-1230']=[-0.005, -0.01, 0.0, -0.002]
|
|
self.OctShift['ARS09-MOCT-1330']=[-0.008, -0.028, 0.011, -0.01]
|
|
self.OctShift['ARS09-MOCT-1440']=[-0.007, 0.001, -0.015, 0.007]
|
|
self.OctShift['ARS09-MOCT-1840']=[-0.003, 0.04, -0.01, 0.039]
|
|
self.OctShift['ARS09-MOCT-1950']=[0.006, 0.007, -0.002, 0.025]
|
|
self.OctShift['ARS09-MOCT-2230']=[-0.003, -0.005, -0.008, 0.001]
|
|
self.OctShift['ARS09-MOCT-2360']=[0.01, 0.03, 0.016, 0.043]
|
|
self.OctShift['ARS09-MOCT-2450']=[-0.002, 0.018, 0.001, 0.005]
|
|
self.OctShift['ARS09-MOCT-2730']=[0.01, -0.008, 0.009, -0.004]
|
|
self.OctShift['ARS09-MOCT-2860']=[-0.005, 0.024, -0.008, 0.022]
|
|
self.OctShift['ARS09-MOCT-2950']=[-0.002, 0.004, 0.0, 0.008]
|
|
self.OctShift['ARS09-MOCT-4040']=[0.002, -0.0, 0.019, -0.011]
|
|
self.OctShift['ARS09-MOCT-4130']=[0.001, 0.006, 0.011, 0.003]
|
|
self.OctShift['ARS09-MOCT-4260']=[0.004, -0.015, -0.003, -0.009]
|
|
self.OctShift['ARS09-MOCT-4540']=[-0.007, 0.008, 0.001, 0.022]
|
|
self.OctShift['ARS09-MOCT-4630']=[0.015, -0.023, 0.015, -0.013]
|
|
self.OctShift['ARS09-MOCT-4760']=[-0.003, -0.002, 0.013, 0.004]
|
|
self.OctShift['ARS09-MOCT-5040']=[-0.002, 0.005, -0.007, 0.009]
|
|
self.OctShift['ARS09-MOCT-5150']=[0.005, 0.03, -0.004, 0.036]
|
|
self.OctShift['ARS09-MOCT-5550']=[0.002, -0.003, 0.0, -0.006]
|
|
self.OctShift['ARS09-MOCT-5660']=[0.012, 0.002, 0.007, -0.016]
|
|
self.OctShift['ARS09-MOCT-5760']=[-0.009, 0.029, -0.022, 0.051]
|
|
self.OctShift['ARS10-MOCT-1230']=[0.0, 0.039, 0.005, 0.033]
|
|
self.OctShift['ARS10-MOCT-1330']=[0.002, 0.015, 0.002, 0.009]
|
|
self.OctShift['ARS10-MOCT-1440']=[0.005, 0.021, -0.006, 0.037]
|
|
self.OctShift['ARS10-MOCT-1840']=[-0.009, 0.001, -0.017, 0.015]
|
|
self.OctShift['ARS10-MOCT-1950']=[0.01, 0.018, -0.007, 0.033]
|
|
self.OctShift['ARS10-MOCT-2230']=[0.001, -0.005, 0.002, -0.007]
|
|
self.OctShift['ARS10-MOCT-2360']=[0.002, 0.013, 0.003, 0.02]
|
|
self.OctShift['ARS10-MOCT-2450']=[-0.001, 0.027, 0.001, 0.028]
|
|
self.OctShift['ARS10-MOCT-2730']=[0.011, -0.005, 0.009, -0.0]
|
|
self.OctShift['ARS10-MOCT-2860']=[0.005, 0.018, 0.005, 0.019]
|
|
self.OctShift['ARS10-MOCT-2950']=[-0.011, -0.001, -0.023, 0.003]
|
|
self.OctShift['ARS10-MOCT-4040']=[-0.011, 0.03, 0.004, 0.035]
|
|
self.OctShift['ARS10-MOCT-4130']=[-0.002, -0.002, 0.003, 0.007]
|
|
self.OctShift['ARS10-MOCT-4260']=[0.001, 0.011, 0.004, 0.01]
|
|
self.OctShift['ARS10-MOCT-4540']=[0.003, 0.027, 0.004, 0.041]
|
|
self.OctShift['ARS10-MOCT-4630']=[0.015, 0.007, 0.013, 0.01]
|
|
self.OctShift['ARS10-MOCT-4760']=[0.002, 0.02, 0.006, 0.031]
|
|
self.OctShift['ARS10-MOCT-5040']=[0.014, 0.005, 0.009, -0.002]
|
|
self.OctShift['ARS10-MOCT-5150']=[-0.008, 0.025, -0.004, 0.023]
|
|
self.OctShift['ARS10-MOCT-5550']=[-0.014, 0.016, -0.016, 0.025]
|
|
self.OctShift['ARS10-MOCT-5660']=[0.007, 0.025, 0.006, 0.024]
|
|
self.OctShift['ARS10-MOCT-5760']=[-0.011, 0.003, -0.028, -0.007]
|
|
self.OctShift['ARS11-MOCT-1230']=[-0.002, 0.022, -0.003, 0.021]
|
|
self.OctShift['ARS11-MOCT-1330']=[0.001, 0.024, 0.007, 0.017]
|
|
self.OctShift['ARS11-MOCT-1440']=[-0.006, 0.006, -0.011, 0.0]
|
|
self.OctShift['ARS11-MOCT-1840']=[-0.007, 0.002, 0.014, 0.018]
|
|
self.OctShift['ARS11-MOCT-1950']=[-0.01, 0.031, 0.011, 0.037]
|
|
self.OctShift['ARS11-MOCT-2230']=[0.004, 0.028, 0.004, 0.033]
|
|
self.OctShift['ARS11-MOCT-2360']=[-0.003, 0.01, 0.002, 0.018]
|
|
self.OctShift['ARS11-MOCT-2450']=[0.002, 0.02, -0.008, 0.04]
|
|
self.OctShift['ARS11-MOCT-2730']=[-0.009, 0.013, -0.008, 0.036]
|
|
self.OctShift['ARS11-MOCT-2860']=[0.002, 0.01, -0.004, 0.001]
|
|
self.OctShift['ARS11-MOCT-2950']=[0.002, -0.007, -0.006, -0.008]
|
|
self.OctShift['ARS11-MOCT-4040']=[0.004, 0.01, -0.003, 0.007]
|
|
self.OctShift['ARS11-MOCT-4130']=[0.001, 0.012, 0.012, 0.011]
|
|
self.OctShift['ARS11-MOCT-4260']=[0.01, 0.022, 0.008, 0.03]
|
|
self.OctShift['ARS11-MOCT-4540']=[0.007, 0.011, 0.007, -0.0]
|
|
self.OctShift['ARS11-MOCT-4630']=[-0.005, 0.03, -0.003, 0.026]
|
|
self.OctShift['ARS11-MOCT-4760']=[0.003, 0.032, 0.003, 0.025]
|
|
self.OctShift['ARS11-MOCT-5040']=[0.004, -0.01, 0.011, -0.01]
|
|
self.OctShift['ARS11-MOCT-5150']=[-0.011, 0.01, -0.003, 0.004]
|
|
self.OctShift['ARS11-MOCT-5550']=[0.002, 0.02, -0.004, 0.015]
|
|
self.OctShift['ARS11-MOCT-5660']=[0.002, 0.01, 0.018, 0.004]
|
|
self.OctShift['ARS11-MOCT-5760']=[-0.006, 0.001, -0.01, 0.005]
|
|
self.OctShift['ARS12-MOCT-1230']=[-0.013, 0.033, 0.0, 0.041]
|
|
self.OctShift['ARS12-MOCT-1330']=[0.006, 0.023, -0.0, 0.023]
|
|
self.OctShift['ARS12-MOCT-1440']=[0.015, 0.026, 0.021, 0.032]
|
|
self.OctShift['ARS12-MOCT-1840']=[-0.008, 0.001, -0.014, -0.012]
|
|
self.OctShift['ARS12-MOCT-1950']=[-0.003, 0.04, 0.003, 0.042]
|
|
self.OctShift['ARS12-MOCT-2230']=[0.008, -0.008, 0.033, 0.009]
|
|
self.OctShift['ARS12-MOCT-2360']=[0.001, -0.014, -0.009, -0.002]
|
|
self.OctShift['ARS12-MOCT-2450']=[-0.01, 0.032, -0.005, 0.043]
|
|
self.OctShift['ARS12-MOCT-2730']=[-0.009, 0.016, 0.007, 0.023]
|
|
self.OctShift['ARS12-MOCT-2860']=[0.004, 0.02, 0.0, 0.009]
|
|
self.OctShift['ARS12-MOCT-2950']=[0.002, 0.009, 0.001, 0.014]
|
|
self.OctShift['ARS12-MOCT-4040']=[0.013, -0.01, 0.02, 0.005]
|
|
self.OctShift['ARS12-MOCT-4130']=[0.006, 0.028, -0.009, 0.022]
|
|
self.OctShift['ARS12-MOCT-4260']=[0.002, 0.033, -0.005, 0.033]
|
|
self.OctShift['ARS12-MOCT-4540']=[-0.005, 0.028, -0.015, 0.028]
|
|
self.OctShift['ARS12-MOCT-4630']=[0.007, 0.03, 0.011, 0.025]
|
|
self.OctShift['ARS12-MOCT-4760']=[-0.012, 0.01, 0.002, 0.013]
|
|
self.OctShift['ARS12-MOCT-5040']=[0.003, -0.005, -0.005, 0.008]
|
|
self.OctShift['ARS12-MOCT-5150']=[-0.003, 0.035, -0.005, 0.034]
|
|
self.OctShift['ARS12-MOCT-5550']=[-0.004, 0.024, -0.005, 0.027]
|
|
self.OctShift['ARS12-MOCT-5660']=[0.006, 0.012, 0.017, 0.021]
|
|
self.OctShift['ARS12-MOCT-5760']=[0.008, 0.017, 0.022, 0.027]
|
|
|
|
|
|
|
|
def KL2I(self, TYPE, KL, CrossTalk=None):
|
|
|
|
def Single(TYPE,KL):
|
|
# TYPE can be NAME of the magnet, for example, 'ARSnn-MQUA-iiii'
|
|
# KL is integrated field in European notation (OPA, tracy)
|
|
|
|
if TYPE[-1]=='I' or TYPE[-1]=='O':
|
|
TYPE=TYPE.replace('I','').replace('O','')
|
|
|
|
|
|
if TYPE not in self.TF.keys():
|
|
warnings.warn('Transfer function for '+TYPE+' is not found...')
|
|
return None
|
|
|
|
|
|
[HEL,ML,Imax,Ilin,b0,b1,b2,b3,R]=self.TF[TYPE]
|
|
|
|
|
|
|
|
# Copied from SwissFEL OM. Need to check
|
|
G = self.brho*KL/ML
|
|
|
|
I=Imax*(abs(G)*R -b0)/b1
|
|
|
|
if abs(I)>Imax:
|
|
warnings.warn('Warning: In OMSLS2Magnet.KL2I, the given KL resulted in I>Imax, and thus Imax is returned.')
|
|
return np.sign(KL)*Imax
|
|
|
|
|
|
if abs(I)>Ilin:
|
|
#coeff=[b3/(Imax-Ilin)**3,b2/(Imax-Ilin)**2,b1/Imax,b0-G*R+b1*Ilin/Imax]
|
|
#I=KL/abs(KL)*(np.roots(coeff)[0]+Ilin)
|
|
coeff=[b3/(Imax-Ilin)**3,b2/(Imax-Ilin)**2,b1/Imax,b0-(abs(G)*R-b1*Ilin/Imax)]
|
|
rt=np.roots(coeff)
|
|
if len(rt)==1:
|
|
rt=rt[0]
|
|
else:
|
|
rtind=np.argmin(np.abs(np.abs(rt)-(abs(I)-Ilin)))
|
|
rt=abs(rt[rtind])
|
|
I=(rt+Ilin)
|
|
|
|
|
|
if not b0:
|
|
I=np.sign(KL)*I
|
|
|
|
|
|
if CrossTalk:
|
|
Gct = self.brho*self.TF0[CrossTalk]/ML
|
|
Ict=Imax*(Gct*R -b0)/b1
|
|
I=I-Ict
|
|
|
|
|
|
|
|
return I
|
|
|
|
|
|
if type(KL)==list or type(KL)==np.ndarray:
|
|
return [Single(TYPE,kl) for kl in KL]
|
|
else:
|
|
return Single(TYPE,KL)
|
|
|
|
|
|
|
|
def I2KL(self, TYPE, I, CrossTalk=None):
|
|
|
|
def Single(TYPE,I):
|
|
|
|
|
|
|
|
if TYPE[-1]=='I' or TYPE[-1]=='O':
|
|
TYPE=TYPE.replace('I','').replace('O','')
|
|
|
|
|
|
if TYPE not in self.TF.keys():
|
|
warnings.warn('Transfer function for '+TYPE+' is not found...')
|
|
return None
|
|
|
|
|
|
[HEL,ML,Imax,Ilin,b0,b1,b2,b3,R]=self.TF[TYPE]
|
|
|
|
if CrossTalk:
|
|
#KL=KL+self.TF0[CrossTalk]
|
|
|
|
Gct = self.brho*self.TF0[CrossTalk]/ML
|
|
Ict=Imax*(Gct*R -b0)/b1
|
|
I=I+Ict
|
|
|
|
|
|
|
|
|
|
if abs(I)>Imax:
|
|
warnings.warn('Warning: In OMSLS2Magnet.I2KL, the given I is >Imax, and thus KL at Imax is returned.')
|
|
|
|
I=np.sign(I)*Imax
|
|
|
|
|
|
if abs(I)<=Ilin:
|
|
G = (b0 + b1*abs(I)/Imax)/R
|
|
else:
|
|
G = (b0 + b1*abs(I)/Imax + b2*((abs(I)-Ilin)**2/(Imax-Ilin)**2) + b3*((abs(I)-Ilin)**3/(Imax-Ilin)**3))/R
|
|
if I==0:
|
|
K = G/self.brho
|
|
else:
|
|
K = np.sign(I)*G/self.brho
|
|
KL = K*ML
|
|
|
|
|
|
|
|
|
|
return KL
|
|
|
|
|
|
if type(I)==list or type(I)==np.ndarray:
|
|
return [Single(TYPE,i) for i in I]
|
|
else:
|
|
return Single(TYPE,I)
|
|
|
|
|
|
|
|
|