Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
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 ( )

Definition at line 47 of file G4FermiConfigurationList.cc.

References G4Pow::GetInstance(), python.hepunit::hbarc, G4FermiFragmentsPool::Instance(), python.hepunit::pi, G4Pow::powN(), and G4Pow::Z13().

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

Definition at line 59 of file G4FermiConfigurationList.cc.

60 {}

Member Function Documentation

G4FragmentVector * G4FermiConfigurationList::GetFragments ( const G4Fragment theNucleus)

Definition at line 175 of file G4FermiConfigurationList.cc.

References CLHEP::HepLorentzVector::boost(), CLHEP::HepLorentzVector::boostVector(), G4FermiPhaseSpaceDecay::Decay(), G4Fragment::GetA_asInt(), G4Fragment::GetMomentum(), G4Fragment::GetZ_asInt(), CLHEP::HepLorentzVector::m(), and G4InuclParticleNames::nn.

Referenced by G4FermiBreakUp::BreakItUp().

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

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