39 const G4double G4XNNElasticLowE::_lowLimit = 0.;
 
   40 const G4double G4XNNElasticLowE::_highLimit = 3.*
GeV;
 
   44 const G4double G4XNNElasticLowE::_eMinTable = 1.8964808;
 
   45 const G4double G4XNNElasticLowE::_eStepLog = 0.01;
 
   50 const G4int G4XNNElasticLowE::tableSize = 101;
 
   52 const G4double G4XNNElasticLowE::ppTable[101] = 
 
   55   33.48, 26.76, 25.26, 24.55, 23.94, 23.77, 23.72, 23.98,
 
   56   25.48, 27.52, 27.72, 27.21, 25.80, 26.00, 24.32, 23.81,
 
   57   24.37, 24.36, 23.13, 22.43, 21.71, 21.01, 20.83, 20.74,
 
   58   20.25, 20.10, 20.59, 20.04, 20.83, 20.84, 21.07, 20.83,
 
   59   20.79, 21.88, 21.15, 20.92, 19.00, 18.60, 17.30, 17.00,
 
   60   16.70, 16.50, 16.20, 15.80, 15.57, 15.20, 15.00, 14.60,
 
   61   14.20, 14.00, 13.80, 13.60, 13.40, 13.20, 13.00, 12.85,
 
   62   12.70, 12.60, 12.50, 12.40, 12.30, 12.20, 12.10, 12.00,
 
   63   11.90, 11.80, 11.75, 11.70, 11.64, 11.53, 11.41, 11.31,
 
   64   11.22, 11.13, 11.05, 10.97, 10.89, 10.82, 10.75, 10.68,
 
   65   10.61, 10.54, 10.48, 10.41, 10.35, 10.28, 10.22, 10.16,
 
   66   10.13, 10.10, 10.08, 10.05, 10.02,  9.99,  9.96,  9.93,
 
   67   9.90,  9.87,  9.84,  9.80       
 
   70 const G4double G4XNNElasticLowE::npTable[101] = 
 
   73   248.20, 93.38, 55.26, 44.50, 41.33, 38.48, 37.20, 35.98,
 
   74   35.02, 34.47, 32.48, 30.76, 29.46, 28.53, 27.84, 27.20,
 
   75   26.53, 25.95, 25.59, 25.46, 25.00, 24.49, 24.08, 23.86,
 
   76   23.17, 22.70, 21.88, 21.48, 20.22, 19.75, 18.97, 18.39,
 
   77   17.98, 17.63, 17.21, 16.72, 16.68, 16.58, 16.42, 16.22,
 
   78   15.98, 15.71, 15.42, 15.14, 14.87, 14.65, 14.44, 14.26,
 
   79   14.10, 13.95, 13.80, 13.64, 13.47, 13.29, 13.09, 12.89,
 
   80   12.68, 12.47, 12.27, 12.06, 11.84, 11.76, 11.69, 11.60,
 
   81   11.50, 11.41, 11.29, 11.17, 11.06, 10.93, 10.81, 10.68,
 
   82   10.56, 10.44, 10.33, 10.21, 10.12, 10.03,  9.96,  9.89,
 
   83   9.83,  9.80,  9.77,  9.75,  9.74,  9.74,  9.74,  9.76,
 
   84   9.73,  9.70,  9.68,  9.65,  9.63,  9.60,  9.57,  9.55,
 
   85   9.52,  9.49,  9.46,  9.43
 
   93   _eMin = _eMinTable * 
GeV;
 
   94   _eMax = 
G4Exp(
G4Log(_eMinTable) + tableSize * _eStepLog) * 
GeV;
 
   95   if (_eMin < _lowLimit)
 
   96     throw G4HadronicException(__FILE__, __LINE__, 
"G4XNNElasticLowE::G4XNNElasticLowE - Low energy limit not valid");    
 
   97   if (_highLimit > _eMax)
 
   98     throw G4HadronicException(__FILE__, __LINE__, 
"G4XNNElasticLowE::G4XNNElasticLowE - High energy limit not valid");    
 
  102   if (_eMin < _lowLimit)
 
  103     throw G4HadronicException(__FILE__, __LINE__, 
"G4XNNElasticLowE::G4XNNElasticLowE - Low energy limit not valid");
 
  107   for (i=0; i<tableSize; i++)
 
  147   typedef std::map <const G4ParticleDefinition *, G4PhysicsVector*, std::less<const G4ParticleDefinition *> > StringPhysMap;
 
  149   if (xMap.find(key)!= xMap.end())
 
  152       StringPhysMap::const_iterator iter;
 
  153       for (iter = xMap.begin(); iter != xMap.end(); ++iter)
 
  160           if (sqrtS >= _eMin && sqrtS <= _eMax)
 
  162           sigma = physVector->
GetValue(sqrtS,dummy);
 
  163         } 
else if ( sqrtS < _eMin )
 
  165                   sigma = physVector->
GetValue(_eMin,dummy);
 
  187   typedef std::map <const G4ParticleDefinition *, G4PhysicsVector*, std::less<const G4ParticleDefinition *> > StringPhysMap;
 
  188   StringPhysMap::const_iterator iter;
 
  190   for (iter = xMap.begin(); iter != xMap.end(); ++iter)
 
  201       for (i=0; i<tableSize; i++)
 
  205       G4cout << i << 
") e = " << e / 
GeV << 
" GeV ---- Cross section = " << sigma << 
" mb " << 
G4endl;
 
  215   for (iter = xMap.begin(); iter != xMap.end(); ++iter)
 
  228       for (i=0; i<tableSize; i++)
 
  232       G4cout << i << 
") e = " << e / 
GeV << 
" GeV ---- Cross section = " << sigma << 
" mb " << 
G4endl;
 
const G4ParticleDefinition * FindKeyParticle(const G4KineticTrack &trk1, const G4KineticTrack &trk2) const 
 
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
 
const XML_Char int const XML_Char * value
 
void PutValue(size_t index, G4double theValue)
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
virtual void Print() const 
 
virtual G4bool IsValid(G4double e) const 
 
virtual void Print() const 
 
static constexpr double GeV
 
virtual G4String Name() const 
 
G4bool operator!=(const G4XNNElasticLowE &right) const 
 
const G4LorentzVector & Get4Momentum() const 
 
static G4Neutron * NeutronDefinition()
 
G4PhysicsLogVector G4PhysicsLnVector
 
static constexpr double millibarn
 
G4bool InLimits(G4double e, G4double eLow, G4double eHigh) const