Skip to content
Snippets Groups Projects
Commit 1251af83 authored by zhang's avatar zhang
Browse files

ZJ

parent 334bc0b9
No related branches found
No related tags found
No related merge requests found
......@@ -4,11 +4,20 @@
int no_tps = ORDER; // arbitrary TPSA order is defined locally
extern bool freq_map;
// dynamic aperture
const double delta = 5.0e-2; // delta for off-momentum aperture
/////////////////////////////////////////////////////////////////////////////////////////////////
//***************************************************************************************
//
// MAIN CODE
//
//****************************************************************************************
int main(int argc, char *argv[])
{
......@@ -41,30 +50,140 @@ const double delta = 5.0e-2; // delta for off-momentum aperture
//const double x_max_FMA = 3e-3, delta_FMA = 7e-2;
//const int n_x = 28, n_dp = 56, n_tr = 2048;
double nux = 0.0 , nuz = 0.0, ksix = 0.0, ksiz = 0.0;
if (true)
Read_Lattice(argv[1]); //sets some globval params
else
rdmfile("flat_file.dat"); //instead of reading lattice file, get data from flat file
globval.quad_fringe = true; // include quadrupole fringe field
//no_sxt(); //turns off sextupoles
Ring_GetTwiss(true, 0e-2); printglob(); //gettwiss computes one-turn matrix arg=(w or w/o chromat, dp/p)
//get_matching_params_scl();
//get_alphac2();
//GetEmittance(ElemIndex("cav"), true);
prt_lat("linlat.out", globval.bpm, true);
/* print lattice file for nsrl-ii*/
// prt_lat("linlat.out", globval.bpm, true);
//prtmfile("flat_file.dat"); // writes flat file
//prt_chrom_lat(); //writes chromatic functions into chromlat.out
// Using tracking to get tunes and chromaticities
if (true) {
//prt_cod("cod.out", globval.bpm, true); //prints a specific closed orbit with corrector strengths
globval.bpm = ElemIndex("bpm_m");
// globval.bpm = ElemIndex("bpm");
globval.hcorr = ElemIndex("corr_h"); globval.vcorr = ElemIndex("corr_v");
globval.gs = ElemIndex("GS"); globval.ge = ElemIndex("GE");
GetTuneTrac(1026L, 0.0, &nux, &nuz);
fprintf(stdout,"From tracking: nux = % f nuz = % f \n",nux,nuz);
GetChromTrac(2L, 1026L, 1e-5, &ksix, &ksiz);
fprintf(stdout,"From tracking: ksix= % f ksiz= % f \n",ksix,ksiz);
}
//*************************************************************
//=============================================================
double dP = 0.0;
// Chamber
bool ChamberFlag = false;
// tune shift with amp and energy
bool TuneShiftFlag = true;
// frequency map
bool FmapFlag = false, ExperimentFMAFlag = false, DetailedFMAFlag = true;
set_bn_design_fam(globval.hcorr, Dip, 0.0, 0.0);
// momentum acceptance
bool MomentumAccFlag = false;
// Call soleillib.cc
// computes Tuneshift with amplitudes and energy
if (TuneShiftFlag == true){
if (ChamberFlag == true ){
NuDx(31L,21L,516L,0.025,0.005,dP);
//NuDp(31L,516L,0.06);
NuDp(31L,1026L,0.06);
}
else{
// NuDx(50L,30L,516L,0.035,0.02,dP);
// NuDp(31L,1026L,0.06);
NuDx(50L,30L,516L,-0.02,-0.02,dP);
NuDp(31L,1026L,0.06);
}
}
// Computes FMA
if (FmapFlag == true){
if (ChamberFlag == true ){
if (ExperimentFMAFlag == true)
// fmap(40,12,258,-20e-3,5e-3,0.0,true,false); // for experimental
fmap(40,12,258,-20e-3,5e-3,0.0,true); // for experimental
if (DetailedFMAFlag == true)
// fmap(100,50,1026,20e-3,5e-3,0.0,true,false);
fmap(100,50,1026,20e-3,5e-3,0.0,true);
}
else{
if (ExperimentFMAFlag == true)
// fmap(40,12,258,-32e-3,5e-3,0.0,true,false);
fmap(40,12,258,-32e-3,5e-3,0.0,true);
if (DetailedFMAFlag == true)
// fmap(200,100,1026,32e-3,7e-3,0.0,true);
fmap(20,10,1026,32e-3,7e-3,0.0,true);
}
}
// Compute momentum acceptance
if (MomentumAccFlag == true){
MomentumAcceptance(1L, 18L, 0.01, 0.05, 4L, -0.01, -0.05, 4L);
// MomentumAcceptance(1L, 108L, 0.01, 0.05, 100L, -0.01, -0.05, 100L);
}
//---------------------------------------------------------
// test region
// trace = true;
// Get_Disp_dp();
//InducedAmplitude(20);
// Hcofonction(2, 0.001);
// fmapdp(20L, 21L, 1026L, 25e-3, 0.06, 0.3e-3, true);
// return 1;
//--------------------------------------------------------
//*********************************************************************************
//---------------------------------------------------------------------------------------------------------------------------------
// Delicated for max4 lattice. To load alignment error files and do correction
if (false) {
//prt_cod("cod.out", globval.bpm, true); //prints a specific closed orbit with corrector strengths
globval.bpm = ElemIndex("bpm_m"); //definition for max4 lattice, bpm
// globval.bpm = ElemIndex("bpm");
globval.hcorr = ElemIndex("corr_h"); globval.vcorr = ElemIndex("corr_v"); //definition for max4 lattice, correctors
// globval.hcorr = ElemIndex("ch"); globval.vcorr = ElemIndex("cv");
globval.gs = ElemIndex("GS"); globval.ge = ElemIndex("GE"); //definition for max4 lattice, girder maker
//compute response matrix (needed for OCO)
gcmat(globval.bpm, globval.hcorr, 1); gcmat(globval.bpm, globval.vcorr, 2);
......@@ -89,7 +208,8 @@ const double delta = 5.0e-2; // delta for off-momentum aperture
//LoadAlignTol("/home/simon/projects/out/20091126/AlignErr.dat", true, 1.0, true, 1);
//prt_cod("cod_err.out", globval.bpm, true); //prints a specific closed orbit with corrector strengths
// delicated for max4 lattice
//load alignment errors and field errors, correct orbit, repeat N times, and get statistics
get_cod_rms_scl_new(1); //trim coils aren't reset when finished
......@@ -99,7 +219,14 @@ const double delta = 5.0e-2; // delta for off-momentum aperture
//LoadApers("/home/simon/projects/src/lattice/Apertures.dat", 1, 1);
}
//*******************************************************************************
//-------------------------------------------------------------------------------------------------------------------------------------
// Call nsls-ii_lib.cc
// tune shift with amplitude
if (false) {
cout << endl;
cout << "computing tune shifts" << endl;
......@@ -110,7 +237,8 @@ const double delta = 5.0e-2; // delta for off-momentum aperture
if (false) {
//fmap(n_x, n_y, n_tr, x_max_FMA, y_max_FMA, 0.0, true, false);
fmapdp(n_x, n_dp, n_tr, x_max_FMA, -delta_FMA, 1e-3, true, false); // always use -delta_FMA (+delta_FMA appears broken)
// fmapdp(n_x, n_dp, n_tr, x_max_FMA, -delta_FMA, 1e-3, true, false); // always use -delta_FMA (+delta_FMA appears broken)
fmapdp(n_x, n_dp, n_tr, x_max_FMA, -delta_FMA, 1e-3, true); // always use -delta_FMA (+delta_FMA appears broken)
} else {
globval.Cavity_on = true; // this gives longitudinal motion
globval.radiation = false; // this adds ripple around long. ellipse (needs many turns to resolve damp.)
......@@ -120,7 +248,10 @@ const double delta = 5.0e-2; // delta for off-momentum aperture
}
// return 1;
//
// IBS & TOUSCHEK
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment