35#define INCLXX_IN_GEANT4_MODE 1
50#ifndef G4INCLINTERACTIONAVATAR_HH_
51#define G4INCLINTERACTIONAVATAR_HH_
128 class ViolationEMomentumFunctor :
public RootFunctor {
135 virtual ~ViolationEMomentumFunctor() { particleMomenta.clear(); }
145 void cleanUp(
const G4bool success)
const;
151 std::list<ThreeVector> particleMomenta;
161 G4bool hasLocalEnergyDelta;
164 const G4bool shouldUseLocalEnergy;
174 void scaleParticleMomenta(
const G4double alpha)
const;
179 class ViolationEEnergyFunctor :
public RootFunctor {
185 ViolationEEnergyFunctor(
Nucleus *
const nucleus,
FinalState const *
const finalState);
186 virtual ~ViolationEEnergyFunctor() {}
196 void cleanUp(
const G4bool success)
const;
202 void setParticleEnergy(
const G4double energy)
const;
210 Particle *theParticle;
214 ThreeVector theMomentum;
222 RootFunctor *violationEFunctor;
Static root-finder algorithm.
G4int getAcceptedCollisions() const
LocalEnergyType getLocalEnergyPiType() const
Get the type of local energy for pi-N and decay avatars.
LocalEnergyType getLocalEnergyBBType() const
Get the type of local energy for N-N avatars.
AvatarType getType() const
static const G4int maxIterLocE
Max number of iterations for the determination of the local-energy Q-value.
G4double oldParticle1Energy
FinalState * postInteraction(FinalState *)
void restoreParticles() const
Restore the state of both particles.
G4double oldParticle2Energy
G4double oldParticle2Potential
G4double oldParticle2Mass
ThreeVector oldParticle2Position
G4double oldParticle2Helicity
G4INCL::Particle * particle1
ParticleType oldParticle2Type
virtual G4INCL::IChannel * getChannel() const =0
virtual ~InteractionAvatar()
G4bool enforceEnergyConservation(FinalState *const fs)
Enforce energy conservation.
G4INCL::Particle * particle2
void preInteractionBlocking()
Store the state of the particles before the interaction.
static const G4double locEAccuracy
Target accuracy in the determination of the local-energy Q-value.
G4double oldParticle1Potential
ThreeVector oldParticle2Momentum
G4INCL::Nucleus * theNucleus
ThreeVector oldParticle1Momentum
G4bool shouldUseLocalEnergy() const
true if the given avatar should use local energy
ThreeVector oldParticle1Position
G4double oldParticle1Helicity
G4double oldParticle1Mass
G4bool bringParticleInside(Particle *const p)
void preInteractionLocalEnergy(Particle *const p)
Apply local-energy transformation, if appropriate.
ParticleType oldParticle1Type
Config const * getConfig()
@ FirstCollisionLocalEnergy
std::list< G4INCL::Particle * > ParticleList