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

#include <G4CompetitiveFission.hh>

+ Inheritance diagram for G4CompetitiveFission:

Public Member Functions

 G4CompetitiveFission ()
 
 ~G4CompetitiveFission () override
 
void Initialise () override
 
G4FragmentEmittedFragment (G4Fragment *theNucleus) override
 
G4double GetEmissionProbability (G4Fragment *theNucleus) override
 
void SetFissionBarrier (G4VFissionBarrier *aBarrier)
 
void SetEmissionStrategy (G4VEmissionProbability *aFissionProb)
 
void SetLevelDensityParameter (G4VLevelDensityParameter *aLevelDensity)
 
G4double GetFissionBarrier (void) const
 
G4double GetLevelDensityParameter (void) const
 
G4double GetMaximalKineticEnergy (void) const
 
 G4CompetitiveFission (const G4CompetitiveFission &right)=delete
 
const G4CompetitiveFissionoperator= (const G4CompetitiveFission &right)=delete
 
G4bool operator== (const G4CompetitiveFission &right) const =delete
 
G4bool operator!= (const G4CompetitiveFission &right) const =delete
 
- Public Member Functions inherited from G4VEvaporationChannel
 G4VEvaporationChannel (const G4String &aName="")
 
virtual ~G4VEvaporationChannel ()=default
 
virtual G4double GetLifeTime (G4Fragment *theNucleus)
 
virtual G4bool BreakUpChain (G4FragmentVector *theResult, G4Fragment *theNucleus)
 
G4FragmentVectorBreakUpFragment (G4Fragment *theNucleus)
 
virtual G4double ComputeInverseXSection (G4Fragment *theNucleus, G4double kinEnergy)
 
virtual G4double ComputeProbability (G4Fragment *theNucleus, G4double kinEnergy)
 
virtual void Dump () const
 
virtual void SetICM (G4bool)
 
virtual void RDMForced (G4bool)
 
void SetOPTxs (G4int)
 
void UseSICB (G4bool)
 
 G4VEvaporationChannel (const G4VEvaporationChannel &right)=delete
 
const G4VEvaporationChanneloperator= (const G4VEvaporationChannel &right)=delete
 
G4bool operator== (const G4VEvaporationChannel &right) const =delete
 
G4bool operator!= (const G4VEvaporationChannel &right) const =delete
 

Additional Inherited Members

- Protected Attributes inherited from G4VEvaporationChannel
G4int OPTxs {3}
 
G4bool useSICB {true}
 

Detailed Description

Definition at line 46 of file G4CompetitiveFission.hh.

Constructor & Destructor Documentation

◆ G4CompetitiveFission() [1/2]

G4CompetitiveFission::G4CompetitiveFission ( )

Definition at line 50 of file G4CompetitiveFission.cc.

50 : G4VEvaporationChannel("fission"), theSecID(-1)
51{
52 theFissionBarrierPtr = new G4FissionBarrier;
53 theFissionProbabilityPtr = new G4FissionProbability;
54 theLevelDensityPtr = new G4FissionLevelDensityParameter;
56 theSecID = G4PhysicsModelCatalog::GetModelID("model_G4CompetitiveFission");
57}
G4PairingCorrection * GetPairingCorrection()
static G4NuclearLevelData * GetInstance()
static G4int GetModelID(const G4int modelIndex)
G4VEvaporationChannel(const G4String &aName="")

Referenced by G4CompetitiveFission(), operator!=(), operator=(), and operator==().

◆ ~G4CompetitiveFission()

G4CompetitiveFission::~G4CompetitiveFission ( )
override

Definition at line 59 of file G4CompetitiveFission.cc.

60{
61 if (myOwnFissionBarrier) delete theFissionBarrierPtr;
62 if (myOwnFissionProbability) delete theFissionProbabilityPtr;
63 if (myOwnLevelDensity) delete theLevelDensityPtr;
64}

◆ G4CompetitiveFission() [2/2]

G4CompetitiveFission::G4CompetitiveFission ( const G4CompetitiveFission & right)
delete

Member Function Documentation

◆ EmittedFragment()

G4Fragment * G4CompetitiveFission::EmittedFragment ( G4Fragment * theNucleus)
overridevirtual

Reimplemented from G4VEvaporationChannel.

Definition at line 97 of file G4CompetitiveFission.cc.

