G4LEAntiNeutronInelastic Class Reference

#include <G4LEAntiNeutronInelastic.hh>

Inheritance diagram for G4LEAntiNeutronInelastic:

G4InelasticInteraction G4HadronicInteraction

Public Member Functions

 G4LEAntiNeutronInelastic (const G4String &name="G4LEAntiNeutronInelastic")
 ~G4LEAntiNeutronInelastic ()
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
virtual void ModelDescription (std::ostream &outFile) const

Detailed Description

Definition at line 46 of file G4LEAntiNeutronInelastic.hh.


Constructor & Destructor Documentation

G4LEAntiNeutronInelastic::G4LEAntiNeutronInelastic ( const G4String name = "G4LEAntiNeutronInelastic"  ) 

Definition at line 42 of file G4LEAntiNeutronInelastic.cc.

References G4cout, G4endl, G4HadronicInteraction::SetMaxEnergy(), and G4HadronicInteraction::SetMinEnergy().

00043  :G4InelasticInteraction(name)
00044 {
00045   SetMinEnergy(0.0);
00046   SetMaxEnergy(25.*GeV);
00047   G4cout << "WARNING: model G4LEAntiNeutronInelastic is being deprecated and will\n"
00048          << "disappear in Geant4 version 10.0"  << G4endl;
00049 }

G4LEAntiNeutronInelastic::~G4LEAntiNeutronInelastic (  )  [inline]

Definition at line 52 of file G4LEAntiNeutronInelastic.hh.

00052 {}


Member Function Documentation

G4HadFinalState * G4LEAntiNeutronInelastic::ApplyYourself ( const G4HadProjectile aTrack,
G4Nucleus targetNucleus 
) [virtual]

Implements G4HadronicInteraction.

Definition at line 67 of file G4LEAntiNeutronInelastic.cc.

References G4InelasticInteraction::CalculateMomenta(), G4Nucleus::Cinema(), G4InelasticInteraction::DoIsotopeCounting(), G4Nucleus::EvaporationEffects(), G4cout, G4endl, G4UniformRand, G4HadProjectile::GetDefinition(), G4DynamicParticle::GetDefinition(), G4ReactionProduct::GetKineticEnergy(), G4HadProjectile::GetKineticEnergy(), G4HadProjectile::GetMaterial(), G4ReactionProduct::GetMomentum(), G4Material::GetName(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4ReactionProduct::GetTotalMomentum(), G4FastVector< Type, N >::Initialize(), G4InelasticInteraction::isotopeProduction, G4InuclParticleNames::pp, G4Nucleus::ReturnTargetParticle(), G4ReactionProduct::SetKineticEnergy(), G4ReactionProduct::SetMomentum(), G4ReactionProduct::SetSide(), G4InelasticInteraction::SetUpChange(), G4HadronicInteraction::theParticleChange, and G4HadronicInteraction::verboseLevel.

00069 { 
00070   const G4HadProjectile* originalIncident = &aTrack;
00071 
00072   // create the target particle
00073   G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle();
00074     
00075   if (verboseLevel > 1) {
00076     const G4Material *targetMaterial = aTrack.GetMaterial();
00077     G4cout << "G4LEAntiNeutronInelastic::ApplyYourself called" << G4endl;
00078     G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, ";
00079     G4cout << "target material = " << targetMaterial->GetName() << ", ";
00080     G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName()
00081            << G4endl;
00082   }
00083 
00084   // Fermi motion and evaporation
00085   // As of Geant3, the Fermi energy calculation had not been Done
00086   G4double ek = originalIncident->GetKineticEnergy()/MeV;
00087   G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV;
00088   G4ReactionProduct modifiedOriginal;
00089   modifiedOriginal = *originalIncident;
00090     
00091   G4double tkin = targetNucleus.Cinema(ek);
00092   ek += tkin;
00093   modifiedOriginal.SetKineticEnergy(ek*MeV);
00094   G4double et = ek + amas;
00095   G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
00096   G4double pp = modifiedOriginal.GetMomentum().mag()/MeV;
00097   if (pp > 0.0) {
00098     G4ThreeVector momentum = modifiedOriginal.GetMomentum();
00099     modifiedOriginal.SetMomentum( momentum * (p/pp) );
00100   }
00101 
00102   // calculate black track energies
00103   tkin = targetNucleus.EvaporationEffects(ek);
00104   ek -= tkin;
00105   modifiedOriginal.SetKineticEnergy(ek*MeV);
00106   et = ek + amas;
00107   p = std::sqrt( std::abs((et-amas)*(et+amas)) );
00108   pp = modifiedOriginal.GetMomentum().mag()/MeV;
00109   if (pp > 0.0) {
00110     G4ThreeVector momentum = modifiedOriginal.GetMomentum();
00111     modifiedOriginal.SetMomentum( momentum * (p/pp) );
00112   }
00113     
00114   G4ReactionProduct currentParticle = modifiedOriginal;
00115   G4ReactionProduct targetParticle;
00116   targetParticle = *originalTarget;
00117   currentParticle.SetSide(1); // incident always goes in forward hemisphere
00118   targetParticle.SetSide(-1);  // target always goes in backward hemisphere
00119   G4bool incidentHasChanged = false;
00120   G4bool targetHasChanged = false;
00121   G4bool quasiElastic = false;
00122   G4FastVector<G4ReactionProduct,GHADLISTSIZE> vec;  // vec will contain the secondary particles
00123   G4int vecLen = 0;
00124   vec.Initialize(0);
00125     
00126   const G4double cutOff = 0.1*MeV;
00127   const G4double anni = std::min(1.3*currentParticle.GetTotalMomentum()/GeV, 0.4);
00128     
00129   if ((currentParticle.GetKineticEnergy()/MeV > cutOff) ||
00130       (G4UniformRand() > anni) )
00131     Cascade(vec, vecLen, originalIncident, currentParticle, targetParticle,
00132             incidentHasChanged, targetHasChanged, quasiElastic);
00133   else
00134     quasiElastic = true;
00135     
00136   CalculateMomenta(vec, vecLen, originalIncident, originalTarget,
00137                    modifiedOriginal, targetNucleus, currentParticle,
00138                    targetParticle, incidentHasChanged, targetHasChanged,
00139                    quasiElastic);
00140     
00141   SetUpChange(vec, vecLen, currentParticle, targetParticle, incidentHasChanged);
00142 
00143   if (isotopeProduction) DoIsotopeCounting(originalIncident, targetNucleus);
00144 
00145   delete originalTarget;
00146   return &theParticleChange;
00147 }

void G4LEAntiNeutronInelastic::ModelDescription ( std::ostream &  outFile  )  const [virtual]

Reimplemented from G4HadronicInteraction.

Definition at line 52 of file G4LEAntiNeutronInelastic.cc.

00053 {
00054   outFile << "G4LEAntiNeutronInelastic is one of the Low Energy\n"
00055           << "Parameterized (LEP) models used to implement inelastic\n"
00056           << "anti-neutron scattering from nuclei.  It is a re-engineered\n"
00057           << "version of the GHEISHA code of H. Fesefeldt.  It divides the\n"
00058           << "initial collision products into backward- and forward-going\n"
00059           << "clusters which are then decayed into final state hadrons.\n"
00060           << "The model does not conserve energy on an event-by-event\n"
00061           << "basis.  It may be applied to anti-neutrons with initial\n"
00062           << "energies between 0 and 25 GeV.\n";
00063 }


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