AmpGen 2.1
Loading...
Searching...
No Matches
Kinematics.h
Go to the documentation of this file.
1#ifndef AMPGEN_KINEMATICS_H
2#define AMPGEN_KINEMATICS_H
3#include <stddef.h>
4#include <array>
5#include <tuple>
6#include <vector>
7
8#include <TLorentzVector.h>
9#include <TVector3.h>
10
11namespace AmpGen {
12 class Event;
13
19
24 public:
25 HelicityCosine(const std::vector<unsigned> &p1, const std::vector<unsigned> &p2, const std::vector<unsigned> &pR);
26
27 HelicityCosine(const unsigned &i, const unsigned &j, const std::vector<unsigned> &pR);
28
29 double operator()(std::vector<Event>::iterator evt) const;
30 double operator()(const Event &evt) const;
31
32 private:
33 std::vector<unsigned> _i, _j, _pR;
34 };
35
40 public:
41 MomentumTransfer(const std::vector<unsigned> &_p1, const std::vector<unsigned> &_p2);
42 double operator()(const Event &evt) const;
43
44 private:
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;
49 };
50
59 double acoplanarity(const Event &evt);
60
61 double PHI(const Event &evt);
62 double phi(const Event &evt, int i, int j, int k, int w);
63
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);
67
68 void rotateBasis(Event &evt, const TVector3 &p1, const TVector3 &p2, const TVector3 &p3);
69
77 double dotProduct(const TLorentzVector &p1, const TLorentzVector &p2, const TLorentzVector &pX);
78
82 TLorentzVector pFromEvent(const Event &evt, const unsigned &ref);
83
87 TLorentzVector pFromEvent(const Event &evt, const std::vector<unsigned> &ref);
88
89} // namespace AmpGen
90#endif
Encapsulates the final state particles of a single event.
Definition Event.h:19
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)