File indexing completed on 2025-04-19 09:10:01
0001 #ifndef CSSHOWER_Showers_SF_Lorentz_H
0002 #define CSSHOWER_Showers_SF_Lorentz_H
0003
0004 #include "CSSHOWER++/Showers/SF_Key.H"
0005 #include "ATOOLS/Org/Getter_Function.H"
0006 #include "ATOOLS/Phys/Flavour.H"
0007
0008 namespace CSSHOWER {
0009
0010 class SF_Coupling;
0011 class Splitting_Function_Base;
0012
0013 class SF_Lorentz {
0014 protected:
0015
0016 ATOOLS::Flavour m_flavs[3], m_flspec;
0017 const ATOOLS::Mass_Selector *p_ms;
0018
0019 SF_Coupling *p_cf;
0020
0021 Splitting_Function_Base *p_sf;
0022
0023 double m_zmin, m_zmax;
0024 int m_beam, m_col;
0025
0026 double m_lastJ;
0027
0028 std::pair<double, double> m_pdfmin;
0029
0030 static double s_kappa;
0031
0032 double Lambda(const double &a,const double &b,const double &c) const;
0033 bool PDFValueAllowedAsDenominator(const double& val,
0034 const double& eta);
0035
0036 public:
0037
0038 SF_Lorentz(const SF_Key &key);
0039
0040 virtual ~SF_Lorentz();
0041
0042 virtual double Scale(const double z,const double y,
0043 const double scale,const double Q2) const;
0044
0045 virtual double operator()
0046 (const double z,const double y,const double eta,
0047 const double scale,const double Q2) = 0;
0048
0049
0050
0051 virtual double OverIntegrated(const double zmin,const double zmax,
0052 const double scale,const double xbj) = 0;
0053
0054
0055
0056 virtual double OverEstimated(const double z,const double y) = 0;
0057
0058
0059
0060 virtual double Z() = 0;
0061
0062 double LastJ() const { return m_lastJ; }
0063 void SetLastJ(double J) { m_lastJ = J; }
0064 double JFF(const double &y,const double &mui2,const double &muj2,
0065 const double &muk2,const double &muij2);
0066 double JFI(const double &y,const double &eta,const double &scale);
0067 double JIF(const double &z,const double &y,
0068 const double &eta,const double &scale);
0069 double JII(const double &z,const double &y,
0070 const double &eta,const double &scale);
0071
0072 inline const ATOOLS::Flavour &FlA() const { return m_flavs[0]; }
0073 inline const ATOOLS::Flavour &FlB() const { return m_flavs[1]; }
0074 inline const ATOOLS::Flavour &FlC() const { return m_flavs[2]; }
0075
0076 inline const ATOOLS::Flavour &FlSpec() const { return m_flspec; }
0077
0078 inline void SetFlSpec(const ATOOLS::Flavour &s) { m_flspec=s; }
0079
0080 inline int GetBeam() const { return m_beam; }
0081 inline void SetBeam(const int beam) { m_beam=beam; }
0082
0083 inline void SetSF(Splitting_Function_Base *const sf) { p_sf=sf; }
0084
0085 inline void SetMS(const ATOOLS::Mass_Selector *const ms) { p_ms=ms; }
0086
0087 inline const ATOOLS::Mass_Selector *MS() const { return p_ms; }
0088
0089 inline int Col() const { return m_col; }
0090
0091 inline static void SetKappa(const double &kap) { s_kappa=kap; }
0092
0093 };
0094
0095 typedef ATOOLS::Getter_Function<SF_Lorentz,SF_Key,
0096 std::less<std::string> > SFL_Getter;
0097
0098 }
0099
0100 #endif