ComPWA
Common Partial-Wave-Analysis Framework
ComPWA::Physics::HelicityFormalism::HelicityKinematics Class Reference

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 $(\Theta, \phi)$ of the Event Event for SubSystem SubSys. More...
 
double calculateInvariantMassSquared (const Event &Event, const IndexList &FinalStateIDs) const
 Calculates the squared invariant mass $m^2$ 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 ParticleStateTransitionKinematicsInfogetParticleStateTransitionKinematicsInfo () 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...
 

Detailed Description

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.

See also
ComPWA::Data::DataSet convert(const EventCollection &Events) const;

Each SubSystem defines three kinematic variables: the invariant mass $m^2$, and the helicity angles $\Theta$ and $\phi$ 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:

  1. See also
    registerSubSystem();
  2. See also
    std::string registerInvariantMassSquared(IndexList System);
  3. See also
    std::pair<std::string, std::string> registerHelicityAngles(SubSystem System);

Definition at line 44 of file HelicityKinematics.hpp.

+ Inheritance diagram for ComPWA::Physics::HelicityFormalism::HelicityKinematics:
+ Collaboration diagram for ComPWA::Physics::HelicityFormalism::HelicityKinematics:

Constructor & Destructor Documentation

◆ HelicityKinematics() [1/5]

ComPWA::Physics::HelicityFormalism::HelicityKinematics::HelicityKinematics ( ParticleStateTransitionKinematicsInfo  KinInfo,
double  PhspVol 
)

Definition at line 45 of file HelicityKinematics.cpp.

◆ HelicityKinematics() [2/5]

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.

◆ HelicityKinematics() [3/5]

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.

◆ HelicityKinematics() [4/5]

ComPWA::Physics::HelicityFormalism::HelicityKinematics::HelicityKinematics ( const HelicityKinematics that)
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.

◆ HelicityKinematics() [5/5]

ComPWA::Physics::HelicityFormalism::HelicityKinematics::HelicityKinematics ( HelicityKinematics &&  that)
default

Member Function Documentation

◆ calculateHelicityAngles()

std::pair< double, double > ComPWA::Physics::HelicityFormalism::HelicityKinematics::calculateHelicityAngles ( const Event Event,
const SubSystem SubSys 
) const

Calculates the pair of values $(\Theta, \phi)$ of the Event Event for SubSystem SubSys.

The step-by-step procedure to calculate the helicity angles is:

  1. Calculate the four-momentum of center-of-mass system of the decay, by summing up all final state particle four-momenta.
  2. Boost the the final state particles, the recoil and the parent recoil into the CMS of the decaying state.
  3. Rotate the whole CMS system so that the recoil of the decaying state points in the -z-axis direction. This makes the z-axis the path of flight of the decaying state.
  4. Then rotate the CMS system so that the parent recoil lies in the x-z plane. This defines the angle $\phi$ of the current transformed final state particles as the angle difference with respect to the production plane.
  5. The helicity angles $\Theta$ and $\phi$ can now simply be read of the momenta of the final state particles.

A (two-dimensional) illustration is given below

HelicityAngle.png
Helicity angle

Definition at line 91 of file HelicityKinematics.cpp.

◆ calculateInvariantMassSquared()

double ComPWA::Physics::HelicityFormalism::HelicityKinematics::calculateInvariantMassSquared ( const Event Event,
const IndexList FinalStateIDs 
) const

Calculates the squared invariant mass $m^2$ 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.

◆ calculateInvMassBounds()

std::pair< double, double > ComPWA::Physics::HelicityFormalism::HelicityKinematics::calculateInvMassBounds ( const IndexList FinalStateIDs) const
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.

◆ convert()

ComPWA::Data::DataSet ComPWA::Physics::HelicityFormalism::HelicityKinematics::convert ( const EventCollection Events) const
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.

◆ createAllSubsystems()

void ComPWA::Physics::HelicityFormalism::HelicityKinematics::createAllSubsystems ( )

Definition at line 296 of file HelicityKinematics.cpp.

◆ getFinalStatePIDs()

const std::vector<pid>& ComPWA::Physics::HelicityFormalism::HelicityKinematics::getFinalStatePIDs ( ) const
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.

◆ getInvariantMassBounds()

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.

◆ getParticleStateTransitionKinematicsInfo()

const ParticleStateTransitionKinematicsInfo& ComPWA::Physics::HelicityFormalism::HelicityKinematics::getParticleStateTransitionKinematicsInfo ( ) const
inline

Definition at line 131 of file HelicityKinematics.hpp.

◆ phspVolume()

double ComPWA::Physics::HelicityFormalism::HelicityKinematics::phspVolume ( ) const
virtual

Implements ComPWA::Kinematics.

Definition at line 54 of file HelicityKinematics.cpp.

◆ reduceToPhaseSpace()

EventCollection ComPWA::Physics::HelicityFormalism::HelicityKinematics::reduceToPhaseSpace ( const EventCollection Events) const
finalvirtual

Returns a subset of Events that are within phase space boundaries.

Implements ComPWA::Kinematics.

Definition at line 56 of file HelicityKinematics.cpp.

◆ registerHelicityAngles()

std::pair< std::string, std::string > ComPWA::Physics::HelicityFormalism::HelicityKinematics::registerHelicityAngles ( SubSystem  System)

Definition at line 240 of file HelicityKinematics.cpp.

◆ registerInvariantMassSquared()

std::string ComPWA::Physics::HelicityFormalism::HelicityKinematics::registerInvariantMassSquared ( IndexList  System)

Definition at line 222 of file HelicityKinematics.cpp.

◆ registerSubSystem() [1/2]

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.

◆ registerSubSystem() [2/2]

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.

Member Data Documentation

◆ InvariantMassesSquared

std::unordered_map<IndexList, std::string> ComPWA::Physics::HelicityFormalism::HelicityKinematics::InvariantMassesSquared
private

Mapping of final state particle index lists to invariant mass variable name.

Definition at line 150 of file HelicityKinematics.hpp.

◆ InvMassBounds

std::unordered_map<std::string, std::pair<double, double> > ComPWA::Physics::HelicityFormalism::HelicityKinematics::InvMassBounds
private

Invariant mass bounds for each SubSystem.

Definition at line 153 of file HelicityKinematics.hpp.

◆ KinematicsInfo

ParticleStateTransitionKinematicsInfo ComPWA::Physics::HelicityFormalism::HelicityKinematics::KinematicsInfo
private

Definition at line 140 of file HelicityKinematics.hpp.

◆ PhspVolume

double ComPWA::Physics::HelicityFormalism::HelicityKinematics::PhspVolume
private

Definition at line 142 of file HelicityKinematics.hpp.

◆ Subsystems

std::unordered_map<SubSystem, std::pair<std::string, std::string> > ComPWA::Physics::HelicityFormalism::HelicityKinematics::Subsystems
private

Mapping of subsystems to the corresponding helicity angle variable names (theta, phi)

Definition at line 146 of file HelicityKinematics.hpp.


The documentation for this class was generated from the following files: