/ATF2/FlightSim/latticeFiles/src/v4/get_ATF2_sexts_I.m
http://atf2flightsim.googlecode.com/ · MATLAB · 143 lines · 85 code · 19 blank · 39 comment · 7 complexity · 00e646e4ed80ad024a7d26daf2881fb4 MD5 · raw file
- function [Isext,GL]=get_ATF2_sexts_I(KL,energy,fflag)
- %
- % [Isext,GL]=get_ATF2_sexts_I(KL,energy,fflag);
- %
- % Compute ATF2 sext currents from KLs and beam energy
- %
- % INPUTS:
- %
- % KL = sext KLs (1/m^2) [5 element array]
- % energy = beam energy (GeV)
- % fflag = (optional) if present and zero, fudge factors will not be used
- %
- % The order of sextupole currents must be:
- %
- % SF6FF,SF5FF,SD4FF,SF1FF,SD1FF
- %
- % OUTPUTS:
- %
- % Isext = ATF2 sext currents (amps)
- % GL = integrated sext strengths (kG/m)
- Nsext=5;
- % check input args
- if (nargin<2)
- error('At least 2 input arguments required')
- end
- if (length(KL)~=Nsext)
- error('Incorrect KL length')
- end
- if (energy<=0)
- error('Bad energy value')
- end
- if (nargin==2)
- fudge=1;
- else
- fudge=(fflag~=0);
- end
- % ==============================================================================
- %
- % ATF2 SEXTUPOLE MAGNET DATA
- %
- % ==============================================================================
- % there are 2 types of ATF2 sextupole:
- % 1 = 1.625SX3.53 (SLC)
- % 2 = 2.13S3.00 (FFTB)
- r0=[0.020638;0.02705]; % poletip radius (m)
- sleff=[0.32834*0.3048;0.1]; % effective length (m)
- % MMS data for sext types (I is amp, B is T @ r0)
- % (from: SLC FF "SX3" polynomials
- % ATF$MAG:MAG_KI_S_SLAC_213.FOR)
- Nmms=[6;21];
- sI=[ ...
- 0.0, 0.0; ...
- 10.0, 0.5; ...
- 20.0, 1.0; ...
- 30.0, 1.5; ...
- 40.0, 2.0; ...
- 50.0, 2.5; ...
- 0 , 3.0; ...
- 0 , 3.5; ...
- 0 , 4.0; ...
- 0 , 4.5; ...
- 0 , 5.0; ...
- 0 , 5.5; ...
- 0 , 6.0; ...
- 0 , 6.5; ...
- 0 , 7.0; ...
- 0 , 7.5; ...
- 0 , 8.0; ...
- 0 , 8.5; ...
- 0 , 9.0; ...
- 0 , 9.5; ...
- 0 ,10.0; ...
- ];
-
- sB=[ ...
- 0.000000,0.000000; ...
- 0.051997,0.004694; ...
- 0.100725,0.010154; ...
- 0.149881,0.015612; ...
- 0.199296,0.021068; ...
- 0.248563,0.026522; ...
- 0 ,0.031973; ...
- 0 ,0.037422; ...
- 0 ,0.042868; ...
- 0 ,0.048312; ...
- 0 ,0.053753; ...
- 0 ,0.059190; ...
- 0 ,0.064624; ...
- 0 ,0.070054; ...
- 0 ,0.075480; ...
- 0 ,0.080900; ...
- 0 ,0.086314; ...
- 0 ,0.091722; ...
- 0 ,0.097121; ...
- 0 ,0.102511; ...
- 0 ,0.107890; ...
- ];
-
- % sextupole types and polarities
- stype=[1,1,1,2,2];
- ssgn=[+1,-1,+1,-1,+1];
- % "Kubo" fudge factors
- % (none defined at this time ... )
- sfudge=zeros(Nsext,1);
- % ==============================================================================
- % compute rigidity
- Cb=1e10/2.99792458e8; % kG-m/GeV
- brho=Cb*energy;
- % compute sextupole strengths
- % (NOTE: polynomial evaluation is not presently used to convert current
- % to gradient ... linear interpolation of MMS data is used)
- GL=zeros(Nsext,1);
- Isext=zeros(Nsext,1);
- for n=1:Nsext
- if (KL(n)==0)
- GL(n)=0;
- Isext(n)=0;
- else
- GL(n)=brho*KL(n); % kG/m
- nt=stype(n);
- B=0.5*brho*KL(n)*r0(nt)^2/sleff(nt); % kG
- B=0.1*B; % T
- if (fudge),B=B*(1+sfudge(n));end % apply the fudge factor
- Isext(n)=interp1(sB(1:Nmms(nt),nt),sI(1:Nmms(nt),nt),abs(B),'linear');
- end
- end