Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FermiConfigurationList Class Reference

#include <G4FermiConfigurationList.hh>

Public Member Functions

 G4FermiConfigurationList ()
 
 ~G4FermiConfigurationList ()
 
G4FragmentVectorGetFragments (const G4Fragment &theNucleus)
 

Detailed Description

Definition at line 47 of file G4FermiConfigurationList.hh.

Constructor & Destructor Documentation

◆ G4FermiConfigurationList()

G4FermiConfigurationList::G4FermiConfigurationList ( )

Definition at line 48 of file G4FermiConfigurationList.cc.

49{
51 g4pow = G4Pow::GetInstance();
52 Coef = 0.6*(CLHEP::elm_coupling/r0)/g4pow->Z13(1+G4int(Kappa));
53 ConstCoeff = g4pow->powN(r0/hbarc,3)*Kappa*std::sqrt(2.0/pi)/3.0;
54
55 // 16 is the max number
56 nmax = 50;
57 NormalizedWeights.resize(nmax,0.0);
58}
int G4int
Definition: G4Types.hh:66
static G4FermiFragmentsPool * Instance()
static G4Pow * GetInstance()
Definition: G4Pow.cc:50
G4double powN(G4double x, G4int n)
Definition: G4Pow.cc:98
G4double Z13(G4int Z)
Definition: G4Pow.hh:110

◆ ~G4FermiConfigurationList()

G4FermiConfigurationList::~G4FermiConfigurationList ( )

Definition at line 60 of file G4FermiConfigurationList.cc.

61{}

Member Function Documentation

◆ GetFragments()

G4FragmentVector * G4FermiConfigurationList::GetFragments ( const G4Fragment theNucleus)

Definition at line 176 of file G4FermiConfigurationList.cc.

177{
178 // Calculate Momenta of K fragments
179 G4double M = theNucleus.GetMomentum().m();
180 const std::vector<const G4VFermiFragment*>* conf =
181 SelectConfiguration(theNucleus.GetZ_asInt(),
182 theNucleus.GetA_asInt(), M);
183
184
185 G4FragmentVector* theResult = new G4FragmentVector();
186 size_t nn = conf->size();
187 if(1 >= nn) {
188 theResult->push_back(new G4Fragment(theNucleus));
189 delete conf;
190 return theResult;
191 }
192
193 G4ThreeVector boostVector = theNucleus.GetMomentum().boostVector();
194 std::vector<G4double> mr;
195 mr.reserve(nn);
196 for(size_t i=0; i<nn; ++i) {
197 mr.push_back( (*conf)[i]->GetTotalEnergy() );
198 }
199 std::vector<G4LorentzVector*>* mom = thePhaseSpace.Decay(M,mr);
200 if(!mom) {
201 delete conf;
202 return theResult;
203 }
204
205 size_t nmom = mom->size();
206
207 // Go back to the Lab Frame
208 if(0 < nmom) {
209 for (size_t j=0; j<nmom; ++j) {
210 G4LorentzVector* FourMomentum = (*mom)[j];
211
212 // Lorentz boost
213 FourMomentum->boost(boostVector);
214
215 G4FragmentVector* fragment = (*conf)[j]->GetFragment(*FourMomentum);
216
217 size_t nfrag = fragment->size();
218 for (size_t k=0; k<nfrag; ++k) { theResult->push_back((*fragment)[k]); }
219 delete fragment;
220 delete (*mom)[j];
221 }
222 }
223
224 delete mom;
225 delete conf;
226 return theResult;
227}
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:65
double G4double
Definition: G4Types.hh:64
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
std::vector< G4LorentzVector * > * Decay(const G4double, const std::vector< G4double > &) const
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:251
G4int GetZ_asInt() const
Definition: G4Fragment.hh:223
G4int GetA_asInt() const
Definition: G4Fragment.hh:218

Referenced by G4FermiBreakUp::BreakItUp().


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