/ATF2/FlightSim/trustedApps/wire_scanner/twiss_analysis_sha.m

http://atf2flightsim.googlecode.com/ · MATLAB · 75 lines · 52 code · 17 blank · 6 comment · 6 complexity · bec990bb4d67c3b5ea2cd1d516c5b04e MD5 · raw file

  1. function [x_kl_unique,y_m_square_mean,y_m_square_std,x_kl_fit,y_m_square_fit,chisq_parab,beta_ip_first_meth,sigma_beta_ip_first_meth,beta_ip_second_meth,sigma_beta_ip_second_meth,emittance_ip,sigma_emittance_ip,alpha_ip_first_meth,sigma_alpha_ip_first_meth,alpha_ip_second_meth,sigma_alpha_ip_second_meth]=twiss_analysis_sha(y_m_mean,y_m_std,x_A_unique,emittance_extr_m,sigma_emittance_extr_m,ws_chosen,sig_x_or_y)
  2. %INPUT DATA
  3. %parameters to calculate the twiss parameters
  4. if strcmp(ws_chosen,'WIP') %at the IP for the optics beta x=0.04 and beta y=0.001
  5. if strcmp(sig_x_or_y,'X') %for X beam size
  6. a_par=1.8517915549374;
  7. elseif strcmp(sig_x_or_y,'Y') %for Y beam size
  8. a_par=1.2364609683258;
  9. end
  10. kl_qd0_design=1.36396800693; %for alpha estimation
  11. elseif strcmp(ws_chosen,'WPIP Tungsten') || strcmp(ws_chosen,'WPIP Carbon') %at the PIP for the optics beta x=0.04 and beta y=0.001
  12. if strcmp(sig_x_or_y,'X') %for X beam size
  13. a_par=3.1449945094737;
  14. elseif strcmp(sig_x_or_y,'Y') %for Y beam size
  15. a_par=2.3453424065088;
  16. end
  17. kl_qd0_design=1.112672023613; %for alpha estimation
  18. end
  19. %CONVERSION FOR PARABOLA PARAMETRIZATION
  20. x_kl_unique=x_A_unique*0.0104462; %conversion A==>KL
  21. y_m_square_mean=y_m_mean.^2; %conversion um==>m^2
  22. %CALCULATION OF THE ERROR SQUARE
  23. y_m_square_std=2*y_m_mean.*y_m_std;
  24. %FITTING
  25. %[A,B,C,rms,chisq] = parabola_fit(x_kl_unique',y_m_square_mean',y_m_square_std'); %without sutracted dispersion
  26. [q_parab,dq_parab,chisq_parab,Cv_parab]=noplot_parab_2(x_kl_unique',y_m_square_mean',y_m_square_std');
  27. %CALCULATION OF TWISS PARAMETERS AT THE IP
  28. beta_ip_first_meth=emittance_extr_m*a_par^2/q_parab(1); %with first Sha method
  29. beta_ip_second_meth=a_par*sqrt(q_parab(3)/q_parab(1)); %with second Sha method
  30. emittance_ip=sqrt(q_parab(1)*q_parab(3))/a_par; %with second Sha method
  31. %y_m_square_fit_qd0_design=q_parab(1)*(kl_qd0_design-q_parab(2)).^2+q_parab(3);
  32. %alpha_ip=sqrt((y_m_square_fit_qd0_design/(emittance_extr_m*beta_ip_second_meth))-1);
  33. alpha_ip_first_meth=a_par*(q_parab(2)-kl_qd0_design)/beta_ip_first_meth;
  34. alpha_ip_second_meth=a_par*(q_parab(2)-kl_qd0_design)/beta_ip_second_meth;
  35. %CALCULATION OF THE ERRORS OF THE TWISS PARAMETERS
  36. sigma_beta_ip_first_meth=a_par^2*sqrt((1/q_parab(1))^2*sigma_emittance_extr_m^2+(emittance_extr_m/q_parab(1)^2)^2*dq_parab(1)^2);
  37. sigma_emittance_ip=1/a_par*sqrt((q_parab(3)/(2*sqrt(q_parab(1)*q_parab(3))))^2*dq_parab(1)^2 + (q_parab(1)/(2*sqrt(q_parab(1)*q_parab(3))))^2*dq_parab(3)^2);
  38. %sigma_emittance_ip_cov=1/a_par*sqrt((q_parab(3)/(2*sqrt(q_parab(1)*q_parab(3))))^2*dq_parab(1)^2 + (q_parab(1)/(2*sqrt(q_parab(1)*q_parab(3))))^2*dq_parab(3)^2+2*q_parab(3)/(2*sqrt(q_parab(1)*q_parab(3)))*q_parab(1)/(2*sqrt(q_parab(1)*q_parab(3)))*Cv_parab(1,3));
  39. sigma_beta_ip_second_meth=a_par*sqrt((q_parab(3)/(2*sqrt(q_parab(3)/q_parab(1))*q_parab(1)^2))^2*dq_parab(1)^2 + (1/(2*sqrt(q_parab(3)/q_parab(1))*q_parab(1)))^2*dq_parab(3)^2);
  40. %sigma_beta_ip_second_meth_cov=a_par*sqrt((q_parab(3)/(2*sqrt(q_parab(3)/q_parab(1))*q_parab(1)^2))^2*dq_parab(1)^2 + (1/(2*sqrt(q_parab(3)/q_parab(1))*q_parab(1)))^2*dq_parab(3)^2-2*q_parab(3)/(2*sqrt(q_parab(3)/q_parab(1))*q_parab(1)^2)*1/(2*sqrt(q_parab(3)/q_parab(1))*q_parab(1))*Cv_parab(1,3));
  41. %sigma_y_m_square_fit_qd0_design=sqrt((kl_qd0_design-q_parab(2))^4*dq_parab(1)^2 + (2*q_parab(2)*q_parab(1)-2*q_parab(1)*kl_qd0_design)^2*dq_parab(2)^2 + dq_parab(3)^2);
  42. %sigma_alpha_ip= sqrt((1/(2*beta_ip_second_meth*emittance_extr_m*sqrt((y_m_square_fit_qd0_design-beta_ip_second_meth*emittance_extr_m)/(beta_ip_second_meth*emittance_extr_m))))^2*sigma_y_m_square_fit_qd0_design^2+(y_m_square_fit_qd0_design/(2*beta_ip_second_meth*emittance_extr_m^2*sqrt((y_m_square_fit_qd0_design-beta_ip_second_meth*emittance_extr_m)/(beta_ip_second_meth*emittance_extr_m))))^2*sigma_emittance_extr_m^2+(y_m_square_fit_qd0_design/(2*beta_ip_second_meth^2*emittance_extr_m*sqrt((y_m_square_fit_qd0_design-beta_ip_second_meth*emittance_extr_m)/(beta_ip_second_meth*emittance_extr_m))))^2*sigma_beta_ip_second_meth^2);
  43. sigma_alpha_ip_first_meth= sqrt((a_par*(x_kl_fit_waist-kl_qd0_design)/beta_ip_first_meth^2)^2*sigma_beta_ip_first_meth^2);
  44. sigma_alpha_ip_second_meth= sqrt((a_par*(x_kl_fit_waist-kl_qd0_design)/beta_ip_second_meth^2)^2*sigma_beta_ip_second_meth^2);
  45. end