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