101 fProbability->ResetProbability();
106 if(resA < A || resA < resZ || resZ < 0 || (resA == A && resZ < Z)) {
116 if (fMass <= fEvapMass + fResMass) {
return 0.0; }
119 bCoulomb = cBarrier->GetCoulombBarrier(resA, resZ, 0.0);
121 G4double de = fMass - fEvapMass - fResMass - bCoulomb;
122 nProb = (
G4int)(de/minExc);
123 if (nProb <= 1 || indexC < 6 || resA <= 4) {
126 nProb = std::min(nProb, nProbMax);
129 G4cout <<
"## G4GEMChannelVI::GetEmissionProbability fragZ="
130 << fragZ <<
" fragA=" << fragA <<
" Z=" << Z <<
" A=" << A
131 <<
" Eex(MeV)=" << fExc <<
" nProb=" << nProb
134 fProbability->SetDecayKinematics(resZ, resA, fResMass, fMass);
136 for (
G4int i=0; i<nProb; ++i) {
137 G4double exc = std::min(minExc*i, de);
139 G4double e2 = 0.5*((fMass-fResMass)*(fMass+fResMass) + m1*m1)/fMass - m1;
140 G4double m2 = fMass - m1 - 0.5*bCoulomb;
145 G4double e1 = std::max(0.5*((fMass-m2)*(fMass+m2) + m1*m1)/fMass - m1, 0.0);
150 sump += fProbability->TotalProbability(*fragment, e1, e2, bCoulomb, fExc, exc);
152 fEData[i].ekin1 = e1;
153 fEData[i].ekin2 = e2;
154 fEData[i].prob = sump;
167 G4double probMax = std::max(fEData[nProb - 1].prob, 0.0);
168 if (0.0 >= probMax) {
169 ekin = std::max(0.5*(fMass*fMass - fResMass*fResMass + fEvapMass2)
170 /fMass - fEvapMass, 0.0);
171 }
else if (1 == nProb) {
172 ekin = fProbability->SampleEnergy(fEData[0].ekin1, fEData[0].ekin2,
173 bCoulomb, fExc, 0.0);
177 for (; i<nProb; ++i) {
178 if (p <= fEData[i].prob) {
break; }
184 exc = e1 + (e2 - e1)*(p - p1)/(p2 - p1);
185 ekin = fProbability->SampleEnergy(fEData[i].ekin1, fEData[i].ekin2,
186 bCoulomb, fExc, exc);