34 #define INCLXX_IN_GEANT4_MODE 1
56 :
IAvatar(time), theParticle(aParticle), theNucleus(n),
65 sinRefractionAngle(0.),
66 cosRefractionAngle(0.),
67 refractionIndexRatio(0.),
68 internalReflection(
false)
112 && transmissionProbability>1.
E-4) {
116 if(candidateCluster != 0 &&
119 INCL_DEBUG(
"Cluster algorithm succeeded. Candidate cluster:" <<
'\n' << candidateCluster->
print() <<
'\n');
125 INCL_DEBUG(
"Transmission probability for cluster " << candidateCluster->
getID() <<
" = " << clusterTransmissionProbability <<
'\n');
127 if (x <= clusterTransmissionProbability) {
129 INCL_DEBUG(
"Cluster " << candidateCluster->
getID() <<
" passes the Coulomb barrier, transmitting." <<
'\n');
132 INCL_DEBUG(
"Cluster " << candidateCluster->
getID() <<
" does not pass the Coulomb barrier. Falling back to transmission of the leading particle." <<
'\n');
133 delete candidateCluster;
136 delete candidateCluster;
153 if(x <= transmissionProbability) {
175 if(!outgoing.empty()) {
182 for(
ParticleIter i=components.begin(),
e=components.end(); i!=
e; ++i) {
183 if(!(*i)->isTargetSpectator())
195 std::stringstream ss;
196 ss <<
"(avatar " <<
theTime <<
" 'reflection" <<
'\n'
231 G4double theTransmissionProbability;
243 theTransmissionProbability = 1. - y*
y;
250 theTransmissionProbability = 4.*
particlePIn*particlePOut/(y*
y);
255 const G4int particleZ = particle->
getZ();
256 if (particleZ <= 0 || particleZ >= theZ)
257 return theTransmissionProbability;
261 if (TMinusV >= theTransmissionBarrier)
262 return theTransmissionProbability;
265 const G4double px = std::sqrt(TMinusV/theTransmissionBarrier);
266 const G4double logCoulombTransmission =
269 INCL_DEBUG(
"Coulomb barrier, logCoulombTransmission=" << logCoulombTransmission <<
'\n');
270 if (logCoulombTransmission > 35.)
272 theTransmissionProbability *= std::exp(-2.*logCoulombTransmission);
274 return theTransmissionProbability;
292 INCL_DEBUG(
"Refraction parameters initialised as follows:\n"
293 <<
" cosIncidentAngle=" << cosIncidentAngle <<
'\n'
294 <<
" sinIncidentAngle=" << sinIncidentAngle <<
'\n'