Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef MCATNLO_Showers_Shower_H
0002 #define MCATNLO_Showers_Shower_H
0003 
0004 #include "PDF/Main/ISR_Handler.H"
0005 #include "ATOOLS/Org/STL_Tools.H"
0006 #include "ATOOLS/Phys/Weights.H"
0007 #include "MCATNLO/Showers/Sudakov.H"
0008 #include "MCATNLO/Tools/Singlet.H"
0009 #include "MCATNLO/Showers/Kinematics_Base.H"
0010 
0011 namespace ATOOLS {
0012 
0013   class Cluster_Leg;
0014 
0015 }
0016 
0017 namespace MCATNLO {
0018 
0019   class CS_Gamma;
0020 
0021   class Shower {
0022   private:
0023     Kinematics_FF      m_kinFF;
0024     Kinematics_FI      m_kinFI;
0025     Kinematics_IF      m_kinIF;
0026     Kinematics_II      m_kinII;
0027     ATOOLS::Flavour    m_flavA, m_flavB, m_flavC, m_flav;
0028     Singlet      *     p_actual;
0029     Sudakov            m_sudakov;
0030     PDF::ISR_Handler * p_isr;
0031     Parton           * m_last[4];
0032     int                m_kscheme;
0033 
0034     ATOOLS::Cluster_Leg *p_old[2];
0035 
0036     CS_Gamma *p_gamma;
0037     ATOOLS::Weights_Map m_weightsmap;
0038     bool m_reweight;
0039     double m_maxreweightfactor;
0040 
0041     void   ResetScales(Parton *const split);
0042     void   SetSplitInfo(const ATOOLS::Vec4D &psplit,
0043             const ATOOLS::Vec4D &pspect,
0044             Parton *const split,Parton *const newb,
0045             Parton *const newc,const int mode);
0046     int    SetXBj(Parton *const p) const;
0047     Parton *SelectSplitting(double &);
0048     bool   PerformSplitting();
0049     bool   TrialEmission(double &,Parton *);
0050     int    RemnantTest(Parton *const p);
0051     int    UpdateDaughters(Parton *const split,Parton *const newpB,
0052                Parton *const newpC,double &jcv);
0053     int MakeKinematics(Parton *const split,const ATOOLS::Flavour &fla,
0054                const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc,
0055                double &jcv);
0056 
0057   public:
0058     Shower(PDF::ISR_Handler *,const int qed);
0059     ~Shower();
0060     bool   EvolveShower(Singlet *,const size_t &,size_t &);
0061     double Reweight(ATOOLS::QCD_Variation_Params*, Parton& splitter);
0062     void SetMS(const ATOOLS::Mass_Selector *const ms);
0063     inline Sudakov *GetSudakov() { return &m_sudakov; }
0064     inline const Sudakov *GetSudakov() const { return &m_sudakov; }
0065     inline Parton *const *GetLast() const { return m_last; }
0066     inline ATOOLS::Cluster_Leg *GetOld(const int i) const { return p_old[i]; }
0067 
0068     inline const Kinematics_FF *KinFF() const { return &m_kinFF; }
0069     inline const Kinematics_FI *KinFI() const { return &m_kinFI; }
0070     inline const Kinematics_IF *KinIF() const { return &m_kinIF; }
0071     inline const Kinematics_II *KinII() const { return &m_kinII; }
0072 
0073     inline Kinematics_FF *KinFF() { return &m_kinFF; }
0074     inline Kinematics_FI *KinFI() { return &m_kinFI; }
0075     inline Kinematics_IF *KinIF() { return &m_kinIF; }
0076     inline Kinematics_II *KinII() { return &m_kinII; }
0077 
0078     inline int KinScheme() const { return m_kscheme; }
0079 
0080     inline void SetGamma(CS_Gamma *const gamma) { p_gamma=gamma; }
0081 
0082     inline CS_Gamma *Gamma() const { return p_gamma; }
0083 
0084     inline const ATOOLS::Weights_Map& WeightsMap() const { return m_weightsmap; }
0085 
0086     inline const ATOOLS::Flavour &ActiveFlav() const { return m_flav; }
0087 
0088     inline PDF::ISR_Handler *ISR() { return p_isr; }
0089   };
0090 }
0091 
0092 #endif