![]() |
|
|||
File indexing completed on 2025-04-19 09:06:50
0001 // -*- C++ -*- 0002 #ifndef RIVET_Beams_HH 0003 #define RIVET_Beams_HH 0004 0005 #include "Rivet/Particle.hh" 0006 #include "Rivet/Event.hh" 0007 #include "Rivet/Math/LorentzTrans.hh" 0008 0009 namespace Rivet { 0010 0011 0012 /// @defgroup beam_functions Standalone beam kinematics functions 0013 /// @{ 0014 0015 /// Get beam particles from an event 0016 ParticlePair beams(const Event& e); 0017 0018 0019 /// Check if the given beam pair is valid 0020 bool validBeams(const ParticlePair& beams); 0021 0022 /// Check if the event's beam pair is valid 0023 inline bool validBeams(const Event& e) { 0024 return validBeams(beams(e)); 0025 } 0026 0027 0028 /// Get beam particle IDs from a pair of Particles 0029 inline PdgIdPair beamIDs(const ParticlePair& beams) { return pids(beams); } 0030 0031 /// Get beam particle IDs from an event 0032 inline PdgIdPair beamIDs(const Event& e) { return beamIDs(beams(e)); } 0033 0034 0035 /// Get beam particle energies from a pair of Particles 0036 inline PdgIdPair beamEnergies(const ParticlePair& beams) { return energies(beams); } 0037 0038 /// Get beam particle energies from an event 0039 inline PdgIdPair beamEnergies(const Event& e) { return beamEnergies(beams(e)); } 0040 0041 0042 /// @brief Get beam centre-of-mass energy from a pair of beam energies 0043 /// 0044 /// For want of more complete information, this function assumes massless 0045 /// particles colliding head-on. 0046 double sqrtS(double ea, double eb); 0047 0048 /// @brief Get beam centre-of-mass energy from a pair of beam energies 0049 /// 0050 /// For want of more complete information, this function assumes massless 0051 /// particles colliding head-on. 0052 inline double sqrtS(const pair<double,double>& energies) { return sqrtS(energies.first, energies.second); } 0053 0054 /// Get beam centre-of-mass energy from a pair of beam momenta 0055 double sqrtS(const FourMomentum& pa, const FourMomentum& pb); 0056 0057 /// Get beam centre-of-mass energy from a pair of Particles 0058 inline double sqrtS(const ParticlePair& beams) { 0059 return sqrtS(beams.first.momentum(), beams.second.momentum()); 0060 } 0061 0062 /// Get beam centre-of-mass energy from an Event 0063 inline double sqrtS(const Event& e) { return sqrtS(beams(e)); } 0064 0065 0066 /// Get per-nucleon beam centre-of-mass energy from a pair of beam momenta 0067 /// @note Uses a nominal nucleon mass of 0.939 GeV to convert masses to A 0068 double asqrtS(const FourMomentum& pa, const FourMomentum& pb); 0069 0070 /// Get per-nucleon beam centre-of-mass energy from a pair of Particles 0071 /// @note Uses the sum of nuclear mass numbers A for each beam 0072 double asqrtS(const ParticlePair& beams); 0073 0074 /// Get per-nucleon beam centre-of-mass energy from an Event 0075 /// @note Uses the sum of nuclear mass numbers A for each beam 0076 inline double asqrtS(const Event& e) { return asqrtS(beams(e)); } 0077 0078 0079 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta 0080 inline FourMomentum cmsBoostVec(const FourMomentum& pa, const FourMomentum& pb) { 0081 return pa + pb; 0082 } 0083 0084 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of Particles 0085 inline FourMomentum cmsBoostVec(const ParticlePair& beams) { 0086 return cmsBoostVec(beams.first, beams.second); 0087 } 0088 0089 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta 0090 FourMomentum acmsBoostVec(const FourMomentum& pa, const FourMomentum& pb); 0091 0092 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of Particles 0093 FourMomentum acmsBoostVec(const ParticlePair& beams); 0094 0095 0096 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta 0097 Vector3 cmsBetaVec(const FourMomentum& pa, const FourMomentum& pb); 0098 0099 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of Particles 0100 inline Vector3 cmsBetaVec(const ParticlePair& beams) { 0101 return cmsBetaVec(beams.first, beams.second); 0102 } 0103 0104 0105 /// Get the Lorentz boost to the per-nucleon beam centre-of-mass system (ACMS) from a pair of beam momenta 0106 /// @note Uses a nominal nucleon mass of 0.939 GeV to convert masses to A 0107 Vector3 acmsBetaVec(const FourMomentum& pa, const FourMomentum& pb); 0108 0109 /// Get the Lorentz boost to the per-nucleon beam centre-of-mass system (ACMS) from a pair of Particles 0110 /// @note Uses the sum of nuclear mass numbers A for each beam 0111 Vector3 acmsBetaVec(const ParticlePair& beams); 0112 0113 0114 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of beam momenta 0115 Vector3 cmsGammaVec(const FourMomentum& pa, const FourMomentum& pb); 0116 0117 /// Get the Lorentz boost to the beam centre-of-mass system (CMS) from a pair of Particles 0118 inline Vector3 cmsGammaVec(const ParticlePair& beams) { 0119 return cmsGammaVec(beams.first, beams.second); 0120 } 0121 0122 0123 /// Get the Lorentz boost to the per-nucleon beam centre-of-mass system (ACMS) from a pair of beam momenta 0124 /// @note Uses a nominal nucleon mass of 0.939 GeV to convert masses to A 0125 Vector3 acmsGammaVec(const FourMomentum& pa, const FourMomentum& pb); 0126 0127 /// Get the Lorentz boost to the per-nucleon beam centre-of-mass system (ACMS) from a pair of Particles 0128 /// @note Uses the sum of nuclear mass numbers A for each beam 0129 Vector3 acmsGammaVec(const ParticlePair& beams); 0130 0131 0132 /// Get the Lorentz transformation to the beam centre-of-mass system (CMS) from a pair of beam momenta 0133 LorentzTransform cmsTransform(const FourMomentum& pa, const FourMomentum& pb); 0134 0135 /// Get the Lorentz transformation to the beam centre-of-mass system (CMS) from a pair of Particles 0136 inline LorentzTransform cmsTransform(const ParticlePair& beams) { 0137 return cmsTransform(beams.first, beams.second); 0138 } 0139 0140 0141 /// Get the Lorentz transformation to the per-nucleon beam centre-of-mass system (CMS) from a pair of beam momenta 0142 /// @note Uses a nominal nucleon mass of 0.939 GeV to convert masses to A 0143 LorentzTransform acmsTransform(const FourMomentum& pa, const FourMomentum& pb); 0144 0145 /// Get the Lorentz transformation to the per-nucleon beam centre-of-mass system (CMS) from a pair of Particles 0146 /// @note Uses the sum of nuclear mass numbers A for each beam 0147 LorentzTransform acmsTransform(const ParticlePair& beams); 0148 0149 /// @} 0150 0151 0152 } 0153 0154 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |