Back to home page

EIC code displayed by LXR

 
 

    


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