File indexing completed on 2025-04-19 09:09:56
0001 #ifndef ATOOLS_Phys_Particle_Dresser_H
0002 #define ATOOLS_Phys_Particle_Dresser_H
0003
0004 #include "ATOOLS/Math/Poincare.H"
0005 #include "ATOOLS/Math/MathTools.H"
0006 #include "ATOOLS/Phys/Flavour.H"
0007 #include "ATOOLS/Phys/Selector_List.H"
0008
0009 namespace ATOOLS {
0010 class Particle_Dresser {
0011 private:
0012 bool m_on;
0013 Selector_List * p_sl;
0014 size_t m_algo;
0015 double m_exp, m_dR2global;
0016 std::map<kf_code,double> m_kfdR2s;
0017 std::vector<double> m_dR2;
0018 std::vector<size_t> m_photons;
0019 std::vector<size_t> m_charges;
0020
0021
0022 std::vector<double> m_di,m_dj;
0023 std::vector<std::vector<double> > m_dij;
0024
0025 void SetAlgo(std::string algo);
0026
0027 double Pow(const double& x, const double& exp);
0028 double DeltaPhi(const ATOOLS::Vec4D& p1, const ATOOLS::Vec4D& p2);
0029 double DeltaR2(const ATOOLS::Vec4D& p1, const ATOOLS::Vec4D& p2);
0030
0031 void ConeDress(Selector_List& sl);
0032 void RecombinationDress(Selector_List& sl);
0033 public:
0034 Particle_Dresser(const Flavour * fl,
0035 const size_t& nin, const size_t& nout,
0036 std::string algo, double dR);
0037 Particle_Dresser(std::string algo, double dR);
0038 ~Particle_Dresser();
0039
0040 void SetFlavourDependentCone(kf_code kf,double dR) { m_kfdR2s[kf]=dR*dR; }
0041
0042 void CompleteConeLists();
0043
0044 ATOOLS::Vec4D_Vector Dress(const ATOOLS::Vec4D_Vector& p);
0045 void Dress(Selector_List& sl);
0046
0047 inline bool IsOn() const { return m_on; }
0048
0049 inline size_t Algorithm() const { return m_algo; }
0050 inline double Exponent() const { return m_exp; }
0051 };
0052
0053 }
0054 #endif