Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef MCATNLO_Tools_Singlet_H
0002 #define MCATNLO_Tools_Singlet_H
0003 
0004 #include "MCATNLO/Tools/Parton.H"
0005 #include "ATOOLS/Phys/Blob.H"
0006 #include "ATOOLS/Phys/Cluster_Amplitude.H"
0007 #include "ATOOLS/Math/Poincare.H"
0008 
0009 namespace ATOOLS { class Mass_Selector; }
0010 
0011 namespace PDF { class Shower_Base; }
0012 
0013 namespace PHASIC { class Jet_Finder; }
0014 
0015 namespace MCATNLO {
0016 
0017   class Singlet;
0018   class Sudakov;
0019 
0020   typedef std::vector<Singlet*> All_Singlets;
0021   typedef All_Singlets::iterator ASiter;
0022 
0023   class Singlet : public Parton_List {
0024     PHASIC::Jet_Finder *p_jf;
0025     PDF::Shower_Base *p_shower;
0026     All_Singlets *p_all;
0027     ATOOLS::Mass_Selector *p_ms;
0028     void *p_procs;
0029     double m_mur2;
0030     Parton_List m_dels;
0031   public :
0032     Singlet() : 
0033       p_jf(NULL), p_all(NULL), p_procs(NULL) {}
0034     ~Singlet();
0035 
0036     int       SplitParton(Parton *, Parton *, Parton *);
0037     bool      ArrangeColours(Parton *, Parton *, Parton *);
0038 
0039     void        BoostAllFS(Parton *l,Parton *r,Parton *s);
0040     void        BoostBackAllFS(Parton *l,Parton *r,Parton *s);
0041 
0042     double JetVeto(Sudakov *const sud) const;
0043       
0044     friend std::ostream& operator<<(std::ostream &,Singlet &);
0045 
0046     inline void SetShower(PDF::Shower_Base *const s) { p_shower=s; }
0047 
0048     inline void SetJF(PHASIC::Jet_Finder *const jf) { p_jf=jf; }
0049     inline void SetAll(All_Singlets *const all) { p_all=all; }
0050 
0051     inline PHASIC::Jet_Finder *JF() const { return p_jf; }
0052     inline All_Singlets *All() const { return p_all; }
0053 
0054     inline void SetMS(ATOOLS::Mass_Selector *const ms) { p_ms=ms; }
0055 
0056     inline void SetProcs(void *const procs) { p_procs=procs; }
0057 
0058     inline double MuR2() const { return m_mur2; }
0059 
0060     inline void SetMuR2(const double &mu2) { m_mur2=mu2; }
0061 
0062     template <class Type> inline Type *Procs() const 
0063     { return static_cast<Type*>(p_procs); }
0064 
0065   };
0066 
0067   std::ostream& operator<<(std::ostream &,Singlet &);
0068   std::ostream& operator<<(std::ostream &,All_Singlets &); 
0069 }
0070 
0071 #endif