From 9da3fc6a2944722dd7aac3da97997d5283b52739 Mon Sep 17 00:00:00 2001
From: Carl Gwilliam <gwilliam@hep.ph.liv.ac.uk>
Date: Thu, 26 May 2022 19:05:23 +0100
Subject: [PATCH] Bug fix for radial sampler

---
 .../python/RadialPosSampler.py                | 20 ++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/Generators/FaserParticleGun/python/RadialPosSampler.py b/Generators/FaserParticleGun/python/RadialPosSampler.py
index a0ae101c..ad7d4f27 100644
--- a/Generators/FaserParticleGun/python/RadialPosSampler.py
+++ b/Generators/FaserParticleGun/python/RadialPosSampler.py
@@ -34,14 +34,18 @@ class RadialPosSampler(Sampler):
     @property
     def r(self):
         "r position sampler"
+
         fwhm = 2*self.radius
         sig = fwhm/(2 * sqrt(2 * log(2)))
 
         if self.radius < 0:
-            return random.uniform(0, abs(self.radius))
+            return sqrt(random.uniform(0, abs(self.radius**2)))
         else:
-            return random.gauss(0, self.radius)
-        # return random.gauss(0, sig)
+            x = random.gauss(0, self.radius)
+            y = random.gauss(0, self.radius)
+            return sqrt(x**2 + y**2)
+
+        #return random.gauss(0, sig)
 
     @property 
     def phi(self):
@@ -59,7 +63,7 @@ class RadialPosSampler(Sampler):
         return ROOT.TLorentzVector(x, y, z, t)
 
 if __name__ == "__main__":
-# test when run from command line
+    # test when run from command line
 
     import numpy as np
     import matplotlib.pyplot as plt
@@ -67,8 +71,8 @@ if __name__ == "__main__":
     xlist = []
     ylist = []
 
-    r = RadialPosSampler(r = 1, x = 10, y = -10, z = 10)
-    for i in range (10000):
+    r = RadialPosSampler(r = -10, x = 0, y =  0, z = 10)
+    for i in range (100000):
         res = r.shoot()
         xlist.append(res.X())
         ylist.append(res.Y())
@@ -78,10 +82,12 @@ if __name__ == "__main__":
 
     plt.figure(figsize = (5,5))
     plt.subplot(2,2,1)
-    plt.scatter(xarr, yarr, marker = "*")
+    plt.hist2d(xarr, yarr)
     plt.subplot(2,2,2)
     plt.hist(yarr)
     plt.subplot(2,2,3)
     plt.hist(xarr)
+    plt.subplot(2,2,4)
+    plt.hist(np.sqrt(xarr**2 + yarr**2))    
     plt.tight_layout()
     plt.show()
-- 
GitLab