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 };
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 };
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 };
0069
0070 }
0071
0072 #endif