105 _Kappa = (1.0+elm_coupling*(std::pow(FragMult,1./3.)-1)/
133 std::vector<G4int> ANumbers(A);
137 std::vector<G4int> FragmentsA;
140 for (i = 0; i <
A; i++)
142 for (
G4int j = 0; j < ANumbers[i]; j++) FragmentsA.push_back(i+1);
147 for (
G4int j = 0; j < Multiplicity; j++)
149 G4int FragmentsAMax = 0;
151 for (i = j; i < Multiplicity; i++)
153 if (FragmentsA[i] <= FragmentsAMax) {
continue; }
157 FragmentsAMax = FragmentsA[im];
163 FragmentsA[im] = FragmentsA[j];
164 FragmentsA[j] = FragmentsAMax;
178 std::vector<G4double> AcumMultiplicity;
179 AcumMultiplicity.reserve(A);
181 AcumMultiplicity.push_back((*(
_theClusters.begin()))->GetMeanMultiplicity());
182 for (std::vector<G4VStatMFMacroCluster*>::iterator it =
_theClusters.begin()+1;
185 AcumMultiplicity.push_back((*it)->GetMeanMultiplicity()+AcumMultiplicity.back());
194 for (i = 0; i <
A; i++) ANumbers[i] = 0;
197 for (i = 0; i <
A; i++) {
198 if (RandNumber < AcumMultiplicity[i]) {
204 ANumbers[ThisOne] = ANumbers[ThisOne]+1;
208 }
while (CheckA > 0);
217 std::vector<G4int> & FragmentsA)
221 std::vector<G4int> FragmentsZ;
227 G4int multiplicity = FragmentsA.size();
233 for (
G4int i = 0; i < multiplicity; i++)
241 FragmentsZ.push_back(1);
242 SumZ += FragmentsZ[i];
244 else FragmentsZ.push_back(0);
251 if (FragmentsA[i] > 1 && FragmentsA[i] < 5) { ZMean = 0.5*FragmentsA[i]; }
258 z =
static_cast<G4int>(RandZ+0.5);
259 }
while (z < 0 || z > A);
260 FragmentsZ.push_back(z);
266 while (std::abs(DeltaZ) > 1);
272 while (FragmentsZ[idx] < 1) { ++idx; }
274 FragmentsZ[idx] += DeltaZ;
277 for (
G4int i = multiplicity-1; i >= 0; i--)
static G4double GetGamma0()
static G4Pow * GetInstance()
ThreeVector shoot(const G4int Ap, const G4int Af)
static G4double GetKappaCoulomb()
void CalculateTemperature(const G4Fragment &theFragment)
G4StatMFChannel * ChooseZ(G4int &Z, std::vector< G4int > &FragmentsA)
G4double _ChemPotentialNu
G4StatMFChannel * ChooseAandZ(const G4Fragment &theFragment)
G4double GetEntropy(void) const
void CreateFragment(G4int A, G4int Z)
G4double GetChemicalPotentialMu(void) const
G4double Z13(G4int Z) const
G4double CalcTemperature(void)
G4double GetMeanMultiplicity(void) const
G4double ChooseA(G4int A, std::vector< G4int > &ANumbers)
G4double __MeanMultiplicity
G4double GetChemicalPotentialNu(void) const
static const G4double A[nN]
~G4StatMFMacroCanonical()
void Initialize(const G4Fragment &theFragment)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double __MeanTemperature
G4double Z23(G4int Z) const
std::vector< G4VStatMFMacroCluster * > _theClusters
G4double __FreeInternalE0
static G4double GetBeta0()
G4double _ChemPotentialMu
G4double GetExcitationEnergy() const