% Sweep PRC (power recycling cavity length) in DRFPMI and generate plots.
%
% [xPos, sigDC, fDC] = sweepPRCL(Nsweep)
% see sweepDC for information about the parameters
%
% This displays some DC signals, and some demod signals, during
% a PRC sweep.  From this sweep, one might try to find a good
% signal for PRC.

function [xPos, sigDC, fDC] = sweepPRC(Nsweep)

  % Check number of input arguments
  if nargin < 1
    Nsweep = 1000;
  elseif nargin > 1
    error('Too Many Arguments!')
  end

  % prepare some variables
  sweepSetup

  % adding this to sweepSetup causes matlab to crash, so do it here
  nDC = [nREFL(1) nAS(1) nPOX(1) nPOY(1) nTRX(1) nTRY(1)];

 % SET SOME DETUNINGS TO MIMIC LOCK AQ STATUS REACHED BY RUNNING
  % smoo_prfpmi (T_SRM = 1)
  
  
  %%%%%%%%%%%%%%%%%%%%%%%%%ARMS AT FULL RESONANCE
      % XARM DeToon in degrees
  dTunePhase_XARM = 0; %.07; % XARM micro detuning (see note) (.07 = 1/2 fringe )
  % set position offsets for XARM
  dTune = dTunePhase_XARM * (opt.lambda / 360);
  opt = setPosOffset(opt, nEX,  dTune); %opt.lambda / 4 +

     % YARM DeToon in degrees
  dTunePhase_YARM = 0; %.07; % YARM micro detuning (see note)
  % set position offsets for YARM
  dTune = dTunePhase_YARM * (opt.lambda / 360);
  opt = setPosOffset(opt, nEY,  dTune); %opt.lambda / 4 +
  %%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%MICH AT 0.8 of Dark fringe
  
      % MICH DeToon in degrees
  dTunePhase_MICH = 45; % MICH micro detuning (see note)
  % set position offsets for MICH
  dTune = dTunePhase_MICH * (opt.lambda / 360);
  opt = setPosOffset(opt, nBS,  dTune); %opt.lambda / 4 +
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%PRC ON RESONANCE FOR CARRIER (CARRIER POWER BUILDS UP) 
         % PRC DeToon in degrees
   dTunePhase_PRC = -32; % PRC micro detuning (see note)
   % set position offsets for PRC
   dTune = dTunePhase_PRC * (opt.lambda / 360);
   opt = setPosOffset(opt, nPR,  dTune); %opt.lambda / 4 +
   
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % PRC sweep
  pos = zeros(opt.Noptic, 1);
  pos(nPR) = 60e-8;
  %pos(nSR) = -30e-9;
  
  [xPos, sigDC, fDC] = sweepDC(opt, -pos, pos, Nsweep);

  % compute phase errors for each double-demod signals
  Nmid = find(xPos(nPR, :) >= -1e-16, 1);
  phaseM = 180 * atan2(sigDC(nREFL(4), Nmid), sigDC(nREFL(5), Nmid)) / pi;
  phaseP = 180 * atan2(sigDC(nREFL(6), Nmid), sigDC(nREFL(7), Nmid)) / pi;
  str = sprintf('double-demod phase errors: %g dg for %s, %g dg for %s', ...
                phaseM, prbNames{nREFL(4)}, phaseP, prbNames{nREFL(6)});
  disp('          ')
  disp(str)
  phaseM = opt.probe(nREFL(4)).phase - phaseM;
  phaseP = opt.probe(nREFL(6)).phase - phaseP;
  str = sprintf('  "good" phases: %g dg for %s, %g dg for %s', ...
                phaseM, prbNames{nREFL(4)}, phaseP, prbNames{nREFL(6)});
  disp(str)
  disp('          ')
  
  
  % REFLDD = REFL133 + REFL199  (both phases)
  REFLDD = sigDC(nREFL(4:5), :) + sigDC(nREFL(6:7), :);

  % make some plots
  fDCp = permute(fDC, [2, 3, 1]);  
  n = getFieldAt(opt, nPR, 'fr');		% PR front input field
figure(1)
  %subplot('position',[0.05 0.48 0.9 0.45])
  subplot(211)
  semilogy(xPos(nPR, :), abs(fDCp(nSBa, :, n)), ...
           xPos(nPR, :), abs(fDCp(nSBb, :, n)), '--')
  title('PRC sweep: RF powers in the PRC (top) & REFL demods (bottom)')
  legend(num2str([vFrf(nSBa); vFrf(nSBb)] / 1e6))
  set(gca,'XTickLabel',[])
  grid on
    xlabel('PRC motion [m]')
  %axis([-pos(nPR) pos(nPR) 1e-2 .5])
  
  %subplot('position',[0.05 0.06 0.9 0.4])
  subplot(212)
  plot(xPos(nPR,:)*1e9, sigDC(nREFL(2:7), :),...
       xPos(nPR,:)*1e9, [sigDC(nREFL(8:end),:);REFLDD(1,:)],'--')
  legend(prbNames(nREFL(2:end)), 'REFL IM + IP')
  grid on
  %axis([-pos(nPR)*1e9 pos(nPR)*1e9 -0.002 0.002])
  xlabel('PRC motion [m]')
  
%   
  figure(2)
  subplot(2, 1, 1)
  semilogy(xPos(nPR, :), sigDC(nDC, :))
  legend(prbNames(nDC))
  title('PRC: DC signals')
    xlabel('PRC motion [m]')
  grid on

  subplot(2, 1, 2)
  plot(xPos(nPR, :), sigDC(nPOX(2:end), :))
  legend(prbNames(nPOX(2:end)))
  title('PRC sweep: POX demod signals')
    xlabel('PRC motion [m]')
  grid on
%   
  % Error routine for output arguments
  if nargout > 3
    error('Too Many Output Arguments. Max = 3')
  end
  
  orient tall
  print -dpdf PRCsweep-40m.pdf
  
  
