summaryrefslogtreecommitdiff
path: root/pi0.py
diff options
context:
space:
mode:
authorStan Seibert <stan@mtrr.org>2011-09-19 14:36:13 -0400
committerStan Seibert <stan@mtrr.org>2011-09-19 14:36:13 -0400
commita21b05e4727403e2e061234289af9e60e6022e5a (patch)
tree7a7d4c5809c370f3e542cfc8cb0bec7c2e4f5cdc /pi0.py
parentcfecff941fc619eb7269128afc62d9c11ae78aff (diff)
parenta38c56ff1e268298568077af7f03c8ac64c6fb82 (diff)
downloadchroma-a21b05e4727403e2e061234289af9e60e6022e5a.tar.gz
chroma-a21b05e4727403e2e061234289af9e60e6022e5a.tar.bz2
chroma-a21b05e4727403e2e061234289af9e60e6022e5a.zip
merge relayout branch
Diffstat (limited to 'pi0.py')
-rw-r--r--pi0.py69
1 files changed, 0 insertions, 69 deletions
diff --git a/pi0.py b/pi0.py
deleted file mode 100644
index 91e8097..0000000
--- a/pi0.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import numpy as np
-
-_kg_per_MeV = 1.782661758e-36/1e-6
-_pi0_mass = 134.9766*_kg_per_MeV
-
-def rocket_to_lab(energy, momentum, v):
- """
- Return the energy and momentum of a particle in the lab frame from its
- energy and momentum in a rocket frame traveling at a velocity `v` with
- respect to the lab frame.
-
- Args:
- - energy: float, kg
- The energy of the particle in the rocket frame.
- - momentum: array, kg
- The momentum of the particle in the rocket frame.
- - v: array, units of c
- The velocity of the rocket frame as seen in the lab frame.
- """
- e0 = float(energy)
- p0 = np.asarray(momentum, float)
- v = np.asarray(v, float)
-
- assert e0**2 - p0.dot(p0) >= -1.0e-70
-
- g = 1.0/np.sqrt(1.0-v.dot(v))
-
- x = np.dot(p0, v)/np.linalg.norm(v)
- p = p0 + ((g-1.0)*x + g*np.linalg.norm(v)*e0)*v/np.linalg.norm(v)
- e = np.sqrt(e0**2 - p0.dot(p0) + p.dot(p))
-
- return e, p
-
-def pi0_decay(energy, direction, theta, phi):
- """
- Return the energy and directions for two photons produced from a pi0
- decay in the lab frame given that one of the photons decayed at polar
- angles `theta` and `phi` in the pi0 rest frame.
-
- Args:
- - energy: float, MeV
- The total energy of the pi0.
- - direction: array
- The direction of the pi0's velocity in the lab frame.
-
- Returns:
- - e1: float, MeV
- The energy of the first photon in the lab frame.
- - v1: array,
- The direction of the first photon in the lab frame.
- - e2: float, MeV
- The energy of the second photon in the lab frame.
- - v2: array,
- The direction of the second photon in the lab frame.
- """
- direction = np.asarray(direction)/np.linalg.norm(direction)
- pi0_e = float(energy)*_kg_per_MeV
- pi0_p = np.sqrt(pi0_e**2-_pi0_mass**2)*direction
- pi0_v = pi0_p/pi0_e
-
- photon_e0 = _pi0_mass/2.0
- photon_p0 = photon_e0*np.array([np.cos(theta)*np.sin(phi), np.sin(theta)*np.sin(phi), np.cos(phi)])
-
- e1, p1 = rocket_to_lab(photon_e0, photon_p0, pi0_v)
- v1 = p1/np.linalg.norm(p1)
- e2, p2 = rocket_to_lab(photon_e0, -photon_p0, pi0_v)
- v2 = p2/np.linalg.norm(p2)
-
- return (e1/_kg_per_MeV, v1), (e2/_kg_per_MeV, v2)