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

#include <G4FissLib.hh>

Inheritance diagram for G4FissLib:

Public Member Functions

 G4FissLib ()
 ~G4FissLib ()
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus)
const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () 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 ModelDescription (std::ostream &outFile) const
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
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 132 of file G4FissLib.hh.

Constructor & Destructor Documentation

◆ G4FissLib()

G4FissLib::G4FissLib ( )

Definition at line 64 of file G4FissLib.cc.

65 :xSec(0)
66{
67 SetMinEnergy(0.0);
68 SetMaxEnergy(20.*MeV);
69 if(!G4FindDataDir("G4NEUTRONHPDATA")) {
70 G4cout << "Please setenv G4NEUTRONHPDATA to point to the neutron cross-section files." << G4endl;
71 throw G4HadronicException(__FILE__, __LINE__, "Please setenv G4NEUTRONHPDATA to point to the neutron cross-section files.");
72 }
73 dirName = G4FindDataDir("G4NEUTRONHPDATA");
74 G4String tString = "/Fission/";
75 dirName = dirName + tString;
77 theFission = new G4ParticleHPChannel[numEle];
78
79 for (std::size_t i=0; i<numEle; ++i)
80 {
81 if((*(G4Element::GetElementTable()))[i]->GetZ()>89)
82 {
83 theFission[i].Init((*(G4Element::GetElementTable()))[i], dirName);
84 theFission[i].Register(&theLibrary);
85 }
86 }
87}
const char * G4FindDataDir(const char *)
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
static std::size_t GetNumberOfElements()
Definition G4Element.cc:408
static const G4ElementTable * GetElementTable()
Definition G4Element.cc:401
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)

◆ ~G4FissLib()

G4FissLib::~G4FissLib ( )

Definition at line 89 of file G4FissLib.cc.

90{
91 delete [] theFission;
92}

Member Function Documentation

◆ ApplyYourself()

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

Reimplemented from G4HadronicInteraction.

Definition at line 95 of file G4FissLib.cc.

96{
98
99 const G4Material* theMaterial = aTrack.GetMaterial();
100 std::size_t n = theMaterial->GetNumberOfElements();
101 std::size_t index = theMaterial->GetElement(0)->GetIndex();
102
103 if (n != 1) {
104 xSec = new G4double[n];
105 G4double sum = 0;
106 G4int i;
107 std::size_t imat;
108 const G4double * NumAtomsPerVolume = theMaterial->GetVecNbOfAtomsPerVolume();
109 G4double rWeight;
110 G4ParticleHPThermalBoost aThermalE;
111 for (i = 0; i < (G4int)n; ++i) {
112 imat = theMaterial->GetElement(i)->GetIndex();
113 rWeight = NumAtomsPerVolume[i];
114 xSec[i] = theFission[imat].GetXsec(aThermalE.GetThermalEnergy(aTrack,
115 theMaterial->GetElement(i),
116 theMaterial->GetTemperature()));
117 xSec[i] *= rWeight;
118 sum+=xSec[i];
119 }
120
121 G4double random = G4UniformRand();
122 G4double running = 0;
123 for (i = 0; i < (G4int)n; ++i) {
124 running += xSec[i];
125 index = theMaterial->GetElement(i)->GetIndex();
126 if(random<=running/sum) break;
127 }
128 delete [] xSec;
129 }
130
131 //return theFission[index].ApplyYourself(aTrack);
132 //Overwrite target parameters
133 G4HadFinalState* result = theFission[index].ApplyYourself(aTrack);
134 aNucleus.SetParameters(G4ParticleHPManager::GetInstance()->GetReactionWhiteBoard()->GetTargA(),G4ParticleHPManager::GetInstance()->GetReactionWhiteBoard()->GetTargZ());
135 const G4Element* target_element = (*G4Element::GetElementTable())[index];
136 const G4Isotope* target_isotope=NULL;
137 G4int iele = (G4int)target_element->GetNumberOfIsotopes();
138 for ( G4int j = 0 ; j != iele ; ++j ) {
139 target_isotope=target_element->GetIsotope( j );
140 if ( target_isotope->GetN() == G4ParticleHPManager::GetInstance()->GetReactionWhiteBoard()->GetTargA() ) break;
141 }
142 aNucleus.SetIsotope( target_isotope );
144 return result;
145}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
#define G4UniformRand()
Definition Randomize.hh:52
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
const G4Material * GetMaterial() const
G4int GetN() const
Definition G4Isotope.hh:83
G4double GetTemperature() const
const G4Element * GetElement(G4int iel) const
const G4double * GetVecNbOfAtomsPerVolume() const
std::size_t GetNumberOfElements() const
static G4ParticleHPManager * GetInstance()
G4ParticleHPReactionWhiteBoard * GetReactionWhiteBoard()
G4double GetThermalEnergy(const G4HadProjectile &aP, const G4Element *anE, G4double aT)

◆ GetFatalEnergyCheckLevels()

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

Reimplemented from G4HadronicInteraction.

Definition at line 147 of file G4FissLib.cc.

148{
149 // max energy non-conservation is mass of heavy nucleus
150 return std::pair<G4double, G4double>(10.0*perCent, 350.0*CLHEP::GeV);
151}

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