File indexing completed on 2025-04-19 09:10:05
0001 #ifndef MCATNLO_Main_CS_Cluster_Definitions_H
0002 #define MCATNLO_Main_CS_Cluster_Definitions_H
0003
0004 #include "PDF/Main/Cluster_Definitions_Base.H"
0005
0006 namespace MCATNLO {
0007
0008 class Splitting_Function_Base;
0009 class Shower;
0010
0011 struct CS_Parameters {
0012 double m_kt2, m_z, m_y, m_phi, m_x, m_wk, m_ws, m_q2, m_mu2;
0013 int m_mode, m_kin, m_col, m_kmode;
0014 Splitting_Function_Base *p_sf;
0015 size_t m_idi, m_idj, m_idk;
0016 ATOOLS::Vec4D m_pbt;
0017 CS_Parameters(const double &kt2,const double &z,
0018 const double &y,const double &phi,
0019 const double &x,const double &q2,
0020 const int mode=-1,const int kin=0,const int kmode=0):
0021 m_kt2(kt2), m_z(z), m_y(y), m_phi(phi), m_x(x), m_wk(1.0), m_ws(kt2),
0022 m_q2(q2), m_mu2(kt2), m_mode(mode), m_kin(kin), m_col(0), m_kmode(kmode), p_sf(NULL),
0023 m_idi(0), m_idj(0), m_idk(0) {}
0024 };
0025
0026 std::ostream &operator<<(std::ostream &str,const CS_Parameters &cs);
0027
0028 class CS_Cluster_Definitions: public PDF::Cluster_Definitions_Base {
0029 private:
0030
0031 const ATOOLS::Mass_Selector *p_ms;
0032 ATOOLS::Cluster_Leg *p_b;
0033
0034 Shower *p_shower;
0035 int m_mode, m_kmode, m_amode;
0036
0037 double Lambda(const double &s,const double &sb,const double &sc) const;
0038 double Phi(ATOOLS::Vec4D pijt,ATOOLS::Vec4D pkt,
0039 ATOOLS::Vec4D pi,const bool ii=false) const;
0040 void KernelWeight(const ATOOLS::Cluster_Leg *i,
0041 const ATOOLS::Cluster_Leg *j,
0042 const ATOOLS::Cluster_Leg *k,
0043 const ATOOLS::Flavour &mo,CS_Parameters &cs) const;
0044 ATOOLS::Flavour ProperFlav(const ATOOLS::Flavour &fl) const;
0045
0046 public:
0047
0048 CS_Cluster_Definitions(Shower *const shower,const int kmode=1);
0049
0050
0051 double GetX(const ATOOLS::Cluster_Leg*,
0052 Splitting_Function_Base* const) const;
0053 PDF::Cluster_Param Cluster(const PDF::Cluster_Config &ca);
0054 CS_Parameters KT2(const ATOOLS::Cluster_Amplitude *ampl,
0055 const ATOOLS::Cluster_Leg *i,
0056 const ATOOLS::Cluster_Leg *j,
0057 const ATOOLS::Cluster_Leg *k,
0058 const ATOOLS::Flavour &mo=ATOOLS::Flavour(kf_none),
0059 const ATOOLS::Mass_Selector *ms=NULL,
0060 const int ikin=1,const int kmode=0);
0061
0062
0063 ATOOLS::Vec4D_Vector Combine(const ATOOLS::Cluster_Amplitude &l,
0064 int i,int j,int k,
0065 const ATOOLS::Flavour &mo=ATOOLS::Flavour(kf_none),
0066 const ATOOLS::Mass_Selector *const ms=NULL,
0067 const int kin=0,const int kmode=0);
0068
0069
0070 inline ATOOLS::Cluster_Leg *LegB() const { return p_b; }
0071
0072 inline void SetAMode(const size_t mode) { m_amode=mode; }
0073
0074 };
0075
0076 }
0077
0078 #endif