43 #ifdef G4MULTITHREADED
48 : theDecay(nullptr), rndmEngine(nullptr), verbose(0),
maxZ(9),
maxA(17)
82 #ifdef G4MULTITHREADED
83 G4MUTEXLOCK(&G4FermiBreakUpVI::FermiBreakUpVIMutex);
88 #ifdef G4MULTITHREADED
95 return (ZZ <
maxZ && AA < maxA && AA > 0 && eexc <=
elim) ?
true :
false;
102 G4cout <<
"### G4FermiBreakUpVI::BreakFragment start new fragment " <<
G4endl;
121 theResult->push_back(theNucleus);
130 for(
size_t i=0; i<
frag.size(); ++i) {
141 G4cout <<
"# FermiFrag " << i <<
". Z= " <<
Z <<
" A= " <<
A
150 theResult->push_back(f);
162 if(!chan) {
return false; }
165 G4cout <<
"== SampleDecay " << nn <<
" channels Eex= "
168 if(0 == nn) {
return false; }
186 const std::vector<const G4FermiPair*>& pvect = chan->
GetChannels();
187 if(nn > 12) {
prob.resize(nn, 0.0); }
192 for(
size_t i=0; i<
nn; ++i) {
194 pvect[i]->GetFragment1(),
195 pvect[i]->GetFragment2());
199 <<
" Z1= " << pvect[i]->GetFragment1()->GetZ()
200 <<
" A1= " << pvect[i]->GetFragment1()->GetA()
201 <<
" Z2= " << pvect[i]->GetFragment2()->GetZ()
202 <<
" A2= " << pvect[i]->GetFragment2()->GetA()
207 for(
size_t i=0; i<
nn; ++i) {
208 if(ptot <=
prob[i] || i+1 == nn) {
215 if(!fpair) {
return false; }
223 G4cout <<
" M= " <<
mass <<
" M1= " << mass1 <<
" M2= " << mass2
232 p1 = std::sqrt((e1 - mass1)*(e1 + mass1));
253 lvect.push_back(lv1);
G4double GetCreationTime() const
const G4LorentzVector & GetMomentum() const
std::vector< G4LorentzVector > lvect
std::vector< G4double > prob
void SetCreationTime(G4double time)
virtual void Initialise() final
const G4FermiFragment * GetFragment1() const
const G4FermiPair * SamplePair(G4double rand) const
G4double ComputeProbability(G4int Z, G4int A, G4int spin, G4double TotalE, const G4FermiFragment *f1, const G4FermiFragment *f2) const
virtual ~G4FermiBreakUpVI()
G4ThreeVector G4RandomDirection()
G4double GetGroundStateMass() const
virtual void BreakFragment(G4FragmentVector *, G4Fragment *theNucleus) final
std::vector< const G4FermiFragment * > frag
const std::vector< const G4FermiPair * > & GetChannels() const
const G4FermiDecayProbability * FermiDecayProbability() const
virtual void InitialisePool() final
#define G4MUTEX_INITIALIZER
const G4FermiDecayProbability * theDecay
G4bool IsPhysical(G4int Z, G4int A) const
CLHEP::HepRandomEngine * rndmEngine
void SetSpin(G4double value)
G4double GetEnergyLimit() const
static constexpr double MeV
G4ThreeVector boostVector
void set(double x, double y, double z, double t)
G4double GetTotalEnergy(void) const
#define G4MUTEXUNLOCK(mutex)
const G4FermiPair * GetPair(size_t idx) const
size_t GetNumberOfChannels() const
const G4FermiFragment * frag2
const G4FermiFragment * frag1
#define G4MUTEXLOCK(mutex)
const G4FermiChannels * ClosestChannels(G4int Z, G4int A, G4double mass) const
G4GLOB_DLL std::ostream G4cout
virtual G4bool IsApplicable(G4int ZZ, G4int AA, G4double etot) const final
Hep3Vector boostVector() const
G4double GetExcitationEnergy(void) const
static G4FermiFragmentsPoolVI * thePool
CLHEP::HepLorentzVector G4LorentzVector
G4double GetExcitationEnergy() const
std::vector< G4Fragment * > G4FragmentVector
G4double GetExcitation() const
HepLorentzVector & boost(double, double, double)
const G4FermiFragment * GetFragment2() const