File indexing completed on 2025-04-19 09:10:14
0001 #ifndef SHERPA_Cluster_Cluster_Algorithm_H
0002 #define SHERPA_Cluster_Cluster_Algorithm_H
0003
0004 #include "ATOOLS/Phys/Cluster_Amplitude.H"
0005 #include "ATOOLS/Phys/Flavour.H"
0006 #include "ATOOLS/Org/Run_Parameter.H"
0007 #include "PDF/Main/Cluster_Definitions_Base.H"
0008 #include "ATOOLS/Math/Histogram.H"
0009 #include <map>
0010 #include <list>
0011
0012 namespace ATOOLS {
0013 class Blob;
0014 class Particle;
0015 }
0016
0017 namespace PDF {
0018 class Cluster_Definitions_Base;
0019 }
0020
0021 namespace SHERPA {
0022 typedef std::list<ATOOLS::Particle *> ParticleList;
0023
0024 class SHERPA_Interface;
0025
0026 class Cluster_Algorithm: public ATOOLS::Mass_Selector {
0027 class JF {
0028 private:
0029 double m_ycut;
0030 public:
0031 JF(const double & kt2) :
0032 m_ycut(kt2/ATOOLS::sqr(ATOOLS::rpa->gen.Ecms())) {}
0033 ~JF() {};
0034 inline const double & Ycut() const { return m_ycut; }
0035 inline double DR() const { return 1.; }
0036 };
0037 private:
0038 int m_mode,m_nlad;
0039 bool m_resc;
0040 ATOOLS::Vec4D m_rescvec;
0041 double m_minkt2,m_showerfac,m_tmax;
0042
0043 std::map<std::string, ATOOLS::Histogram * > m_histomap;
0044
0045 ATOOLS::Cluster_Amplitude *p_ampl;
0046 PDF::Cluster_Definitions_Base *p_clus;
0047 ATOOLS::Mass_Selector *p_ms;
0048 JF * p_jf;
0049
0050 int ColorConnected(const ATOOLS::ColorID &i,
0051 const ATOOLS::ColorID &j) const;
0052 void ProjectOnSinglets(ATOOLS::Blob *const blob,
0053 std::list<ParticleList *> & singlets);
0054 double PTij2(const ATOOLS::Vec4D & pi,const ATOOLS::Vec4D & pj) const;
0055 double PTi2(const ATOOLS::Vec4D & pi,const ATOOLS::Vec4D & pbeam) const;
0056 public:
0057 Cluster_Algorithm();
0058
0059 ~Cluster_Algorithm();
0060
0061 bool Cluster(ATOOLS::Blob *const blob);
0062
0063
0064 inline ATOOLS::Cluster_Amplitude *Amplitude() { return p_ampl; }
0065 inline void SetShowerParams(const int & mode,const double & minkt2) {
0066 m_mode = mode;
0067 m_minkt2 = minkt2;
0068 if (m_mode<2) m_minkt2 = 0.;
0069 }
0070 inline void SetShowerFac(const double & sfac) {
0071 m_showerfac = sfac;
0072 }
0073 inline void
0074 SetClusterDefinitions(PDF::Cluster_Definitions_Base *const cb)
0075 { p_clus=cb; }
0076 inline void SetMinKT2(const double & minkt2) { m_minkt2 = minkt2; }
0077 inline void SetRescatt(const double & resc) { m_resc = resc; }
0078 inline void SetTMax(const double & tmax) { m_tmax = tmax; }
0079 inline void SetNLad(const int & nlad) { m_nlad = nlad; }
0080
0081 double Mass(const ATOOLS::Flavour &fl) const;
0082 };
0083
0084 }
0085
0086 #endif