98{
99 G4Fragment * Fragment1 = nullptr;
100 // Nucleus data
101 // Atomic number of nucleus
102 G4int A = theNucleus->GetA_asInt();
103 // Charge of nucleus
104 G4int Z = theNucleus->GetZ_asInt();
105 // Excitation energy (in MeV)
106 G4double U = theNucleus->GetExcitationEnergy();
107 G4double pcorr = pairingCorrection->GetFissionPairingCorrection(A,Z);
108 if (U <= pcorr) { return Fragment1; }
109
110 // Atomic Mass of Nucleus (in MeV)
111 G4double M = theNucleus->GetGroundStateMass();
112
113 // Nucleus Momentum
114 G4LorentzVector theNucleusMomentum = theNucleus->GetMomentum();
115
116 // Calculate fission parameters
117 theParam.DefineParameters(A, Z, U-pcorr, fissionBarrier);
118
119 // First fragment
120 G4int A1 = 0;
121 G4int Z1 = 0;
122 G4double M1 = 0.0;
123
124 // Second fragment
125 G4int A2 = 0;
126 G4int Z2 = 0;
127 G4double M2 = 0.0;
128
129 G4double FragmentsExcitationEnergy = 0.0;
130 G4double FragmentsKineticEnergy = 0.0;
131
132 G4int Trials = 0;
133 do {
134
135 // First fragment
136 A1 = FissionAtomicNumber(A);
137 Z1 = FissionCharge(A, Z, A1);
139
140 // Second Fragment
141 A2 = A - A1;
142 Z2 = Z - Z1;
143 if (A2 < 1 || Z2 < 0 || Z2 > A2) {
144 FragmentsExcitationEnergy = -1.0;
145 continue;
146 }
148 // Maximal Kinetic Energy (available energy for fragments)
149 G4double Tmax = M + U - M1 - M2 - pcorr;
150
151 // Check that fragment masses are less or equal than total energy
152 if (Tmax < 0.0) {
153 FragmentsExcitationEnergy = -1.0;
154 continue;
155 }
156
157 FragmentsKineticEnergy = FissionKineticEnergy( A , Z,
158 A1, Z1,
159 A2, Z2,
160 U , Tmax);
161
162 // Excitation Energy
163 // FragmentsExcitationEnergy = Tmax - FragmentsKineticEnergy;
164 // JMQ 04/03/09 BUG FIXED: in order to fulfill energy conservation the
165 // fragments carry the fission pairing energy in form of
166 // excitation energy
167
168 FragmentsExcitationEnergy =
169 Tmax - FragmentsKineticEnergy + pcorr;
170
171 // Loop checking, 05-Aug-2015, Vladimir Ivanchenko
172 } while (FragmentsExcitationEnergy < 0.0 && ++Trials < 100);
173
174 if (FragmentsExcitationEnergy <= 0.0) {
175 throw G4HadronicException(__FILE__, __LINE__,
176 "G4CompetitiveFission::BreakItUp: Excitation energy for fragments < 0.0!");
177 }
178
179 // Fragment 1
180 M1 += FragmentsExcitationEnergy * A1/static_cast<G4double>(A);
181 // Fragment 2
182 M2 += FragmentsExcitationEnergy * A2/static_cast<G4double>(A);
183 // primary
184 M += U;
185
186 G4double etot1 = ((M - M2)*(M + M2) + M1*M1)/(2*M);
187 G4ParticleMomentum Momentum1 =
188 std::sqrt((etot1 - M1)*(etot1+M1))*G4RandomDirection();
189 G4LorentzVector FourMomentum1(Momentum1, etot1);
190 FourMomentum1.boost(theNucleusMomentum.boostVector());
191
192 // Create Fragments
193 Fragment1 = new G4Fragment( A1, Z1, FourMomentum1);
194 if (Fragment1 != nullptr) { Fragment1->SetCreatorModelID(theSecID); }
195 theNucleusMomentum -= FourMomentum1;
196 theNucleus->SetZandA_asInt(Z2, A2);
197 theNucleus->SetMomentum(theNucleusMomentum);
198 theNucleus->SetCreatorModelID(theSecID);
199 return Fragment1;
200}
CLHEP::HepLorentzVector G4LorentzVector
#define M(row, col)
G4ThreeVector G4ParticleMomentum
G4ThreeVector G4RandomDirection()
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
const G4double A[17]
Hep3Vector boostVector() const
G4double GetGroundStateMass() const
void SetZandA_asInt(G4int Znew, G4int Anew, G4int Lnew=0)
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
void SetCreatorModelID(G4int value)
G4int GetZ_asInt() const
void SetMomentum(const G4LorentzVector &value)
G4int GetA_asInt() const
static G4double GetNuclearMass(const G4double A, const G4double Z)

