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

#include <G4ParticleHPCaptureURR.hh>

Inheritance diagram for G4ParticleHPCaptureURR:

Public Member Functions

 G4ParticleHPCaptureURR ()
 ~G4ParticleHPCaptureURR ()
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus)
virtual const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () const
G4int GetVerboseLevel () const
void SetVerboseLevel (G4int)
void BuildPhysicsTable (const G4ParticleDefinition &)
virtual void ModelDescription (std::ostream &outFile) const
Public Member Functions inherited from G4HadronicInteraction
 G4HadronicInteraction (const G4String &modelName="HadronicModel")
virtual ~G4HadronicInteraction ()
virtual G4double SampleInvariantT (const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
virtual G4bool IsApplicable (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4double GetMinEnergy () const
G4double GetMinEnergy (const G4Material *aMaterial, const G4Element *anElement) const
void SetMinEnergy (G4double anEnergy)
void SetMinEnergy (G4double anEnergy, const G4Element *anElement)
void SetMinEnergy (G4double anEnergy, const G4Material *aMaterial)
G4double GetMaxEnergy () const
G4double GetMaxEnergy (const G4Material *aMaterial, const G4Element *anElement) const
void SetMaxEnergy (const G4double anEnergy)
void SetMaxEnergy (G4double anEnergy, const G4Element *anElement)
void SetMaxEnergy (G4double anEnergy, const G4Material *aMaterial)
G4int GetVerboseLevel () const
void SetVerboseLevel (G4int value)
const G4StringGetModelName () const
void DeActivateFor (const G4Material *aMaterial)
void ActivateFor (const G4Material *aMaterial)
void DeActivateFor (const G4Element *anElement)
void ActivateFor (const G4Element *anElement)
G4bool IsBlocked (const G4Material *aMaterial) const
G4bool IsBlocked (const G4Element *anElement) const
void SetRecoilEnergyThreshold (G4double val)
G4double GetRecoilEnergyThreshold () const
virtual std::pair< G4double, G4doubleGetEnergyMomentumCheckLevels () const
void SetEnergyMomentumCheckLevels (G4double relativeLevel, G4double absoluteLevel)
virtual void InitialiseModel ()
 G4HadronicInteraction (const G4HadronicInteraction &right)=delete
const G4HadronicInteractionoperator= (const G4HadronicInteraction &right)=delete
G4bool operator== (const G4HadronicInteraction &right) const =delete
G4bool operator!= (const G4HadronicInteraction &right) const =delete

Additional Inherited Members

Protected Member Functions inherited from G4HadronicInteraction
void SetModelName (const G4String &nam)
G4bool IsBlocked () const
void Block ()
Protected Attributes inherited from G4HadronicInteraction
G4HadFinalState theParticleChange
G4int verboseLevel
G4double theMinEnergy
G4double theMaxEnergy
G4bool isBlocked

Detailed Description

Definition at line 61 of file G4ParticleHPCaptureURR.hh.

Constructor & Destructor Documentation

◆ G4ParticleHPCaptureURR()

G4ParticleHPCaptureURR::G4ParticleHPCaptureURR ( )

Definition at line 56 of file G4ParticleHPCaptureURR.cc.

56 : G4HadronicInteraction( "NeutronHPCaptureURR" ) {
57 SetMinEnergy( 0.0 * CLHEP::eV );
58 SetMaxEnergy( 20.0 * CLHEP::MeV );
59 neutronHPcapture = new G4NeutronHPCapture;
60}
void SetMinEnergy(G4double anEnergy)
G4HadronicInteraction(const G4String &modelName="HadronicModel")
void SetMaxEnergy(const G4double anEnergy)

◆ ~G4ParticleHPCaptureURR()

G4ParticleHPCaptureURR::~G4ParticleHPCaptureURR ( )

Definition at line 63 of file G4ParticleHPCaptureURR.cc.

63{}

Member Function Documentation

◆ ApplyYourself()

G4HadFinalState * G4ParticleHPCaptureURR::ApplyYourself ( const G4HadProjectile & aTrack,
G4Nucleus & aTargetNucleus )
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 66 of file G4ParticleHPCaptureURR.cc.

66 {
67 const G4Material* theMaterial = aTrack.GetMaterial();
68 G4double kineticEnergy = aTrack.GetKineticEnergy();
69 G4HadFinalState* theFinalState = nullptr;
70 if ( kineticEnergy < (*URRlimits).back().first || kineticEnergy >(*URRlimits).back().second ) {
71 return neutronHPcapture->ApplyYourself( aTrack, aNucleus );
72 }
73 G4int elementI = -1;
74 G4int isotopeJ = -1;
75 G4int A = aNucleus.GetA_asInt();
76 G4int Z = aNucleus.GetZ_asInt();
77 // finds the element and isotope of the selected target aNucleus
78 for ( G4int i = 0; i < (G4int)theMaterial->GetNumberOfElements(); ++i ) {
79 if ( Z == theMaterial->GetElement(i)->GetZasInt() ) {
80 for ( G4int j = 0; j < (G4int)theMaterial->GetElement(i)->GetNumberOfIsotopes(); ++j ) {
81 if ( A == theMaterial->GetElement(i)->GetIsotope(j)->GetN() ) {
82 isotopeJ = j;
83 break;
84 }
85 }
86 // the loop cannot be ended here because the material can have two elements with same Z but different isotopic composition
87 if ( isotopeJ != -1 ) {
88 // isotope was found and for loop is ended
89 elementI = (G4int)theMaterial->GetElement(i)->GetIndex();
90 break;
91 }
92 } // end if find element
93 } // end element loop
94 if (isotopeJ == -1) { return theFinalState; }
95
96 // Check whether the energy is out of the URR limits for the given element
97 if ( kineticEnergy < (*URRlimits).at(elementI).first || kineticEnergy > (*URRlimits).at(elementI).second ) {
98 // Call capture final state in G4ParicleHPChannel and SELECT ISOTOPE (to be improved in the future)
100 theFinalState = (*G4ParticleHPManager::GetInstance()->GetCaptureFinalStates())[elementI]->ApplyYourself( aTrack );
101 // Update target nucleus information according to the selected isotope
103 aNucleus.SetParameters( selectedIsotope_A, Z );
104 const G4Element* target_element = (*G4Element::GetElementTable())[elementI];
105 const G4Isotope* target_isotope = nullptr;
106 // Find the selected isotope among in the element
107 for ( G4int j = 0; j < (G4int)target_element->GetNumberOfIsotopes(); ++j ) {
108 target_isotope = target_element->GetIsotope(j);
109 if ( target_isotope->GetN() == selectedIsotope_A ) break;
110 }
111 aNucleus.SetIsotope( target_isotope );
113 } else { // the energy is inside the limits of the URR
114 // calls the final state for the found element and isotope
115 theFinalState = ((*G4ParticleHPManager::GetInstance()->GetCaptureFinalStates())[elementI]->GetFinalStates())[isotopeJ]->ApplyYourself( aTrack );
116 }
117 return theFinalState;
118}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
const G4double A[17]
std::size_t GetNumberOfIsotopes() const
Definition G4Element.hh:143
std::size_t GetIndex() const
Definition G4Element.hh:159
const G4Isotope * GetIsotope(G4int iso) const
Definition G4Element.hh:151
static const G4ElementTable * GetElementTable()
Definition G4Element.cc:401
G4int GetZasInt() const
Definition G4Element.hh:120
const G4Material * GetMaterial() const
G4double GetKineticEnergy() const
G4int GetN() const
Definition G4Isotope.hh:83
const G4Element * GetElement(G4int iel) const
std::size_t GetNumberOfElements() const
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus)
std::vector< G4ParticleHPChannel * > * GetCaptureFinalStates() const
static G4ParticleHPManager * GetInstance()
G4ParticleHPReactionWhiteBoard * GetReactionWhiteBoard()

Referenced by ApplyYourself().

◆ BuildPhysicsTable()

void G4ParticleHPCaptureURR::BuildPhysicsTable ( const G4ParticleDefinition & )
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 121 of file G4ParticleHPCaptureURR.cc.

121 {
122 neutronHPcapture->BuildPhysicsTable( *(G4Neutron::Neutron() ) );
124 if ( URRlimits == nullptr ) {
128 }
129}
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
std::vector< std::pair< G4double, G4double > > * GetURRlimits() const
void RegisterURRlimits(std::vector< std::pair< G4double, G4double > > *val)
static G4ParticleHPProbabilityTablesStore * GetInstance()
std::vector< std::pair< G4double, G4double > > * GetURRlimits()

◆ GetFatalEnergyCheckLevels()

const std::pair< G4double, G4double > G4ParticleHPCaptureURR::GetFatalEnergyCheckLevels ( ) const
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 132 of file G4ParticleHPCaptureURR.cc.

132 {
133 // max energy non-conservation is mass of heavy nucleus
134 return std::pair< G4double, G4double >( 10.0 * perCent, 350.0 * CLHEP::GeV );
135}

◆ GetVerboseLevel()

G4int G4ParticleHPCaptureURR::GetVerboseLevel ( ) const

Definition at line 138 of file G4ParticleHPCaptureURR.cc.

138 {
140}

◆ ModelDescription()

void G4ParticleHPCaptureURR::ModelDescription ( std::ostream & outFile) const
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 148 of file G4ParticleHPCaptureURR.cc.

148 {
149 outFile << "High Precision model based on Evaluated Nuclear Data Files (ENDF) for capture reaction of neutrons in the unresolved resonance region.";
150}

◆ SetVerboseLevel()

void G4ParticleHPCaptureURR::SetVerboseLevel ( G4int newValue)

Definition at line 143 of file G4ParticleHPCaptureURR.cc.

143 {
145}

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