#include <G4LEAntiKaonZeroInelastic.hh>
Inheritance diagram for G4LEAntiKaonZeroInelastic:
Public Member Functions | |
G4LEAntiKaonZeroInelastic () | |
~G4LEAntiKaonZeroInelastic () | |
G4HadFinalState * | ApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) |
virtual void | ModelDescription (std::ostream &outFile) const |
Definition at line 45 of file G4LEAntiKaonZeroInelastic.hh.
G4LEAntiKaonZeroInelastic::G4LEAntiKaonZeroInelastic | ( | ) | [inline] |
Definition at line 49 of file G4LEAntiKaonZeroInelastic.hh.
References G4cout, G4endl, G4HadronicInteraction::SetMaxEnergy(), and G4HadronicInteraction::SetMinEnergy().
00049 : G4InelasticInteraction("G4LEAntiKaonZeroInelastic") 00050 { 00051 SetMinEnergy( 0.0 ); 00052 SetMaxEnergy( 25.*CLHEP::GeV ); 00053 G4cout << "WARNING: model G4LEAntiKaonZeroInelastic is being deprecated and will\n" 00054 << "disappear in Geant4 version 10.0" << G4endl; 00055 }
G4LEAntiKaonZeroInelastic::~G4LEAntiKaonZeroInelastic | ( | ) | [inline] |
G4HadFinalState * G4LEAntiKaonZeroInelastic::ApplyYourself | ( | const G4HadProjectile & | aTrack, | |
G4Nucleus & | targetNucleus | |||
) | [virtual] |
Implements G4HadronicInteraction.
Definition at line 53 of file G4LEAntiKaonZeroInelastic.cc.
References G4InelasticInteraction::CalculateMomenta(), G4Nucleus::Cinema(), G4InelasticInteraction::DoIsotopeCounting(), G4Nucleus::EvaporationEffects(), G4cout, G4endl, G4HadProjectile::GetDefinition(), G4DynamicParticle::GetDefinition(), G4ReactionProduct::GetKineticEnergy(), G4HadProjectile::GetKineticEnergy(), G4HadProjectile::GetMaterial(), G4ReactionProduct::GetMomentum(), G4Material::GetName(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4FastVector< Type, N >::Initialize(), G4InelasticInteraction::isotopeProduction, G4InuclParticleNames::pp, G4HadReentrentException::Report(), G4Nucleus::ReturnTargetParticle(), G4ReactionProduct::SetKineticEnergy(), G4ReactionProduct::SetMomentum(), G4ReactionProduct::SetSide(), G4InelasticInteraction::SetUpChange(), G4HadronicInteraction::theParticleChange, and G4HadronicInteraction::verboseLevel.
Referenced by G4LEKaonZeroSInelastic::ApplyYourself(), and G4LEKaonZeroLInelastic::ApplyYourself().
00055 { 00056 const G4HadProjectile* originalIncident = &aTrack; 00057 00058 // create the target particle 00059 G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); 00060 00061 if (verboseLevel > 1) { 00062 const G4Material *targetMaterial = aTrack.GetMaterial(); 00063 G4cout << "G4LEAntiKaonZeroInelastic::ApplyYourself called" << G4endl; 00064 G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; 00065 G4cout << "target material = " << targetMaterial->GetName() << ", "; 00066 G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() 00067 << G4endl; 00068 } 00069 00070 // Fermi motion and evaporation 00071 // As of Geant3, the Fermi energy calculation had not been Done 00072 G4double ek = originalIncident->GetKineticEnergy()/MeV; 00073 G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; 00074 G4ReactionProduct modifiedOriginal; 00075 modifiedOriginal = *originalIncident; 00076 00077 G4double tkin = targetNucleus.Cinema( ek ); 00078 ek += tkin; 00079 modifiedOriginal.SetKineticEnergy( ek*MeV ); 00080 G4double et = ek + amas; 00081 G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); 00082 G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; 00083 if (pp > 0.0) { 00084 G4ThreeVector momentum = modifiedOriginal.GetMomentum(); 00085 modifiedOriginal.SetMomentum( momentum * (p/pp) ); 00086 } 00087 00088 // calculate black track energies 00089 tkin = targetNucleus.EvaporationEffects( ek ); 00090 ek -= tkin; 00091 modifiedOriginal.SetKineticEnergy( ek*MeV ); 00092 et = ek + amas; 00093 p = std::sqrt( std::abs((et-amas)*(et+amas)) ); 00094 pp = modifiedOriginal.GetMomentum().mag()/MeV; 00095 if (pp > 0.0) { 00096 G4ThreeVector momentum = modifiedOriginal.GetMomentum(); 00097 modifiedOriginal.SetMomentum( momentum * (p/pp) ); 00098 } 00099 00100 G4ReactionProduct currentParticle = modifiedOriginal; 00101 G4ReactionProduct targetParticle; 00102 targetParticle = *originalTarget; 00103 currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere 00104 targetParticle.SetSide( -1 ); // target always goes in backward hemisphere 00105 G4bool incidentHasChanged = false; 00106 G4bool targetHasChanged = false; 00107 G4bool quasiElastic = false; 00108 G4FastVector<G4ReactionProduct,GHADLISTSIZE> vec; // vec will contain the secondary particles 00109 G4int vecLen = 0; 00110 vec.Initialize( 0 ); 00111 00112 const G4double cutOff = 0.1; 00113 if (currentParticle.GetKineticEnergy()/MeV > cutOff) 00114 Cascade(vec, vecLen, 00115 originalIncident, currentParticle, targetParticle, 00116 incidentHasChanged, targetHasChanged, quasiElastic); 00117 00118 try { 00119 CalculateMomenta(vec, vecLen, originalIncident, originalTarget, 00120 modifiedOriginal, targetNucleus, currentParticle, 00121 targetParticle, incidentHasChanged, targetHasChanged, 00122 quasiElastic); 00123 } 00124 catch(G4HadReentrentException aR) 00125 { 00126 aR.Report(G4cout); 00127 throw G4HadReentrentException(__FILE__, __LINE__, "Bailing out"); 00128 } 00129 SetUpChange(vec, vecLen, currentParticle, targetParticle, incidentHasChanged); 00130 00131 if (isotopeProduction) DoIsotopeCounting(originalIncident, targetNucleus); 00132 delete originalTarget; 00133 return &theParticleChange; 00134 }
void G4LEAntiKaonZeroInelastic::ModelDescription | ( | std::ostream & | outFile | ) | const [virtual] |
Reimplemented from G4HadronicInteraction.
Definition at line 39 of file G4LEAntiKaonZeroInelastic.cc.
00040 { 00041 outFile << "G4LEAntiKaonZeroInelastic is one of the Low Energy\n" 00042 << "Parameterized (LEP) models used to implement anti-K0 scattering\n" 00043 << "from nuclei. It is a re-engineered version of the GHEISHA code\n" 00044 << "of H. Fesefeldt. It divides the initial collision products\n" 00045 << "into backward- and forward-going clusters which are then\n" 00046 << "decayed into final state hadrons. The model does not conserve\n" 00047 << "energy on an event-by-event basis. It may be applied to\n" 00048 << "anti-K0s with initial energies between 0 and 25 GeV.\n"; 00049 }