94 aPrim.
Init(aProjectileA, aProjectileZ);
95 G4double projectileOuterRadius = aPrim.GetOuterRadius();
98 aTarg.
Init(aTargetA, aTargetZ);
102 G4int particlesFromProjectile = 0;
103 G4int chargedFromProjectile = 0;
109 while(0==particlesFromProjectile)
116 while(x*x + y*y > 1);
117 impactParameter = std::sqrt(x*x+y*y)*(targetOuterRadius+projectileOuterRadius);
119 area =
pi*(targetOuterRadius+projectileOuterRadius)*
120 (targetOuterRadius+projectileOuterRadius);
121 G4double projectileHorizon = impactParameter-targetOuterRadius;
125 if(projectileHorizon > empirical*projectileOuterRadius) {
continue; }
130 while((pNucleon = aPrim.GetNextNucleon()))
135 ++particlesFromProjectile;
138 ++chargedFromProjectile;
146 G4double targetHorizon = impactParameter-projectileOuterRadius;
147 G4int chargedFromTarget = 0;
148 G4int particlesFromTarget = 0;
155 ++particlesFromTarget;
170 G4LorentzVector fragment4Momentum(momentum*w, projTotEnergy*w + targetMass);
173 G4Fragment anInitialState(aTargetA+particlesFromProjectile,
174 aTargetZ+chargedFromProjectile,
179 chargedFromProjectile + chargedFromTarget);
180 anInitialState.
SetNumberOfHoles(particlesFromProjectile+particlesFromTarget,
181 chargedFromProjectile + chargedFromTarget);
190 if(particlesFromProjectile < aProjectileA)
192 G4LorentzVector residual4Momentum(momentum*(1.0-w), projTotEnergy*(1.0-w));
194 G4Fragment initialState2(aProjectileA-particlesFromProjectile,
195 aProjectileZ-chargedFromProjectile,
199 G4int pinit = (aProjectileA-particlesFromProjectile)/2;
200 G4int cinit = (aProjectileZ-chargedFromProjectile)/2;
212 if(theExcitationResult) { nexc = theExcitationResult->size(); }
213 if(thePreCompoundResult) { npre = thePreCompoundResult->size();}
216 for(
G4int k=0; k<nexc; ++k) {
224 for(
G4int k=0; k<npre; ++k) {
231 delete thePreCompoundResult;
232 delete theExcitationResult;
G4PreCompoundModel * theModel
static G4double GetNuclearMass(const G4double A, const G4double Z)
const G4ParticleDefinition * proton
CLHEP::Hep3Vector G4ThreeVector
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
virtual const G4ThreeVector & GetPosition() const
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState) const
G4ParticleDefinition * GetDefinition() const
void SetStatusChange(G4HadFinalStateStatus aS)
std::vector< G4ReactionProduct * > G4ReactionProductVector
void SetNumberOfExcitedParticle(G4int valueTot, G4int valueP)
const G4ParticleDefinition * GetDefinition() const
void Init(G4int theA, G4int theZ)
G4double GetGlobalTime() const
static G4Proton * Proton()
const G4LorentzVector & Get4Momentum() const
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)
void SetEnergyChange(G4double anEnergy)
void SetCreationTime(G4double time)
virtual ~G4LowEIonFragmentation()
G4ThreeVector GetMomentum() const
G4HadFinalState theResult
G4ParticleDefinition * GetParticleType() const
G4double GetOuterRadius()
static const double eplus
G4double GetPDGCharge() const
G4Nucleon * GetNextNucleon()
void AddSecondary(G4DynamicParticle *aP)
G4ExcitationHandler * theHandler
G4int GetBaryonNumber() const
G4double GetTotalEnergy() const
CLHEP::HepLorentzVector G4LorentzVector