File indexing completed on 2025-04-19 09:10:16
0001 #ifndef SHRIMPS_Ladders_Ladder_Generator_Base_H
0002 #define SHRIMPS_Ladders_Ladder_Generator_Base_H
0003
0004 #include "SHRiMPS/Cross_Sections/Sigma_Partonic.H"
0005 #include "SHRiMPS/Eikonals/Rapidity_Density.H"
0006 #include "SHRiMPS/Ladders/MEs.H"
0007 #include "SHRiMPS/Ladders/Ladder.H"
0008 #include "SHRiMPS/Beam_Remnants/Remnant_Handler.H"
0009 #include "MODEL/Main/Strong_Coupling.H"
0010 #include "ATOOLS/Math/Histogram.H"
0011
0012 namespace SHRIMPS {
0013 class Ladder_Generator_Base {
0014 protected:
0015 Sigma_Partonic m_partonic;
0016 double m_Ymax, m_deltaY, m_beamY, m_Yrange;
0017 double m_qt2min, m_qt2minFF, m_kt2min, m_kt2minShower;
0018 MODEL::Strong_Coupling * p_alphaS;
0019 Rapidity_Density m_density;
0020 MEs m_me;
0021 Omega_ik * p_eikonal;
0022 Ladder * p_ladder;
0023 LadderMap * p_emissions;
0024 TPropList * p_props;
0025 size_t m_dir;
0026 double m_B, m_b1, m_b2, m_E[2], m_weight;
0027 double m_shat, m_qt2, m_ylimits[2], m_y[2][2];
0028 double m_qt2prev[2];
0029 ATOOLS::Vec4D m_eqt, m_qt, m_qtprev[2];
0030
0031 bool m_test;
0032 std::map<std::string,ATOOLS::Histogram * > m_histos;
0033
0034
0035 virtual void CalculateWeight() = 0;
0036 virtual void InitLadder(const ATOOLS::Vec4D & pos);
0037 virtual void ResetFSFlavours();
0038 virtual void ConstructISKinematics();
0039 virtual void ConstructSimpleLadder();
0040 virtual double RescaleLadder(Ladder * ladder,const ATOOLS::Vec4D & P_in);
0041 virtual double TotalReggeWeight(Ladder * ladder);
0042 virtual double AlphaSWeight(const double & kt2);
0043 virtual double ReggeWeight(const double & qt2, const double & y1,
0044 const double y2);
0045 virtual double LDCWeight(const double & qt2, const double & qt2prev);
0046 virtual void MakeTransverseUnitVector();
0047 inline virtual const double AlphaS(const double q2) const {
0048 return (*p_alphaS)(q2);
0049 }
0050 inline virtual const double AlphaSMax() const {
0051 return p_alphaS->MaxValue();
0052 }
0053 public:
0054 Ladder_Generator_Base();
0055 virtual ~Ladder_Generator_Base();
0056
0057 virtual void Initialise(Remnant_Handler * remnants);
0058 virtual void Test();
0059 virtual Ladder * operator()(const ATOOLS::Vec4D & pos) = 0;
0060 virtual void QuarkReplace();
0061 inline virtual void FixLadderType() {
0062
0063 m_Yrange = 1.;
0064
0065
0066
0067 p_ladder->FixType(-m_beamY+m_Yrange, m_beamY-m_Yrange);
0068 }
0069 inline virtual void InitCollision(Omega_ik * eikonal,const double & B) {
0070 p_eikonal = eikonal; m_B = B; m_density.SetEikonal(p_eikonal);
0071 }
0072 inline virtual void SetImpactParameters(const double & b1,
0073 const double & b2) {
0074 m_b1 = b1; m_b2 = b2; m_density.SetImpactParameters(b1,b2);
0075 }
0076 inline virtual void SetMaximalScale(const double & E1,const double & E2) {
0077 m_E[0] = E1; m_E[1] = E2;
0078 }
0079 inline virtual const double Yhat() const { return m_partonic.YHat(); }
0080 inline virtual const double Ymax() const { return m_Ymax; }
0081 inline virtual const double KT2min() const { return m_kt2minShower; }
0082 inline virtual const double Weight() const { return m_weight; }
0083 };
0084 }
0085 #endif