◆ GetEmissionProbability()

G4double G4CompetitiveFission::GetEmissionProbability ( G4Fragment * theNucleus)
overridevirtual

Implements G4VEvaporationChannel.

Definition at line 75 of file G4CompetitiveFission.cc.

76{
77 if (!isInitialised) { Initialise(); }
78 G4int Z = fragment->GetZ_asInt();
79 G4int A = fragment->GetA_asInt();
80 fissionProbability = 0.0;
81 // Saddle point excitation energy ---> A = 65
82 if (A >= 65 && Z > 16) {
83 G4double exEnergy = fragment->GetExcitationEnergy() -
84 pairingCorrection->GetFissionPairingCorrection(A, Z);
85
86 if (exEnergy > 0.0) {
87 fissionBarrier = theFissionBarrierPtr->FissionBarrier(A, Z, exEnergy);
88 maxKineticEnergy = exEnergy - fissionBarrier;
89 fissionProbability =
90 theFissionProbabilityPtr->EmissionProbability(*fragment,
91 maxKineticEnergy);
92 }
93 }
94 return fissionProbability*fFactor;
95}

◆ GetFissionBarrier()

G4double G4CompetitiveFission::GetFissionBarrier ( void ) const
inline

Definition at line 127 of file G4CompetitiveFission.hh.

128{
129 return fissionBarrier;
130}

◆ GetLevelDensityParameter()

G4double G4CompetitiveFission::GetLevelDensityParameter ( void ) const
inline

◆ GetMaximalKineticEnergy()

G4double G4CompetitiveFission::GetMaximalKineticEnergy ( void ) const
inline

Definition at line 132 of file G4CompetitiveFission.hh.

133{
134 return maxKineticEnergy;
135}

◆ Initialise()

void G4CompetitiveFission::Initialise ( )
overridevirtual

Reimplemented from G4VEvaporationChannel.

Definition at line 66 of file G4CompetitiveFission.cc.

67{
68 if (!isInitialised) {
69 isInitialised = true;
71 if (OPTxs == 1) { fFactor = 0.5; }
72 }
73}

Referenced by GetEmissionProbability().

◆ operator!=()

G4bool G4CompetitiveFission::operator!= ( const G4CompetitiveFission & right) const
delete

◆ operator=()

const G4CompetitiveFission & G4CompetitiveFission::operator= ( const G4CompetitiveFission & right)
delete

◆ operator==()

G4bool G4CompetitiveFission::operator== ( const G4CompetitiveFission & right) const
delete

◆ SetEmissionStrategy()

void G4CompetitiveFission::SetEmissionStrategy ( G4VEmissionProbability * aFissionProb)

Definition at line 383 of file G4CompetitiveFission.cc.

384{
385 if (myOwnFissionProbability) delete theFissionProbabilityPtr;
386 theFissionProbabilityPtr = aFissionProb;
387 myOwnFissionProbability = false;
388}

Referenced by G4INCLXXInterface::G4INCLXXInterface().

◆ SetFissionBarrier()

void G4CompetitiveFission::SetFissionBarrier ( G4VFissionBarrier * aBarrier)

Definition at line 375 of file G4CompetitiveFission.cc.

376{
377 if (myOwnFissionBarrier) delete theFissionBarrierPtr;
378 theFissionBarrierPtr = aBarrier;
379 myOwnFissionBarrier = false;
380}

◆ SetLevelDensityParameter()

void G4CompetitiveFission::SetLevelDensityParameter ( G4VLevelDensityParameter * aLevelDensity)

Definition at line 391 of file G4CompetitiveFission.cc.

392{
393 if (myOwnLevelDensity) delete theLevelDensityPtr;
394 theLevelDensityPtr = aLevelDensity;
395 myOwnLevelDensity = false;
396}

Referenced by G4INCLXXInterface::G4INCLXXInterface().


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