File indexing completed on 2025-04-19 09:10:15
0001 #ifndef SHRIMPS_Cross_Sections_Sigma_SD_H
0002 #define SHRIMPS_Cross_Sections_Sigma_SD_H
0003 #include "SHRiMPS/Cross_Sections/Sigma_Elastic.H"
0004
0005 namespace SHRIMPS {
0006 class Sigma_SD : public Sigma_Base {
0007 class SD_Term : public Function_Base {
0008 protected:
0009 Omega_ik * p_eikonal;
0010 double m_Q;
0011 public:
0012 SD_Term() {}
0013 void SetEikonal(Omega_ik * eikonal) { p_eikonal = eikonal; }
0014 void SetQ(const double & Q) { m_Q = Q; }
0015 double operator()(double B);
0016 };
0017
0018 double m_tmin, m_tmax, m_summed[3];
0019 size_t m_steps;
0020 double m_delta;
0021 std::vector<std::vector<std::vector<double> > > m_tgrids;
0022 std::vector<double> m_diffgrids[3], m_intgrids[3];
0023
0024 void FillTGrids();
0025 void CombineTGrids(const size_t diff);
0026 void CreateIntGrids(const size_t diff,Sigma_Elastic * sigma_el);
0027 public:
0028 Sigma_SD();
0029
0030 double SelectT(const size_t & mode) const;
0031 double GetValue(const double & B);
0032 double GetCombinedValue(const double & B);
0033 double GetXSec(const size_t diff) { return m_summed[diff]; }
0034 void FillGrids(Sigma_Elastic * sigma_el);
0035 };
0036 }
0037 #endif