diff --git a/mbtrack2/tracking/rf.py b/mbtrack2/tracking/rf.py index 9ddf74034c375584481772afe7e04664356f264f..1d277a06ba451701fb4cec3905ca0c9eefe12558 100644 --- a/mbtrack2/tracking/rf.py +++ b/mbtrack2/tracking/rf.py @@ -389,13 +389,14 @@ class CavityResonator(): # get shared bunch profile for current bunch center = beam.mpi.tau_center[j] profile = beam.mpi.tau_profile[j] - bin_length = center[1] - center[0] + bin_length = beam.mpi.tau_bin_length[j] charge_per_mp = beam.mpi.charge_per_mp_all[j] else: if i == 0: # get bunch profile for current bunch (bins, sorted_index, profile, center) = bunch.binning(n_bin=self.n_bin) + bin_length = bins[1] - bins[0] if j == 0: self.profile_save = np.zeros(( len(beam), @@ -405,13 +406,17 @@ class CavityResonator(): len(beam), len(center), )) + self.bin_length_save = np.zeros( + (len(beam), len(bin_length))) self.profile_save[j, :] = profile self.center_save[j, :] = center + self.bin_length_save[j, :] = bin_length + else: profile = self.profile_save[j, :] center = self.center_save[j, :] + bin_length = self.bin_length_save[j, :] - bin_length = center[1] - center[0] charge_per_mp = bunch.charge_per_mp self.phasor_decay(center[0] - bin_length/2, ref_frame="rf") @@ -511,13 +516,14 @@ class CavityResonator(): if self.tracking is False: self.init_tracking(beam) - N = self.n_bin - 1 + N = self.n_bin delta = (self.wr - self.m * self.ring.omega1) n_turn = int(self.filling_time / self.ring.T0 * 10) T = np.ones(self.ring.h) * self.ring.T1 bin_length = np.zeros(self.ring.h) charge_per_mp = np.zeros(self.ring.h) + bins = np.zeros((N + 1, self.ring.h)) profile = np.zeros((N, self.ring.h)) center = np.zeros((N, self.ring.h)) @@ -528,12 +534,12 @@ class CavityResonator(): beam.mpi.share_distributions(beam, n_bin=self.n_bin) center[:, index] = beam.mpi.tau_center[j] profile[:, index] = beam.mpi.tau_profile[j] - bin_length[index] = center[1, index] - center[0, index] + bin_length[index] = beam.mpi.bin_length[j] charge_per_mp[index] = beam.mpi.charge_per_mp_all[j] else: - (bins, sorted_index, profile[:, index], + (bins[:, index], sorted_index, profile[:, index], center[:, index]) = bunch.binning(n_bin=self.n_bin) - bin_length[index] = center[1, index] - center[0, index] + bin_length[index] = bins[1, index] - bins[0, index] charge_per_mp[index] = bunch.charge_per_mp T[index] -= (center[-1, index] + bin_length[index] / 2) if index != 0: