66 const std::vector<const G4VFermiFragment*>* conf)
72 size_t nn = conf->size();
73 for (
size_t i=0; i<
nn; ++i) {
74 G4int z = (*conf)[i]->GetZ();
75 G4int a = (*conf)[i]->GetA();
80 CoulombEnergy -= SumZ*SumZ/
g4pow->
Z13(SumA);
81 return -
Coef * CoulombEnergy;
97 const std::vector<const G4VFermiFragment*>* conf =
103 theResult->push_back(theNucleus);
107 size_t nn = conf->size();
111 theResult->push_back(theNucleus);
119 (*conf)[0]->FillFragment(theResult, fourMomentum);
125 for(
size_t i=0; i<
nn; ++i) {
126 massRes.push_back( (*conf)[i]->GetTotalEnergy() );
134 for (
size_t j=0; j<
nn; ++j) {
135 (*mom)[j]->boost(boostVector);
136 (*conf)[j]->FillFragment(theResult, *((*mom)[j]));
144 const std::vector<const G4VFermiFragment*>*
147 const std::vector<const G4VFermiFragment*>* res = 0;
149 const std::vector<const G4FermiConfiguration*>* conflist =
151 if(!conflist) {
return res; }
152 size_t nn = conflist->size();
161 for(
size_t i=0; i<
nn; ++i) {
166 for(idx=0; idx<
nn; ++idx) {
171 res = (*conflist)[idx]->GetFragmentList();
189 const std::vector<const G4VFermiFragment*>* flist =
193 size_t K = flist->size();
194 if(K >
frag.size()) {
frag.resize(K, 0); }
196 for (
size_t i=0; i<K; ++i) {
197 frag[i] = (*flist)[i];
199 ((*flist)[i]->GetFragmentMass() + (*flist)[i]->GetExcitationEnergy());
204 if (KineticEnergy <= 0.0) {
return 0.0; }
213 for (
size_t i=0; i<K; ++i) {
214 G4double mass = (*flist)[i]->GetFragmentMass();
217 S_n *= (*flist)[i]->GetPolarization();
220 G4double MassFactor = ProdMass/SumMass;
221 MassFactor *= std::sqrt(MassFactor);
243 Energ =
g4pow->
powN(Energ, n1)*std::sqrt(Energ);
249 for(
size_t i=0; i<K-1; ++i) {
252 for(
size_t j=i+1; j<K; ++j) {
262 G4double Weight = Coeff*MassFactor*S_n*Energ/(G_n*Gamma*KineticEnergy);
static G4Pow * GetInstance()
G4double powN(G4double x, G4int n) const
CLHEP::Hep3Vector G4ThreeVector
G4double CoulombBarrier(const std::vector< const G4VFermiFragment * > *v)
G4double Z13(G4int Z) const
double A(double temperature)
const G4LorentzVector & GetMomentum() const
static const double twopi
const G4FermiPhaseSpaceDecay * thePhaseSpace
std::vector< G4Fragment * > G4FragmentVector
G4double factorial(G4int Z) const
std::vector< G4double > NormalizedWeights
virtual ~G4FermiBreakUp()
void BreakFragment(G4FragmentVector *, G4Fragment *theNucleus)
G4FermiFragmentsPool * thePool
const std::vector< const G4VFermiFragment * > * SelectConfiguration(G4int Z, G4int A, G4double mass)
std::vector< const G4VFermiFragment * > frag
std::vector< G4double > massRes
std::vector< G4LorentzVector * > * Decay(G4double parent_mass, const std::vector< G4double > &fragment_masses) const
static G4FermiFragmentsPool * Instance()
const std::vector< const G4VFermiFragment * > * GetFragmentList() const
const std::vector< const G4FermiConfiguration * > * GetConfigurationList(G4int Z, G4int A, G4double mass) const
G4FragmentVector * BreakItUp(const G4Fragment &theNucleus)
static const double fermi
const G4FermiPhaseSpaceDecay * GetFermiPhaseSpaceDecay() const
G4double DecayProbability(G4int A, G4double TotalE, const G4FermiConfiguration *)
CLHEP::HepLorentzVector G4LorentzVector