77 const std::vector<const G4VFermiFragment*>* conf)
83 size_t nn = conf->size();
84 for (
size_t i=0; i<
nn; ++i) {
85 G4int z = (*conf)[i]->GetZ();
86 G4int a = (*conf)[i]->GetA();
91 CoulombEnergy -= SumZ*SumZ/
g4calc->
Z13(SumA);
92 return -
Coef * CoulombEnergy;
101 const std::vector<const G4VFermiFragment*>* conf =
107 theResult->push_back(theNucleus);
111 size_t nn = conf->size();
115 theResult->push_back(theNucleus);
123 (*conf)[0]->FillFragment(theResult, fourMomentum);
129 for(
size_t i=0; i<
nn; ++i) {
130 massRes.push_back( (*conf)[i]->GetTotalEnergy() );
138 for (
size_t j=0; j<
nn; ++j) {
139 (*mom)[j]->boost(boostVector);
140 (*conf)[j]->FillFragment(theResult, *((*mom)[j]));
148 const std::vector<const G4VFermiFragment*>*
151 const std::vector<const G4VFermiFragment*>* res = 0;
153 const std::vector<const G4FermiConfiguration*>* conflist =
155 if(!conflist) {
return res; }
156 size_t nn = conflist->size();
165 for(
size_t i=0; i<
nn; ++i) {
170 for(idx=0; idx<
nn; ++idx) {
175 res = (*conflist)[idx]->GetFragmentList();
193 const std::vector<const G4VFermiFragment*>* flist =
197 size_t K = flist->size();
198 if(K >
frag.size()) {
frag.resize(K, 0); }
200 for (
size_t i=0; i<K; ++i) {
201 frag[i] = (*flist)[i];
203 ((*flist)[i]->GetFragmentMass() + (*flist)[i]->GetExcitationEnergy());
208 if (KineticEnergy <= 0.0) {
return 0.0; }
217 for (
size_t i=0; i<K; ++i) {
218 G4double mass = (*flist)[i]->GetFragmentMass();
221 S_n *= (*flist)[i]->GetPolarization();
224 G4double MassFactor = ProdMass/SumMass;
225 MassFactor *= std::sqrt(MassFactor);
249 Energ =
g4calc->
powN(Energ, n1)*std::sqrt(Energ);
255 for(
size_t i=0; i<K-1; ++i) {
258 for(
size_t j=i+1; j<K; ++j) {
268 G4double Weight = Coeff*MassFactor*S_n*Energ/(G_n*Gamma*KineticEnergy);
static G4Pow * GetInstance()
G4double powN(G4double x, G4int n) const
CLHEP::Hep3Vector G4ThreeVector
std::vector< ExP01TrackerHit * > a
G4double CoulombBarrier(const std::vector< const G4VFermiFragment * > *v)
static constexpr double twopi
G4bool IsApplicable(G4int Z, G4int A, G4double mass) const
G4double Z13(G4int Z) const
double A(double temperature)
const G4LorentzVector & GetMomentum() const
const G4FermiPhaseSpaceDecay * thePhaseSpace
std::vector< G4Fragment * > G4FragmentVector
G4double factorial(G4int Z) const
std::vector< G4double > NormalizedWeights
virtual ~G4FermiBreakUp()
virtual G4bool IsApplicable(G4int Z, G4int A, G4double mass) const final
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
virtual void BreakFragment(G4FragmentVector *, G4Fragment *theNucleus) final
virtual void Initialise() final
static constexpr double pi
static constexpr double fermi
static G4FermiFragmentsPool * Instance()
const std::vector< const G4VFermiFragment * > * GetFragmentList() const
const std::vector< const G4FermiConfiguration * > * GetConfigurationList(G4int Z, G4int A, G4double mass) const
const G4FermiPhaseSpaceDecay * GetFermiPhaseSpaceDecay() const
G4double DecayProbability(G4int A, G4double TotalE, const G4FermiConfiguration *)
CLHEP::HepLorentzVector G4LorentzVector