function varargout = Ring6GeVAB(K1,AntiB,LA,MB,BLen,DLen)
%%%% parameters
if 0
K1=[3.1846 -3.1943 -2.7480 2.7482 2.4617 -1.7087 2.9818 ...
3.6102 0 -0.1129 -1.5851 -1.7727];
AntiB=[-0.0020 -0.0061];
LA=[0.5303 5.9419 0.6043];
MB=[1.2000 1.1000 1.0000 0.8000];
BLen=[1.8000 1.8000 1.0000 0.8000];
DLen=[0 0 0 0];
end
Energy=6.0*10^9;
%%Standard Cell
DS0H =atdrift('DS0H', (2.96+DLen(4))/5 ,'DriftPass');
DS0={DS0H DS0H DS0H DS0H DS0H }';
DS1 =atdrift('DS1', 0.28 ,'DriftPass');
DS2 =atdrift('DS2', 0.14 ,'DriftPass');
DB1 =atdrift('DB1', 0.12 ,'DriftPass');
DB2 =atdrift('DB2', 0.12 ,'DriftPass');
DB3 =atdrift('DB3', 0.43+DLen(1) ,'DriftPass');
DB4 =atdrift('DB4', 0.12 ,'DriftPass');
DB5 =atdrift('DB5', 0.12 ,'DriftPass');
DB6 =atdrift('DB6', 0.43+DLen(1) ,'DriftPass');
DB7 =atdrift('DB7', 0.12 ,'DriftPass');
DB8 =atdrift('DB8', 0.12 ,'DriftPass');
DA1 =atdrift('DA1', 0.12+DLen(2) ,'DriftPass');
DA2 =atdrift('DA2', 0.20,'DriftPass');
DA3 =atdrift('DA3', 0.14,'DriftPass');
DA4 =atdrift('DA4', 0.28+DLen(3),'DriftPass');
KQ=K1(1:8);
QS1=atquadrupole('QS1' , 0.30 ,KQ(1),'StrMPoleSymplectic4RadPass');
QS2=atquadrupole('QS2' , 0.20 ,KQ(2),'StrMPoleSymplectic4RadPass');
QB1=atquadrupole('QB1' , 0.20 ,KQ(3),'StrMPoleSymplectic4RadPass');
QB2=atquadrupole('QB2' , 0.20 ,KQ(4),'StrMPoleSymplectic4RadPass');
QB3=atquadrupole('QB3' , 0.20 ,KQ(5),'StrMPoleSymplectic4RadPass');
QB4=atquadrupole('QB4' , 0.20 ,KQ(6),'StrMPoleSymplectic4RadPass');
QA1=atquadrupole('QA1' , 0.50 ,KQ(7),'StrMPoleSymplectic4RadPass');
QA2=atquadrupole('QA2' , 0.60 ,KQ(8),'StrMPoleSymplectic4RadPass');
AntiB1=AntiB(1);
QB3=atrbend('QB3', 0.20, AntiB1, KQ(5),'BndMPoleSymplectic4RadPass','EntranceAngle',AntiB1/2, 'ExitAngle',AntiB1/2);
AntiB2=AntiB(2);
QA2=atrbend('QA2', 0.60, AntiB2,KQ(8),'BndMPoleSymplectic4RadPass', 'EntranceAngle',AntiB2/2, 'ExitAngle',AntiB2/2);
SD1 = atsextupole('SD' , 0.30, -28.365*0.0000001,'StrMPoleSymplectic4Pass');%%%-113.5678*0.00000000001,'StrMPoleSymplectic4Pass');
SD2 = atsextupole('SD' , 0.30, -28.365*0.0000001,'StrMPoleSymplectic4Pass'); %%%-113.5678*0.00000000001,'StrMPoleSymplectic4Pass');
SF = atsextupole('SF' , 0.30, 39.139*0.0000001,'StrMPoleSymplectic4Pass');%156.7516*0.00000000001,'StrMPoleSymplectic4Pass');
KB=K1(9:12);KB(1)=0;%KB(2)=0;
BAngle_p=MB;
BAngle=BAngle_p*2*pi/48/(sum(BAngle_p(1:3)*2)+BAngle_p(4))-[0 AntiB1 0 2*AntiB2];
N_Slice=5;
GRAD_Slice1=[];GRAD_Slice2=[];GRAD_Slice3=[];GRAD_Slice4=[];
for j_Slice=1:N_Slice
GRAD_Slice1=[GRAD_Slice1 KB(1)];GRAD_Slice2=[GRAD_Slice2 KB(2)];
GRAD_Slice3=[GRAD_Slice3 KB(3)];GRAD_Slice4=[GRAD_Slice4 KB(4)];
end
ANGLE_Slice1=1./(1+LA(1).*[1:N_Slice]*BLen(1)/N_Slice);
ANGLE_Slice2=flip(ANGLE_Slice1);
ANGLE_Slice3=1./(1+LA(2).*[1:N_Slice]*BLen(3)/N_Slice);
ANGLE_Slice3=[flip(ANGLE_Slice3(1:2:length(ANGLE_Slice3))) ANGLE_Slice3(3:2:length(ANGLE_Slice3))];
ANGLE_Slice4=1./(1+LA(3).*[1:N_Slice]*BLen(4)/N_Slice);
ANGLE_Slice4=[flip(ANGLE_Slice4(1:2:length(ANGLE_Slice4))) ANGLE_Slice4(3:2:length(ANGLE_Slice4))];
ANGLE_Slice1=ANGLE_Slice1/sum(ANGLE_Slice1)*BAngle(1);
ANGLE_Slice2=ANGLE_Slice2/sum(ANGLE_Slice2)*BAngle(2);
ANGLE_Slice3=ANGLE_Slice3/sum(ANGLE_Slice3)*BAngle(3);
ANGLE_Slice4=ANGLE_Slice4/sum(ANGLE_Slice4)*BAngle(4);
% figure;plot(ANGLE_Slice2*Energy/C0/BLen(1)*N_Slice,'.-r');hold on;
% figure;plot(ANGLE_Slice4*Energy/C0/BLen(4)*N_Slice,'.-b');hold on;
Bend1=LongiVFDipole_R('Bend1',BLen(1),BAngle(1),N_Slice,ANGLE_Slice1,GRAD_Slice1,'BndMPoleSymplectic4RadPass');
Bend7=LongiVFDipole_R('Bend7',BLen(1),BAngle(1),N_Slice,flip(ANGLE_Slice1),GRAD_Slice1,'BndMPoleSymplectic4RadPass');
Bend2=LongiVFDipole_R('Bend2',BLen(2),BAngle(2),N_Slice,ANGLE_Slice2,GRAD_Slice2,'BndMPoleSymplectic4RadPass');
Bend6=LongiVFDipole_R('Bend6',BLen(2),BAngle(2),N_Slice,flip(ANGLE_Slice2),GRAD_Slice2,'BndMPoleSymplectic4RadPass');
Bend3=LongiVFDipole_R('Bend3',BLen(3),BAngle(3),N_Slice,ANGLE_Slice3,GRAD_Slice3,'BndMPoleSymplectic4RadPass');
Bend5=LongiVFDipole_R('Bend5',BLen(3),BAngle(3),N_Slice,ANGLE_Slice3,GRAD_Slice3,'BndMPoleSymplectic4RadPass');
Bend4=LongiVFDipole_R_H2H('Bend4',BLen(4),BAngle(4),N_Slice,ANGLE_Slice4,GRAD_Slice4,'BndMPoleSymplectic4RadPass');
CellSR=[{DA4 QA2 DA3}'; Bend5;{ DA2 QA1 DA1}'; ...
Bend6;{ DB8 QB4 DB7 SD2 DB6 QB3 DB5 SF DB4 QB2 DB3 SD1 DB2 QB1 DB1}'; Bend7;{ DS2 QS2 DS1 QS1}'; DS0];
CellSL=[DS0 ;{QS1 DS1 QS2 DS2}'; Bend1;{ DB1 QB1 DB2 SD1 DB3 QB2 DB4 SF DB5 QB3 DB6 SD2 DB7 QB4 DB8}'; Bend2; ...
{DA1 QA1 DA2}'; Bend3;{ DA3 QA2 DA4}'];
CELL=[CellSL ;Bend4; CellSR ];
L0 = findspos(CELL,length(CELL)+1) * 48;
C0 = 299792458;
f = 500 * 10^6;
HarmNumber = round(f*L0/C0);
CAV = atrfcavity('CAV' , 0.0 ,4e+6 , HarmNumber*C0/L0, HarmNumber ,[],'CavityPass');
RING=[CELL ;{CAV} ;CELL; CELL; CELL ;CELL; CELL ;CELL; CELL; CELL; CELL;CELL;CELL; ...
CELL; CELL ;CELL; CELL ;CELL; CELL; CELL; CELL; CELL; CELL;CELL ;CELL; ...
CELL; CELL; CELL ;CELL ;CELL; CELL ;CELL ;CELL ;CELL; CELL;CELL;CELL; ...
CELL; CELL; CELL ;CELL ;CELL; CELL ;CELL ;CELL ;CELL; CELL;CELL;CELL ];
THERING =RING;
THERING = setcellstruct(THERING, 'Energy', 1:length(THERING), Energy);
varargout{1}=THERING;
%THERING = Ring6GeVAB(K1,AntiB,LA,MB,BLen,DLen)