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{
13 class Event;
14
20
25 public:
26 HelicityCosine(const std::vector<unsigned>& p1, const std::vector<unsigned>& p2,
27 const std::vector<unsigned>& pR);
28
29 HelicityCosine(const unsigned& i, const unsigned& j, const std::vector<unsigned>& pR);
30
31 double operator()( std::vector<Event>::iterator evt ) const;
32 double operator()( const Event& evt ) const;
33 private:
34 std::vector<unsigned> _i, _j, _pR;
35 };
36
41 public:
42 MomentumTransfer( const std::vector<unsigned>& _p1, const std::vector<unsigned>& _p2 );
43 double operator()( const Event& evt ) const;
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:18
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)