Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef CSSHOWER_Tools_Singlet_H
0002 #define CSSHOWER_Tools_Singlet_H
0003 
0004 #include "CSSHOWER++/Tools/Parton.H"
0005 #include "ATOOLS/Phys/Blob.H"
0006 #include "ATOOLS/Phys/Cluster_Amplitude.H"
0007 
0008 namespace ATOOLS { class Mass_Selector; }
0009 
0010 namespace PHASIC { class Jet_Finder; }
0011 
0012 namespace CSSHOWER {
0013 
0014   class Singlet;
0015   class Sudakov;
0016   class Shower;
0017 
0018   typedef std::vector<Singlet*> All_Singlets;
0019   typedef All_Singlets::iterator ASiter;
0020 
0021   class Singlet : public Parton_List {
0022     Parton *p_split, *p_left, *p_right, *p_spec;
0023     PHASIC::Jet_Finder *p_jf;
0024     All_Singlets *p_all;
0025     ATOOLS::Mass_Selector *p_ms;
0026     Shower *p_shower;
0027     double m_kt2_next, m_lkf, m_mur2;
0028     int m_nlo, m_nskip, m_nme, m_nmax;
0029     ATOOLS::DecayInfo_Vector m_decs;
0030   public :
0031     Singlet() : 
0032       p_split(NULL), p_left(NULL), p_right(NULL), p_spec(NULL),
0033       p_jf(NULL), p_all(NULL),
0034       m_kt2_next(0.0), m_lkf(0.0), m_mur2(0.0),
0035       m_nlo(0), m_nskip(0), m_nme(0), m_nmax(0) {}
0036     ~Singlet();
0037 
0038     void AddParton(Parton *const p);
0039     void RemoveParton(Parton *const p,const int mode=0);
0040 
0041     bool RearrangeColours(Parton *, Parton *, Parton *);
0042     bool ArrangeColours(Parton *, Parton *, Parton *);
0043     int  SplitParton(Parton *, Parton *, Parton *);
0044 
0045     void      ExtractPartons(ATOOLS::Blob *,ATOOLS::Mass_Selector *const ms);
0046 
0047     void        BoostAllFS(Parton *l,Parton *r,Parton *s,bool onlyFS=false);
0048     void        BoostBackAllFS(Parton *l,Parton *r,Parton *s,bool onlyFS=false);
0049 
0050     Parton *IdParton(const size_t &id) const;
0051 
0052     double JetVeto(Sudakov *const sud) const;
0053 
0054     void Reduce();
0055       
0056     friend std::ostream& operator<<(std::ostream &,Singlet &);
0057 
0058     inline void SetSplit(Parton *const part) { p_split=part; }
0059     inline void SetLeft(Parton *const part)  { p_left=part;  }
0060     inline void SetRight(Parton *const part) { p_right=part; }
0061     inline void SetSpec(Parton *const part)  { p_spec=part;  }
0062  
0063     inline Parton *GetSplit() const { return p_split; }
0064     inline Parton *GetLeft() const  { return p_left;  }
0065     inline Parton *GetRight() const { return p_right; }
0066     inline Parton *GetSpec() const  { return p_spec;  }
0067 
0068     inline void SetJF(PHASIC::Jet_Finder *const jf) { p_jf=jf; }
0069     inline void SetAll(All_Singlets *const all) { p_all=all; }
0070 
0071     inline PHASIC::Jet_Finder *JF() const { return p_jf; }
0072     inline All_Singlets *All() const { return p_all; }
0073 
0074     inline void SetMS(ATOOLS::Mass_Selector *const ms) { p_ms=ms; }
0075     inline void SetShower(Shower *const shower) { p_shower=shower; }
0076 
0077     inline void SetDecays(const ATOOLS::DecayInfo_Vector &d) { m_decs=d; }
0078 
0079     inline void SetNLO(const int nlo) { m_nlo=nlo; }
0080     inline void SetNSkip(const int n) { m_nskip=n; }
0081     inline void SetNME(const int nme) { m_nme=nme; }
0082     inline void SetNMax(const int nmax) { m_nmax=nmax; }
0083     inline void SetLKF(const double &lkf) { m_lkf=lkf; } 
0084 
0085     inline int NLO() const { return m_nlo; }
0086     inline int NSkip() const { return m_nskip; }
0087     inline int NME() const { return m_nme; }
0088     inline int NMax() const { return m_nmax; }
0089     inline double LKF() const { return m_lkf; }
0090 
0091     inline void SetKtNext(const double &kt2) { m_kt2_next=kt2; } 
0092 
0093     inline double KtNext() const { return m_kt2_next; }
0094 
0095     inline void SetMuR2(const double &mur2) { m_mur2=mur2; } 
0096 
0097     inline double MuR2() const { return m_mur2; }
0098 
0099   };
0100 
0101   std::ostream& operator<<(std::ostream &,Singlet &);
0102   std::ostream& operator<<(std::ostream &,All_Singlets &); 
0103 }
0104 
0105 #endif