File indexing completed on 2025-04-19 09:10:15
0001 #ifndef SHRIMPS_Cross_Sections_Sigma_Partonic_H
0002 #define SHRIMPS_Cross_Sections_Sigma_Partonic_H
0003 #include "SHRiMPS/Beam_Remnants/Continued_PDF.H"
0004 #include "SHRiMPS/Tools/MinBias_Parameters.H"
0005 #include "MODEL/Main/Strong_Coupling.H"
0006 #include "ATOOLS/Phys/Flavour.H"
0007 #include "ATOOLS/Math/Histogram.H"
0008 #include "ATOOLS/Org/CXXFLAGS.H"
0009 #include <list>
0010
0011 namespace SHRIMPS {
0012 class Remnant_Handler;
0013
0014 struct xs_mode {
0015 enum code {
0016 perturbative = 2,
0017 integrated = 1,
0018 Regge = 0
0019 };
0020 };
0021
0022 class Sigma_Partonic {
0023 Continued_PDF * p_pdf[2];
0024 MODEL::Strong_Coupling * p_alphaS;
0025 xs_mode::code m_mode;
0026 bool m_fixflavour;
0027 double m_Ymax, m_S, m_eta, m_smin, m_tmin;
0028 double m_accu, m_sigma, m_maxdsigma;
0029 int m_Nmaxtrials;
0030 long int m_kinX_fails;
0031 double m_y[2], m_yhat, m_dy, m_coshdy, m_pt2, m_phi, m_shat, m_that;
0032 double m_dsigma, m_x[2], m_xpdf[2];
0033 ATOOLS::Flavour m_flavs[2];
0034
0035 bool m_ana;
0036 std::map<std::string,ATOOLS::Histogram * > m_histos;
0037
0038
0039 inline const double ColourFactor(const ATOOLS::Flavour & flav) const {
0040 if (flav.IsQuark()) return 4./3.;
0041 if (flav.IsGluon()) return 3.;
0042 return 0.;
0043 }
0044 const double ME2(const double & shat,const double & that,const double & scale);
0045 const double MakePoint();
0046 const bool Calculate();
0047 void SelectFlavours(const bool & fixflavour);
0048 public:
0049 Sigma_Partonic(const xs_mode::code & mode=xs_mode::Regge);
0050 ~Sigma_Partonic();
0051
0052 void Initialise(Remnant_Handler * remnants);
0053 const double MakeEvent();
0054 const double dSigma();
0055 const double dSigma(const double & shat,const double & yhat);
0056 const double PDF(const size_t beam,const double & x,const double & Q2,
0057 const ATOOLS::Flavour & flav=ATOOLS::Flavour(kf_gluon));
0058 void SetAlphaS(MODEL::Strong_Coupling * as) { p_alphaS = as; }
0059 void SetPDF(const size_t & beam,Continued_PDF * pdf) { p_pdf[beam] = pdf; }
0060 void SetEta(const double & eta=0.) { m_eta = eta; }
0061 void SetTmin(const double & tmin=1.) { m_tmin = tmin; }
0062 void SetSmin(const double & smin=1.) { m_smin = smin; }
0063 const double & SigmaTot() const { return m_sigma; }
0064 const double & SigmaHat() const { return m_dsigma; }
0065 const double & SHat() const { return m_shat; }
0066 const double & YHat() const { return m_yhat; }
0067 const double & Smin() const { return m_smin; }
0068 const double & Tmin() const { return m_tmin; }
0069 const double & PT2() const { return m_pt2; }
0070 const double & Phi() const { return m_phi; }
0071 const double & Y(const size_t & beam) const { return m_y[beam]; }
0072 const double & X(const size_t & beam) const { return m_x[beam]; }
0073 const ATOOLS::Flavour & Flav(const size_t & beam) const { return m_flavs[beam]; }
0074 };
0075 }
0076 #endif