source: TRACY3/branches/tracy3-3.10.1b/tracy/tracy/inc/physlib.h @ 23

Last change on this file since 23 was 23, checked in by zhangj, 10 years ago

Clean version of Tracy: SoleilVersion at the end of 2011.Use this clean version to find the correct dipole fringe field to have the correct FMAP and FMAPDP of ThomX. Modified files: tpsa_lin.cc, soleillib.cc, prtmfile.cc, rdmfile.cc, read_script.cc, physlib.cc, tracy.cc, t2lat.cc, t2elem.cc, naffutils.cc in /tracy/tracy/src folder; naffutils.h, tracy_global.h, physlib.h, tracy.h, read_script.h, solielilib.h, t2elem.h in /tracy/tracy.inc folder; soltracy.cc in tracy/tools folder

  • Property svn:executable set to *
File size: 7.3 KB
Line 
1/* Tracy-2
2
3   J. Bengtsson, CBP, LBL      1990 - 1994   Pascal version
4                 SLS, PSI      1995 - 1997
5   M. Boege      SLS, PSI      1998          C translation
6   L. Nadolski   SOLEIL        2002          Link to NAFF, Radia field maps
7   J. Bengtsson  NSLS-II, BNL  2004 -       
8
9*/
10
11#include "time.h"
12#include <sys/time.h>
13
14/* For tune fitting */
15#define nueps           1e-6      //precision
16#define nudkL           0.01   //step
17#define nuimax          10        // maximum number of iterations
18
19/* For chromaticity fitting */
20#define ksieps          1e-5
21#define ksidkpL         0.01
22#define ksiimax         10
23
24/* For dispersion fitting */
25#define dispeps         1e-10
26#define dispdkL         0.001
27#define dispimax        10
28#define npeakmax        10
29
30// Dynamical aperture
31#define px_0      0.0
32#define py_0      0.0
33
34/* 80% sigma coupling */
35#define sigma_eps        sqrt((25.0/16.0-1.0)/(25.0/16.0+1.0))
36
37#define writetrack      true   /*protocol from tracking*/
38
39// getfloq
40#define nfloq     4
41
42// inibump
43#define dnux      0.02
44#define dnuy      0.01
45
46// TraceABN
47#define ntrace    4
48
49typedef long ipeakbuf[npeakmax];
50typedef double peakbuf[npeakmax];
51
52double int_curly_H(long int n);
53
54void rm_mean(long int n, double x[]);
55
56void printglob(void);
57
58void printlatt(const char fic[]);
59
60void PrintMat(long n, Vector *A);
61
62void PrintVec(long n, double *X);
63
64void recalc_S();
65
66double Circumference(void);
67
68void GetMean(long n, double *x);
69
70bool getcod(double dP, long &lastpos);
71
72void get_twiss3(long int loc,
73                       Vector2 alpha[], Vector2 beta[], Vector2 nu[],
74                       Vector2 eta[], Vector2 etap[]);
75
76void getabn(double *alpha, double *beta, double *nu);
77
78void TraceABN(long i0, long i1, const Vector2 &alpha, const Vector2 &beta,
79              const Vector2 &eta, const Vector2 &etap, const double dP);
80
81void ttwiss(const Vector2 &alpha, const Vector2 &beta,
82                   const Vector2 &eta, const Vector2 &etap, const double dP);
83
84void prt_sigma(void);
85
86/* 2 parameter fitting routines */
87void FitTune(long qf, long qd, double nux, double nuy);
88
89void FitChrom(long sf, long sd, double ksix, double ksiy);
90
91void FitDisp(long q, long  pos, double eta);
92
93void inibump(long coh, long cov);
94
95void getfloqs(Vector &x);
96
97void track(const char* file_name,
98           double ic1, double ic2, double ic3, double ic4, double dp,
99           long int nmax, long int &lastn, long int &lastpos, int floqs,
100           double f_rf);
101
102struct LOC_getdynap {
103  double phi, delta;
104  long nturn;
105  bool floqs, lost;
106} ;
107
108void track_(double r, struct LOC_getdynap *LINK);
109
110void getdynap(double &r, double phi, double delta, double eps,
111              int nturn, bool floqs);
112
113void getcsAscr(void);
114
115void dynap(FILE *fp, double r, const double delta,
116           const double eps, const int npoint, const int nturn,
117           double x[], double y[], const bool floqs, const bool print);
118
119double get_aper(int n, double x[], double y[]);
120
121void GetTrack(const char *file_name,
122                     long *n, double *x, double *px, double *y, double *py);
123
124void Getj(long n, double *x, double *px, double *y, double *py);
125
126double Fract(double x);
127
128double GetArg(double x, double px, double nu);
129
130void GetPhi(long n, double *x, double *px, double *y, double *py);
131
132void Sinfft(int n, double *xr);
133
134void sin_FFT(int n, double xr[]);
135
136void sin_FFT(int n, double xr[], double xi[]);
137
138void GetInd(int n, int k, int *ind1, int *ind3);
139
140void GetInd1(int n, int k, int *ind1, int *ind3);
141
142void GetPeak(int n, double *x, int *k);
143
144void GetPeak1(int n, double *x, int *k);
145
146double Int2snu(int n, double *x, int k);
147
148double Sinc(double omega);
149
150double intsampl(int n, double *x, double nu, int k);
151
152double linint(int n, int k, double nu, double *x);
153
154struct LOC_findres {
155  int n;
156  double nux, nuy, f;
157  int *nx, *ny;
158  double eps;
159  bool found;
160} ;
161
162void FndRes(struct LOC_findres *LINK);
163
164void FindRes(int n_, double nux_, double nuy_, double f_,
165                    int *nx_, int *ny_);
166
167void GetPeaks(int n, double *x, int nf, double *nu, double *A);
168
169void GetPeaks1(int n, double *x, int nf, double *nu, double *A);
170
171void SetTol(int Fnum, double dxrms, double dyrms, double drrms);
172
173void Scale_Tol(int Fnum, double dxrms, double dyrms, double drrms);
174
175void SetaTol(int Fnum, int Knum, double dx, double dy, double dr);
176
177void ini_aper(const double Dxmin, const double Dxmax, 
178              const double Dymin, const double Dymax);
179
180void set_aper(const int Fnum, const double Dxmin, const double Dxmax,
181                     const double Dymin, const double Dymax);
182
183void LoadApertures(const char *ChamberFileName);
184
185void LoadTolerances(const char *TolFileName);
186
187void ScaleTolerances(const char *TolFileName, const double scl);
188
189void SetKpar(int Fnum, int Knum, int Order, double k);
190
191void SetdKpar(int Fnum, int Knum, int Order, double k);
192
193void SetL(int Fnum, int Knum, double L);
194
195void SetL(int Fnum, double L);
196
197void SetKLpar(int Fnum, int Knum, int Order, double kL);
198
199void SetdKLpar(int Fnum, int Knum, int Order, double dkL);
200
201void SetdKrpar(int Fnum, int Knum, int Order, double dkrel);
202
203void Setbn(int Fnum, int order, double bn);
204
205void SetbnL(int Fnum, int order, double bnL);
206
207void Setdbn(int Fnum, int order, double dbn);
208
209void SetdbnL(int Fnum, int order, double dbnL);
210
211void Setbnr(int Fnum, int order, double bnr);
212
213void SetbnL_sys(int Fnum, int Order, double bnL_sys);
214
215void set_dbn_rel(const int type, const int n, const double dbn_rel);
216
217double GetKpar(int Fnum, int Knum, int Order);
218
219double GetL(int Fnum, int Knum);
220
221double GetKLpar(int Fnum, int Knum, int Order);
222
223void SetdKLsys(int Fnum, int Order, double dkLsys);
224
225void SetdKLrms(int Fnum, int Order, double dkLrms);
226
227void Setdkrrms(int Fnum, int Order, double dkrrms);
228
229void SetKL(int Fnum, int Order);
230
231void set_dx(const int type, const double sigma_x, const double sigma_y);
232
233void SetBpmdS(int Fnum, double dxrms, double dyrms);
234
235void codstat(double *mean, double *sigma, double *xmax, long lastpos,
236                    bool all);
237
238void CodStatBpm(double *mean, double *sigma, double *xmax, long lastpos,
239                long bpmdis[mnp]);
240               
241double Sgn (double x);
242
243double digitize(double x, double maxkick, double maxsamp);
244
245//svdarray xmemo[2];
246
247double digitize2(long plane, long inum, double x, double maxkick,
248                        double maxsamp);
249
250void Dis_In(long *bpmdis, long *vcorrdis, long *hcorrdis,
251                   long *wvdis, long *whdis);
252
253
254/* high level functions for reading lattice file*/ 
255//void Read_Lattice(char *fic);
256//long get_bpm_number(void);
257//long get_hcorr_number(void);
258//long get_vcorr_number(void);
259//long get_qt_number(void);
260
261
262/* tracking */
263void GetChromTrac(long Nb, long Nbtour, double emax, double *xix, double *xiz);
264void GetTuneTrac(long Nbtour, double emax, double *nux, double *nuz);
265void Trac(double x, double px, double y, double py, double dp, double ctau,
266                 long nmax, long pos, long &lastn, long &lastpos, FILE *outf1);
267
268/* close orbit */
269// simple precision
270void findcodS(double dP);
271void computeFandJS(double *x, int n, double **fjac, double *fvect);
272void Newton_RaphsonS(int ntrial, double x[], int n, double tolx);
273// double precision
274void findcod(double dP);
275void computeFandJ(int n, double *x, Vector *fjac, double *fvect);
276int Newton_Raphson(int n, Vector &x, int ntrial, double tolx);
277
278
279/* Transport mode routine */
280void TransTwiss(Vector2 &alpha, Vector2 &beta, Vector2 &eta, Vector2 &etap,
281                Vector &codvect);
282
283/* Vacuum chamber */
284void PrintCh(void);
285
Note: See TracBrowser for help on using the repository browser.