1#ifndef AMPGEN_KINEMATICS_H
2#define AMPGEN_KINEMATICS_H
8#include <TLorentzVector.h>
25 HelicityCosine(
const std::vector<unsigned> &p1,
const std::vector<unsigned> &p2,
const std::vector<unsigned> &pR);
27 HelicityCosine(
const unsigned &i,
const unsigned &j,
const std::vector<unsigned> &pR);
29 double operator()(std::vector<Event>::iterator evt)
const;
33 std::vector<unsigned> _i, _j, _pR;
45 double Q2(
const double &s,
const double &s1,
const double &s2)
const;
46 std::vector<unsigned> p1;
47 std::vector<unsigned> p2;
48 std::vector<unsigned> s;
62 double phi(
const Event &evt,
int i,
int j,
int k,
int w);
64 std::vector<double>
rotate(
const std::vector<double> &input,
const std::vector<double> &n,
const double &v);
65 void boost(
Event &evt,
const std::tuple<double, double, double> &n,
const double &v);
66 void rotate(
Event &evt,
const std::tuple<double, double, double> &n,
const double &v);
68 void rotateBasis(
Event &evt,
const TVector3 &p1,
const TVector3 &p2,
const TVector3 &p3);
77 double dotProduct(
const TLorentzVector &p1,
const TLorentzVector &p2,
const TLorentzVector &pX);
Encapsulates the final state particles of a single event.
double operator()(const Event &evt) const
double operator()(std::vector< Event >::iterator evt) const
HelicityCosine(const std::vector< unsigned > &p1, const std::vector< unsigned > &p2, const std::vector< unsigned > &pR)
HelicityCosine(const unsigned &i, const unsigned &j, const std::vector< unsigned > &pR)
MomentumTransfer(const std::vector< unsigned > &_p1, const std::vector< unsigned > &_p2)
double operator()(const Event &evt) const
TLorentzVector pFromEvent(const Event &evt, const unsigned &ref)
Helper function to extract a TLorentzVector of the ith decay product from an AmpGen::Event.
double acoplanarity(const Event &evt)
The extent to which a four body decay occurs within a single decay frame.
double dotProduct(const TLorentzVector &p1, const TLorentzVector &p2, const TLorentzVector &pX)
Helper function to calculate the (space-like) dot product between vectors p1 and p2 in the rest frame...
void boost(Event &evt, const std::tuple< double, double, double > &n, const double &v)
double phi(const Event &evt, int i, int j, int k, int w)
void rotateBasis(Event &evt, const TVector3 &p1, const TVector3 &p2, const TVector3 &p3)
double PHI(const Event &evt)
std::vector< double > rotate(const std::vector< double > &input, const std::vector< double > &n, const double &v)