62 for(
size_t j=0; j<
nn; ++j) {
delete (
list_p[i])[j]; }
64 for(
size_t j=0; j<
nn; ++j) {
delete (
list_c[i])[j]; }
66 for(
size_t j=0; j<
nn; ++j) {
delete (
list_d[i])[j]; }
68 for(
size_t j=0; j<
nn; ++j) {
delete (
list_u[i])[j]; }
81 for(
size_t i=0; i<
nn; ++i) {
82 if(Z == (
list_f[A])[i]->GetZ()) {
84 if(etot <= (
list_f[A])[i]->GetFragmentMass() +
elim) {
return true; }
87 if(isInList) {
return false; }
89 for(
size_t i=0; i<
nn; ++i) {
90 if(Z == (
list_g[A])[i]->GetZ() &&
91 etot <= (
list_g[A])[i]->GetFragmentMass() +
elim) {
return true; }
104 for(
size_t j=0; j<
nn; ++j) {
106 if(frag->
GetZ() !=
Z) {
continue; }
124 for(
size_t j=0; j<
nn; ++j) {
126 if(frag->
GetZ() !=
Z) {
continue; }
129 if(std::abs(de) <=
tolerance || de > 0.0) {
144 if((
list_f[A])[i]->GetZ() == Z) {
157 for(
G4int i=0; i<nfrag; ++i) {
159 if(fr->
GetZ() == Z && fr->
GetA() == A &&
177 if(f1 == (
list_p[A])[i]->GetFragment1() &&
178 f2 == (
list_p[A])[i]->GetFragment2()) {
195 if(f1 == (
list_u[A])[i]->GetFragment1() &&
196 f2 == (
list_u[A])[i]->GetFragment2()) {
206 static const G4int nmin = 8;
231 for(
size_t i=0; i<=
nn; ++i) {
234 if(exc >=
elimf) {
continue; }
239 G4bool stable = (ltime < 0.0f || ltime >
timelim) ?
true :
false;
249 static const size_t lfmax[
maxA] = {
250 0, 2, 1, 2, 1, 2, 6, 14, 16, 22, 45, 53, 37, 44, 33, 58, 63};
255 static const size_t lfch[
maxA] = {
256 0, 0, 0, 0, 0, 1, 2, 5, 6, 3, 12, 8, 4, 10, 1, 8, 6};
258 for(
G4int i=0; i<nfrag; ++i) {
267 static const size_t lfun[
maxA] = {
268 0, 0, 2, 2, 4, 4, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 6};
274 static const size_t luch[
maxA] = {
275 0, 0, 1, 1, 3, 3, 5, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8};
286 static const size_t pphm[
maxA] = {
287 0, 0, 2, 2, 4, 4, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 6};
288 static const size_t punm[
maxA] = {
289 0, 0, 2, 2, 8, 10, 22, 24, 24, 31, 35, 36, 44, 36, 44, 36, 36};
299 for(
G4int i=0; i<nfrag; ++i) {
304 for(
G4int j=0; j<nfrag; ++j) {
308 if(A2 < A1 || (A2 == A1 && Z2 < Z1)) {
continue; }
312 if(Z >= maxZ || A >= maxA ||
333 if(exc >=
elim) {
continue; }
336 for(
G4int k=0; k<kmax; ++k) {
338 if(Z == f3->
GetZ() &&
344 (
list_c[
A])[k]->AddChannel(fpair);
347 if(fpair) {
continue; }
350 for(
G4int k=0; k<kmax; ++k) {
351 if((
list_d[A])[k]->GetNumberOfChannels() >= nmin) {
continue; }
359 if(Z == f3->
GetZ() &&
365 (
list_d[
A])[k]->AddChannel(fpair);
379 for(
G4int i=0; i<nfrag; ++i) {
384 for(
G4int j=0; j<unphys; ++j) {
419 for(
G4int k=0; k<kmax; ++k) {
429 if(Z == f3->
GetZ() &&
430 (
list_d[
A])[k]->GetNumberOfChannels() < nmin &&
435 (
list_d[
A])[k]->AddChannel(fpair);
445 for(
size_t j=0; j<
list_c[
A].size(); ++j) {
451 const std::vector<const G4FermiPair*>& pairs = ch->
GetChannels();
453 for(
size_t i=0; i<nch; ++i) {
457 pairs[i]->GetFragment1(),
458 pairs[i]->GetFragment2());
465 for(
size_t i=0; i<nch-1; ++i) { prob[i] *= ptot; }
472 for(
size_t j=0; j<
list_d[
A].size(); ++j) {
478 const std::vector<const G4FermiPair*>& pairs = ch->
GetChannels();
480 for(
size_t i=0; i<nch; ++i) {
484 pairs[i]->GetFragment1(),
485 pairs[i]->GetFragment2());
492 for(
size_t i=0; i<nch-1; ++i) { prob[i] *= ptot; }
504 G4cout <<
" Z= " << f->
GetZ() <<
" A= " << std::setw(2) << f->
GetA()
515 G4cout <<
"----------------------------------------------------------------"
517 G4cout <<
"##### List of Fragments in the Fermi Fragment Pool #####"
520 G4cout <<
" For stable " << nfrag <<
" Elim(MeV) = "
522 for(
G4int i=0; i<nfrag; ++i) {
528 G4cout <<
"----------------------------------------------------------------"
530 G4cout <<
"### G4FermiFragmentPoolVI: fragments sorted by A" <<
G4endl;
538 for(
size_t j=0; j<
list_f[
A].size(); ++j) {
542 size_t nch = (
list_c[
A])[j]->GetNumberOfChannels();
544 G4cout <<
" ("<<a1<<
","<<z1<<
"); Eex(MeV)= "
547 <<
"; Nchannels= " << nch
551 for(
size_t k=0; k<nch; ++k) {
559 <<
") prob= " << ((
list_c[
A])[j]->GetProbabilities())[k]
573 for (
size_t j=0; j<
maxA; ++j) {
G4cout << ama[j] <<
", "; }
580 G4cout <<
"----------------------------------------------------------------"
584 <<
" unphysical fragments" <<
G4endl;
585 G4cout <<
" Number of unphysical fragments per A:" <<
G4endl;
589 G4cout <<
" Number of unphysical fragment pairs per A:" <<
G4endl;
593 prec =
G4cout.precision(6);
597 for(
size_t j=0; j<
list_g[
A].size(); ++j) {
601 size_t nch = (
list_d[
A])[j]->GetNumberOfChannels();
603 G4cout <<
"("<<a1<<
","<<z1<<
"); Eex(MeV)= "
605 <<
"; Nchannels= " << nch
609 for(
size_t k=0; k<nch; ++k) {
617 <<
") prob= " << ((
list_d[
A])[j]->GetProbabilities())[k]
626 G4cout <<
" Max number of unphysical channels per A:" <<
G4endl;
627 for (
size_t j=0; j<
maxA; ++j) {
G4cout << ama[j] <<
", "; }
629 G4cout <<
"----------------------------------------------------------------"
634 prec =
G4cout.precision(6);
637 for(
size_t j=0; j<
list_p[
A].size(); ++j) {
644 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
") % Eex(MeV)= "
645 << std::setw(8)<< (
list_p[
A])[j]->GetExcitationEnergy()
651 G4cout <<
"----------------------------------------------------------------"
655 G4cout <<
"### Pairs of stable+unstable fragments: " <<
G4endl;
657 prec =
G4cout.precision(6);
660 for(
size_t j=0; j<
list_u[
A].size(); ++j) {
667 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
") % Eex(MeV)= "
668 << std::setw(8)<< (
list_u[
A])[j]->GetExcitationEnergy()
674 G4cout <<
"----------------------------------------------------------------"
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double GetFragmentMass(void) const
std::vector< const G4FermiFragment * > funstable
~G4FermiFragmentsPoolVI()
G4float MaxLevelEnergy(G4int Z, G4int A) const
G4bool IsPhysical() const
G4DeexPrecoParameters * GetParameters()
G4int GetMinA(G4int Z) const
G4bool IsInPhysPairs(const G4FermiFragment *f1, const G4FermiFragment *f2) const
const G4FermiFragment * GetFragment1() const
static G4NuclearLevelData * GetInstance()
G4FermiDecayProbability theDecay
G4double ComputeProbability(G4int Z, G4int A, G4int spin, G4double TotalE, const G4FermiFragment *f1, const G4FermiFragment *f2) const
G4double GetMinExcitation() const
G4bool IsInUnphysPairs(const G4FermiFragment *f1, const G4FermiFragment *f2) const
static constexpr double neutron_mass_c2
static constexpr double proton_mass_c2
const std::vector< const G4FermiPair * > & GetChannels() const
std::vector< G4FermiChannels * > list_c[maxA]
void DumpFragment(const G4FermiFragment *) const
G4double GetMaxLifeTime() const
G4bool IsPhysical(G4int Z, G4int A) const
static constexpr double MeV
double A(double temperature)
G4double GetCoulombBarrier(G4int Ares, G4int Zres, G4double Eex) const
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4double LifeTime(size_t i) const
G4double GetTotalEnergy(void) const
G4int GetMaxA(G4int Z) const
std::vector< const G4FermiPair * > list_u[maxA]
size_t GetNumberOfChannels() const
std::vector< const G4FermiFragment * > list_f[maxA]
G4int SpinTwo(size_t i) const
G4int GetSpin(void) const
G4bool IsApplicable(G4int Z, G4int A, G4double etot) const
std::vector< G4FermiChannels * > list_d[maxA]
std::vector< const G4FermiFragment * > fragment_pool
size_t NumberOfTransitions() const
const G4FermiChannels * ClosestChannels(G4int Z, G4int A, G4double mass) const
G4GLOB_DLL std::ostream G4cout
G4double GetExcitationEnergy(void) const
std::vector< G4double > & GetProbabilities()
std::vector< const G4FermiPair * > list_p[maxA]
std::vector< const G4FermiFragment * > list_g[maxA]
G4double LevelEnergy(size_t i) const
static constexpr double GeV
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4bool IsInThePool(G4int Z, G4int A, G4double exc) const
const G4FermiFragment * GetFragment2() const