38 throw G4HadronicException(__FILE__, __LINE__,
"G4StatMFMicroManager::copy_constructor meant to not be accessable");
46 throw G4HadronicException(__FILE__, __LINE__,
"G4StatMFMicroManager::operator= meant to not be accessable");
69 Initialize(theFragment,multiplicity,FreeIntE,SCompNuc);
75 if (!_Partition.empty())
77 std::for_each(_Partition.begin(),_Partition.end(),
82 void G4StatMFMicroManager::Initialize(
const G4Fragment & theFragment,
G4int im,
96 _MeanMultiplicity = 0.0;
99 _MeanTemperature = 0.0;
107 G4int FragmentAtomicNumbers[4];
113 FragmentAtomicNumbers[im-1] =
A;
114 for (i = 0; i < (im - 1); i++) FragmentAtomicNumbers[i] = 0;
121 while (MakePartition(im,FragmentAtomicNumbers)) {
125 G4double PartitionProbability = 0.0;
129 _Partition.push_back(aPartition);
131 _WW += PartitionProbability;
132 _MeanMultiplicity += im*PartitionProbability;
133 _MeanTemperature += aPartition->
GetTemperature() * PartitionProbability;
134 if (PartitionProbability > 0.0)
135 _MeanEntropy += PartitionProbability * aPartition->
GetEntropy();
147 G4int tmp = ANumbers[l-1] + ANumbers[k-1];
150 if (ANumbers[l-1] > ANumbers[l] || ANumbers[k-2] > ANumbers[k-1]) {
152 ANumbers[k-1] = tmp - 1;
161 _Normalization = Norm;
163 _MeanMultiplicity /= Norm;
164 _MeanTemperature /= Norm;
165 _MeanEntropy /= Norm;
176 for (std::vector<G4StatMFMicroPartition*>::iterator i = _Partition.begin();
177 i != _Partition.end(); ++i)
179 AccumWeight += (*i)->GetProbability();
180 if (RandNumber < AccumWeight)
181 return (*i)->ChooseZ(A0,Z0,MeanT);
185 "G4StatMFMicroCanonical::ChooseChannel: Couldn't find a channel.");
void Normalize(G4double Norm)
G4StatMFChannel * ChooseChannel(G4int A0, G4int Z0, G4double MeanT)
double A(double temperature)
G4double GetEntropy(void)
G4bool operator==(const G4StatMFMicroManager &right) const
G4StatMFMicroManager(const G4Fragment &theFragment, G4int multiplicity, G4double FreeIntE, G4double SCompNuc)
G4double CalcPartitionProbability(G4double U, G4double FreeInternalE0, G4double SCompound)
G4double GetTemperature(void)
G4double GetExcitationEnergy() const
void SetPartitionFragment(G4int anA)
G4bool operator!=(const G4StatMFMicroManager &right) const