129 std::vector<G4int> ANumbers(A);
133 std::vector<G4int> FragmentsA;
136 for (i = 0; i <
A; i++)
138 for (
G4int j = 0; j < ANumbers[i]; j++) FragmentsA.push_back(i+1);
143 for (
G4int j = 0; j < Multiplicity; j++)
145 G4int FragmentsAMax = 0;
147 for (i = j; i < Multiplicity; i++)
149 if (FragmentsA[i] <= FragmentsAMax) {
continue; }
153 FragmentsAMax = FragmentsA[im];
158 FragmentsA[im] = FragmentsA[j];
159 FragmentsA[j] = FragmentsAMax;
171 std::vector<G4double> AcumMultiplicity;
172 AcumMultiplicity.reserve(A);
174 AcumMultiplicity.push_back((*(
_theClusters.begin()))->GetMeanMultiplicity());
175 for (std::vector<G4VStatMFMacroCluster*>::iterator it =
_theClusters.begin()+1;
178 AcumMultiplicity.push_back((*it)->GetMeanMultiplicity()+AcumMultiplicity.back());
187 for (i = 0; i <
A; i++) ANumbers[i] = 0;
190 for (i = 0; i <
A; i++) {
191 if (RandNumber < AcumMultiplicity[i]) {
197 ANumbers[ThisOne] = ANumbers[ThisOne]+1;
202 }
while (CheckA > 0);
211 std::vector<G4int> & FragmentsA)
215 std::vector<G4int> FragmentsZ;
219 G4int multiplicity = FragmentsA.size();
224 for (
G4int i = 0; i < multiplicity; i++)
232 FragmentsZ.push_back(1);
233 SumZ += FragmentsZ[i];
235 else FragmentsZ.push_back(0);
241 + 2*CP*g4calc->
Z23(FragmentsA[i]);
243 if (FragmentsA[i] > 1 && FragmentsA[i] < 5) { ZMean = 0.5*FragmentsA[i]; }
255 }
while (z < 0 || z > A);
256 FragmentsZ.push_back(z);
262 }
while (std::abs(DeltaZ) > 1);
268 while (FragmentsZ[idx] < 1) { ++idx; }
270 FragmentsZ[idx] += DeltaZ;
273 for (
G4int i = multiplicity-1; i >= 0; i--)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double Z13(G4int Z) const
G4double A13(G4double A) const
static constexpr double MeV
G4double CalcTemperature(void)
G4double GetEntropy(void) const
static G4double GetCoulomb()
G4double __MeanTemperature
std::vector< G4VStatMFMacroCluster * > _theClusters
G4double GetMeanMultiplicity(void) const
G4double GetChemicalPotentialNu(void) const
void CreateFragment(G4int A, G4int Z)
G4double _ChemPotentialNu
static G4Pow * GetInstance()
static constexpr double elm_coupling
void Initialize(const G4Fragment &theFragment)
double A(double temperature)
G4double _ChemPotentialMu
ThreeVector shoot(const G4int Ap, const G4int Af)
G4StatMFChannel * ChooseZ(G4int &Z, std::vector< G4int > &FragmentsA)
void CalculateTemperature(const G4Fragment &theFragment)
G4double ChooseA(G4int A, std::vector< G4int > &ANumbers)
G4double __FreeInternalE0
G4double GetChemicalPotentialMu(void) const
static G4double GetBeta0()
G4double __MeanMultiplicity
G4double GetExcitationEnergy() const
G4double Z23(G4int Z) const
static G4double GetGamma0()
~G4StatMFMacroCanonical()
G4StatMFChannel * ChooseAandZ(const G4Fragment &theFragment)