Back to home page

EIC code displayed by LXR

 
 

    


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

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