ComPWA
Common Partial-Wave-Analysis Framework
|
Implementation of the ComPWA::Kinematics interface for amplitude models using the helicity formalism. More...
#include <HelicityKinematics.hpp>
Public Member Functions | |
HelicityKinematics (ParticleStateTransitionKinematicsInfo KinInfo, double PhspVol) | |
HelicityKinematics (ParticleStateTransitionKinematicsInfo KinInfo) | |
HelicityKinematics (ComPWA::ParticleList partL, std::vector< pid > initialState, std::vector< pid > finalState, ComPWA::FourMomentum cmsP4=ComPWA::FourMomentum(0, 0, 0, 0)) | |
Create HelicityKinematics from inital and final state particle lists. More... | |
HelicityKinematics (const HelicityKinematics &that)=delete | |
Delete copy constructor. More... | |
HelicityKinematics (HelicityKinematics &&that)=default | |
std::pair< double, double > | calculateHelicityAngles (const Event &Event, const SubSystem &SubSys) const |
Calculates the pair of values of the Event Event for SubSystem SubSys . More... | |
double | calculateInvariantMassSquared (const Event &Event, const IndexList &FinalStateIDs) const |
Calculates the squared invariant mass of list of final state particles FinalStateIDs . More... | |
ComPWA::Data::DataSet | convert (const EventCollection &Events) const final |
Creates a DataSet from Events . More... | |
EventCollection | reduceToPhaseSpace (const EventCollection &Events) const final |
Returns a subset of Events that are within phase space boundaries. More... | |
std::string | registerInvariantMassSquared (IndexList System) |
std::pair< std::string, std::string > | registerHelicityAngles (SubSystem System) |
void | createAllSubsystems () |
std::tuple< std::string, std::string, std::string > | registerSubSystem (const SubSystem &NewSys) |
Add NewSys to list of SubSystems and return a tuple of names, that id the registered kinematic variables. More... | |
std::tuple< std::string, std::string, std::string > | registerSubSystem (const std::vector< unsigned int > &FinalA, const std::vector< unsigned int > &FinalB, const std::vector< unsigned int > &Recoil, const std::vector< unsigned int > &ParentRecoil) |
Add SubSystem from pos indices of final state particles. More... | |
const std::pair< double, double > & | getInvariantMassBounds (const std::string &InvariantMassName) const |
Get phase space bounds for the registered invariant mass with name InvariantMassName . More... | |
double | phspVolume () const |
const ParticleStateTransitionKinematicsInfo & | getParticleStateTransitionKinematicsInfo () const |
const std::vector< pid > & | getFinalStatePIDs () const override |
Get a vector of PIDs of the final state. More... | |
Public Member Functions inherited from ComPWA::Kinematics | |
virtual | ~Kinematics ()=default |
Private Member Functions | |
std::pair< double, double > | calculateInvMassBounds (const IndexList &FinalStateIDs) const |
Private Attributes | |
ParticleStateTransitionKinematicsInfo | KinematicsInfo |
double | PhspVolume |
std::unordered_map< SubSystem, std::pair< std::string, std::string > > | Subsystems |
Mapping of subsystems to the corresponding helicity angle variable names (theta, phi) More... | |
std::unordered_map< IndexList, std::string > | InvariantMassesSquared |
Mapping of final state particle index lists to invariant mass variable name. More... | |
std::unordered_map< std::string, std::pair< double, double > > | InvMassBounds |
Invariant mass bounds for each SubSystem. More... | |
Implementation of the ComPWA::Kinematics interface for amplitude models using the helicity formalism.
The basic functionality is the calculation of the kinematics variables from four-momenta.
Each SubSystem defines three kinematic variables: the invariant mass , and the helicity angles and are calculated
A SubSystem uniquely defines a two body decay based on the participating four-momenta: the two final states (which make up the decaying state), the decaying state recoil system, and the parents recoil). Since usually a large number of possible SubSystems can be defined in a particle decay but not all of them are used, bookkeeping system is introduced. This increases efficiency (cpu+memory) significantly. Kinematic variables can be registered for calculation via the register methods:
Definition at line 44 of file HelicityKinematics.hpp.
ComPWA::Physics::HelicityFormalism::HelicityKinematics::HelicityKinematics | ( | ParticleStateTransitionKinematicsInfo | KinInfo, |
double | PhspVol | ||
) |
Definition at line 45 of file HelicityKinematics.cpp.
ComPWA::Physics::HelicityFormalism::HelicityKinematics::HelicityKinematics | ( | ParticleStateTransitionKinematicsInfo | KinInfo | ) |
Calculation of n-dimensional phase space volume. ToDo: We need to implement an analytical calculation here
Definition at line 39 of file HelicityKinematics.cpp.
ComPWA::Physics::HelicityFormalism::HelicityKinematics::HelicityKinematics | ( | ComPWA::ParticleList | partL, |
std::vector< pid > | initialState, | ||
std::vector< pid > | finalState, | ||
ComPWA::FourMomentum | cmsP4 = ComPWA::FourMomentum(0, 0, 0, 0) |
||
) |
Create HelicityKinematics from inital and final state particle lists.
The lists contain the pid of initial and final state. The position of a particle in initial or final state list is used later on for identification.
Definition at line 26 of file HelicityKinematics.cpp.
|
delete |
Delete copy constructor.
For each Kinematics in the analysis only one instance should exist since Kinematics does the bookkeeping which SubSystems variables are needs to be calculated. That instance can then be passed by reference.
|
default |
std::pair< double, double > ComPWA::Physics::HelicityFormalism::HelicityKinematics::calculateHelicityAngles | ( | const Event & | Event, |
const SubSystem & | SubSys | ||
) | const |
Calculates the pair of values of the Event Event
for SubSystem SubSys
.
The step-by-step procedure to calculate the helicity angles is:
A (two-dimensional) illustration is given below
Definition at line 91 of file HelicityKinematics.cpp.
double ComPWA::Physics::HelicityFormalism::HelicityKinematics::calculateInvariantMassSquared | ( | const Event & | Event, |
const IndexList & | FinalStateIDs | ||
) | const |
Calculates the squared invariant mass of list of final state particles FinalStateIDs
.
The actual final state four momenta are extracted from the Event
.
Definition at line 159 of file HelicityKinematics.cpp.
|
private |
We use the formulae from (PDG2016 Kinematics Fig.47.3). I hope the generalization to n-body decays is correct.
Definition at line 420 of file HelicityKinematics.cpp.
|
finalvirtual |
Creates a DataSet from Events
.
Calculates all registered kinematic variables for all Events. Kinematic variables can be registered for example via the registerSubSystem(const SubSystem &newSys) method (see also other register methods). In this way only the variables are calculated that are used by the model.
Implements ComPWA::Kinematics.
Definition at line 171 of file HelicityKinematics.cpp.
void ComPWA::Physics::HelicityFormalism::HelicityKinematics::createAllSubsystems | ( | ) |
Definition at line 296 of file HelicityKinematics.cpp.
|
inlineoverridevirtual |
Get a vector of PIDs of the final state.
This interface allows the user to use the info in this object to interpret momentum tuples in a date file.
Implements ComPWA::Kinematics.
Definition at line 135 of file HelicityKinematics.hpp.
const std::pair< double, double > & ComPWA::Physics::HelicityFormalism::HelicityKinematics::getInvariantMassBounds | ( | const std::string & | InvariantMassName | ) | const |
Get phase space bounds for the registered invariant mass with name InvariantMassName
.
Definition at line 415 of file HelicityKinematics.cpp.
|
inline |
Definition at line 131 of file HelicityKinematics.hpp.
|
virtual |
Implements ComPWA::Kinematics.
Definition at line 54 of file HelicityKinematics.cpp.
|
finalvirtual |
Returns a subset of Events
that are within phase space boundaries.
Implements ComPWA::Kinematics.
Definition at line 56 of file HelicityKinematics.cpp.
std::pair< std::string, std::string > ComPWA::Physics::HelicityFormalism::HelicityKinematics::registerHelicityAngles | ( | SubSystem | System | ) |
Definition at line 240 of file HelicityKinematics.cpp.
std::string ComPWA::Physics::HelicityFormalism::HelicityKinematics::registerInvariantMassSquared | ( | IndexList | System | ) |
Definition at line 222 of file HelicityKinematics.cpp.
std::tuple< std::string, std::string, std::string > ComPWA::Physics::HelicityFormalism::HelicityKinematics::registerSubSystem | ( | const SubSystem & | NewSys | ) |
Add NewSys
to list of SubSystems and return a tuple of names, that id the registered kinematic variables.
In case that this SubSystem is already in the list only the variable names is returned.
Definition at line 373 of file HelicityKinematics.cpp.
std::tuple< std::string, std::string, std::string > ComPWA::Physics::HelicityFormalism::HelicityKinematics::registerSubSystem | ( | const std::vector< unsigned int > & | FinalA, |
const std::vector< unsigned int > & | FinalB, | ||
const std::vector< unsigned int > & | Recoil, | ||
const std::vector< unsigned int > & | ParentRecoil | ||
) |
Add SubSystem from pos
indices of final state particles.
Definition at line 394 of file HelicityKinematics.cpp.
|
private |
Mapping of final state particle index lists to invariant mass variable name.
Definition at line 150 of file HelicityKinematics.hpp.
|
private |
Invariant mass bounds for each SubSystem.
Definition at line 153 of file HelicityKinematics.hpp.
|
private |
Definition at line 140 of file HelicityKinematics.hpp.
|
private |
Definition at line 142 of file HelicityKinematics.hpp.
|
private |
Mapping of subsystems to the corresponding helicity angle variable names (theta, phi)
Definition at line 146 of file HelicityKinematics.hpp.