Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4FermiBreakUpVI Class Reference

#include <G4FermiBreakUpVI.hh>

Inheritance diagram for G4FermiBreakUpVI:
Collaboration diagram for G4FermiBreakUpVI:

Public Member Functions

 G4FermiBreakUpVI ()
 
virtual ~G4FermiBreakUpVI ()
 
virtual void Initialise () final
 
virtual G4bool IsApplicable (G4int ZZ, G4int AA, G4double etot) const final
 
virtual void BreakFragment (G4FragmentVector *, G4Fragment *theNucleus) final
 
- Public Member Functions inherited from G4VFermiBreakUp
 G4VFermiBreakUp ()
 
virtual ~G4VFermiBreakUp ()
 

Detailed Description

Definition at line 47 of file G4FermiBreakUpVI.hh.

Constructor & Destructor Documentation

G4FermiBreakUpVI::G4FermiBreakUpVI ( )
explicit

Definition at line 47 of file G4FermiBreakUpVI.cc.

48  : theDecay(nullptr), rndmEngine(nullptr), verbose(0), maxZ(9), maxA(17)
49 {
50  prob.reserve(10);
51  frag.reserve(10);
52  lvect.reserve(10);
53  Z = A = spin = 0;
54  mass = elim = excitation = tolerance = 0.0;
55  frag1 = frag2 = nullptr;
56  Initialise();
57 }
virtual void Initialise() final

Here is the call graph for this function:

G4FermiBreakUpVI::~G4FermiBreakUpVI ( )
virtual

Definition at line 59 of file G4FermiBreakUpVI.cc.

60 {
62  delete thePool;
63  thePool = nullptr;
64  }
65 }
G4bool IsMasterThread()
Definition: G4Threading.cc:146

Here is the call graph for this function:

Member Function Documentation

void G4FermiBreakUpVI::BreakFragment ( G4FragmentVector theResult,
G4Fragment theNucleus 
)
finalvirtual

Implements G4VFermiBreakUp.

Definition at line 93 of file G4FermiBreakUpVI.cc.

95 {
96  if(verbose > 0) {
97  G4cout << "### G4FermiBreakUpVI::BreakFragment start new fragment " << G4endl;
98  G4cout << *theNucleus << G4endl;
99  }
100  frag.clear();
101  lvect.clear();
102 
103  // initial fragment
104  Z = theNucleus->GetZ_asInt();
105  A = theNucleus->GetA_asInt();
106  excitation = theNucleus->GetExcitationEnergy();
107  mass = theNucleus->GetGroundStateMass() + excitation;
108  spin = -1;
109  G4double time = theNucleus->GetCreationTime();
110 
111  lv0 = theNucleus->GetMomentum();
112  rndmEngine = G4Random::getTheEngine();
113 
114  // sample first decay of an initial state
115  if(!SampleDecay()) {
116  theResult->push_back(theNucleus);
117  return;
118  }
119  delete theNucleus;
120 
121  static const G4int imax = 100;
122 
123  // loop over vector of Fermi fragments
124  // vector may grouw at each iteraction
125  for(size_t i=0; i<frag.size(); ++i) {
126  Z = frag[i]->GetZ();
127  A = frag[i]->GetA();
128  spin = frag[i]->GetSpin();
129  mass = frag[i]->GetTotalEnergy();
130  excitation = frag[i]->GetExcitationEnergy();
131  lv0 = lvect[i];
132  if(verbose > 0) {
133  G4cout << "# FermiFrag " << i << ". Z= " << Z << " A= " << A
134  << " mass= " << mass << " exc= " << excitation << G4endl;
135  }
136  // stable fragment
137  if(!SampleDecay()) {
138  if(verbose > 0) { G4cout << " New G4Fragment" << G4endl; }
139  G4Fragment* f = new G4Fragment(A, Z, lv0);
140  f->SetSpin(0.5*spin);
141  f->SetCreationTime(time);
142  theResult->push_back(f);
143  }
144  // limit the loop
145  if(i == imax) {
146  break;
147  }
148  }
149 }
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
G4int GetA_asInt() const
Definition: G4Fragment.hh:266
G4double GetCreationTime() const
Definition: G4Fragment.hh:448
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:307
G4double GetGroundStateMass() const
Definition: G4Fragment.hh:288
void SetCreationTime(G4double time)
Definition: G4Fragment.hh:453
G4int GetZ_asInt() const
Definition: G4Fragment.hh:271
#define G4endl
Definition: G4ios.hh:61
void SetSpin(G4double value)
Definition: G4Fragment.hh:422
static const G4int imax
double G4double
Definition: G4Types.hh:76
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:283

Here is the call graph for this function:

void G4FermiBreakUpVI::Initialise ( )
finalvirtual

Implements G4VFermiBreakUp.

Definition at line 67 of file G4FermiBreakUpVI.cc.

68 {
69  if(thePool == nullptr) { InitialisePool(); }
70  theDecay = thePool->FermiDecayProbability();
71  elim = thePool->GetEnergyLimit();
72  tolerance = thePool->GetTolerance();
73 }
const G4FermiDecayProbability * FermiDecayProbability() const

Here is the call graph for this function:

Here is the caller graph for this function:

G4bool G4FermiBreakUpVI::IsApplicable ( G4int  ZZ,
G4int  AA,
G4double  etot 
) const
finalvirtual

Implements G4VFermiBreakUp.

Definition at line 88 of file G4FermiBreakUpVI.cc.

89 {
90  return (ZZ < maxZ && AA < maxA && AA > 0 && eexc <= elim) ? true : false;
91 }

The documentation for this class was generated from the following files: