Back to home page

EIC code displayed by LXR

 
 

    


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       //p_ladder->FixType(-m_Ymax + m_deltaY, m_Ymax - m_deltaY);
0063       m_Yrange = 1.;
0064       //m_Yrange = 0.1*m_beamY;
0065       //m_Yrange = 0.01*m_beamY;
0066       //msg_Out() << "----> in Ladders, m_beamY = " << m_beamY << " and m_Yrange = " << m_Yrange << std::endl;
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