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