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 48 of file G4FermiConfigurationList.cc.

References G4Pow::GetInstance(), G4FermiFragmentsPool::Instance(), G4INCL::Math::pi, G4Pow::powN(), and G4Pow::Z13().

00049 {
00050   thePool = G4FermiFragmentsPool::Instance(); 
00051   g4pow = G4Pow::GetInstance();
00052   Coef = 0.6*(CLHEP::elm_coupling/r0)/g4pow->Z13(1+G4int(Kappa));
00053   ConstCoeff = g4pow->powN(r0/hbarc,3)*Kappa*std::sqrt(2.0/pi)/3.0;
00054 
00055   // 16 is the max number
00056   nmax = 50;
00057   NormalizedWeights.resize(nmax,0.0);
00058 }

G4FermiConfigurationList::~G4FermiConfigurationList (  ) 

Definition at line 60 of file G4FermiConfigurationList.cc.

00061 {}


Member Function Documentation

G4FragmentVector * G4FermiConfigurationList::GetFragments ( const G4Fragment theNucleus  ) 

Definition at line 176 of file G4FermiConfigurationList.cc.

References G4FermiPhaseSpaceDecay::Decay(), G4Fragment::GetA_asInt(), G4Fragment::GetMomentum(), and G4Fragment::GetZ_asInt().

Referenced by G4FermiBreakUp::BreakItUp().

00177 {
00178   // Calculate Momenta of K fragments
00179   G4double M = theNucleus.GetMomentum().m();
00180   const std::vector<const G4VFermiFragment*>* conf = 
00181     SelectConfiguration(theNucleus.GetZ_asInt(), 
00182                         theNucleus.GetA_asInt(), M);
00183 
00184 
00185   G4FragmentVector* theResult = new G4FragmentVector();
00186   size_t nn = conf->size();
00187   if(1 >= nn) {
00188     theResult->push_back(new G4Fragment(theNucleus));
00189     delete conf;
00190     return theResult; 
00191   }
00192 
00193   G4ThreeVector boostVector = theNucleus.GetMomentum().boostVector();  
00194   std::vector<G4double> mr;
00195   mr.reserve(nn);
00196   for(size_t i=0; i<nn; ++i) {
00197     mr.push_back( (*conf)[i]->GetTotalEnergy() );
00198   }
00199   std::vector<G4LorentzVector*>* mom = thePhaseSpace.Decay(M,mr);
00200   if(!mom) { 
00201     delete conf;
00202     return theResult; 
00203   }
00204 
00205   size_t nmom = mom->size();  
00206 
00207   // Go back to the Lab Frame
00208   if(0 < nmom) { 
00209     for (size_t j=0; j<nmom; ++j) {
00210       G4LorentzVector* FourMomentum = (*mom)[j];
00211     
00212       // Lorentz boost
00213       FourMomentum->boost(boostVector);
00214       
00215       G4FragmentVector* fragment = (*conf)[j]->GetFragment(*FourMomentum);
00216  
00217       size_t nfrag = fragment->size();
00218       for (size_t k=0; k<nfrag; ++k) { theResult->push_back((*fragment)[k]); }
00219       delete fragment;
00220       delete (*mom)[j];
00221     }
00222   }
00223   
00224   delete mom;
00225   delete conf;
00226   return theResult;
00227 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:59 2013 for Geant4 by  doxygen 1.4.7