87 PrintWelcomeMessage();
99 handlerDefinedInternally =
true;
141 PrintWelcomeMessage();
143 theExcitationHandler = aExcitationHandler;
144 handlerDefinedInternally =
false;
160 if (handlerDefinedInternally)
delete theExcitationHandler;
164 delete thePhotonSpectrum;
174 theParticleChange.
Clear();
194 if (verboseLevel >= 2) {
196 G4cout <<
"########################################"
197 <<
"########################################"
200 G4cout <<
"Initial projectile A=" <<AP
203 G4cout <<
"Initial target A=" <<AT
206 G4cout <<
"Projectile momentum and Energy/nuc = " <<pP <<
" ," <<E <<
G4endl;
223 G4double bmin = thePhotonSpectrum->GetClosestApproach(AP, ZP, AT, ZT, b);
225 GetCrossSectionForProjectile(AP, ZP, AT, ZT, b, bmin);
227 GetCrossSectionForTarget(AP, ZP, AT, ZT, b, bmin);
229 G4double totCrossSectionP = (*crossSectionP)[0]+(*crossSectionP)[1];
230 G4double totCrossSectionT = (*crossSectionT)[0]+(*crossSectionT)[1];
236 totCrossSectionP / (totCrossSectionP + totCrossSectionT)) {
246 GetWilsonProbabilityForProtonDissociation (AP, ZP))
248 if (verboseLevel >= 2)
249 G4cout <<
"Projectile underwent EM dissociation producing a proton"
257 if (verboseLevel >= 2)
258 G4cout <<
"Projectile underwent EM dissociation producing a neutron"
266 Eg = crossSectionP->GetLowEdgeEnergy(0);
267 if (verboseLevel >= 2)
272 Eg = crossSectionP->GetLowEdgeEnergy(1);
273 if (verboseLevel >= 2)
293 GetWilsonProbabilityForProtonDissociation (AT, ZT))
295 if (verboseLevel >= 2)
296 G4cout <<
"Target underwent EM dissociation producing a proton"
304 if (verboseLevel >= 2)
305 G4cout <<
"Target underwent EM dissociation producing a neutron"
313 Eg = crossSectionT->GetLowEdgeEnergy(0);
314 if (verboseLevel >= 2)
319 Eg = crossSectionT->GetLowEdgeEnergy(1);
320 if (verboseLevel >= 2)
331 (const_cast<G4ParticleDefinition*>(definitionP), v, E*AP-Eg);
332 theParticleChange.AddSecondary (changedP);
333 if (verboseLevel >= 2)
349 G4double pp = (e+mass1+mass2)*(e+mass1-mass2)*
350 (e-mass1+mass2)*(e-mass1-mass2)/(4.0*e*e);
366 G4double sintheta = std::sqrt((1.0 - costheta)*(1.0 + costheta));
368 G4ThreeVector direction(sintheta*std::cos(phi),sintheta*std::sin(phi),costheta);
379 theParticleChange.AddSecondary (dynamicNucleon);
380 if (verboseLevel >= 2) {
389 if (verboseLevel >= 2) {
390 G4cout <<
"Dynamic properties of the prefragment:" <<
G4endl;
393 G4cout <<
"Nuclear properties of the prefragment:" <<
G4endl;
398 theExcitationHandler->BreakItUp(*theFragment);
403 G4ReactionProductVector::iterator iter;
404 for (iter = products->begin(); iter != products->end(); ++iter) {
406 (*iter)->GetTotalEnergy(), (*iter)->GetMomentum());
407 theParticleChange.AddSecondary (secondary);
411 if (verboseLevel >= 2)
412 G4cout <<
"########################################"
413 <<
"########################################"
416 return &theParticleChange;
420 void G4EMDissociation::PrintWelcomeMessage ()
423 G4cout <<
" ****************************************************************"
425 G4cout <<
" EM dissociation model for nuclear-nuclear interactions activated"
427 G4cout <<
" (Written by QinetiQ Ltd for the European Space Agency)"
429 G4cout <<
" ****************************************************************"
static G4double GetNuclearMass(const G4double A, const G4double Z)
CLHEP::Hep3Vector G4ThreeVector
static G4Proton * ProtonDefinition()
void DumpInfo(G4int mode=0) const
void SetMinEForMultiFrag(G4double anE)
std::vector< G4ReactionProduct * > G4ReactionProductVector
void SetMinEnergy(G4double anEnergy)
G4GLOB_DLL std::ostream G4cout
const G4ParticleDefinition * GetDefinition() const
HepLorentzVector & boost(double, double, double)
G4double GetKineticEnergy() const
void SetFermiModel(G4VFermiBreakUp *ptr)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &, G4Nucleus &)
G4ErrorTarget * theTarget
void SetMultiFragmentation(G4VMultiFragmentation *ptr)
const G4LorentzVector & Get4Momentum() const
G4LorentzVector Get4Momentum() const
void Set4Momentum(const G4LorentzVector &momentum)
Hep3Vector findBoostToCM() const
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
void SetMaxAandZForFermiBreakUp(G4int anA, G4int aZ)
void SetEvaporation(G4VEvaporation *ptr)
void SetMaxEnergy(const G4double anEnergy)
G4double GetPDGCharge() const
static G4Neutron * NeutronDefinition()
G4int GetBaryonNumber() const
G4double GetTotalEnergy() const