Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef CSSHOWER_Showers_Sudakov_H
0002 #define CSSHOWER_Showers_Sudakov_H
0003 
0004 #include "PDF/Main/ISR_Handler.H"
0005 #include "PDF/Main/PDF_Base.H"
0006 #include "CSSHOWER++/Showers/Splitting_Function_Group.H"
0007 #include "CSSHOWER++/Tools/Parton.H"
0008 #include "MODEL/Main/Running_AlphaS.H"
0009 #include "ATOOLS/Phys/Variations.H"
0010 
0011 
0012 namespace CSSHOWER {
0013   typedef std::map<ATOOLS::Flavour,Splitting_Function_Base*> SF_E_Map;
0014   typedef std::map<ATOOLS::Flavour,SF_E_Map> SF_EE_Map;
0015   typedef std::map<ATOOLS::Flavour,SF_EE_Map> SF_EEE_Map;
0016 
0017   class Shower;
0018 
0019   class Sudakov : public Splitting_Function_Group {
0020     double m_k0sqi, m_k0sqf, m_k0sq_gsplit_fac, m_sphi;
0021     double m_deltaz, m_st, m_sz, m_sy, m_ymin, m_ymax, m_scale;
0022     double m_zmin,m_zmax, m_weight;
0023     int m_qcdmode,m_ewmode;
0024     ATOOLS::Flavour m_cfl, m_flspec;
0025     Parton * p_split, * p_spect;
0026     SF_EEE_Map m_fffmap, m_ffimap, m_iffmap, m_ifimap, m_fifmap, m_fiimap;
0027     SF_EEE_Map m_sffmap, m_sfimap, m_sifmap, m_siimap;
0028     std::vector<Splitting_Function_Base *> m_addsplittings;
0029     Shower *p_shower;
0030     std::vector<SFC_Getter*> m_cgets;
0031     bool m_keeprewinfo, m_forced_splittings;
0032     double m_reweightscalecutoff, m_gluon_xscaling_in_forced_splittings;
0033     std::pair<double, double> m_pdfmin;
0034     static bool s_init;
0035     double ProduceT(double t);
0036     bool Veto(double,double,double,double,double);
0037     bool Splitting(double,double,double,double,double);
0038     bool DefineFFBoundaries(double,double);
0039     bool DefineFIBoundaries(double,double,int);
0040     bool DefineIFBoundaries(double,double,int);
0041     bool DefineIIBoundaries(double,double,int);
0042     void Add(Splitting_Function_Base * split);
0043     void AddToMaps(Splitting_Function_Base * split,const int mode=1);
0044   public:
0045     Sudakov(PDF::ISR_Handler *isr,const int qcd,const int qed);
0046     ~Sudakov();
0047 
0048     void InitSplittingFunctions(MODEL::Model_Base *md,const int kfmode);
0049     void SetCoupling(MODEL::Model_Base *md,
0050              const double &k0sqi,const double &k0sqf,
0051              const double &isfac,const double &fsfac,
0052              const double &k0sq_gsplit_fac);
0053     void SetKeepReweightingInfo(bool on)  { m_keeprewinfo = on; }
0054     void SetReweightScaleCutoff(double v) { m_reweightscalecutoff = v; }
0055     void SetPDFMin(std::pair<double, double>& m) { m_pdfmin = m; }
0056     void SetForcedHQSplittings(bool on, const double &expo) {
0057       m_forced_splittings                   = on;
0058       m_gluon_xscaling_in_forced_splittings = expo;
0059     }
0060     bool   Generate(Parton *,double);
0061     int    Generate(Parton *,Parton *,double,double,double&,double&,double&,double&);
0062     double OverIntegrated(const double,const double,const double,
0063               const double=1.,const int=-1);
0064 
0065     inline void GetSplittingParameters(double &,double &,double &,double &);
0066 
0067     inline const SF_EEE_Map &FFFMap() const { return m_fffmap; }
0068     inline const SF_EEE_Map &FFIMap() const { return m_ffimap; }
0069     inline const SF_EEE_Map &IFFMap() const { return m_iffmap; }
0070     inline const SF_EEE_Map &IFIMap() const { return m_ifimap; }
0071     inline const SF_EEE_Map &FIFMap() const { return m_fifmap; }
0072     inline const SF_EEE_Map &FIIMap() const { return m_fiimap; }
0073 
0074     const SF_E_Map *HasKernel(const ATOOLS::Flavour &fli,
0075                   const ATOOLS::Flavour &flj,
0076                   const cstp::code type) const;
0077 
0078     int HasKernel(const ATOOLS::Flavour &fli,
0079                   const ATOOLS::Flavour &flj,
0080                   const ATOOLS::Flavour &flk,
0081                   const cstp::code type) const;
0082     double CplFac(const ATOOLS::Flavour &fli,const ATOOLS::Flavour &flj,
0083                   const ATOOLS::Flavour &flk,const cstp::code type,
0084           const int cpl,const double &mu2) const;
0085 
0086     inline double FSPT2Min() const { return m_k0sqf; }
0087     inline double ISPT2Min() const { return m_k0sqi; }
0088 
0089     inline void SetShower(Shower *const shower) { p_shower=shower; }
0090     inline double Weight() const { return m_weight; }
0091   };
0092 
0093   void Sudakov::GetSplittingParameters
0094   (double & kt2,double & z,double & y,double & phi) {
0095     kt2 = m_st; z = m_sz; y = m_sy; phi = m_sphi;
0096   }
0097 }
0098 
0099 #endif