From 5e588ea914ef99641cba5c8879210328f140033a Mon Sep 17 00:00:00 2001
From: Gamelin Alexis <alexis.gamelin@synchrotron-soleil.fr>
Date: Wed, 2 Mar 2022 16:56:47 +0100
Subject: [PATCH] Add a center_of_mass method for the BeamLoadingVlasov class

---
 vlasov/beamloading.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/vlasov/beamloading.py b/vlasov/beamloading.py
index 07688a1..a91b5b2 100644
--- a/vlasov/beamloading.py
+++ b/vlasov/beamloading.py
@@ -88,6 +88,13 @@ class BeamLoadingVlasov():
             delta += cavity.Vb(self.I0) * self.F[i] * np.cos(cavity.psi - self.PHI[i])
             delta -= cavity.Vg * np.cos(cavity.theta_g)
         return delta
+    
+    def center_of_mass(self):
+        """Return center of mass position in [s]"""
+        z0 = np.linspace(self.B1, self.B2, 1000)
+        rho = self.rho(z0)
+        CM = np.average(z0, weights=rho)
+        return CM/c
 
     def u(self, z):
         """Scaled potential u(z)"""
-- 
GitLab