File indexing completed on 2025-04-19 09:10:16
0001 #ifndef SHRIMPS_Ladders_Ladder_Particle_H
0002 #define SHRIMPS_Ladders_Ladder_Particle_H
0003
0004 #include "ATOOLS/Phys/Particle.H"
0005 #include "ATOOLS/Phys/Flavour.H"
0006 #include "ATOOLS/Math/Poincare.H"
0007 #include "ATOOLS/Math/Vector.H"
0008 #include <map>
0009
0010 namespace SHRIMPS {
0011 class Ladder_Particle {
0012 private:
0013 ATOOLS::Flavour m_flav;
0014 ATOOLS::Vec4D m_mom, m_pos;
0015 ATOOLS::Flow m_flow;
0016 bool m_marked, m_IS;
0017 int m_beam;
0018 public:
0019 Ladder_Particle(const ATOOLS::Flavour & flav=ATOOLS::Flavour(kf_none),
0020 const ATOOLS::Vec4D & mom=ATOOLS::Vec4D(0.,0.,0.,0.),
0021 const ATOOLS::Vec4D & pos=ATOOLS::Vec4D(0.,0.,0.,0.));
0022 Ladder_Particle(const Ladder_Particle & part);
0023 ~Ladder_Particle() { }
0024
0025 void SetFlow(const unsigned int & pos,const int & code=-1);
0026 ATOOLS::Particle * GetParticle();
0027
0028 inline const ATOOLS::Flavour & Flavour() const { return m_flav; }
0029 inline const ATOOLS::Vec4D & Momentum() const { return m_mom; }
0030 inline const ATOOLS::Vec4D & Position() const { return m_pos; }
0031 inline const int GetFlow(const size_t & pos) const { return m_flow.Code(pos); }
0032 inline const bool & IsIS() const { return m_IS; }
0033 inline const bool & IsMarked() const { return m_marked; }
0034 inline const int & Beam() const { return m_beam; }
0035
0036 inline void SetFlavour(const ATOOLS::Flavour & flav) { m_flav = flav; }
0037 inline void SetMomentum(const ATOOLS::Vec4D & mom) { m_mom = mom; }
0038 inline void SetPosition(const ATOOLS::Vec4D & pos) { m_pos = pos; }
0039 inline void SetIS(const bool & IS) { m_IS = IS; }
0040 inline void SetMark(const bool & mark) { m_marked = mark; }
0041 inline void SetBeam(const int & beam) { m_beam = beam; }
0042 inline void BoostBack(const ATOOLS::Poincare & booster) { booster.BoostBack(m_mom); }
0043 inline void Boost(const ATOOLS::Poincare & booster) { booster.Boost(m_mom); }
0044 };
0045 typedef std::map<double,Ladder_Particle,std::greater<double> > LadderMap;
0046 std::ostream & operator<<(std::ostream & s, const Ladder_Particle & part);
0047 std::ostream & operator<<(std::ostream & s, const LadderMap & lmap);
0048 }
0049
0050 #endif