#include <G4MuonVDNuclearModel.hh>
Inheritance diagram for G4MuonVDNuclearModel:
Public Member Functions | |
G4MuonVDNuclearModel () | |
~G4MuonVDNuclearModel () | |
G4HadFinalState * | ApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) |
Definition at line 54 of file G4MuonVDNuclearModel.hh.
G4MuonVDNuclearModel::G4MuonVDNuclearModel | ( | ) |
Definition at line 52 of file G4MuonVDNuclearModel.cc.
References G4VIntraNuclearTransportModel::SetDeExcitation(), G4VPartonStringModel::SetFragmentationModel(), G4TheoFSGenerator::SetHighEnergyGenerator(), G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), and G4TheoFSGenerator::SetTransport().
00053 : G4HadronicInteraction("G4MuonVDNuclearModel") 00054 { 00055 SetMinEnergy(0.0); 00056 SetMaxEnergy(1*PeV); 00057 CutFixed = 0.2*GeV; 00058 NBIN = 1000; 00059 00060 for (G4int k = 0; k < 5; k++) { 00061 for (G4int j = 0; j < 8; j++) { 00062 for (G4int i = 0; i < 1001; i++) { 00063 proba[k][j][i] = 0.0; 00064 ya[i] = 0.0; 00065 } 00066 } 00067 } 00068 00069 MakeSamplingTable(); 00070 00071 // Build FTFP model 00072 ftfp = new G4TheoFSGenerator(); 00073 precoInterface = new G4GeneratorPrecompoundInterface(); 00074 theHandler = new G4ExcitationHandler(); 00075 preEquilib = new G4PreCompoundModel(theHandler); 00076 precoInterface->SetDeExcitation(preEquilib); 00077 ftfp->SetTransport(precoInterface); 00078 theFragmentation = new G4LundStringFragmentation(); 00079 theStringDecay = new G4ExcitedStringDecay(theFragmentation); 00080 theStringModel = new G4FTFModel; 00081 theStringModel->SetFragmentationModel(theStringDecay); 00082 ftfp->SetHighEnergyGenerator(theStringModel); 00083 00084 // Build Bertini cascade 00085 bert = new G4CascadeInterface(); 00086 }
G4MuonVDNuclearModel::~G4MuonVDNuclearModel | ( | ) |
Definition at line 89 of file G4MuonVDNuclearModel.cc.
00090 { 00091 delete ftfp; 00092 delete preEquilib; 00093 delete theFragmentation; 00094 delete theStringDecay; 00095 delete theStringModel; 00096 delete bert; 00097 }
G4HadFinalState * G4MuonVDNuclearModel::ApplyYourself | ( | const G4HadProjectile & | aTrack, | |
G4Nucleus & | targetNucleus | |||
) | [virtual] |
Implements G4HadronicInteraction.
Definition at line 101 of file G4MuonVDNuclearModel.cc.
References G4HadFinalState::Clear(), G4HadProjectile::Get4Momentum(), G4HadProjectile::GetKineticEnergy(), G4HadProjectile::GetTotalEnergy(), isAlive, G4HadFinalState::SetEnergyChange(), G4HadFinalState::SetMomentumChange(), G4HadFinalState::SetStatusChange(), and G4HadronicInteraction::theParticleChange.
00103 { 00104 theParticleChange.Clear(); 00105 00106 // For very low energy, return initial track 00107 G4double epmax = aTrack.GetTotalEnergy() - 0.5*proton_mass_c2; 00108 if (epmax <= CutFixed) { 00109 theParticleChange.SetStatusChange(isAlive); 00110 theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); 00111 theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); 00112 return &theParticleChange; 00113 } 00114 00115 // Produce recoil muon and transferred photon 00116 G4DynamicParticle* transferredPhoton = CalculateEMVertex(aTrack, targetNucleus); 00117 00118 // Interact the gamma with the nucleus 00119 CalculateHadronicVertex(transferredPhoton, targetNucleus); 00120 return &theParticleChange; 00121 }