451{
452
454
455 std::vector<G4FermiConfiguration*>* v = new std::vector<G4FermiConfiguration*>;
456 if(Z >= maxZ || A >= maxA) { return v; }
457
458
459
460
461
462 size_t nz = list2[A].size();
463 if(0 < nz) {
464 for(size_t j=0; j<nz; ++j) {
467 v->push_back(conf);
468 ++nconf;
469 }
470
471
472 }
473 }
474
475 nz = list3[A].size();
476 if(0 < nz) {
477 for(size_t j=0; j<nz; ++j) {
480 v->push_back(conf);
481 ++nconf;
482 }
483
484
485 }
486 }
487
488 nz = list4[A].size();
489 if(0 < nz) {
490 for(size_t j=0; j<nz; ++j) {
493 v->push_back(conf);
494 ++nconf;
495 }
496
497
498 }
499 }
500
501 if(0 < v->size()) {
502 if(verbose > 0) {
504 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
505 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
506 size_t size_vector_conf = v->size();
507 for(size_t jc=0; jc<size_vector_conf; ++jc) {
508 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
509 size_t size_vector_fragments = v_frag.size();
510 G4cout<<size_vector_fragments<<
"-body configuration "<<jc+1<<
": ";
511 for(size_t jf=0;jf<size_vector_fragments;++jf){
512 G4int af= v_frag[jf]->GetA();
513 G4int zf= v_frag[jf]->GetZ();
514 G4double ex=v_frag[jf]->GetExcitationEnergy();
515 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
516 }
518 G4cout<<
"-----------------------------------------------------"<<
G4endl;
519 }
520 }
521 return v;
522 }
523
524
525 nz = list1[A].size();
527 if(0 < nz) {
528 for(size_t j=0; j<nz; ++j) {
530
531
532
535 ++nconf;
536 v->push_back(conf);
537 if(verbose > 0) {
539 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
540 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
541 size_t size_vector_conf=v->size();
542 for(size_t jc=0; jc<size_vector_conf; ++jc) {
543 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
544 size_t size_vector_fragments=v_frag.size();
545 G4cout<<
"1 Fragment configuration "<<jc+1<<
": ";
546 for(size_t jf=0;jf<size_vector_fragments;++jf){
547 G4int af= v_frag[jf]->GetA();
548 G4int zf= v_frag[jf]->GetZ();
549 G4double ex=v_frag[jf]->GetExcitationEnergy();
550 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
551 }
553 G4cout<<
"-----------------------------------------------------"<<
G4endl;
554 }
555 }
556 return v;
557 } else {
558 conf1 = conf;
559 break;
560 }
561 }
562 }
563 }
564
565
566 nz = listextra.size();
567 if(0 < nz) {
568 for(size_t j=0; j<nz; ++j) {
570 if(Z == conf->
GetZ() && A == conf->
GetA() &&
572 ++nconf;
573 v->push_back(conf);
574 if(verbose > 0) {
576 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
577 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
578 size_t size_vector_conf=v->size();
579 for(size_t jc=0; jc<size_vector_conf; ++jc) {
580 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
581 size_t size_vector_fragments=v_frag.size();
582 G4cout<<
"Found exotic configuration -> configuration "<<jc+1<<
": ";
583 for(size_t jf=0;jf<size_vector_fragments;++jf){
584 G4int af= v_frag[jf]->GetA();
585 G4int zf= v_frag[jf]->GetZ();
586 G4double ex=v_frag[jf]->GetExcitationEnergy();
587 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
588 }
590 G4cout<<
"-----------------------------------------------------"<<
G4endl;
591 }
592 }
593 return v;
594 }
595 }
596 }
597
598
599
600
601 if(mass > Z*proton_mass_c2 + (A-Z)*neutron_mass_c2) {
602 std::vector<const G4VFermiFragment*> newvec;
604 for(
G4int i=0; i<A; ++i) {
605 if(i == Z) { idx = 0; }
606 newvec.push_back(fragment_pool[idx]);
607 }
609 listextra.push_back(conf);
610 v->push_back(conf);
611 ++nconf;
612 if(verbose > 0) {
613 G4cout<<
"Total number of configurations = "<<nconf<<
G4cout;
615 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
616 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
617 size_t size_vector_conf=v->size();
618 for(size_t jc=0; jc<size_vector_conf; ++jc) {
619 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
620 size_t size_vector_fragments=v_frag.size();
621 G4cout<<
"New exotic configuration -> configuration "<<jc+1<<
": ";
622 for(size_t jf=0;jf<size_vector_fragments;++jf){
623 G4int af= v_frag[jf]->GetA();
624 G4int zf= v_frag[jf]->GetZ();
625 G4double ex=v_frag[jf]->GetExcitationEnergy();
626 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
627 }
629 G4cout<<
"-----------------------------------------------------"<<
G4endl;
630 }
631 }
632 return v;
633 }
634
635
636 if(conf1) {
637 v->push_back(conf1);
638 ++nconf;
639 if(verbose > 0) {
640 G4cout<<
"Total number of configurations = "<<nconf<<
G4endl;
642 G4cout<<
"Total number of configurations = "<<nconf<<
" for A= "
643 <<A<<
" Z= "<<Z<<
" E*= "<< ExEn<<
" MeV"<<
G4endl;
644 size_t size_vector_conf=v->size();
645 for(size_t jc=0; jc<size_vector_conf; ++jc) {
646 std::vector<const G4VFermiFragment*> v_frag = (*v)[jc]->GetFragmentList();
647 size_t size_vector_fragments=v_frag.size();
648 G4cout<<
"Only evaporation is possible -> configuration "<<jc+1<<
": ";
649 for(size_t jf=0;jf<size_vector_fragments;++jf){
650 G4int af= v_frag[jf]->GetA();
651 G4int zf= v_frag[jf]->GetZ();
652 G4double ex=v_frag[jf]->GetExcitationEnergy();
653 G4cout<<
"(a="<<af<<
", z="<<zf<<
", ex="<<ex<<
") ";
654 }
656 G4cout<<
"-----------------------------------------------------"<<
G4endl;
657 }
658 }
659 return v;
660 }
661
662
663 if(verbose > 0) {
664 G4cout <<
"G4FermiFragmentsPool::GetConfigurationList: WARNING: not "
665 << "able decay fragment Z= " << Z << " A= " << A
666 <<
" Mass(GeV)= " << mass/GeV<<
G4endl;
667 }
668 return v;
669}
G4DLLIMPORT std::ostream G4cout
const std::vector< const G4VFermiFragment * > & GetFragmentList()
static G4double GetNuclearMass(const G4double A, const G4double Z)