57 G4bool isNN = theNucleus->isNucleusNucleusCollision();
122 G4double theProjectileExcitationEnergy = 0;
123 G4double theProjectileEffectiveMass =0;
124 if (theParticle->isNucleonorLambda()){
125 theProjectileExcitationEnergy = (projectileRemnant->
getA()-theParticle->getA()>1) ? (projectileRemnant->
computeExcitationEnergyExcept(theParticle->getID())) : 0.;
126 theProjectileEffectiveMass =
128 + theProjectileExcitationEnergy;
130 else if (theParticle->isAntiNucleon()){
131 theProjectileExcitationEnergy = (projectileRemnant->
getA() -theParticle->getA()<-1) ? (projectileRemnant->
computeExcitationEnergyExcept(theParticle->getID())) : 0;
132 theProjectileEffectiveMass =
134 + theProjectileExcitationEnergy;
141 const G4double theProjectileEnergy = std::sqrt(theProjectileMomentum.
mag2() + theProjectileEffectiveMass*theProjectileEffectiveMass);
142 const G4double theProjectileCorrection = theProjectileEnergy - (projectileRemnant->
getEnergy() - theParticle->getEnergy());
165 theCorrection = theParticle->getEmissionQValueCorrection(
166 theNucleus->getA() + theParticle->getA(),
167 theNucleus->getZ() + theParticle->getZ(),
168 theNucleus->getS() + theParticle->getS())
169 + theParticle->getTableMass() - theParticle->getINCLMass()
170 + theProjectileCorrection;
174 projectileRemnant->
removeParticle(theParticle, theProjectileCorrection);
176 const G4int ACN = theNucleus->getA() + theParticle->getA();
177 const G4int ZCN = theNucleus->getZ() + theParticle->getZ();
178 const G4int SCN = theNucleus->getS() + theParticle->getS();
180 theCorrection = theParticle->getEmissionQValueCorrection(ACN,ZCN,SCN);
181 INCL_DEBUG(
"The following Particle enters with correction " << theCorrection <<
'\n'
182 << theParticle->print() <<
'\n');
185 const G4double energyBefore = theParticle->getEnergy() - theCorrection;
187 if(isNN && theParticle->isAntiNucleon() && (theParticle->getEnergy() - theCorrection <=theParticle->getINCLMass()) ){
189 G4double energyInside = theParticle->getEnergy() + theNucleus->getPotential()->computePotentialEnergy(theParticle) - theCorrection;
190 theParticle->setEnergy(energyInside);
191 theParticle->setPotentialEnergy(theNucleus->getPotential()->computePotentialEnergy(theParticle));
192 theParticle->setMomentum(theParticle->getMomentum());
193 theParticle->adjustMomentumFromEnergy();
196 success = particleEnters(theCorrection);
202 }
else if(theParticle->isNucleonorLambda() &&
203 theParticle->getKineticEnergy()<theNucleus->getPotential()->getFermiEnergy(theParticle)) {
207 }
else if(theParticle->isKaon()) theNucleus->setNumberOfKaon(theNucleus->getNumberOfKaon()+1);
ParticleEntryChannel(Nucleus *n, Particle *p)
G4int getS() const
Returns the strangeness number.
G4double getEnergy() const
G4int getZ() const
Returns the charge number.
void setINCLMass()
Set the mass of the Particle to its table mass.
const G4INCL::ThreeVector & getMomentum() const
G4int getA() const
Returns the baryon number.
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.