75 for(
size_t i=0; i<17; ++i) {
77 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list1[i])[j]; }}
79 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list2[i])[j]; }}
81 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list3[i])[j]; }}
83 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete (
list4[i])[j]; }}
86 if(0 < nn) {
for(
size_t j=0; j<
nn; ++j) {
delete listextra[j]; }}
220 for(
G4int i=0; i<nfrag; ++i) {
221 std::vector<const G4VFermiFragment*> newvec;
228 G4cout <<
"### G4FermiFragmentPool: " << nfrag
229 <<
" fragments" <<
G4endl;
231 G4cout <<
" A= " <<
A <<
" : Z= ";
232 for(
size_t j=0; j<
list1[
A].size(); ++j) {
242 for(
G4int i=0; i<nfrag; ++i) {
245 for(
G4int j=0; j<nfrag; ++j) {
252 std::vector<const G4VFermiFragment*> newvec;
266 G4cout <<
"### Pairs of fragments: " << counter <<
G4endl;
269 for(
size_t j=0; j<
list2[
A].size(); ++j) {
270 std::vector<const G4VFermiFragment*> vector = (
list2[
A])[j]->GetFragmentList();
272 G4int z1=vector[0]->GetZ();
274 G4int z2=vector[1]->GetZ();
275 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
") % ";
278 G4cout<<
"---------------------------------------------------------------------------------"
287 size_t nz =
list2[A1].size();
288 for(
size_t idx=0; idx<nz; ++idx) {
296 for(
G4int j=0; j<nfrag; ++j) {
301 if(Z <
maxZ && A < maxA) {
304 std::vector<const G4VFermiFragment*> newvec;
305 newvec.push_back(vec2[0]);
306 newvec.push_back(vec2[1]);
310 list3[
A].push_back(conf3);
320 G4cout <<
"### Triples of fragments: " << counter <<
G4endl;
323 for(
size_t j=0; j<
list3[
A].size(); ++j) {
324 std::vector<const G4VFermiFragment*> vector = (
list3[
A])[j]->GetFragmentList();
326 G4int z1=vector[0]->GetZ();
328 G4int z2=vector[1]->GetZ();
330 G4int z3=vector[2]->GetZ();
331 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
")("<<a3<<
","<<z3<<
") % ";
334 G4cout<<
"---------------------------------------------------------------------------------"
343 size_t nz =
list3[A1].size();
344 for(
size_t idx=0; idx<nz; ++idx) {
354 for(
G4int j=0; j<nfrag; ++j) {
359 if(Z <
maxZ && A < maxA) {
362 std::vector<const G4VFermiFragment*> newvec;
363 newvec.push_back(vec3[0]);
364 newvec.push_back(vec3[1]);
365 newvec.push_back(vec3[2]);
369 list4[
A].push_back(conf4);
379 size_t nz1 =
list2[A1].size();
380 for(
size_t id1=0; id1<nz1; ++id1) {
389 size_t nz2 =
list2[A2].size();
390 for(
size_t id2=0; id2<nz2; ++id2) {
400 if(Z <
maxZ && A < maxA) {
405 std::vector<const G4VFermiFragment*> newvec;
406 newvec.push_back(vec1[0]);
407 newvec.push_back(vec1[1]);
408 newvec.push_back(vec2[0]);
409 newvec.push_back(vec2[1]);
412 list4[
A].push_back(conf4);
424 G4cout <<
"### Quartets of fragments: " << counter <<
G4endl;
427 for(
size_t j=0; j<
list4[
A].size(); ++j) {
428 std::vector<const G4VFermiFragment*> vector = (
list4[
A])[j]->GetFragmentList();
430 G4int z1=vector[0]->GetZ();
432 G4int z2=vector[1]->GetZ();
434 G4int z3=vector[2]->GetZ();
436 G4int z4=vector[3]->GetZ();
438 G4cout <<
"("<<a1<<
","<<z1<<
")("<<a2<<
","<<z2<<
")("<<a3<<
","<<z3<<
")("<<a4<<
","<<z4<<
") % ";
441 G4cout<<
"---------------------------------------------------------------------------------"
448 const std::vector<G4FermiConfiguration*>*
454 std::vector<G4FermiConfiguration*>* v =
new std::vector<G4FermiConfiguration*>;
455 if(Z >=
maxZ || A >=
maxA) {
return v; }
461 size_t nz =
list2[
A].size();
463 for(
size_t j=0; j<nz; ++j) {
476 for(
size_t j=0; j<nz; ++j) {
489 for(
size_t j=0; j<nz; ++j) {
503 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
504 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
505 size_t size_vector_conf = v->size();
506 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
507 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
508 size_t size_vector_fragments = v_frag.size();
509 G4cout<<size_vector_fragments<<
"-body configuration "<<jc+1<<
": ";
510 for(
size_t jf=0;jf<size_vector_fragments;++jf){
511 G4int af= v_frag[jf]->GetA();
512 G4int zf= v_frag[jf]->GetZ();
513 G4double ex=v_frag[jf]->GetExcitationEnergy();
514 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
517 G4cout<<
"-----------------------------------------------------"<<
G4endl;
527 for(
size_t j=0; j<nz; ++j) {
538 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
539 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
540 size_t size_vector_conf=v->size();
541 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
542 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
543 size_t size_vector_fragments=v_frag.size();
544 G4cout<<
"1 Fragment configuration "<<jc+1<<
": ";
545 for(
size_t jf=0;jf<size_vector_fragments;++jf){
546 G4int af= v_frag[jf]->GetA();
547 G4int zf= v_frag[jf]->GetZ();
548 G4double ex=v_frag[jf]->GetExcitationEnergy();
549 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
552 G4cout<<
"-----------------------------------------------------"<<
G4endl;
567 for(
size_t j=0; j<nz; ++j) {
569 if(Z == conf->
GetZ() && A == conf->
GetA() &&
575 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
576 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
577 size_t size_vector_conf=v->size();
578 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
579 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
580 size_t size_vector_fragments=v_frag.size();
581 G4cout<<
"Found exotic configuration -> configuration "<<jc+1<<
": ";
582 for(
size_t jf=0;jf<size_vector_fragments;++jf){
583 G4int af= v_frag[jf]->GetA();
584 G4int zf= v_frag[jf]->GetZ();
585 G4double ex=v_frag[jf]->GetExcitationEnergy();
586 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
589 G4cout<<
"-----------------------------------------------------"<<
G4endl;
600 if(mass > Z*proton_mass_c2 + (A-Z)*neutron_mass_c2) {
601 std::vector<const G4VFermiFragment*> newvec;
603 for(
G4int i=0; i<
A; ++i) {
604 if(i == Z) { idx = 0; }
612 G4cout<<
"Total number of configurations = "<<nconf<<
G4endl;
614 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
615 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
616 size_t size_vector_conf=v->size();
617 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
618 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
619 size_t size_vector_fragments=v_frag.size();
620 G4cout<<
"New exotic configuration -> configuration "<<jc+1<<
": ";
621 for(
size_t jf=0;jf<size_vector_fragments;++jf){
622 G4int af= v_frag[jf]->GetA();
623 G4int zf= v_frag[jf]->GetZ();
624 G4double ex=v_frag[jf]->GetExcitationEnergy();
625 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
628 G4cout<<
"-----------------------------------------------------"<<
G4endl;
639 G4cout<<
"Total number of configurations = "<<nconf<<
G4endl;
641 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
642 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
643 size_t size_vector_conf=v->size();
644 for(
size_t jc=0; jc<size_vector_conf; ++jc) {
645 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
646 size_t size_vector_fragments=v_frag.size();
647 G4cout<<
"Only evaporation is possible -> configuration "<<jc+1<<
": ";
648 for(
size_t jf=0;jf<size_vector_fragments;++jf){
649 G4int af= v_frag[jf]->GetA();
650 G4int zf= v_frag[jf]->GetZ();
651 G4double ex=v_frag[jf]->GetExcitationEnergy();
652 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
655 G4cout<<
"-----------------------------------------------------"<<
G4endl;
663 G4cout <<
"G4FermiFragmentsPool::GetConfigurationList: WARNING: not "
664 <<
"able decay fragment Z= " << Z <<
" A= " << A
672 std::vector<const G4VFermiFragment*>& newconf)
674 size_t nn = newconf.size();
676 for(
size_t i=0; i<
nn; ++i) { mass += newconf[i]->GetTotalEnergy(); }
679 size_t nz =
list2[
A].size();
681 for(
size_t j=0; j<nz; ++j) {
683 if(Z == conf->
GetZ() && A == conf->
GetA() &&
684 std::fabs(mass - conf->
GetMass()) <
keV) {
return true; }
691 size_t nz =
list3[
A].size();
693 for(
size_t j=0; j<nz; ++j) {
695 if(Z == conf->
GetZ() && A == conf->
GetA() &&
696 std::fabs(mass - conf->
GetMass()) <
keV) {
return true; }
703 size_t nz =
list4[
A].size();
705 for(
size_t j=0; j<nz; ++j) {
707 if(Z == conf->
GetZ() && A == conf->
GetA() &&
708 std::fabs(mass - conf->
GetMass()) <
keV) {
return true; }
720 if(Z >=
maxZ || A >=
maxA) {
return f; }
721 size_t nz =
list1[
A].size();
723 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()
G4bool IsAvailable(G4int Z, G4int A)
static G4FermiFragmentsPool * theInstance
G4bool IsExist(G4int Z, G4int A, std::vector< const G4VFermiFragment * > &)
G4GLOB_DLL std::ostream G4cout
std::vector< G4FermiConfiguration * > listextra
std::vector< const G4VFermiFragment * > fragment_pool
static const G4double A[nN]
std::vector< G4FermiConfiguration * > list3[17]
const G4VFermiFragment * GetFragment(G4int Z, G4int A)
const std::vector< G4FermiConfiguration * > * GetConfigurationList(G4int Z, G4int A, G4double mass)
static G4FermiFragmentsPool * Instance()
std::vector< G4FermiConfiguration * > list2[17]