#include <G4LENDFission.hh>
Inheritance diagram for G4LENDFission:
Public Member Functions | |
G4LENDFission (G4ParticleDefinition *pd) | |
~G4LENDFission () | |
G4HadFinalState * | ApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus) |
Definition at line 46 of file G4LENDFission.hh.
G4LENDFission::G4LENDFission | ( | G4ParticleDefinition * | pd | ) | [inline] |
Definition at line 51 of file G4LENDFission.hh.
References G4LENDModel::create_used_target_map(), and G4LENDModel::proj.
00052 :G4LENDModel( "LENDFission" ) 00053 { 00054 proj = pd; 00055 00056 // theModelName = "LENDFission for "; 00057 // theModelName += proj->GetParticleName(); 00058 create_used_target_map(); 00059 };
G4LENDFission::~G4LENDFission | ( | ) | [inline] |
G4HadFinalState * G4LENDFission::ApplyYourself | ( | const G4HadProjectile & | aTrack, | |
G4Nucleus & | aTargetNucleus | |||
) | [virtual] |
Reimplemented from G4LENDModel.
Definition at line 31 of file G4LENDFission.cc.
References G4HadFinalState::AddSecondary(), G4HadFinalState::Clear(), G4Gamma::Gamma(), G4Nucleus::GetA_asInt(), G4GIDI_target::getFissionFinalState(), G4HadProjectile::GetKineticEnergy(), G4HadProjectile::GetMaterial(), G4LENDManager::GetNucleusEncoding(), G4ParticleTable::GetParticleTable(), G4Material::GetTemperature(), G4Nucleus::GetZ_asInt(), G4LENDModel::lend_manager, G4Neutron::Neutron(), G4DynamicParticle::SetDefinition(), G4DynamicParticle::SetMomentum(), G4HadFinalState::SetStatusChange(), stopAndKill, G4HadronicInteraction::theParticleChange, and G4LENDModel::usedTarget_map.
00032 { 00033 00034 G4double temp = aTrack.GetMaterial()->GetTemperature(); 00035 00036 //migrate to integer A and Z (GetN_asInt returns number of neutrons in the nucleus since this) 00037 G4int iZ = aTarg.GetZ_asInt(); 00038 G4int iA = aTarg.GetA_asInt(); 00039 00040 G4double ke = aTrack.GetKineticEnergy(); 00041 00042 G4HadFinalState* theResult = &theParticleChange; 00043 theResult->Clear(); 00044 00045 G4GIDI_target* aTarget = usedTarget_map.find( lend_manager->GetNucleusEncoding( iZ , iA ) )->second->GetTarget(); 00046 std::vector<G4GIDI_Product>* products = aTarget->getFissionFinalState( ke*MeV, temp, NULL, NULL ); 00047 if ( products != NULL ) 00048 { 00049 for ( G4int j = 0; j < int( products->size() ); j++ ) 00050 { 00051 G4int jZ = (*products)[j].Z; 00052 G4int jA = (*products)[j].A; 00053 00054 //G4cout << "Z = " << (*products)[j].Z 00055 // << ", A = " << (*products)[j].A 00056 // << ", EK = " << (*products)[j].kineticEnergy << " [MeV]" 00057 // << ", px = " << (*products)[j].px 00058 // << ", py = " << (*products)[j].py 00059 // << ", pz = " << (*products)[j].pz 00060 // << G4endl; 00061 00062 G4DynamicParticle* theSec = new G4DynamicParticle; 00063 00064 if ( jZ > 0 ) 00065 { 00066 //Ex j? 00067 theSec->SetDefinition( G4ParticleTable::GetParticleTable()->FindIon( jZ, jA , 0, 0 ) ); 00068 } 00069 else if ( jA == 1 && jZ == 0 ) 00070 { 00071 theSec->SetDefinition( G4Neutron::Neutron() ); 00072 } 00073 else 00074 { 00075 theSec->SetDefinition( G4Gamma::Gamma() ); 00076 } 00077 00078 theSec->SetMomentum( G4ThreeVector( (*products)[j].px*MeV , (*products)[j].py*MeV , (*products)[j].pz*MeV ) ); 00079 //G4cout << theSec->GetDefinition()->GetParticleName() << G4endl; 00080 theResult->AddSecondary( theSec ); 00081 } 00082 } 00083 delete products; 00084 00085 theResult->SetStatusChange( stopAndKill ); 00086 00087 return theResult; 00088 00089 }