38 const G4double G4XNNElasticLowE::_lowLimit = 0.;
39 const G4double G4XNNElasticLowE::_highLimit = 3.*
GeV;
43 const G4double G4XNNElasticLowE::_eMinTable = 1.8964808;
44 const G4double G4XNNElasticLowE::_eStepLog = 0.01;
49 const G4int G4XNNElasticLowE::tableSize = 101;
51 const G4double G4XNNElasticLowE::ppTable[101] =
54 33.48, 26.76, 25.26, 24.55, 23.94, 23.77, 23.72, 23.98,
55 25.48, 27.52, 27.72, 27.21, 25.80, 26.00, 24.32, 23.81,
56 24.37, 24.36, 23.13, 22.43, 21.71, 21.01, 20.83, 20.74,
57 20.25, 20.10, 20.59, 20.04, 20.83, 20.84, 21.07, 20.83,
58 20.79, 21.88, 21.15, 20.92, 19.00, 18.60, 17.30, 17.00,
59 16.70, 16.50, 16.20, 15.80, 15.57, 15.20, 15.00, 14.60,
60 14.20, 14.00, 13.80, 13.60, 13.40, 13.20, 13.00, 12.85,
61 12.70, 12.60, 12.50, 12.40, 12.30, 12.20, 12.10, 12.00,
62 11.90, 11.80, 11.75, 11.70, 11.64, 11.53, 11.41, 11.31,
63 11.22, 11.13, 11.05, 10.97, 10.89, 10.82, 10.75, 10.68,
64 10.61, 10.54, 10.48, 10.41, 10.35, 10.28, 10.22, 10.16,
65 10.13, 10.10, 10.08, 10.05, 10.02, 9.99, 9.96, 9.93,
66 9.90, 9.87, 9.84, 9.80
69 const G4double G4XNNElasticLowE::npTable[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 _eMax = std::exp(std::log(_eMinTable) + tableSize * _eStepLog) *
GeV;
94 if (_eMin < _lowLimit)
95 throw G4HadronicException(__FILE__, __LINE__,
"G4XNNElasticLowE::G4XNNElasticLowE - Low energy limit not valid");
96 if (_highLimit > _eMax)
97 throw G4HadronicException(__FILE__, __LINE__,
"G4XNNElasticLowE::G4XNNElasticLowE - High energy limit not valid");
100 _eMin = std::exp(std::log(_eMinTable)-_eStepLog)*
GeV;
101 if (_eMin < _lowLimit)
102 throw G4HadronicException(__FILE__, __LINE__,
"G4XNNElasticLowE::G4XNNElasticLowE - Low energy limit not valid");
106 for (i=0; i<tableSize; i++)
146 typedef std::map <G4ParticleDefinition *, G4PhysicsVector*, std::less<G4ParticleDefinition *> > StringPhysMap;
148 if (xMap.find(key)!= xMap.end())
151 StringPhysMap::const_iterator iter;
152 for (iter = xMap.begin(); iter != xMap.end(); ++iter)
159 if (sqrtS >= _eMin && sqrtS <= _eMax)
161 sigma = physVector->
GetValue(sqrtS,dummy);
162 }
else if ( sqrtS < _eMin )
164 sigma = physVector->
GetValue(_eMin,dummy);
186 typedef std::map <G4ParticleDefinition *, G4PhysicsVector*, std::less<G4ParticleDefinition *> > StringPhysMap;
187 StringPhysMap::const_iterator iter;
189 for (iter = xMap.begin(); iter != xMap.end(); ++iter)
200 for (i=0; i<tableSize; i++)
204 G4cout << i <<
") e = " << e /
GeV <<
" GeV ---- Cross section = " << sigma <<
" mb " <<
G4endl;
214 for (iter = xMap.begin(); iter != xMap.end(); ++iter)
227 for (i=0; i<tableSize; i++)
231 G4cout << i <<
") e = " << e /
GeV <<
" GeV ---- Cross section = " << sigma <<
" mb " <<
G4endl;
G4double GetValue(G4double theEnergy, G4bool &isOutRange) const
G4bool operator==(const G4XNNElasticLowE &right) const
virtual G4double CrossSection(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
static G4Proton * ProtonDefinition()
G4double GetLowEdgeEnergy(size_t binNumber) const
virtual ~G4XNNElasticLowE()
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * FindKeyParticle(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const
void PutValue(size_t index, G4double theValue)
virtual void Print() const
virtual G4bool IsValid(G4double e) const
virtual void Print() const
const XML_Char int const XML_Char * value
virtual G4String Name() const
G4bool operator!=(const G4XNNElasticLowE &right) const
const G4LorentzVector & Get4Momentum() const
static G4Neutron * NeutronDefinition()
G4bool InLimits(G4double e, G4double eLow, G4double eHigh) const