94 aPrim.
Init(aProjectileA, aProjectileZ);
95 G4double projectileOuterRadius = aPrim.GetOuterRadius();
98 aTarg.
Init(aTargetA, aTargetZ);
102 G4int particlesFromProjectile = 0;
103 G4int chargedFromProjectile = 0;
111 while(0==particlesFromProjectile)
119 while(x*x + y*y > 1);
120 impactParameter = std::sqrt(x*x+y*y)*(targetOuterRadius+projectileOuterRadius);
122 area =
pi*(targetOuterRadius+projectileOuterRadius)*
123 (targetOuterRadius+projectileOuterRadius);
124 G4double projectileHorizon = impactParameter-targetOuterRadius;
128 if(projectileHorizon > empirical*projectileOuterRadius) {
continue; }
135 while((pNucleon = aPrim.GetNextNucleon()))
140 ++particlesFromProjectile;
143 ++chargedFromProjectile;
151 G4double targetHorizon = impactParameter-projectileOuterRadius;
152 G4int chargedFromTarget = 0;
153 G4int particlesFromTarget = 0;
161 ++particlesFromTarget;
176 G4LorentzVector fragment4Momentum(momentum*w, projTotEnergy*w + targetMass);
179 G4Fragment anInitialState(aTargetA+particlesFromProjectile,
180 aTargetZ+chargedFromProjectile,
184 anInitialState.SetNumberOfExcitedParticle(particlesFromProjectile
185 + particlesFromTarget,
186 chargedFromProjectile
187 + chargedFromTarget);
188 anInitialState.SetNumberOfHoles(particlesFromProjectile+particlesFromTarget,
189 chargedFromProjectile + chargedFromTarget);
191 anInitialState.SetCreationTime(time);
199 if(particlesFromProjectile < aProjectileA)
201 G4LorentzVector residual4Momentum(momentum*(1.0-w), projTotEnergy*(1.0-w));
203 G4Fragment initialState2(aProjectileA-particlesFromProjectile,
204 aProjectileZ-chargedFromProjectile,
208 G4int pinit = (aProjectileA-particlesFromProjectile)/2;
209 G4int cinit = (aProjectileZ-chargedFromProjectile)/2;
211 initialState2.SetNumberOfExcitedParticle(pinit,cinit);
212 initialState2.SetNumberOfHoles(pinit,cinit);
213 initialState2.SetCreationTime(time);
215 theExcitationResult = theHandler->
BreakItUp(initialState2);
221 if(theExcitationResult) { nexc = theExcitationResult->size(); }
222 if(thePreCompoundResult) { npre = thePreCompoundResult->size();}
225 for(
G4int k=0; k<nexc; ++k) {
234 for(
G4int k=0; k<npre; ++k) {
242 delete thePreCompoundResult;
243 delete theExcitationResult;
const G4ParticleDefinition * GetParticleType() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
virtual const G4ThreeVector & GetPosition() const
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState)
void SetStatusChange(G4HadFinalStateStatus aS)
std::vector< G4ReactionProduct * > G4ReactionProductVector
const G4ParticleDefinition * GetDefinition() const
const G4ParticleDefinition * GetDefinition() const
static constexpr double eplus
void Init(G4int theA, G4int theZ)
G4double GetGlobalTime() const
const G4LorentzVector & Get4Momentum() const
void SetEnergyChange(G4double anEnergy)
G4ThreeVector GetMomentum() const
static constexpr double pi
void AddSecondary(G4DynamicParticle *aP, G4int mod=-1)
G4double GetOuterRadius()
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment) final
G4double GetPDGCharge() const
G4Nucleon * GetNextNucleon()
G4int GetBaryonNumber() const
G4double GetTotalEnergy() const