Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4NucleonNuclearCrossSection Class Reference

#include <G4NucleonNuclearCrossSection.hh>

Inheritance diagram for G4NucleonNuclearCrossSection:
Collaboration diagram for G4NucleonNuclearCrossSection:

Public Member Functions

 G4NucleonNuclearCrossSection ()
 
virtual ~G4NucleonNuclearCrossSection ()
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *aParticle, G4int Z, const G4Material *mat=0)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *aParticle, G4int Z, const G4Material *mat=0)
 
virtual void CrossSectionDescription (std::ostream &) const
 
G4double GetElasticCrossSection (const G4DynamicParticle *aParticle, G4int Z)
 
G4double GetTotalXsc ()
 
G4double GetElasticXsc ()
 
- Public Member Functions inherited from G4VCrossSectionDataSet
 G4VCrossSectionDataSet (const G4String &nam="")
 
virtual ~G4VCrossSectionDataSet ()
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
virtual G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual G4int GetVerboseLevel () const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
const G4StringGetName () const
 

Static Public Member Functions

static const char * Default_Name ()
 

Additional Inherited Members

- Protected Member Functions inherited from G4VCrossSectionDataSet
void SetName (const G4String &)
 
- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 

Detailed Description

Definition at line 47 of file G4NucleonNuclearCrossSection.hh.

Constructor & Destructor Documentation

G4NucleonNuclearCrossSection::G4NucleonNuclearCrossSection ( )

Definition at line 460 of file G4NucleonNuclearCrossSection.cc.

462  fTotalXsc(0.0), fElasticXsc(0.0)
463 {
464  theNeutron = G4Neutron::Neutron();
465  theProton = G4Proton::Proton();
466 
467  // He, Be, C
468 
469  thePimData.push_back(new G4PiData(he_m_t, he_m_in, e1, 44));
470  thePipData.push_back(new G4PiData(he_m_t, he_p_in, e1, 44));
471 
472  thePimData.push_back(new G4PiData(be_m_t, be_m_in, e1, 44));
473  thePipData.push_back(new G4PiData(be_m_t, be_p_in, e1, 44));
474 
475  thePimData.push_back(new G4PiData(c_m_t, c_m_in, e1, 44));
476  thePipData.push_back(new G4PiData(c_m_t, c_p_in, e1, 44));
477 
478  // N, O, Na
479 
480  thePimData.push_back(new G4PiData(n_m_t, n_m_in, e2, 44));
481  thePipData.push_back(new G4PiData(n_m_t, n_p_in, e2, 44));
482 
483  thePimData.push_back(new G4PiData(o_m_t, o_m_in, e2, 44));
484  thePipData.push_back(new G4PiData(o_m_t, o_p_in, e2, 44));
485 
486  thePimData.push_back(new G4PiData(na_m_t, na_m_in, e2, 44));
487  thePipData.push_back(new G4PiData(na_m_t, na_p_in, e2, 44));
488 
489  // Al, Si, Ca
490 
491  thePimData.push_back(new G4PiData(al_m_t, al_m_in, e3, 45));
492  thePipData.push_back(new G4PiData(al_m_t, al_p_in, e3, 45));
493 
494  thePimData.push_back(new G4PiData(si_m_t, si_m_in, e3, 45));
495  thePipData.push_back(new G4PiData(si_m_t, si_p_in, e3, 45));
496 
497  thePimData.push_back(new G4PiData(ca_m_t, ca_m_in, e3, 45));
498  thePipData.push_back(new G4PiData(ca_m_t, ca_p_in, e3, 45));
499 
500  // Fe, Cu, Mo
501 
502  thePimData.push_back(new G4PiData(fe_m_t, fe_m_in, e4, 47));
503  thePipData.push_back(new G4PiData(fe_m_t, fe_p_in, e4, 47));
504 
505  thePimData.push_back(new G4PiData(cu_m_t, cu_m_in, e4, 47));
506  thePipData.push_back(new G4PiData(cu_m_t, cu_p_in, e4, 47));
507 
508  thePimData.push_back(new G4PiData(mo_m_t, mo_m_in, e4, 47));
509  thePipData.push_back(new G4PiData(mo_m_t, mo_p_in, e4, 47));
510 
511  // Cd, Sn, W
512 
513  thePimData.push_back(new G4PiData(cd_m_t, cd_m_in, e5, 48));
514  thePipData.push_back(new G4PiData(cd_m_t, cd_p_in, e5, 48));
515 
516  thePimData.push_back(new G4PiData(sn_m_t, sn_m_in, e5, 48));
517  thePipData.push_back(new G4PiData(sn_m_t, sn_p_in, e5, 48));
518 
519  thePimData.push_back(new G4PiData(w_m_t, w_m_in, e5, 48));
520  thePipData.push_back(new G4PiData(w_m_t, w_p_in, e5, 48));
521 
522  // Pb, U
523 
524  thePimData.push_back(new G4PiData(pb_m_t, pb_m_in, e6, 46));
525  thePipData.push_back(new G4PiData(pb_m_t, pb_p_in, e6, 46));
526 
527  thePimData.push_back(new G4PiData(u_m_t, u_m_in, e6, 46));
528  thePipData.push_back(new G4PiData(u_m_t, u_p_in, e6, 46));
529 
530  theZ.push_back(2); // He
531  theZ.push_back(4); // Be
532  theZ.push_back(6); // C
533  theZ.push_back(7); // N
534  theZ.push_back(8); // O
535  theZ.push_back(11); // Na
536  theZ.push_back(13); // Al
537  theZ.push_back(14); // Si
538  theZ.push_back(20); // Ca
539  theZ.push_back(26); // Fe
540  theZ.push_back(29); // Cu
541  theZ.push_back(42); // Mo
542  theZ.push_back(48); // Cd
543  theZ.push_back(50); // Sn
544  theZ.push_back(74); // W
545  theZ.push_back(82); // Pb
546  theZ.push_back(92); // U
547 
548 }
G4VCrossSectionDataSet(const G4String &nam="")
static G4Proton * Proton()
Definition: G4Proton.cc:93
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104

Here is the call graph for this function:

G4NucleonNuclearCrossSection::~G4NucleonNuclearCrossSection ( )
virtual

Definition at line 553 of file G4NucleonNuclearCrossSection.cc.

554 {
555  std::for_each(thePimData.begin(), thePimData.end(), G4PiData::Delete());
556  std::for_each(thePipData.begin(), thePipData.end(), G4PiData::Delete());
557 }

Member Function Documentation

void G4NucleonNuclearCrossSection::CrossSectionDescription ( std::ostream &  outFile) const
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 675 of file G4NucleonNuclearCrossSection.cc.

676 {
677  outFile << "G4NucleonNuclearCrossSection is a variant of the Barashenkov\n"
678  << "cross section parameterization to be used of protons and\n"
679  << "nucleons on targets heavier than hydrogen. It is intended for\n"
680  << "use as a cross section component and is currently used by\n"
681  << "G4BGGNucleonInelasticXS. It is valid for incident energies up\n"
682  << "to 1 TeV.\n";
683 }
static const char* G4NucleonNuclearCrossSection::Default_Name ( )
inlinestatic

Definition at line 54 of file G4NucleonNuclearCrossSection.hh.

54 {return "G4NucleonNuclearCrossSection";}

Here is the caller graph for this function:

G4double G4NucleonNuclearCrossSection::GetElasticCrossSection ( const G4DynamicParticle aParticle,
G4int  Z 
)
inline

Definition at line 184 of file G4NucleonNuclearCrossSection.hh.

186 {
188  return fElasticXsc;
189 }
virtual G4double GetElementCrossSection(const G4DynamicParticle *aParticle, G4int Z, const G4Material *mat=0)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4NucleonNuclearCrossSection::GetElasticXsc ( )
inline

Definition at line 70 of file G4NucleonNuclearCrossSection.hh.

70 { return fElasticXsc; };
G4double G4NucleonNuclearCrossSection::GetElementCrossSection ( const G4DynamicParticle aParticle,
G4int  Z,
const G4Material mat = 0 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 579 of file G4NucleonNuclearCrossSection.cc.

581 {
582  G4double kineticEnergy = aParticle->GetKineticEnergy();
583 
584  G4double result = 0;
585  // G4cout<<"Z = "<<Z<<G4endl;
586 
587  size_t it = 0;
588  size_t itmax = theZ.size() - 1;
589  for(; it <= itmax; ++it) { if(Z <= theZ[it]) { break; } }
590  if( it > itmax ) { it = itmax; }
591  G4int Z1, Z2;
592  G4double x1, x2, xt1, xt2;
593 
594  std::vector<G4PiData *> * theData = &thePimData;
595  if(aParticle->GetDefinition() == theProton) { theData = &thePipData; }
596 
597  if( theZ[it] == Z )
598  {
599  result = (*theData)[it]->ReactionXSection(kineticEnergy);
600  fTotalXsc = (*theData)[it]->TotalXSection(kineticEnergy);
601  }
602  else
603  {
604  if(0 == it) { it = 1; }
605  x1 = (*theData)[it-1]->ReactionXSection(kineticEnergy);
606  xt1 = (*theData)[it-1]->TotalXSection(kineticEnergy);
607  Z1 = theZ[it-1];
608  x2 = (*theData)[it]->ReactionXSection(kineticEnergy);
609  xt2 = (*theData)[it]->TotalXSection(kineticEnergy);
610  Z2 = theZ[it];
611 
612  result = Interpolate(Z1, Z2, Z, x1, x2);
613  fTotalXsc = Interpolate(Z1, Z2, Z, xt1, xt2);
614  }
615 
616  fElasticXsc = fTotalXsc - result;
617  if( fElasticXsc < 0.) { fElasticXsc = 0.; }
618 
619  return result;
620 }
G4double G4ParticleHPJENDLHEData::G4double result
G4double GetKineticEnergy() const
G4ParticleDefinition * GetDefinition() const
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4NucleonNuclearCrossSection::GetTotalXsc ( )
inline

Definition at line 69 of file G4NucleonNuclearCrossSection.hh.

69 { return fTotalXsc; };
G4bool G4NucleonNuclearCrossSection::IsElementApplicable ( const G4DynamicParticle aParticle,
G4int  Z,
const G4Material mat = 0 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 563 of file G4NucleonNuclearCrossSection.cc.

566 {
567  G4bool result = false;
568  if(aParticle->GetDefinition() == theNeutron ) result = true;
569  if(aParticle->GetDefinition() == theProton) result = true;
570  if(Z < 2) result = false;
571  if(aParticle->GetKineticEnergy() > 999.9*GeV) result = false;
572  return result;
573 }
G4double G4ParticleHPJENDLHEData::G4double result
G4double GetKineticEnergy() const
G4ParticleDefinition * GetDefinition() const
bool G4bool
Definition: G4Types.hh:79
static constexpr double GeV
Definition: G4SIunits.hh:217

Here is the call graph for this function:


The documentation for this class was generated from the following files: