#include "AMISIC++/Tools/Interaction_Probability.H" #include "ATOOLS/Math/Gauss_Integrator.H" #include "ATOOLS/Math/MathTools.H" #include "ATOOLS/Math/Histogram.H" #include "ATOOLS/Org/Message.H" using namespace AMISIC; using namespace ATOOLS; // All equations in this file refer to // Sjostrand-van der Zijl, PRD 36 (1987) 2019. Interaction_Probability::Interaction_Probability() : p_mo(new Matter_Overlap()), m_prefK(1.), m_integral(0.) {} void Interaction_Probability::Initialize(const double & xsecratio) { p_mo->Initialize(); m_bmax = p_mo->Bmax(); FixPrefactor(xsecratio); CalculateOExpValue(); } double Interaction_Probability::operator()(const double & b) { return 1.-exp(-m_prefK * (*p_mo)(b)); } void Interaction_Probability::CalculateIntegral() { // Integral int d^2b P_int(b), denominator in Eqs.(26), (32) IP_Integrand ipint(this); Gauss_Integrator integrator(&ipint); m_integral = integrator.Integrate(0.,p_mo->Bmax(),1.e-8,1); } void Interaction_Probability::CalculateBNorm() { IP_Integrand bipint(this,2); Gauss_Integrator integrator(&bipint); m_integralB = integrator.Integrate(0.,p_mo->Bmax(),1.e-8,1); m_bnorm = m_integralB/m_integral; } void Interaction_Probability::CalculateOExpValue() { // Integral of int d^2b O(b) P_int(b), numerator of f_c in Eq.(31) O_ExpV_Integrand oexpvint(this); Gauss_Integrator integrator(&oexpvint); m_oexpvalue = integrator.Integrate(0.,p_mo->Bmax(),1.e-8,1)/m_integral; msg_Out()<Integral()/m_integral; double fachigh = 50., reshigh, deltafac, deltares; msg_Out()<<"Start iteration for int(overlap) = " <Integral()<<" aiming for ratio "<Integral()/m_integral; msg_Out()<<"k = ["< " <<"res = ["<1.e-8); SetPrefactor(fachigh); CalculateIntegral(); msg_Out()<<"==> geometric rescaling factor = "<