60 for(
auto & ptr :
list_p[i]) {
delete ptr; ptr =
nullptr; }
61 for(
auto & ptr :
list_c[i]) {
delete ptr; ptr =
nullptr; }
63 for(
auto & ptr :
fragment_pool) {
delete ptr; ptr =
nullptr; }
73 for(
size_t j=0; j<(
list_c[
A]).size(); ++j) {
75 if(frag->
GetZ() !=
Z) {
continue; }
86 if(de >= 0.0 && de <= demax) {
99 for(
auto const& ptr :
list_f[
A]) {
100 if(ptr->GetZ() ==
Z) {
return true; }
109 if(fr->GetZ() ==
Z && fr->GetA() ==
A &&
110 std::abs(exc - fr->GetExcitationEnergy()) <
tolerance)
120 for(
size_t j=0; j<(
list_f[
A]).size(); ++j) {
122 if(frag->
GetZ() ==
Z) {
124 (
list_c[
A])[j]->GetNumberOfChannels() > 0) {
return true; }
134 for(
auto const& ptr :
list_p[
A]) {
135 if(f1 == ptr->GetFragment1() && f2 == ptr->GetFragment2()) {
169 for(
size_t i=0; i<=
nn; ++i) {
177 if(exc >=
elimf) {
continue; }
188 const size_t lfmax[
maxA] = {
189 0, 2, 1, 2, 1, 2, 8, 19, 28, 56, 70, 104, 74, 109, 143, 212, 160};
194 const size_t lfch[
maxA] = {
195 0, 0, 0, 0, 0, 1, 4, 8, 6, 13, 27, 40, 29, 21, 31, 32, 30};
199 G4double exc = f->GetExcitationEnergy();
209 for(
G4int i=0; i<nfrag; ++i) {
214 for(
G4int j=0; j<nfrag; ++j) {
218 if(A2 < A1 || (A2 == A1 && Z2 <
Z1)) {
continue; }
242 if(exc >=
elim) {
continue; }
245 for(
G4int k=0; k<kmax; ++k) {
247 if(
Z == f3->
GetZ() &&
253 (
list_c[
A])[k]->AddChannel(fpair);
260 for(
size_t j=0; j<
list_c[
A].size(); ++j) {
266 const std::vector<const G4FermiPair*>& pairs = ch->
GetChannels();
268 for(
size_t i=0; i<nch; ++i) {
272 pairs[i]->GetFragment1(),
273 pairs[i]->GetFragment2());
280 for(
size_t i=0; i<nch-1; ++i) { prob[i] *= ptot; }
292 G4cout <<
" Z= " << f->
GetZ() <<
" A= " << std::setw(2) << f->
GetA()
295 <<
" 2s= " << f->
GetSpin() <<
" IsStable: "
304 G4cout <<
"----------------------------------------------------------------"
306 G4cout <<
"##### List of Fragments in the Fermi Fragment Pool #####"
309 G4cout <<
" For stable " << nfrag <<
" Elim(MeV) = "
311 for(
G4int i=0; i<nfrag; ++i) {
317 G4cout <<
"----------------------------------------------------------------"
319 G4cout <<
"### G4FermiFragmentPoolVI: fragments sorted by A" <<
G4endl;
327 for(
size_t j=0; j<
list_f[
A].size(); ++j) {
331 size_t nch = (
list_c[
A])[j]->GetNumberOfChannels();
333 G4cout <<
" ("<<a1<<
","<<z1<<
"); Eex(MeV)= "
336 <<
"; Nchannels= " << nch
340 for(
size_t k=0; k<nch; ++k) {
348 <<
") prob= " << ((
list_c[
A])[j]->GetProbabilities())[k]
362 for (
size_t j=0; j<
maxA; ++j) {
G4cout << ama[j] <<
", "; }
369 G4cout <<
"----------------------------------------------------------------"
376 for(
size_t j=0; j<
list_p[
A].size(); ++j) {
383 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
") % Eex(MeV)= "
384 << std::setw(8)<< (
list_p[
A])[j]->GetExcitationEnergy()
390 G4cout <<
"----------------------------------------------------------------"
static const G4double e1[44]
static const G4double e2[44]
static constexpr double GeV
G4GLOB_DLL std::ostream G4cout
G4double GetMaxLifeTime() const
G4double GetFBUEnergyLimit() const
G4double GetMinExcitation() const
size_t GetNumberOfChannels() const
const std::vector< const G4FermiPair * > & GetChannels() const
std::vector< G4double > & GetProbabilities()
G4double ComputeProbability(G4int Z, G4int A, G4int spin, G4double TotalE, const G4FermiFragment *f1, const G4FermiFragment *f2) const
G4double GetExcitationEnergy(void) const
G4double GetCoulombBarrier(G4int Ares, G4int Zres, G4double Eex) const
G4int GetSpin(void) const
G4double GetFragmentMass(void) const
G4double GetTotalEnergy(void) const
std::vector< const G4FermiFragment * > list_f[maxA]
std::vector< G4FermiChannels * > list_c[maxA]
std::vector< const G4FermiFragment * > fragment_pool
G4FermiDecayProbability theDecay
~G4FermiFragmentsPoolVI()
G4bool IsPhysical(G4int Z, G4int A) const
G4bool IsInPhysPairs(const G4FermiFragment *f1, const G4FermiFragment *f2) const
G4bool HasChannels(G4int Z, G4int A, G4double exc) const
const G4FermiChannels * ClosestChannels(G4int Z, G4int A, G4double mass) const
std::vector< const G4FermiPair * > list_p[maxA]
void DumpFragment(const G4FermiFragment *) const
G4bool IsInThePool(G4int Z, G4int A, G4double exc) const
const G4FermiFragment * GetFragment2() const
const G4FermiFragment * GetFragment1() const
G4double LifeTime(size_t i) const
G4int SpinTwo(size_t i) const
size_t NumberOfTransitions() const
G4double LevelEnergy(size_t i) const
G4float MaxLevelEnergy(G4int Z, G4int A) const
G4DeexPrecoParameters * GetParameters()
G4int GetMinA(G4int Z) const
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
static G4NuclearLevelData * GetInstance()
G4int GetMaxA(G4int Z) const
static G4double GetNuclearMass(const G4double A, const G4double Z)
static constexpr double MeV
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
static const G4double Z1[5]