Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:08

0001 #ifndef PDF__Main__Cluster_Definitions_Base_H
0002 #define PDF__Main__Cluster_Definitions_Base_H
0003 
0004 #include "ATOOLS/Phys/Cluster_Amplitude.H"
0005 #include "ATOOLS/Phys/Decay_Info.H"
0006 #include "ATOOLS/Math/Poincare.H"
0007 
0008 namespace PDF {
0009 
0010   struct Cluster_Config {
0011     ATOOLS::Cluster_Amplitude *p_ampl;
0012     int m_i, m_j, m_k, m_kin, m_mode;
0013     ATOOLS::Flavour m_mo;
0014     const ATOOLS::Mass_Selector *p_ms;
0015     inline Cluster_Config
0016     (ATOOLS::Cluster_Amplitude *ampl,
0017      const int i,const int j=-1,const int k=-1,
0018      const ATOOLS::Flavour &mo=ATOOLS::Flavour(kf_none),
0019      const ATOOLS::Mass_Selector *ms=NULL,
0020      ATOOLS::Decay_Info *const dec=NULL,
0021      const int kin=-1,const int mode=0):
0022       p_ampl(ampl), m_i(i), m_j(j), m_k(k),
0023       m_kin(kin), m_mode(mode),
0024       m_mo(mo), p_ms(ms) {}
0025     bool PureQCD() const;
0026     bool operator<(const Cluster_Config &cc) const;
0027   };// end of struct Cluster_Config
0028 
0029   std::ostream &operator<<(std::ostream &str,const Cluster_Config &cc);
0030 
0031   class Cluster_Definitions_Base;
0032 
0033   struct Cluster_Param {
0034     Cluster_Definitions_Base *p_ca;
0035     double m_op, m_kt2, m_mu2;
0036     int m_cpl, m_kin, m_mode, m_stat;
0037     ATOOLS::Vec4D m_pijt, m_pkt;
0038     ATOOLS::Poincare_Sequence m_lam;
0039     Cluster_Param(Cluster_Definitions_Base *const ca=NULL,
0040           const double &op=0.0,
0041           const double &kt2=0.0,const double &mu2=0.0,
0042           const int cpl=-1,const int kin=0,const int mode=0,
0043           const ATOOLS::Vec4D &pijt=ATOOLS::Vec4D(),
0044           const ATOOLS::Vec4D &pkt=ATOOLS::Vec4D(),
0045           const ATOOLS::Poincare_Sequence &lam=
0046           ATOOLS::Poincare_Sequence()):
0047       p_ca(ca), m_op(op), m_kt2(kt2), m_mu2(mu2),
0048       m_cpl(cpl), m_kin(kin), m_mode(mode), m_stat(0),
0049       m_pijt(pijt), m_pkt(pkt), m_lam(lam) {}
0050   };// end of struct Cluster_Param
0051 
0052   std::ostream &operator<<(std::ostream &str,const Cluster_Param &cp);
0053 
0054   typedef std::pair<Cluster_Config,Cluster_Param> Cluster_Info;
0055 
0056   typedef std::vector<Cluster_Info> ClusterInfo_Vector;
0057 
0058   class Cluster_Definitions_Base {
0059   public:
0060 
0061     Cluster_Definitions_Base();
0062     virtual ~Cluster_Definitions_Base();
0063 
0064     virtual Cluster_Param Cluster(const Cluster_Config &ca) = 0;
0065 
0066     int ReCluster(ATOOLS::Cluster_Amplitude *const ampl);
0067 
0068   };// end of class Cluster_Definitions_Base
0069 
0070 }// end of namespace PDF
0071 
0072 #endif