Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NucleonNuclearCrossSection Class Reference

#include <G4NucleonNuclearCrossSection.hh>

+ Inheritance 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 IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
 
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 GetElementCrossSection (const G4DynamicParticle *, G4int Z, 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 void CrossSectionDescription (std::ostream &) const
 
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::G4NucleonNuclearCrossSection ( )

Definition at line 459 of file G4NucleonNuclearCrossSection.cc.

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

◆ ~G4NucleonNuclearCrossSection()

G4NucleonNuclearCrossSection::~G4NucleonNuclearCrossSection ( )
virtual

Definition at line 552 of file G4NucleonNuclearCrossSection.cc.

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

Member Function Documentation

◆ CrossSectionDescription()

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

Reimplemented from G4VCrossSectionDataSet.

Definition at line 674 of file G4NucleonNuclearCrossSection.cc.

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

◆ Default_Name()

static const char * G4NucleonNuclearCrossSection::Default_Name ( )
inlinestatic

Definition at line 54 of file G4NucleonNuclearCrossSection.hh.

54{return "G4NucleonNuclearCrossSection";}

Referenced by G4BGGNucleonElasticXS::BuildPhysicsTable(), and G4BGGNucleonInelasticXS::BuildPhysicsTable().

◆ GetElasticCrossSection()

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)

Referenced by G4BGGNucleonElasticXS::BuildPhysicsTable(), and G4BGGNucleonElasticXS::GetElementCrossSection().

◆ GetElasticXsc()

G4double G4NucleonNuclearCrossSection::GetElasticXsc ( )
inline

Definition at line 70 of file G4NucleonNuclearCrossSection.hh.

70{ return fElasticXsc; };

◆ GetElementCrossSection()

G4double G4NucleonNuclearCrossSection::GetElementCrossSection ( const G4DynamicParticle aParticle,
G4int  Z,
const G4Material mat = 0 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 578 of file G4NucleonNuclearCrossSection.cc.

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

Referenced by G4BGGNucleonInelasticXS::BuildPhysicsTable(), GetElasticCrossSection(), and G4BGGNucleonInelasticXS::GetElementCrossSection().

◆ GetTotalXsc()

G4double G4NucleonNuclearCrossSection::GetTotalXsc ( )
inline

Definition at line 69 of file G4NucleonNuclearCrossSection.hh.

69{ return fTotalXsc; };

◆ IsElementApplicable()

G4bool G4NucleonNuclearCrossSection::IsElementApplicable ( const G4DynamicParticle aParticle,
G4int  Z,
const G4Material mat = 0 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 562 of file G4NucleonNuclearCrossSection.cc.

565{
566 G4bool result = false;
567 if(aParticle->GetDefinition() == theNeutron ) result = true;
568 if(aParticle->GetDefinition() == theProton) result = true;
569 if(Z < 2) result = false;
570 if(aParticle->GetKineticEnergy() > 999.9*GeV) result = false;
571 return result;
572}
bool G4bool
Definition: G4Types.hh:67

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