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 G4Isotope * SelectIsotope (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 G4String & GetName () 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: