77 for(
size_t i=0; i<17; ++i) {
79 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list1[i])[j]; }}
81 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list2[i])[j]; }}
83 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list3[i])[j]; }}
85 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list4[i])[j]; }}
88 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete listextra[j]; }}
96 if (2 == Z && 5 == A) { res =
false; }
97 else if(3 == Z && 5 == A) { res =
false; }
98 else if(4 == Z && 8 == A) { res =
false; }
99 else if(5 == Z && 9 == A) { res =
false; }
242 for(
G4int i=0; i<nfrag; ++i) {
243 std::vector<const G4VFermiFragment*> newvec;
250 G4cout <<
"### G4FermiFragmentPool: " << nfrag
251 <<
" fragments" <<
G4endl;
253 G4cout <<
" A= " <<
A <<
" : Z= ";
254 for(
size_t j=0; j<
list1[
A].size(); ++j) {
264 for(
G4int i=0; i<nfrag; ++i) {
267 for(
G4int j=0; j<nfrag; ++j) {
274 std::vector<const G4VFermiFragment*> newvec;
288 G4cout <<
"### Pairs of fragments: " << counter <<
G4endl;
291 for(
size_t j=0; j<
list2[
A].size(); ++j) {
292 std::vector<const G4VFermiFragment*> vector = (
list2[
A])[j]->GetFragmentList();
294 G4int z1=vector[0]->GetZ();
296 G4int z2=vector[1]->GetZ();
297 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
") % ";
300 G4cout<<
"-------------------------------------------------------------------------"
309 size_t nz =
list2[A1].size();
310 for(
size_t idx=0; idx<nz; ++idx) {
318 for(
G4int j=0; j<nfrag; ++j) {
323 if(Z <
maxZ && A < maxA) {
326 std::vector<const G4VFermiFragment*> newvec;
327 newvec.push_back(vec2[0]);
328 newvec.push_back(vec2[1]);
332 list3[
A].push_back(conf3);
342 G4cout <<
"### Triples of fragments: " << counter <<
G4endl;
345 for(
size_t j=0; j<
list3[
A].size(); ++j) {
346 std::vector<const G4VFermiFragment*> vector = (
list3[
A])[j]->GetFragmentList();
348 G4int z1=vector[0]->GetZ();
350 G4int z2=vector[1]->GetZ();
352 G4int z3=vector[2]->GetZ();
353 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
")("<<a3<<
","<<z3<<
") % ";
356 G4cout<<
"-------------------------------------------------------------------------"
365 size_t nz =
list3[A1].size();
366 for(
size_t idx=0; idx<nz; ++idx) {
376 for(
G4int j=0; j<nfrag; ++j) {
381 if(Z <
maxZ && A < maxA) {
384 std::vector<const G4VFermiFragment*> newvec;
385 newvec.push_back(vec3[0]);
386 newvec.push_back(vec3[1]);
387 newvec.push_back(vec3[2]);
391 list4[
A].push_back(conf4);
401 size_t nz1 =
list2[A1].size();
402 for(
size_t id1=0; id1<nz1; ++id1) {
411 size_t nz2 =
list2[A2].size();
412 for(
size_t id2=0; id2<nz2; ++id2) {
422 if(Z <
maxZ && A < maxA) {
427 std::vector<const G4VFermiFragment*> newvec;
428 newvec.push_back(vec1[0]);
429 newvec.push_back(vec1[1]);
430 newvec.push_back(vec2[0]);
431 newvec.push_back(vec2[1]);
434 list4[
A].push_back(conf4);
446 G4cout <<
"### Quartets of fragments: " << counter <<
G4endl;
449 for(
size_t j=0; j<
list4[
A].size(); ++j) {
450 std::vector<const G4VFermiFragment*> vector = (
list4[
A])[j]->GetFragmentList();
452 G4int z1=vector[0]->GetZ();
454 G4int z2=vector[1]->GetZ();
456 G4int z3=vector[2]->GetZ();
458 G4int z4=vector[3]->GetZ();
460 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
")("<<a3<<
","<<z3<<
")("
461 <<a4<<
","<<z4<<
") % ";
464 G4cout<<
"-------------------------------------------------------------------------"
471 const std::vector<G4FermiConfiguration*>*
477 std::vector<G4FermiConfiguration*>* v =
new std::vector<G4FermiConfiguration*>;
478 if(Z >=
maxZ || A >=
maxA) {
return v; }
484 size_t nz =
list2[
A].size();
486 for(
size_t j=0; j<nz; ++j) {
499 for(
size_t j=0; j<nz; ++j) {
512 for(
size_t j=0; j<nz; ++j) {
526 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
527 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
528 size_t size_vector_conf = v->size();
529 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
530 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
531 size_t size_vector_fragments = v_frag.size();
532 G4cout<<size_vector_fragments<<
"-body configuration "<<jc+1<<
": ";
533 for(
size_t jf=0;jf<size_vector_fragments;++jf){
534 G4int af= v_frag[jf]->GetA();
535 G4int zf= v_frag[jf]->GetZ();
536 G4double ex=v_frag[jf]->GetExcitationEnergy();
537 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
540 G4cout<<
"-----------------------------------------------------"<<
G4endl;
550 for(
size_t j=0; j<nz; ++j) {
561 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
562 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
563 size_t size_vector_conf=v->size();
564 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
565 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
566 size_t size_vector_fragments=v_frag.size();
567 G4cout<<
"1 Fragment configuration "<<jc+1<<
": ";
568 for(
size_t jf=0;jf<size_vector_fragments;++jf){
569 G4int af= v_frag[jf]->GetA();
570 G4int zf= v_frag[jf]->GetZ();
571 G4double ex=v_frag[jf]->GetExcitationEnergy();
572 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
575 G4cout<<
"-----------------------------------------------------"<<
G4endl;
590 for(
size_t j=0; j<nz; ++j) {
592 if(Z == conf->
GetZ() && A == conf->
GetA() &&
598 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
599 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
600 size_t size_vector_conf=v->size();
601 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
602 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
603 size_t size_vector_fragments=v_frag.size();
604 G4cout<<
"Found exotic configuration -> configuration "<<jc+1<<
": ";
605 for(
size_t jf=0;jf<size_vector_fragments;++jf){
606 G4int af= v_frag[jf]->GetA();
607 G4int zf= v_frag[jf]->GetZ();
608 G4double ex=v_frag[jf]->GetExcitationEnergy();
609 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
612 G4cout<<
"-----------------------------------------------------"<<
G4endl;
623 if(mass > Z*proton_mass_c2 + (A-Z)*neutron_mass_c2) {
624 std::vector<const G4VFermiFragment*> newvec;
626 for(
G4int i=0; i<
A; ++i) {
627 if(i == Z) { idx = 0; }
635 G4cout<<
"Total number of configurations = "<<nconf<<
G4endl;
637 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
638 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
639 size_t size_vector_conf=v->size();
640 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
641 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
642 size_t size_vector_fragments=v_frag.size();
643 G4cout<<
"New exotic configuration -> configuration "<<jc+1<<
": ";
644 for(
size_t jf=0;jf<size_vector_fragments;++jf){
645 G4int af= v_frag[jf]->GetA();
646 G4int zf= v_frag[jf]->GetZ();
647 G4double ex=v_frag[jf]->GetExcitationEnergy();
648 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
651 G4cout<<
"-----------------------------------------------------"<<
G4endl;
662 G4cout<<
"Total number of configurations = "<<nconf<<
G4endl;
664 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
665 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
666 size_t size_vector_conf=v->size();
667 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
668 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
669 size_t size_vector_fragments=v_frag.size();
670 G4cout<<
"Only evaporation is possible -> configuration "<<jc+1<<
": ";
671 for(
size_t jf=0;jf<size_vector_fragments;++jf){
672 G4int af= v_frag[jf]->GetA();
673 G4int zf= v_frag[jf]->GetZ();
674 G4double ex=v_frag[jf]->GetExcitationEnergy();
675 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
678 G4cout<<
"-----------------------------------------------------"<<
G4endl;
686 G4cout <<
"G4FermiFragmentsPool::GetConfigurationList: WARNING: not "
687 <<
"able decay fragment Z= " << Z <<
" A= " << A
694 std::vector<const G4VFermiFragment*>& newconf)
const
696 size_t nn = newconf.size();
698 for(
size_t i=0; i<
nn; ++i) { mass += newconf[i]->GetTotalEnergy(); }
701 size_t nz =
list2[
A].size();
703 for(
size_t j=0; j<nz; ++j) {
705 if(Z == conf->
GetZ() && A == conf->
GetA() &&
706 std::fabs(mass - conf->
GetMass()) <
keV) {
return true; }
713 size_t nz =
list3[
A].size();
715 for(
size_t j=0; j<nz; ++j) {
717 if(Z == conf->
GetZ() && A == conf->
GetA() &&
718 std::fabs(mass - conf->
GetMass()) <
keV) {
return true; }
725 size_t nz =
list4[
A].size();
727 for(
size_t j=0; j<nz; ++j) {
729 if(Z == conf->
GetZ() && A == conf->
GetA() &&
730 std::fabs(mass - conf->
GetMass()) <
keV) {
return true; }
742 if(Z >=
maxZ || A >=
maxA) {
return f; }
743 size_t nz =
list1[
A].size();
745 for(
size_t j=0; j<nz; ++j) {
std::vector< G4FermiConfiguration * > list4[17]
static G4double GetNuclearMass(const G4double A, const G4double Z)
std::vector< G4FermiConfiguration * > list1[17]
const std::vector< const G4VFermiFragment * > & GetFragmentList()
const G4VFermiFragment * GetFragment(G4int Z, G4int A) const
G4bool IsAvailable(G4int Z, G4int A) const
G4GLOB_DLL std::ostream G4cout
static G4ThreadLocal G4FermiFragmentsPool * theInstance
std::vector< G4FermiConfiguration * > listextra
std::vector< const G4VFermiFragment * > fragment_pool
static const G4double A[nN]
std::vector< G4FermiConfiguration * > list3[17]
const std::vector< G4FermiConfiguration * > * GetConfigurationList(G4int Z, G4int A, G4double mass)
G4bool IsExist(G4int Z, G4int A, std::vector< const G4VFermiFragment * > &) const
static G4FermiFragmentsPool * Instance()
std::vector< G4FermiConfiguration * > list2[17]