G4HESigmaZeroInelastic Class Reference

#include <G4HESigmaZeroInelastic.hh>

Inheritance diagram for G4HESigmaZeroInelastic:

G4HEInelastic G4HadronicInteraction

Public Member Functions

 G4HESigmaZeroInelastic ()
 ~G4HESigmaZeroInelastic ()
virtual void ModelDescription (std::ostream &) const
void SetMaxNumberOfSecondaries (G4int maxnumber)
void SetVerboseLevel (G4int verbose)
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4int GetNumberOfSecondaries ()

Data Fields

G4int verboseLevel
G4int MAXPART
G4int vecLength

Detailed Description

Definition at line 52 of file G4HESigmaZeroInelastic.hh.


Constructor & Destructor Documentation

G4HESigmaZeroInelastic::G4HESigmaZeroInelastic (  )  [inline]

Definition at line 55 of file G4HESigmaZeroInelastic.hh.

References G4cout, G4endl, MAXPART, G4HadronicInteraction::theMaxEnergy, G4HadronicInteraction::theMinEnergy, and verboseLevel.

00055                              : G4HEInelastic("G4HESigmaZeroInelastic")
00056     {
00057       theMinEnergy = 20*CLHEP::GeV;
00058       theMaxEnergy = 10*CLHEP::TeV;
00059       MAXPART      = 2048;
00060       verboseLevel = 0; 
00061       G4cout << "WARNING: model G4HESigmaZeroInelastic is being deprecated and will\n"
00062              << "disappear in Geant4 version 10.0"  << G4endl; 
00063     }

G4HESigmaZeroInelastic::~G4HESigmaZeroInelastic (  )  [inline]

Definition at line 65 of file G4HESigmaZeroInelastic.hh.

00065 {};


Member Function Documentation

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

Implements G4HadronicInteraction.

Definition at line 56 of file G4HESigmaZeroInelastic.cc.

References G4HadFinalState::AddSecondary(), G4HELambdaInelastic::ApplyYourself(), G4UniformRand, G4Gamma::Gamma(), G4HEInelastic::Gamma, G4HEVector::getMomentum(), G4HELambdaInelastic::GetNumberOfSecondaries(), G4HEVector::getTotalMomentum(), G4Lambda::Lambda(), MAXPART, G4DynamicParticle::SetDefinition(), G4HEInelastic::SetMaxNumberOfSecondaries(), G4HEVector::setMomentum(), G4DynamicParticle::SetMomentum(), G4HEInelastic::SetVerboseLevel(), G4HEVector::SmulAndUpdate(), vecLength, and verboseLevel.

00058 {
00059   G4HEVector* pv = new G4HEVector[MAXPART];
00060   const G4HadProjectile* aParticle = &aTrack;
00061   G4HEVector incidentParticle(aParticle);
00062      
00063   G4HELambdaInelastic theLambdaInelastic;
00064   theLambdaInelastic.SetMaxNumberOfSecondaries(MAXPART);
00065   theLambdaInelastic.SetVerboseLevel(verboseLevel);
00066     
00067   G4double incidentTotalMomentum = incidentParticle.getTotalMomentum();
00068   G4double pgam = G4UniformRand()*incidentTotalMomentum*0.75;
00069   G4HEVector incidentLambda; 
00070   incidentLambda.SmulAndUpdate(incidentParticle, 
00071                       (incidentTotalMomentum - pgam)/incidentTotalMomentum);                    
00072   G4DynamicParticle* aLambda = new G4DynamicParticle();
00073   aLambda->SetDefinition(G4Lambda::Lambda());
00074   aLambda->SetMomentum(incidentLambda.getMomentum());
00075   G4HadProjectile aLambdaTrack(*aLambda);
00076   G4HadFinalState* result =
00077           theLambdaInelastic.ApplyYourself(aLambdaTrack, targetNucleus);                
00078   vecLength = theLambdaInelastic.GetNumberOfSecondaries();
00079     
00080   pv[vecLength] = Gamma;
00081   pv[vecLength].setMomentum(incidentParticle.getMomentum());
00082   pv[vecLength].SmulAndUpdate( pv[vecLength],pgam/incidentTotalMomentum);
00083   G4DynamicParticle* aPhoton = new G4DynamicParticle();
00084   aPhoton->SetDefinition(G4Gamma::Gamma());
00085   aPhoton->SetMomentum(pv[vecLength].getMomentum());
00086   result->AddSecondary(aPhoton);
00087   delete [] pv;
00088   return result;
00089 } 

G4int G4HESigmaZeroInelastic::GetNumberOfSecondaries (  )  [inline]

Definition at line 80 of file G4HESigmaZeroInelastic.hh.

References vecLength.

00081          { return vecLength; }         

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

Reimplemented from G4HadronicInteraction.

Definition at line 41 of file G4HESigmaZeroInelastic.cc.

00042 {
00043   outFile << "G4HESigmaZeroInelastic is one of the High Energy\n"
00044           << "Parameterized (HEP) models used to implement inelastic\n"
00045           << "Sigma0 scattering from nuclei.  It is a re-engineered\n"
00046           << "version of the GHEISHA code of H. Fesefeldt.  It divides the\n"
00047           << "initial collision products into backward- and forward-going\n"
00048           << "clusters which are then decayed into final state hadrons.\n"
00049           << "The model does not conserve energy on an event-by-event\n"
00050           << "basis.  It may be applied to Sigma0 with initial energies\n"
00051           << "above 20 GeV.\n";
00052 }

void G4HESigmaZeroInelastic::SetMaxNumberOfSecondaries ( G4int  maxnumber  )  [inline]

Reimplemented from G4HEInelastic.

Definition at line 73 of file G4HESigmaZeroInelastic.hh.

References MAXPART.

00074         { MAXPART = maxnumber; };

void G4HESigmaZeroInelastic::SetVerboseLevel ( G4int  verbose  )  [inline]

Reimplemented from G4HEInelastic.

Definition at line 75 of file G4HESigmaZeroInelastic.hh.

References verboseLevel.

00076         { verboseLevel = verbose;};


Field Documentation

G4int G4HESigmaZeroInelastic::MAXPART

Reimplemented from G4HEInelastic.

Definition at line 70 of file G4HESigmaZeroInelastic.hh.

Referenced by ApplyYourself(), G4HESigmaZeroInelastic(), and SetMaxNumberOfSecondaries().

G4int G4HESigmaZeroInelastic::vecLength

Definition at line 71 of file G4HESigmaZeroInelastic.hh.

Referenced by ApplyYourself(), and GetNumberOfSecondaries().

G4int G4HESigmaZeroInelastic::verboseLevel

Reimplemented from G4HEInelastic.

Definition at line 69 of file G4HESigmaZeroInelastic.hh.

Referenced by ApplyYourself(), G4HESigmaZeroInelastic(), and SetVerboseLevel().


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