51 if (
nullptr == fPool) {
74 G4cout <<
"### G4FermiBreakUpVI::Initialise(): the pool is initilized="
75 << fPool->
IsInitialized() <<
" fTolerance(eV)=" << fTolerance/CLHEP::eV
76 <<
" Elim(MeV)=" << fElim/CLHEP::MeV <<
G4endl;
82 return (Z < maxZ &&
A < maxA && eexc <= fElim && fPool->HasDecay(Z,
A, eexc));
89 G4cout <<
"### G4FermiBreakUpVI::BreakFragment start new fragment "
105 if (!SampleDecay(Z,
A, mass, excitation, lv0)) {
return; }
110 static const G4int imax = 100;
114 for (std::size_t i=0; i<frag.size(); ++i) {
117 excitation = frag[i]->GetExcitationEnergy();
121 mass = frag[i]->GetTotalEnergy();
123 G4cout <<
"# FermiFrag " << i <<
". Z= " << Z <<
" A= " <<
A
124 <<
" mass= " << mass <<
" exc= "
125 << frag[i]->GetExcitationEnergy() <<
G4endl;
127 unstable = SampleDecay(Z,
A, mass, excitation, lv0);
135 theResult->push_back(f);
138 if (i == imax) {
break; }
148 if (
nullptr == chan) {
return false; }
151 G4cout <<
"G4FermiBreakUpVI::SampleDecay " <<
nn <<
" channels Eex= "
154 if (0 == nn) {
return false; }
155 if (nn > prob.size()) { prob.resize(nn, 0.0); }
167 const std::vector<G4FermiPair*>& pvect = chan->
GetChannels();
182 for (i=0; i<
nn; ++i) {
184 pvect[i]->GetFragment2(),
189 for (i=0; i<
nn; ++i) {
190 if(ptot <= prob[i]) {
197 G4cout <<
"Probabilities of 2-body decay: Nchannels=" <<
nn
198 <<
" channels; i=" << i <<
" is selected; predefined="
200 for (std::size_t j=0; j<
nn; ++j) {
202 if (pre) {
G4cout << pvect[j]->Probability(); }
203 else {
G4cout << prob[j]; }
204 G4cout <<
" Z1= " << pvect[j]->GetFragment1()->GetZ()
205 <<
" A1= " << pvect[j]->GetFragment1()->GetA()
206 <<
" Z2= " << pvect[j]->GetFragment2()->GetZ()
207 <<
" A2= " << pvect[j]->GetFragment2()->GetA()
212 if (
nullptr == fpair) {
return false; }
218 G4double mass2 = frag2->GetTotalEnergy();
220 G4cout <<
" M= " << mass <<
" M1= " << mass1 <<
" M2= " << mass2
221 <<
" Exc1= " << frag1->GetExcitationEnergy()
222 <<
" Exc2= " << frag2->GetExcitationEnergy() <<
G4endl;
225 G4double e1 = 0.5*(mass*mass - mass2*mass2 + mass1*mass1)/mass;
229 p1 = std::sqrt((e1 - mass1)*(e1 + mass1));
237 lv1.
boost(boostVector);
240 frag.push_back(frag1);
241 frag.push_back(frag2);
242 lvect.push_back(lv1);
243 lvect.push_back(lv2);
std::vector< G4Fragment * > G4FragmentVector
CLHEP::HepLorentzVector G4LorentzVector
G4ThreeVector G4RandomDirection()
G4GLOB_DLL std::ostream G4cout
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
G4double GetMaxLifeTime() const
G4double GetFBUEnergyLimit() const
G4double GetMinExcitation() const
~G4FermiBreakUpVI() override
void BreakFragment(G4FragmentVector *, G4Fragment *theNucleus) override
G4bool IsApplicable(G4int ZZ, G4int AA, G4double eexc) const override
void Initialise() override
G4double GetExcitation() const
std::size_t NumberPairs() const
const G4FermiPair * GetPair(std::size_t idx) const
const std::vector< G4FermiPair * > & GetChannels() const
G4double GetTotalEnergy(void) const
const G4FermiChannels * ClosestChannels(const G4int Z, const G4int A, const G4double mass) const
G4bool IsInitialized() const
const G4FermiFragment * GetFragment2() const
const G4FermiFragment * GetFragment1() const
G4double GetGroundStateMass() const
G4double GetExcitationEnergy() const
const G4LorentzVector & GetMomentum() const
void SetCreatorModelID(G4int value)
G4double GetCreationTime() const
void SetCreationTime(G4double time)
G4DeexPrecoParameters * GetParameters()
static G4NuclearLevelData * GetInstance()
static G4int GetModelID(const G4int modelIndex)
G4double Probability(const G4int A, const G4FermiFragment *f1, const G4FermiFragment *f2, const G4double mass, const G4double exc)