mbtrack2.tracking.ibs module¶
Module for intrabeam scattering computations.
- class IntrabeamScattering(ring: Synchrotron, model: str, n_points: int = 1000, n_bin: int = 100)[source]¶
Bases:
ElementIntrabeam scattering class computes the IBS growth rate analytically each turn and apply corresponding kicks to each particle according to the following models:
- Piwinski Modified (PM):
Modification of the original Piwinski model [1] in order to take into account the dispersion and the variation of the optics functions around the ring [2].
- Bane (Bane):
Approximation for high-energy beams which allows computing a single scattering integral instead of two [3].
- Completely integrated modified Piwinski model (CIMP):
Approximating elliptic integral as a special Legendre function [4].
Parameters:¶
- ring: Synchrotron object
Ring to consider.
- bunch: Bunch or Beam object
Bunch or Beam object which will be tracked.
- model: {‘CIMP’,’Bane’,’PM’,’PS’}
- Implemented computational models for computing the growth rate T_(x,y,p):
CIMP: the CIMP model [4]. Bane: the Bane model [3]. PM: the modified model of Piwinski [2].
- n_points: int, optional
Number of partitions (sampling) of the optics functions (depends on the lattice complexity), can use a lower value (50) if the beta function is symmetric, thus gaining computation speed. The Default is 1000
- n_bin: int, optional
Number of bins for the bunch.binning profile function. Will determine the number of slices for the profile function. If the value of n_bin is greater than 1 the kick method will compute the kick[5], applying momentum change according to the positions of each macroparticle with respect to the density of macroparticles in that position. If n_bin is set to 1, the kick will be computed assuming Rho(z) as a uniform distribution. The Default is 100.
Methods:¶
- initialize(bunch):
Initializes the dynamic parameters at each turn, modifies the class variables according to the selected model.
- get_scattering_integrals():
Computes the scattering integrals according to the selected model.
- get_ibs_growthrate():
Computes the growth rate from the scattering integrals.
- kick(bunch, T_x, T_y, T_p):
Tracking method of IntrabeamScattering takes T_(x,y,p) and apply momentum change to the coordinates of macroparticles inside the bunch.
References:¶
[1] A. Piwinski, Intra-Beam-Scattering, (1974). http://dx.doi.org/10.5170/CERN-1992-001.226 [2] K. L. F. Bane, A Simplified Model of Intrabeam Scattering, in 8th European Particle Accelerator Conference (Paris, France, 2002), p. 1443. https://doi.org/10.48550/arXiv.physics/0206002 [3] K. L. F. Bane, H. Hayano, K. Kubo, T. Naito, T. Okugi, and J. Urakawa, Intrabeam Scattering Analysis of Measurements at KEK’s Accelerator Test Facility Damping Ring, Phys. Rev. ST Accel. Beams 5, 084403 (2002). https://doi.org/10.1103/PhysRevSTAB.5.084403 [4] K. Kubo, S. K. Mtingwa, and A. Wolski, Intrabeam Scattering Formulas for High Energy Beams, Phys. Rev. ST Accel. Beams 8, 081001 (2005). https://doi.org/10.1103/PhysRevSTAB.8.081001 [5] R. Bruce, J. M. Jowett, M. Blaskiewicz, and W. Fischer, Time Evolution of the Luminosity of Colliding Heavy-Ion Beams in BNL Relativistic Heavy Ion Collider and CERN Large Hadron Collider, Phys. Rev. ST Accel. Beams 13, 091001 (2010). https://doi.org/10.1103/PhysRevSTAB.13.091001
- initialize(bunch: Bunch)[source]¶
Initializes the dynamic parameters at each turn, modifies the class variables according to the selected model.
Parameters¶
- bunch: Bunch or Beam object
Bunch or Beam object which will be tracked.
- get_scattering_integrals(bunch)[source]¶
Computes the scattering integrals according to the selected model. Parameters ———- bunch: Bunch or Beam object
Bunch or Beam object which will be tracked.
Returns¶
- If self.model == “PM”:
- vabq, v1aq, v1bq: arrays
Array of scattering integral values at each point around the ring.
- If self.model == “Bane”:
- gval: array
Array of scattering integral values at each point around the ring.
- If self.model == “CIMP”:
- g_ab, g_ba: arrays
Array of analytical function g(a/b) and g(b/a) respectively, that simulate the integrals at each point around the ring.
- get_ibs_growthrate(bunch)[source]¶
- Computes the growth rate from the scattering integrals:
Piwinski: Eq. (16-18) in [2]. Bane: Eq (14) and (20) in [3]. CIMP: Eq (35-37) in [4].
- The growth rate can be defined as:
1/T_ibs = 1/sigma * d(sigma)/dt
Parameters¶
- vabq, v1aq, v1bq: arrays
Takes integral values from scatter() method.
Returns¶
- r_x: Array
Array of IBS growth rates on the horizontal plane over the entire ring in [1/s].
- r_y: Array
Array of IBS growth rates on the vertical plane over the entire ring in [1/s].
- r_p: Array
Array of IBS growth rates on the longitudinal plane over the entire ring in [1/s].
- kick(bunch: Bunch, r_x: float, r_y: float, r_p: float)[source]¶
Apply kick to the bunch coordinates by converting growth rate to momentum change [1].
Parameters¶
- bunchObject
Bunch or Beam object.
- r_pArray
Growth rate of ‘delta’ in [1/s].
- r_xArray
Growth rate of ‘xp’ in [1/s].
- r_yArray
Growth rate of ‘yp’ in [1/s].
Reference:¶
[1] R. Bruce, J. M. Jowett, M. Blaskiewicz, and W. Fischer, Time Evolution of the Luminosity of Colliding Heavy-Ion Beams in BNL Relativistic Heavy Ion Collider and CERN Large Hadron Collider, Phys. Rev. ST Accel. Beams 13, 091001 (2010). https://doi.org/10.1103/PhysRevSTAB.13.091001
- _abc_impl = <_abc._abc_data object>¶