G4LEAntiKaonZeroInelastic Class Reference

#include <G4LEAntiKaonZeroInelastic.hh>

Inheritance diagram for G4LEAntiKaonZeroInelastic:

G4InelasticInteraction G4HadronicInteraction

Public Member Functions

 G4LEAntiKaonZeroInelastic ()
 ~G4LEAntiKaonZeroInelastic ()
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
virtual void ModelDescription (std::ostream &outFile) const

Detailed Description

Definition at line 45 of file G4LEAntiKaonZeroInelastic.hh.


Constructor & Destructor Documentation

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]

Definition at line 57 of file G4LEAntiKaonZeroInelastic.hh.

00057 {}


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:22 2013 for Geant4 by  doxygen 1.4.7