58const G4double G4XnpElasticLowE::_lowLimit = 0.;
59const G4double G4XnpElasticLowE::_highLimit = 3.*GeV;
63const G4double G4XnpElasticLowE::_eMinTable = 1.8964808;
64const G4double G4XnpElasticLowE::_eStepLog = 0.01;
68const G4int G4XnpElasticLowE::_tableSize = 101;
69const 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;
93 _eMin =
G4Exp(
G4Log(_eMinTable)-_eStepLog)*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++)
108 G4double value = _sigmaTable[i] * millibarn;
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 G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4GLOB_DLL std::ostream G4cout
const G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
static G4Neutron * NeutronDefinition()
G4double GetLowEdgeEnergy(const std::size_t index) const
void PutValue(const std::size_t index, const G4double value)
G4double GetValue(const G4double energy, G4bool &isOutRange) const
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