source: PSPA/madxPSPA/src/mad_elemprobe.c @ 476

Last change on this file since 476 was 430, checked in by touze, 11 years ago

import madx-5.01.00

File size: 2.2 KB
Line 
1#include "madx.h"
2
3void
4adjust_probe(double delta_p)
5  /* adjusts beam parameters to the current deltap */
6{
7  int j;
8  double etas, slope, qs, fact, tmp, ds = oneturnmat[34];
9  double alfa, beta, gamma, dtbyds, circ, freq0; // , deltat // not used
10  double betas, gammas, et, sigt, sige;
11  et = command_par_value("et", current_beam);
12  sigt = command_par_value("sigt", current_beam);
13  sige = command_par_value("sige", current_beam);
14  beta = command_par_value("beta", current_beam);
15  gamma = command_par_value("gamma", current_beam);
16  circ = command_par_value("circ", current_beam);
17
18  /* assume oneturnmap and disp0 already computed (see pro_emit) */ 
19  for (j = 0; j < 4; j++) ds += oneturnmat[4 + 6*j] * disp0[j];
20  tmp = - beta * beta * ds / circ;
21  freq0 = (clight * ten_m_6 * beta) / (circ * (one + tmp * delta_p));
22  etas = beta * gamma * (one + delta_p);
23  gammas = sqrt(one + etas * etas);
24  betas = etas / gammas;
25  tmp = - betas * betas * ds / circ;
26  alfa = one / (gammas * gammas) + tmp;
27  dtbyds = delta_p * tmp / betas;
28  // deltat = circ * dtbyds;
29  store_comm_par_value("freq0", freq0, probe_beam);
30  store_comm_par_value("alfa", alfa, probe_beam);
31  store_comm_par_value("beta", betas, probe_beam);
32  store_comm_par_value("gamma", gammas, probe_beam);
33  store_comm_par_value("dtbyds", dtbyds, probe_beam);
34  store_comm_par_value("deltap", delta_p, probe_beam);
35  slope = -rfc_slope();
36  qs = sqrt(fabs((tmp * slope) / (twopi * betas)));
37  if (qs != zero)
38  {
39    fact = (tmp * circ) / (twopi * qs);
40    if (et > zero)
41    {
42      sigt = sqrt(fabs(et * fact));
43      sige = sqrt(fabs(et / fact));
44    }
45    else if (sigt > zero)
46    {
47      sige = sigt / fact;
48      et = sige * sigt;
49    }
50    else if (sige > zero)
51    {
52      sigt = sige * fact;
53      et = sige * sigt;
54    }
55  }
56  if (sigt < ten_m_15)
57  {
58    put_info("Zero value of SIGT", "replaced by 1.");
59    sigt = one;
60  }
61  if (sige < ten_m_15)
62  {
63    put_info("Zero value of SIGE", "replaced by 1/1000.");
64    sigt = ten_m_3;
65  }
66  store_comm_par_value("qs", qs, probe_beam);
67  store_comm_par_value("et", et, probe_beam);
68  store_comm_par_value("sigt", sigt, probe_beam);
69  store_comm_par_value("sige", sige, probe_beam);
70}
71
Note: See TracBrowser for help on using the repository browser.