58 const G4double G4XnpElasticLowE::_lowLimit = 0.;
59 const G4double G4XnpElasticLowE::_highLimit = 3.*
GeV;
63 const G4double G4XnpElasticLowE::_eMinTable = 1.8964808;
64 const G4double G4XnpElasticLowE::_eStepLog = 0.01;
68 const G4int G4XnpElasticLowE::_tableSize = 101;
69 const G4double G4XnpElasticLowE::_sigmaTable[101] =
72 248.20, 93.38, 55.26, 44.50, 41.33, 38.48, 37.20, 35.98,
73 35.02, 34.47, 32.48, 30.76, 29.46, 28.53, 27.84, 27.20,
74 26.53, 25.95, 25.59, 25.46, 25.00, 24.49, 24.08, 23.86,
75 23.17, 22.70, 21.88, 21.48, 20.22, 19.75, 18.97, 18.39,
76 17.98, 17.63, 17.21, 16.72, 16.68, 16.58, 16.42, 16.22,
77 15.98, 15.71, 15.42, 15.14, 14.87, 14.65, 14.44, 14.26,
78 14.10, 13.95, 13.80, 13.64, 13.47, 13.29, 13.09, 12.89,
79 12.68, 12.47, 12.27, 12.06, 11.84, 11.76, 11.69, 11.60,
80 11.50, 11.41, 11.29, 11.17, 11.06, 10.93, 10.81, 10.68,
81 10.56, 10.44, 10.33, 10.21, 10.12, 10.03, 9.96, 9.89,
82 9.83, 9.80, 9.77, 9.75, 9.74, 9.74, 9.74, 9.76,
83 9.73, 9.70, 9.68, 9.65, 9.63, 9.60, 9.57, 9.55,
84 9.52, 9.49, 9.46, 9.43
92 _eMin = _eMinTable *
GeV;
94 _eMax =
G4Exp(
G4Log(_eMinTable) + _tableSize * _eStepLog) *
GeV;
98 if (_eMin < _lowLimit)
99 throw G4HadronicException(__FILE__, __LINE__,
"G4XnpElasticLowE::G4XnpElasticLowE - Low energy limit not valid");
101 if (_highLimit > _eMax)
102 throw G4HadronicException(__FILE__, __LINE__,
"G4XnpElasticLowE::G4XnpElasticLowE - High energy limit not valid");
106 for (i=0; i<_tableSize; i++)
144 if ( (def1 == proton && def2 == neutron) ||
145 (def1 == neutron && def2 == proton) )
147 if (sqrtS >= _eMin && sqrtS <= _eMax)
149 sigma = _sigma->
GetValue(sqrtS,dummy);
150 }
else if ( sqrtS < _eMin )
152 sigma = _sigma->
GetValue(_eMin,dummy);
166 for (i=0; i<_tableSize; i++)
170 G4cout << i <<
") e = " << e <<
" GeV ---- Cross section = " << sigma <<
" mb " <<
G4endl;
G4double GetValue(G4double theEnergy, G4bool &isOutRange) const
virtual void Print() const
virtual G4bool IsValid(G4double e) const
static G4Proton * ProtonDefinition()
G4bool operator==(const G4XnpElasticLowE &right) const
G4double GetLowEdgeEnergy(size_t binNumber) const
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
virtual G4String Name() const
void PutValue(size_t index, G4double theValue)
virtual ~G4XnpElasticLowE()
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4bool operator!=(const G4XnpElasticLowE &right) const
virtual void Print() const
static constexpr double GeV
const G4LorentzVector & Get4Momentum() const
const G4ParticleDefinition * GetDefinition() const
static G4Neutron * NeutronDefinition()
G4PhysicsLogVector G4PhysicsLnVector
static constexpr double millibarn
G4bool InLimits(G4double e, G4double eLow, G4double eHigh) const