189 for(
G4int i=0; i<100; ++i) {
191 exc = maxExc*rndm->
flat();
192 resExc = maxExc*rndm->
flat();
193 }
while (exc + resExc > maxExc);
195 G4double prob = ProbabilityDistributionFunction(exc, resExc);
196 if(prob > maxProb && nWarn < 10) {
198 G4cout <<
"### G4GEMChannelVI::EmittedFragment WARNING: majoranta "
199 << maxProb <<
" is exceeded " << prob <<
"\n"
200 <<
" fragZ= " << fragZ <<
" fragA= " << fragA
201 <<
" Z= " <<
Z <<
" A= " <<
A
202 <<
" resZ= " << resZ <<
" resA= " << resA <<
"\n"
203 <<
" exc(MeV)= " << exc <<
" resExc(MeV)= " << resExc
204 <<
" maxExc(MeV)= " << maxExc <<
G4endl;
206 if(maxProb*rndm->
flat() <= prob) {
break; }
208 if(exc <= maxLevelE) {
209 exc = FindLevel(levelManager, exc, maxExc - resExc);
214 if(lman) { resExc = FindLevel(lman, resExc, maxExc - exc); }
219 G4double mass2 = resMassGround + resExc;
221 G4double e1 = 0.5*((massFrag - mass2)*(massFrag + mass2)
222 + mass1*mass1)/massFrag;
226 p1 = std::sqrt((e1 - mass1)*(e1 + mass1));
234 lv1.boost(boostVector);
244 lv0.
boost(boostVector);
G4int GetMinA(G4int Z) const
Hep3Vector boostVector() const
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
G4ThreeVector G4RandomDirection()
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
const G4LorentzVector & GetMomentum() const
HepLorentzVector & boost(double, double, double)
void SetMomentum(const G4LorentzVector &value)
G4int GetMaxA(G4int Z) const
void set(double x, double y, double z, double t)
void SetZandA_asInt(G4int Znew, G4int Anew)
G4double GetMaxLevelEnergy(G4int Z, G4int A) const