#include <G4HESigmaZeroInelastic.hh>
Inheritance diagram for G4HESigmaZeroInelastic:
Public Member Functions | |
G4HESigmaZeroInelastic () | |
~G4HESigmaZeroInelastic () | |
virtual void | ModelDescription (std::ostream &) const |
void | SetMaxNumberOfSecondaries (G4int maxnumber) |
void | SetVerboseLevel (G4int verbose) |
G4HadFinalState * | ApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) |
G4int | GetNumberOfSecondaries () |
Data Fields | |
G4int | verboseLevel |
G4int | MAXPART |
G4int | vecLength |
Definition at line 52 of file G4HESigmaZeroInelastic.hh.
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] |
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;};
Reimplemented from G4HEInelastic.
Definition at line 70 of file G4HESigmaZeroInelastic.hh.
Referenced by ApplyYourself(), G4HESigmaZeroInelastic(), and SetMaxNumberOfSecondaries().
Definition at line 71 of file G4HESigmaZeroInelastic.hh.
Referenced by ApplyYourself(), and GetNumberOfSecondaries().
Reimplemented from G4HEInelastic.
Definition at line 69 of file G4HESigmaZeroInelastic.hh.
Referenced by ApplyYourself(), G4HESigmaZeroInelastic(), and SetVerboseLevel().