39 constexpr G4int fMaxMultiplicity = 4;
40 constexpr G4double t1 = 1*CLHEP::MeV;
41 constexpr G4double t2 = 50*CLHEP::MeV;
48 fSolver->SetIntervalLimits(t1, t2);
49 fPartitionManagerVector.reserve(fMaxMultiplicity);
57 if (!fPartitionManagerVector.empty()) {
58 for (
auto const & p : fPartitionManagerVector) {
delete p; }
64 fPartitionManagerVector.clear();
97 G4double SCompoundNucleus = CalcEntropyOfCompoundNucleus(TConf);
100 fWCompoundNucleus = 1.0;
106 for (
G4int im = 2; im <= fMaxMultiplicity; ++im) {
108 fPartitionManagerVector.push_back(ptr);
109 W += ptr->GetProbability();
113 for (
auto & ptr : fPartitionManagerVector) {
120 fWCompoundNucleus /=
W;
131 G4double sum = VolumeTerm + fSymmetryTerm + SurfaceTerm + fCoulombTerm;
139G4double G4StatMFMicroCanonical::CalcEntropyOfCompoundNucleus(
G4double& TConf)
142 G4double T = std::max(std::min(std::max(TConf,std::sqrt(fExEnergy/(A*0.125))), t2), t1);\
143 fSolver->FindRoot(T);
165 G4double AccumWeight = fWCompoundNucleus;
166 for (
auto & ptr : fPartitionManagerVector) {
167 AccumWeight += ptr->GetProbability();
168 if (rand <= AccumWeight) {
G4double S(G4double temp)
G4double GetExcitationEnergy() const
static G4Pow * GetInstance()
void CreateFragment(G4int A, G4int Z)
void Initialise(const G4Fragment &theFragment) override
G4StatMFChannel * ChooseAandZ(const G4Fragment &theFragment) override
~G4StatMFMicroCanonical() override
static G4double DBetaDT(G4double T)
static G4double GetBeta0()
static G4double GetGamma0()
static G4double Beta(G4double T)
static G4double GetEpsilon0()
G4double pMeanMultiplicity
G4double pMeanTemperature