34#define INCLXX_IN_GEANT4_MODE 1
45#ifndef G4INCLNUCLEUS_HH_
46#define G4INCLNUCLEUS_HH_
140 for(
ParticleIter i=outgoing.begin(), e=outgoing.end(); i!=e; ++i) {
271 incomingAngularMomentum = j;
279 incomingMomentum = p;
284 return incomingMomentum;
302 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
303 if((*i)->isDelta())
return true;
310 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
311 if((*i)->isAntiKaon())
return true;
318 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
319 if((*i)->isLambda())
return true;
326 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
327 if((*i)->isSigma())
return true;
334 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
335 if((*i)->isKaon())
return true;
342 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
343 if((*i)->isEta())
return true;
350 for(
ParticleIter i=inside.begin(), e=inside.end(); i!=e; ++i)
351 if((*i)->isOmega())
return true;
448 delete theProjectileRemnant;
449 theProjectileRemnant = c;
457 delete theProjectileRemnant;
458 theProjectileRemnant = NULL;
503 void computeOneNucleonRecoilKinematics();
507 G4int theInitialZ, theInitialA, theInitialS;
513 G4int theNpionplusInitial;
514 G4int theNpionminusInitial;
516 G4int theNkaonplusInitial;
517 G4int theNkaonminusInitial;
519 G4int theNantiprotonInitial;
522 ThreeVector incomingAngularMomentum, incomingMomentum;
G4double S(G4double temp)
#define INCL_DECLARE_ALLOCATION_POOL(T)
Simple container for output of event results.
Class for constructing a projectile-like remnant.
void incrementCascading()
ParticleSampler * theParticleSampler
G4double theExcitationEnergy
G4double getTransmissionRadius(Particle const *const p) const
The radius used for calculating the transmission coefficient.
G4double getMaxRFromP(const ParticleType t, const G4double p) const
Get the maximum allowed radius for a given momentum.
G4double getFermiMomentum(const Particle *const p) const
Return the Fermi momentum for a particle.
G4double getSeparationEnergy(const Particle *const p) const
Return the separation energy for a particle.
virtual G4double computePotentialEnergy(const Particle *const p) const =0
G4int getInitialA() const
G4bool decayOutgoingNeutralKaon()
Force the transformation of outgoing Neutral Kaon into propation eigenstate.
G4bool containsSigma()
Returns true if the nucleus contains any Sigma.
const ThreeVector & getIncomingAngularMomentum() const
Get the incoming angular-momentum vector.
G4int getNumberOfEnteringPions() const
G4double computeSeparationEnergyBalance() const
Outgoing - incoming separation energies.
ProjectileRemnant * getProjectileRemnant() const
Get the projectile remnant.
void fillEventInfo(EventInfo *eventInfo)
G4bool containsEtas()
Returns true if the nucleus contains any etas.
AnnihilationType getAnnihilationType() const
Getter for theAnnihilationType.
G4bool decayMe()
Force the phase-space decay of the Nucleus.
G4double computeTotalEnergy() const
Compute the current total energy.
G4bool decayInsideDeltas()
Force the decay of deltas inside the nucleus.
void setIncomingAngularMomentum(const ThreeVector &j)
Set the incoming angular-momentum vector.
void computeRecoilKinematics()
Compute the recoil momentum and spin of the nucleus.
void setInitialEnergy(const G4double e)
Set the initial energy.
void finalizeProjectileRemnant(const G4double emissionTime)
Finalise the projectile remnant.
G4double getSurfaceRadius(Particle const *const particle) const
Get the maximum allowed radius for a given particle.
G4bool containsDeltas()
Returns true if the nucleus contains any deltas.
G4bool getTryCompoundNucleus()
G4bool emitInsideKaon()
Force emission of all Kaon inside the nucleus.
G4bool isEventTransparent() const
Is the event transparent?
G4int getNumberOfEnteringProtons() const
void applyFinalState(FinalState *)
G4bool isNucleusNucleusCollision() const
Is it a nucleus-nucleus collision?
G4int getInitialS() const
void setAnnihilationType(const AnnihilationType at)
Setter for theAnnihilationType.
void setAType(AnnihilationType type)
void insertParticle(Particle *p)
Insert a new particle (e.g. a projectile) in the nucleus.
G4bool containsKaon()
Returns true if the nucleus contains any Kaons.
Nucleus(G4int mass, G4int charge, G4int strangess, Config const *const conf, const G4double universeRadius=-1., AnnihilationType AType=Def)
Nucleus & operator=(const Nucleus &rhs)
Dummy assignment operator to silence Coverity warning.
void emitInsideStrangeParticles()
Force emission of all strange particles inside the nucleus.
void deleteProjectileRemnant()
Delete the projectile remnant.
G4bool containsOmegas()
Returns true if the nucleus contains any omegas.
G4double getTransmissionBarrier(Particle const *const p)
Get the transmission barrier.
G4bool decayOutgoingPionResonances(G4double timeThreshold)
Force the decay of outgoing PionResonances (eta/omega).
void setIncomingMomentum(const ThreeVector &p)
Set the incoming momentum vector.
G4int getNumberOfEnteringNeutrons() const
void useFusionKinematics()
Adjust the kinematics for complete-fusion events.
NuclearDensity const * getDensity() const
Getter for theDensity.
G4int getNumberOfEnteringKaons() const
AnnihilationType getAType() const
G4double getInitialInternalEnergy() const
G4bool containsLambda()
Returns true if the nucleus contains any Lambda.
const ThreeVector & getIncomingMomentum() const
Get the incoming momentum vector.
void setParticleNucleusCollision()
Set a particle-nucleus collision.
void emitInsidePions()
Force emission of all pions inside the nucleus.
G4double getInitialEnergy() const
Get the initial energy.
ThreeVector computeCenterOfMass() const
Compute the current center-of-mass position.
G4bool decayOutgoingClusters()
Force the decay of unstable outgoing clusters.
G4double getExcitationEnergy() const
Get the excitation energy of the nucleus.
void setNucleusNucleusCollision()
Set a nucleus-nucleus collision.
G4int emitInsideLambda()
Force emission of all Lambda (desexitation code with strangeness not implanted yet)
void propagateParticles(G4double step)
G4bool decayInsideStrangeParticles()
Force the transformation of strange particles into a Lambda;.
ConservationBalance getConservationBalance(EventInfo const &theEventInfo, const G4bool afterRecoil) const
Compute charge, mass, energy and momentum balance.
void setStore(Store *str)
void setProjectileRemnant(ProjectileRemnant *const c)
Set the projectile remnant.
void initializeParticles()
void setDensity(NuclearDensity const *const d)
Setter for theDensity.
G4bool hasRemnant() const
Does the nucleus give a cascade remnant?
void setUniverseRadius(const G4double universeRadius)
Setter for theUniverseRadius.
void updatePotentialEnergy(Particle *p) const
Update the particle potential energy.
NuclearPotential::INuclearPotential const * getPotential() const
Getter for thePotential.
G4double getUniverseRadius() const
Getter for theUniverseRadius.
G4double computeExcitationEnergy() const
Compute the current excitation energy.
G4bool containsAntiKaon()
Returns true if the nucleus contains any anti Kaons.
G4bool decayOutgoingDeltas()
Force the decay of outgoing deltas.
G4int getNumberOfEnteringantiProtons() const
Nucleus(const Nucleus &rhs)
Dummy copy constructor to silence Coverity warning.
G4bool decayOutgoingSigmaZero(G4double timeThreshold)
Force the decay of outgoing Neutral Sigma.
G4int getInitialZ() const
void setDensity(NuclearDensity const *const d)
Setter for theDensity.
void setPotentialEnergy(G4double v)
Set the particle potential energy.
G4bool isLambda() const
Is this a Lambda?
G4int getS() const
Returns the strangeness number.
G4int getZ() const
Returns the charge number.
G4double getReflectionMomentum() const
Return the reflection momentum.
G4bool isTargetSpectator() const
G4bool isAntiNucleon() const
Is this an antinucleon?
G4bool isPion() const
Is this a pion?
G4bool isAntiKaon() const
Is this an antiKaon?
G4INCL::ParticleType getType() const
G4bool isKaon() const
Is this a Kaon?
G4bool isResonance() const
Is it a resonance?
G4int getA() const
Returns the baryon number.
ParticleList const & getOutgoingParticles() const
void particleHasEntered(Particle *const particle)
Move a particle from incoming to inside.
ParticleList const & getParticles() const
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
const G4double eSquared
Coulomb conversion factor [MeV*fm].
ParticleList::const_iterator ParticleIter
Struct for conservation laws.