40 throw G4HadronicException(__FILE__, __LINE__,
"G4StatMFMicroManager::copy_constructor meant to not be accessable");
48 throw G4HadronicException(__FILE__, __LINE__,
"G4StatMFMicroManager::operator= meant to not be accessable");
72 Initialize(theFragment,multiplicity,FreeIntE,SCompNuc);
79 if (!_Partition.empty())
81 std::for_each(_Partition.begin(),_Partition.end(),
90 void G4StatMFMicroManager::Initialize(
const G4Fragment & theFragment,
const G4int im,
104 _MeanMultiplicity = 0.0;
107 _MeanTemperature = 0.0;
115 G4int FragmentAtomicNumbers[4];
121 FragmentAtomicNumbers[im-1] =
static_cast<G4int>(A);
122 for (i = 0; i < (im - 1); i++) FragmentAtomicNumbers[i] = 0;
127 while (MakePartition(im,FragmentAtomicNumbers)) {
131 static_cast<G4int>(Z));
132 G4double PartitionProbability = 0.0;
136 _Partition.push_back(aPartition);
138 _WW += PartitionProbability;
139 _MeanMultiplicity += im*PartitionProbability;
140 _MeanTemperature += aPartition->
GetTemperature() * PartitionProbability;
141 if (PartitionProbability > 0.0)
142 _MeanEntropy += PartitionProbability * aPartition->
GetEntropy();
160 G4int tmp = ANumbers[l-1] + ANumbers[k-1];
163 if (ANumbers[l-1] > ANumbers[l] || ANumbers[k-2] > ANumbers[k-1]) {
165 ANumbers[k-1] = tmp - 1;
176 _Normalization = Norm;
178 _MeanMultiplicity /= Norm;
179 _MeanTemperature /= Norm;
180 _MeanEntropy /= Norm;
191 for (std::vector<G4StatMFMicroPartition*>::iterator i = _Partition.begin();
192 i != _Partition.end(); ++i)
194 AccumWeight += (*i)->GetProbability();
195 if (RandNumber < AccumWeight)
196 return (*i)->ChooseZ(A0,Z0,MeanT);
200 "G4StatMFMicroCanonical::ChooseChannel: Couldn't find a channel.");