Beispiel #1
0
    def track(self, beam):
        """The formula that describes the transverse kick experienced
        by an ultra-relativistic particle traversing the RFQ
        longitudinally is based on the thin-lens approximation
            \Delta p_x = -x*(2 e v_2 / omega) *
                cos(omega z / (beta c) + phi_0),
            \Delta p_y =  y*(2 e v_2 / omega) *
                cos(omega z / (beta c) + phi_0).
        """
        cos_term = (2. * e * self.v_2 / self.omega *
                    pm.cos(self.omega / (beam.beta * c) * beam.z + self.phi_0))

        beam.xp += -beam.x * cos_term / beam.p0
        beam.yp += beam.y * cos_term / beam.p0
Beispiel #2
0
    def detune(self, beam):
        """ Calculates for each particle its betatron detuning
        dQ_x, dQ_y according to formulae taken from [1] (see
        above).
            dQ_x = dapp_xz / p * \cos(omega / (beta c) z + phi_0)
            dQ_y = dapp_yz / p * \cos(omega / (beta c) z + phi_0)
        with
            dapp_xz = beta_x_RFQ  * v_2 * e / (2 Pi * omega)
            dapp_yz = -beta_y_RFQ  * v_2 * e / (2 Pi * omega)
        and p the particle momentum p = (1 + dp) p0.
        (Probably, it would make sense to approximate p by p0 for better
        performance). """
        p = (1. + beam.dp) * beam.p0
        cos_term = pm.cos(self.omega /
                          (beam.beta * c) * beam.z + self.phi_0) / p
        dQ_x = self.dapp_xz * cos_term
        dQ_y = self.dapp_yz * cos_term

        return dQ_x, dQ_y