Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of struct CS_Parameters
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     // CS cluster kperps
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     // CS cluster kinematics
0063     ATOOLS::Vec4D_Vector Combine(const ATOOLS::Cluster_Amplitude &ampl,
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     //inline methods
0070     inline ATOOLS::Cluster_Leg *LegB() const { return p_b; }
0071 
0072     inline void SetAMode(const size_t mode) { m_amode=mode; }
0073 
0074   };// end of class CS_Cluster_Definitions
0075 
0076 }// end of namespace MCATNLO
0077 
0078 #endif