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