Geant4 10.7.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
 
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
 
- Public Member Functions inherited from G4VEvaporationChannel
 G4VEvaporationChannel (const G4String &aName="")
 
virtual ~G4VEvaporationChannel ()
 
virtual G4double GetEmissionProbability (G4Fragment *theNucleus)=0
 
virtual void Initialise ()
 
virtual G4double GetLifeTime (G4Fragment *theNucleus)
 
virtual G4FragmentEmittedFragment (G4Fragment *theNucleus)
 
virtual G4bool BreakUpChain (G4FragmentVector *theResult, G4Fragment *theNucleus)
 
G4FragmentVectorBreakUpFragment (G4Fragment *theNucleus)
 
virtual void Dump () const
 
virtual void SetICM (G4bool)
 
virtual void RDMForced (G4bool)
 
void SetOPTxs (G4int opt)
 
void UseSICB (G4bool use)
 

Additional Inherited Members

- Protected Attributes inherited from G4VEvaporationChannel
G4int OPTxs
 
G4bool useSICB
 

Detailed Description

Definition at line 46 of file G4CompetitiveFission.hh.

Constructor & Destructor Documentation

◆ G4CompetitiveFission()

G4CompetitiveFission::G4CompetitiveFission ( )
explicit

Definition at line 49 of file G4CompetitiveFission.cc.

49 : G4VEvaporationChannel("fission")
50{
51 theFissionBarrierPtr = new G4FissionBarrier;
52 myOwnFissionBarrier = true;
53
54 theFissionProbabilityPtr = new G4FissionProbability;
55 myOwnFissionProbability = true;
56
57 theLevelDensityPtr = new G4FissionLevelDensityParameter;
58 myOwnLevelDensity = true;
59
60 maxKineticEnergy = fissionBarrier = fissionProbability = 0.0;
62}
G4PairingCorrection * GetPairingCorrection()
static G4NuclearLevelData * GetInstance()

◆ ~G4CompetitiveFission()

G4CompetitiveFission::~G4CompetitiveFission ( )
override

Definition at line 64 of file G4CompetitiveFission.cc.

65{
66 if (myOwnFissionBarrier) delete theFissionBarrierPtr;
67 if (myOwnFissionProbability) delete theFissionProbabilityPtr;
68 if (myOwnLevelDensity) delete theLevelDensityPtr;
69}

Member Function Documentation

◆ EmittedFragment()

G4Fragment * G4CompetitiveFission::EmittedFragment ( G4Fragment theNucleus)
overridevirtual

Reimplemented from G4VEvaporationChannel.

Definition at line 92 of file G4CompetitiveFission.cc.

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

◆ GetEmissionProbability()

G4double G4CompetitiveFission::GetEmissionProbability ( G4Fragment theNucleus)
overridevirtual

Implements G4VEvaporationChannel.

Definition at line 71 of file G4CompetitiveFission.cc.

72{
73 G4int Z = fragment->GetZ_asInt();
74 G4int A = fragment->GetA_asInt();
75 fissionProbability = 0.0;
76 // Saddle point excitation energy ---> A = 65
77 if (A >= 65 && Z > 16) {
78 G4double exEnergy = fragment->GetExcitationEnergy() -
79 pairingCorrection->GetFissionPairingCorrection(A, Z);
80
81 if (exEnergy > 0.0) {
82 fissionBarrier = theFissionBarrierPtr->FissionBarrier(A, Z, exEnergy);
83 maxKineticEnergy = exEnergy - fissionBarrier;
84 fissionProbability =
85 theFissionProbabilityPtr->EmissionProbability(*fragment,
86 maxKineticEnergy);
87 }
88 }
89 return fissionProbability;
90}
virtual G4double EmissionProbability(const G4Fragment &fragment, G4double anEnergy)
virtual G4double FissionBarrier(G4int A, G4int Z, G4double U) const =0

◆ GetFissionBarrier()

G4double G4CompetitiveFission::GetFissionBarrier ( void  ) const
inline

Definition at line 122 of file G4CompetitiveFission.hh.

123{
124 return fissionBarrier;
125}

◆ GetLevelDensityParameter()

G4double G4CompetitiveFission::GetLevelDensityParameter ( void  ) const
inline

◆ GetMaximalKineticEnergy()

G4double G4CompetitiveFission::GetMaximalKineticEnergy ( void  ) const
inline

Definition at line 127 of file G4CompetitiveFission.hh.

128{
129 return maxKineticEnergy;
130}

◆ SetEmissionStrategy()

void G4CompetitiveFission::SetEmissionStrategy ( G4VEmissionProbability aFissionProb)

Definition at line 376 of file G4CompetitiveFission.cc.

377{
378 if (myOwnFissionProbability) delete theFissionProbabilityPtr;
379 theFissionProbabilityPtr = aFissionProb;
380 myOwnFissionProbability = false;
381}

Referenced by G4INCLXXInterface::G4INCLXXInterface().

◆ SetFissionBarrier()

void G4CompetitiveFission::SetFissionBarrier ( G4VFissionBarrier aBarrier)

Definition at line 368 of file G4CompetitiveFission.cc.

369{
370 if (myOwnFissionBarrier) delete theFissionBarrierPtr;
371 theFissionBarrierPtr = aBarrier;
372 myOwnFissionBarrier = false;
373}

◆ SetLevelDensityParameter()

void G4CompetitiveFission::SetLevelDensityParameter ( G4VLevelDensityParameter aLevelDensity)

Definition at line 384 of file G4CompetitiveFission.cc.

385{
386 if (myOwnLevelDensity) delete theLevelDensityPtr;
387 theLevelDensityPtr = aLevelDensity;
388 myOwnLevelDensity = false;
389}

Referenced by G4INCLXXInterface::G4INCLXXInterface().


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