MARLEY (Model of Argon Reaction Low Energy Yields)  v1.2.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
marley_kinematics.hh
1 //
5 // This file is part of MARLEY (Model of Argon Reaction Low Energy Yields)
6 //
7 // MARLEY is free software: you can redistribute it and/or modify it under the
8 // terms of version 3 of the GNU General Public License as published by the
9 // Free Software Foundation.
10 //
11 // For the full text of the license please see COPYING or
12 // visit http://opensource.org/licenses/GPL-3.0
13 //
14 // Please respect the MCnet academic usage guidelines. See GUIDELINES
15 // or visit https://www.montecarlonet.org/GUIDELINES for details.
16 
17 #pragma once
18 #include <cmath>
19 
20 #include "marley/Error.hh"
21 
22 namespace marley {
23  class Particle;
24 }
25 
26 namespace marley_kinematics {
27 
28  // Lorentz boost a particle, replacing its energy and momentum with the
29  // boosted versions
30  void lorentz_boost(double beta_x, double beta_y, double beta_z,
31  marley::Particle& particle_to_boost);
32 
53  void two_body_decay(const marley::Particle& initial_particle,
54  marley::Particle& first_product, marley::Particle& second_product,
55  double cos_theta_first, double phi_first);
56 
57  // Rotates a particle's 3-momentum so that it points in the (x, y, z)
58  // direction
59  void rotate_momentum_vector(double x, double y, double z,
60  marley::Particle& particle_to_rotate);
61 
62  // Gets the square of the total energy in the center of momentum frame for
63  // two particles
64  double get_mandelstam_s(const marley::Particle& p1,
65  const marley::Particle& p2);
66 
67  // Boost two particles into their mutual center-of-momentum frame
68  void boost_to_cm_frame(marley::Particle& p1, marley::Particle& p2);
69 }
Momentum four-vector for a simulated particle.
Definition: Particle.hh:32