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

#include <G4StatMFMicroCanonical.hh>

Inheritance diagram for G4StatMFMicroCanonical:

Public Member Functions

 G4StatMFMicroCanonical ()
 ~G4StatMFMicroCanonical () override
void Initialise (const G4Fragment &theFragment) override
G4StatMFChannelChooseAandZ (const G4Fragment &theFragment) override
G4double Function (G4double T)
 G4StatMFMicroCanonical (const G4StatMFMicroCanonical &right)=delete
G4StatMFMicroCanonicaloperator= (const G4StatMFMicroCanonical &right)=delete
G4bool operator== (const G4StatMFMicroCanonical &right) const =delete
G4bool operator!= (const G4StatMFMicroCanonical &right) const =delete
Public Member Functions inherited from G4VStatMFEnsemble
 G4VStatMFEnsemble ()=default
virtual ~G4VStatMFEnsemble ()=default
G4double GetMeanMultiplicity () const
G4double GetMeanTemperature () const
 G4VStatMFEnsemble (const G4VStatMFEnsemble &right)=delete
G4VStatMFEnsembleoperator= (const G4VStatMFEnsemble &right)=delete
G4bool operator== (const G4VStatMFEnsemble &right) const =delete
G4bool operator!= (const G4VStatMFEnsemble &right) const =delete

Additional Inherited Members

Protected Attributes inherited from G4VStatMFEnsemble
G4double pFreeInternalE0 {0.0}
G4double pMeanTemperature {0.0}
G4double pMeanEntropy {0.0}
G4double pMeanMultiplicity {0.0}

Detailed Description

Definition at line 49 of file G4StatMFMicroCanonical.hh.

Constructor & Destructor Documentation

◆ G4StatMFMicroCanonical() [1/2]

G4StatMFMicroCanonical::G4StatMFMicroCanonical ( )

Definition at line 45 of file G4StatMFMicroCanonical.cc.

46{
47 fSolver = new G4FunctionSolver<G4StatMFMicroCanonical>(this, 100, 5.e-4);
48 fSolver->SetIntervalLimits(t1, t2);
49 fPartitionManagerVector.reserve(fMaxMultiplicity);
50 g4calc = G4Pow::GetInstance();
51}
static G4Pow * GetInstance()
Definition G4Pow.cc:41

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

◆ ~G4StatMFMicroCanonical()

G4StatMFMicroCanonical::~G4StatMFMicroCanonical ( )
override

Definition at line 54 of file G4StatMFMicroCanonical.cc.

55{
56 delete fSolver;
57 if (!fPartitionManagerVector.empty()) {
58 for (auto const & p : fPartitionManagerVector) { delete p; }
59 }
60}

◆ G4StatMFMicroCanonical() [2/2]

G4StatMFMicroCanonical::G4StatMFMicroCanonical ( const G4StatMFMicroCanonical & right)
delete

Member Function Documentation

◆ ChooseAandZ()

G4StatMFChannel * G4StatMFMicroCanonical::ChooseAandZ ( const G4Fragment & theFragment)
overridevirtual

Implements G4VStatMFEnsemble.

Definition at line 150 of file G4StatMFMicroCanonical.cc.

151{
152 // Choice of fragment atomic numbers and charges
153 // We choose a multiplicity (1,2,3,...) and then a channel
154 G4int AA = theFragment.GetA_asInt();
155 G4int ZZ = theFragment.GetZ_asInt();
156
157 if (G4UniformRand() < fWCompoundNucleus) {
158
159 G4StatMFChannel * aChannel = new G4StatMFChannel;
160 aChannel->CreateFragment(AA, ZZ);
161 return aChannel;
162
163 } else {
164 G4double rand = G4UniformRand();
165 G4double AccumWeight = fWCompoundNucleus;
166 for (auto & ptr : fPartitionManagerVector) {
167 AccumWeight += ptr->GetProbability();
168 if (rand <= AccumWeight) {
169 return ptr->ChooseChannel(A, Z, pMeanTemperature);
170 }
171 }
172 }
173 return nullptr;
174}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
#define G4UniformRand()
Definition Randomize.hh:52
G4int GetZ_asInt() const
G4int GetA_asInt() const
void CreateFragment(G4int A, G4int Z)

