Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:48

0001 #ifndef AMISIC_Tools_Matter_Overlap_H
0002 #define AMISIC_Tools_Matter_Overlap_H
0003 
0004 #include "REMNANTS/Main/Remnant_Handler.H"
0005 #include "AMISIC++/Tools/MI_Parameters.H"
0006 #include "ATOOLS/Math/Function_Base.H"
0007 #include "ATOOLS/Math/Vector.H"
0008 
0009 
0010 namespace AMISIC {
0011   class Matter_Overlap : public ATOOLS::Function_Base {
0012   private:
0013     overlap_form::code m_overlapform;
0014     double m_bstep, m_bmax, m_norm, m_integral;
0015     double m_radius[4], m_radius2[4], m_rnorm[4], m_fraction[4];
0016     
0017     void InitializeFormFactors(REMNANTS::Remnant_Handler * remnant_handler);
0018     void CalculateIntegral();
0019  public:
0020     Matter_Overlap();
0021     ~Matter_Overlap();
0022 
0023     void   Initialize(REMNANTS::Remnant_Handler * remnant_handler);    
0024     double operator()(double b);
0025     double SelectB(const bool & mode=false) const;
0026 
0027     ATOOLS::Vec4D SelectPositionForScatter(const double & b) const;
0028     ATOOLS::Vec4D SelectRelativePositionForParton() const;
0029 
0030     const double & Bmax()     const { return m_bmax; }
0031     const double & Integral() const { return m_integral; }
0032   };
0033 
0034   class MO_Integrand : public ATOOLS::Function_Base {
0035     Matter_Overlap * p_mo;
0036   public:
0037     MO_Integrand(Matter_Overlap * mo) : p_mo(mo) {}
0038     ~MO_Integrand() = default;
0039     double operator()(double b);
0040   };
0041 }
0042 
0043 #endif