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

#include <G4FermiBreakUp.hh>

Inheritance diagram for G4FermiBreakUp:
Collaboration diagram for G4FermiBreakUp:

Public Member Functions

 G4FermiBreakUp ()
 
virtual ~G4FermiBreakUp ()
 
virtual void Initialise () final
 
virtual G4bool IsApplicable (G4int Z, G4int A, G4double mass) const final
 
virtual void BreakFragment (G4FragmentVector *, G4Fragment *theNucleus) final
 
- Public Member Functions inherited from G4VFermiBreakUp
 G4VFermiBreakUp ()
 
virtual ~G4VFermiBreakUp ()
 

Detailed Description

Definition at line 44 of file G4FermiBreakUp.hh.

Constructor & Destructor Documentation

G4FermiBreakUp::G4FermiBreakUp ( )
explicit

Definition at line 41 of file G4FermiBreakUp.cc.

41  : thePhaseSpace(nullptr)
42 {
43  g4calc = G4Pow::GetInstance();
44  Coef = ConstCoeff = 0.0;
45 
46  nmax = 16;
47  NormalizedWeights.resize(nmax,0.0);
48  massRes.reserve(4);
49  frag.resize(4, 0);
50  thePool = G4FermiFragmentsPool::Instance();
51  Initialise();
52 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
virtual void Initialise() final
static G4FermiFragmentsPool * Instance()

Here is the call graph for this function:

G4FermiBreakUp::~G4FermiBreakUp ( )
virtual

Definition at line 54 of file G4FermiBreakUp.cc.

55 {}

Member Function Documentation

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

Implements G4VFermiBreakUp.

Definition at line 95 of file G4FermiBreakUp.cc.

97 {
98  if(thePool == nullptr) { Initialise(); }
99  // Calculate Momenta of K fragments
100  G4double M = theNucleus->GetMomentum().m();
101  const std::vector<const G4VFermiFragment*>* conf =
102  SelectConfiguration(theNucleus->GetZ_asInt(),
103  theNucleus->GetA_asInt(), M);
104 
105  // should never happen
106  if(!conf) {
107  theResult->push_back(theNucleus);
108  return;
109  }
110 
111  size_t nn = conf->size();
112 
113  // should never happen
114  if(0 == nn) {
115  theResult->push_back(theNucleus);
116  return;
117  }
118 
119  G4LorentzVector fourMomentum = theNucleus->GetMomentum();
120 
121  // one unstable fragment
122  if(1 == nn) {
123  (*conf)[0]->FillFragment(theResult, fourMomentum);
124 
125  // normal case
126  } else {
127  G4ThreeVector boostVector = fourMomentum.boostVector();
128  massRes.clear();
129  for(size_t i=0; i<nn; ++i) {
130  massRes.push_back( (*conf)[i]->GetTotalEnergy() );
131  }
132  std::vector<G4LorentzVector*>* mom = thePhaseSpace->Decay(M, massRes);
133 
134  // size_t nmom = mom->size();
135  // G4cout << "nmom= " << nmom << G4endl;
136 
137  // Go back to the Lab Frame
138  for (size_t j=0; j<nn; ++j) {
139  (*mom)[j]->boost(boostVector);
140  (*conf)[j]->FillFragment(theResult, *((*mom)[j]));
141  delete (*mom)[j];
142  }
143  delete mom;
144  }
145  delete theNucleus;
146 }
Hep3Vector boostVector() const
G4int GetA_asInt() const
Definition: G4Fragment.hh:266
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:307
std::vector< G4LorentzVector * > * Decay(G4double parent_mass, const std::vector< G4double > &fragment_masses) const
virtual void Initialise() final
G4int GetZ_asInt() const
Definition: G4Fragment.hh:271
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

void G4FermiBreakUp::Initialise ( )
finalvirtual

Implements G4VFermiBreakUp.

Definition at line 57 of file G4FermiBreakUp.cc.

58 {
59  if(thePhaseSpace != nullptr) { return; }
60  // Kappa = V/V_0 it is used in calculation of Coulomb energy
61  // Nuclear radius r0 (is a model parameter)
62  G4double Kappa = 6.0;
63  G4double r0 = 1.3*CLHEP::fermi;
64 
65  Coef = 0.6*(CLHEP::elm_coupling/r0)/g4calc->Z13(1+G4int(Kappa));
66  ConstCoeff = g4calc->powN(r0/hbarc,3)*Kappa/(6.0*pi*pi);
67 
68  thePhaseSpace = thePool->GetFermiPhaseSpaceDecay();
69 }
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:128
static constexpr double hbarc
int G4int
Definition: G4Types.hh:78
G4double Z13(G4int Z) const
Definition: G4Pow.hh:127
static constexpr double fermi
Definition: SystemOfUnits.h:83
static constexpr double elm_coupling
static constexpr double pi
Definition: G4SIunits.hh:75
double G4double
Definition: G4Types.hh:76
const G4FermiPhaseSpaceDecay * GetFermiPhaseSpaceDecay() const

Here is the call graph for this function:

Here is the caller graph for this function:

G4bool G4FermiBreakUp::IsApplicable ( G4int  Z,
G4int  A,
G4double  mass 
) const
finalvirtual

Implements G4VFermiBreakUp.

Definition at line 71 of file G4FermiBreakUp.cc.

72 {
73  return thePool->IsApplicable(Z, A, mass);
74 }
G4bool IsApplicable(G4int Z, G4int A, G4double mass) const
double A(double temperature)

Here is the call graph for this function:


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