#ifndef SHRIMPS_Cross_Sections_Sigma_DD_H #define SHRIMPS_Cross_Sections_Sigma_DD_H #include "SHRiMPS/Cross_Sections/Sigma_Elastic.H" #include "SHRiMPS/Cross_Sections/Sigma_SD.H" namespace SHRIMPS { class Sigma_DD : public Sigma_Base { class dSigma_dt_Kernel : public Function_Base { protected: Omega_ik * p_eikonal; double m_Q; public: dSigma_dt_Kernel() {} void SetQ(const double & Q) { m_Q = Q; } void SetEikonal(Omega_ik * eikonal) { p_eikonal = eikonal; } double operator()(double B); }; Sigma_Elastic * p_sigma_el; Sigma_SD * p_sigma_sd; double m_Bmin, m_Bmax; double m_Qmax; size_t m_logQsteps; double m_logdelta; std::vector m_intgrid_DD, m_diffgrid_DD; const std::vector *p_grid; double m_sigma_DD; void FillGrids(); public: Sigma_DD() {}; Sigma_DD(Sigma_Elastic * sigma_el,Sigma_SD * sigma_sd); double GetValue(const double & B); double GetCombinedValue(const double & B); double GetDiffArgument(const double & B); double PT2(); void PrintDifferentialElasticAndDiffXsec(const bool & onscreen=false, std::string dirname=std::string(".")); }; } #endif