#include <G4FermiConfigurationList.hh>
Public Member Functions | |
G4FermiConfigurationList () | |
~G4FermiConfigurationList () | |
G4FragmentVector * | GetFragments (const G4Fragment &theNucleus) |
Definition at line 47 of file G4FermiConfigurationList.hh.
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 | ( | ) |
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 }