◆ Function()

G4double G4StatMFMicroCanonical::Function ( G4double T)
inline

Definition at line 63 of file G4StatMFMicroCanonical.hh.

64 { return (fExEnergy + pFreeInternalE0 - CalcFreeInternalEnergy(T)); }

◆ Initialise()

void G4StatMFMicroCanonical::Initialise ( const G4Fragment & theFragment)
overridevirtual

Implements G4VStatMFEnsemble.

Definition at line 62 of file G4StatMFMicroCanonical.cc.

63{
64 fPartitionManagerVector.clear();
65 // Excitation Energy
66 fExEnergy = theFragment.GetExcitationEnergy();
67
68 A = theFragment.GetA_asInt();
69 Z = theFragment.GetZ_asInt();
70 A13 = g4calc->Z13(A);
71
72 fInvLevelDensity = G4StatMFParameters::GetEpsilon0()*(1.0 + 3.0/G4double(A-1));
73
74 fSymmetryTerm = G4StatMFParameters::GetGamma0()*(A - 2*Z)*(A - 2*Z)/(G4double)A;
75
76 fCoulombTerm = elm_coupling*0.6*Z*Z/(G4StatMFParameters::Getr0()*A13);
77
78 // Configuration temperature
79 G4double TConf = std::sqrt(8.0*fExEnergy/(G4double)A);
80
81 // Free internal energy at Temperature T = 0 (SurfaceTerm at T = 0)
82 pFreeInternalE0 = -G4StatMFParameters::GetE0()*A + fSymmetryTerm
83 + G4StatMFParameters::GetBeta0()*A13*A13 + fCoulombTerm;
84
85 //G4cout << "Tconf=" << TConf << " freeE=" << pFreeInternalE0 << G4endl;
86
87 // Mean breakup multiplicity
89
90 // Mean channel temperature
91 pMeanTemperature = 0.0;
92
93 // Mean channel entropy
94 pMeanEntropy = 0.0;
95
96 // Calculate entropy of compound nucleus
97 G4double SCompoundNucleus = CalcEntropyOfCompoundNucleus(TConf);
98
99 // Statistical weight of compound nucleus
100 fWCompoundNucleus = 1.0;
101
102 // Statistical weight
103 G4double W = fWCompoundNucleus;
104 // Maximal fragment multiplicity allowed in direct simulation
105
106 for (G4int im = 2; im <= fMaxMultiplicity; ++im) {
107 auto ptr = new G4StatMFMicroManager(theFragment, im, pFreeInternalE0, SCompoundNucleus);
108 fPartitionManagerVector.push_back(ptr);
109 W += ptr->GetProbability();
110 }
111
112 // Normalization of statistical weights
113 for (auto & ptr : fPartitionManagerVector) {
114 ptr->Normalize(W);
115 pMeanMultiplicity += ptr->GetMeanMultiplicity();
116 pMeanTemperature += ptr->GetMeanTemperature();
117 pMeanEntropy += ptr->GetMeanEntropy();
118 }
119
120 fWCompoundNucleus /= W;
121
122 pMeanMultiplicity += fWCompoundNucleus;
123 pMeanTemperature += TConf * fWCompoundNucleus;
124 pMeanEntropy += SCompoundNucleus * fWCompoundNucleus;
125}
G4double GetExcitationEnergy() const
static G4double GetBeta0()
static G4double GetE0()
static G4double GetGamma0()
static G4double Getr0()
static G4double GetEpsilon0()
#define W
Definition crc32.c:85

◆ operator!=()

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

◆ operator=()

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

◆ operator==()

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

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