Back to home page

EIC code displayed by LXR

 
 

    


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