Back to home page

EIC code displayed by LXR

 
 

    


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     // inline functions
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   };// end of class Cluster_Algorithm
0083 
0084 }// end of namespace SHERPA
0085 
0086 #endif