33 #define INCLXX_IN_GEANT4_MODE 1
71 isParticle1Spectator(false),
72 isParticle2Spectator(false),
90 if(energyCM2 < cutNNSquared) {
91 INCL_DEBUG(
"CM energy = sqrt(" << energyCM2 <<
") MeV < sqrt(" << cutNNSquared
92 <<
") MeV = cutNN" <<
"; returning a NULL channel" << std::endl);
121 if(minDist > theCrossSection) {
122 INCL_DEBUG(
"CM distance of approach is too small: " << minDist <<
">" <<
123 theCrossSection <<
"; returning a NULL channel" << std::endl);
134 if(elasticCX/(elasticCX + deltaProductionCX) <
Random::shoot()) {
141 INCL_DEBUG(
"NN interaction: elastic channel chosen" << std::endl);
145 INCL_DEBUG(
"NN interaction: inelastic channel chosen" << std::endl);
155 if(elasticCX/(elasticCX + recombinationCX) <
Random::shoot()) {
162 INCL_DEBUG(
"NDelta interaction: elastic channel chosen" << std::endl);
165 INCL_DEBUG(
"NDelta interaction: recombination channel chosen" << std::endl);
170 INCL_DEBUG(
"DeltaDelta interaction: elastic channel chosen" << std::endl);
177 INCL_DEBUG(
"BinaryCollisionAvatar can only handle nucleons (for the moment)."
217 if((isParticle1Spectator && isParticle2Spectator) || (!isParticle1Spectator && !isParticle2Spectator)) {
218 INCL_ERROR(
"First collision must be within a target spectator and a non-target spectator");
220 if(isParticle1Spectator) {
236 std::stringstream ss;
237 ss <<
"(avatar " <<
theTime <<
" 'nn-collision" << std::endl
238 <<
"(list " << std::endl
241 <<
"))" << std::endl;
FinalStateValidity getValidity() const
void incrementBlockedCollisions()
G4double dot(const ThreeVector &v) const
G4double deltaProduction(Particle const *const p1, Particle const *const p2)
G4int getAcceptedCollisions() const
G4double recombination(Particle const *const p1, Particle const *const p2)
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4bool isTargetSpectator() const
const G4INCL::ThreeVector & getMomentum() const
G4bool isDelta() const
Is it a Delta?
std::string print() const
static G4ThreadLocal Particle * backupParticle2
void incrementAcceptedCollisions()
void setType(AvatarType t)
G4double getCurrentTime()
void setFirstCollisionXSec(const G4double x)
FinalState * postInteraction(FinalState *)
static G4ThreadLocal Particle * backupParticle1
virtual FinalState * postInteraction(FinalState *)
void setFirstCollisionTime(const G4double t)
Delta-nucleon recombination channel.
G4INCL::IChannel * getChannel()
const G4INCL::ThreeVector & getPosition() const
virtual void preInteraction()
virtual ~BinaryCollisionAvatar()
void restoreParticles() const
Restore the state of both particles.
BinaryCollisionAvatar(G4double, G4double, G4INCL::Nucleus *, G4INCL::Particle *, G4INCL::Particle *)
void setFirstCollisionIsElastic(const G4bool e)
G4bool isPion() const
Is this a pion?
void setFirstCollisionSpectatorMomentum(const G4double x)
G4double elastic(Particle const *const p1, Particle const *const p2)
void setFirstCollisionSpectatorPosition(const G4double x)