G4LEAntiLambdaInelastic Class Reference

#include <G4LEAntiLambdaInelastic.hh>

Inheritance diagram for G4LEAntiLambdaInelastic:

G4InelasticInteraction G4HadronicInteraction

Public Member Functions

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

Detailed Description

Definition at line 47 of file G4LEAntiLambdaInelastic.hh.


Constructor & Destructor Documentation

G4LEAntiLambdaInelastic::G4LEAntiLambdaInelastic (  )  [inline]

Definition at line 51 of file G4LEAntiLambdaInelastic.hh.

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

00051                               : G4InelasticInteraction("G4LEAntiLambdaInelastic")
00052     {
00053       SetMinEnergy( 0.0 );
00054       SetMaxEnergy( 25.*CLHEP::GeV );
00055       G4cout << "WARNING: model G4LEAntiLambdaInelastic is being deprecated and will\n"
00056              << "disappear in Geant4 version 10.0"  << G4endl;
00057     }

G4LEAntiLambdaInelastic::~G4LEAntiLambdaInelastic (  )  [inline]

Definition at line 59 of file G4LEAntiLambdaInelastic.hh.

00059 { }


Member Function Documentation

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

Implements G4HadronicInteraction.

Definition at line 52 of file G4LEAntiLambdaInelastic.cc.

References G4InelasticInteraction::CalculateMomenta(), G4Nucleus::Cinema(), G4InelasticInteraction::DoIsotopeCounting(), G4Nucleus::EvaporationEffects(), G4cout, G4endl, G4UniformRand, G4HadProjectile::GetDefinition(), G4DynamicParticle::GetDefinition(), 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.

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

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

Reimplemented from G4HadronicInteraction.

Definition at line 37 of file G4LEAntiLambdaInelastic.cc.

00038 {
00039   outFile << "G4LEAntiLambdaInelastic is one of the Low Energy Parameterized\n"
00040           << "(LEP) models used to implement inelastic anti-lambda\n"
00041           << "scattering from nuclei.  It is a re-engineered version of the\n"
00042           << "GHEISHA code of H. Fesefeldt.  It divides the initial\n"
00043           << "collision products into backward- and forward-going clusters\n"
00044           << "which are then decayed into final state hadrons.  The model\n"
00045           << "does not conserve energy on an event-by-event basis.  It may\n"
00046           << "be applied to anti-lambdas with initial energies between 0 and\n"
00047           << "25 GeV.\n";
00048 }


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