Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -43,6 +43,8 @@
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
#include "G4BGGPionElasticXS.hh"
|
||||
#include "G4BGGPionInelasticXS.hh"
|
||||
|
||||
G4QMDReaction::G4QMDReaction()
|
||||
: G4HadronicInteraction("QMDModel")
|
||||
@@ -57,7 +59,19 @@ G4QMDReaction::G4QMDReaction()
|
||||
//090331
|
||||
shenXS = new G4IonsShenCrossSection();
|
||||
//genspaXS = new G4GeneralSpaceNNCrossSection();
|
||||
piNucXS = (G4PiNuclearCrossSection*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4PiNuclearCrossSection::Default_Name());
|
||||
|
||||
pipElNucXS = new G4BGGPionElasticXS(G4PionPlus::PionPlus() );
|
||||
pipElNucXS->BuildPhysicsTable(*(G4PionPlus::PionPlus() ) );
|
||||
|
||||
pimElNucXS = new G4BGGPionElasticXS(G4PionMinus::PionMinus() );
|
||||
pimElNucXS->BuildPhysicsTable(*(G4PionMinus::PionMinus() ) );
|
||||
|
||||
pipInelNucXS = new G4BGGPionInelasticXS(G4PionPlus::PionPlus() );
|
||||
pipInelNucXS->BuildPhysicsTable(*(G4PionPlus::PionPlus() ) );
|
||||
|
||||
pimInelNucXS = new G4BGGPionInelasticXS(G4PionMinus::PionMinus() );
|
||||
pimInelNucXS->BuildPhysicsTable(*(G4PionMinus::PionMinus() ) );
|
||||
|
||||
meanField = new G4QMDMeanField();
|
||||
collision = new G4QMDCollision();
|
||||
|
||||
@@ -81,11 +95,9 @@ G4QMDReaction::G4QMDReaction()
|
||||
coulomb_collision_rz_targ = 0.0;
|
||||
coulomb_collision_px_targ = 0.0;
|
||||
coulomb_collision_pz_targ = 0.0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4QMDReaction::~G4QMDReaction()
|
||||
{
|
||||
delete evaporation;
|
||||
@@ -95,7 +107,6 @@ G4QMDReaction::~G4QMDReaction()
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectile , G4Nucleus & target )
|
||||
{
|
||||
//G4cout << "G4QMDReaction::ApplyYourself" << G4endl;
|
||||
@@ -136,12 +147,20 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
|
||||
G4VCrossSectionDataSet* theXS = shenXS;
|
||||
|
||||
if ( proj_pd->GetParticleType() == "meson" ) theXS = piNucXS;
|
||||
G4double xs_0 = theXS->GetIsoCrossSection ( proj_dp , targ_Z , targ_A );
|
||||
|
||||
// When the projectile is a pion
|
||||
if (proj_pd == G4PionPlus::PionPlus() ) {
|
||||
xs_0 = pipElNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() ) +
|
||||
pipInelNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() );
|
||||
} else if (proj_pd == G4PionMinus::PionMinus() ) {
|
||||
xs_0 = pimElNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() ) +
|
||||
pimInelNucXS->GetElementCrossSection(proj_dp, targ_Z, projectile.GetMaterial() );
|
||||
}
|
||||
|
||||
//G4double xs_0 = genspaXS->GetCrossSection ( proj_dp , targ_ele , aTemp );
|
||||
//G4double xs_0 = theXS->GetCrossSection ( proj_dp , targ_ele , aTemp );
|
||||
//110822
|
||||
G4double xs_0 = theXS->GetIsoCrossSection ( proj_dp , targ_Z , targ_A );
|
||||
|
||||
G4double bmax_0 = std::sqrt( xs_0 / pi );
|
||||
//std::cout << "bmax_0 in fm (fermi) " << bmax_0/fermi << std::endl;
|
||||
@@ -267,7 +286,9 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
G4LorentzVector targ4pCM = CLHEP::boostOf ( targ4p , boostToReac );
|
||||
|
||||
// Projectile
|
||||
if ( proj != NULL )
|
||||
//G4cout << "proj : " << proj << G4endl;
|
||||
//if ( proj != NULL )
|
||||
if ( proj_A != 1 )
|
||||
{
|
||||
|
||||
// projectile is nucleus
|
||||
@@ -297,6 +318,7 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
// projectile is particle
|
||||
|
||||
// avoid multiple set in "elastic" loop
|
||||
//G4cout << "system Total Participants : " << system->GetTotalNumberOfParticipant() << ", target : " << targ->GetTotalNumberOfParticipant() << G4endl;
|
||||
if ( system->GetTotalNumberOfParticipant() == targ->GetTotalNumberOfParticipant() )
|
||||
{
|
||||
|
||||
@@ -540,6 +562,7 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
//theParticleChange.AddSecondary( dp );
|
||||
if ( !( pd->GetAtomicNumber() == 4 && pd->GetAtomicMass() == 8 ) )
|
||||
{
|
||||
//G4cout << "pd out of notBreak loop : " << pd->GetParticleName() << G4endl;
|
||||
G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV );
|
||||
theParticleChange.AddSecondary( dp );
|
||||
}
|
||||
@@ -600,6 +623,7 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
{
|
||||
|
||||
const G4ParticleDefinition* pd = G4IonTable::GetIonTable()->GetIon( (*it)->GetAtomicNumber() , (*it)->GetMassNumber(), (*it)->GetExcitationEnergy()*GeV );
|
||||
//G4cout << "pd in notBreak loop : " << pd->GetParticleName() << G4endl;
|
||||
G4LorentzVector p4_CM = nucleus_p4CM;
|
||||
G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB ); // Back to LAB
|
||||
G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV );
|
||||
@@ -622,7 +646,6 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
|
||||
for ( G4int i = 0 ; i < system->GetTotalNumberOfParticipant() ; i++ )
|
||||
{
|
||||
|
||||
// Secondary particles
|
||||
|
||||
const G4ParticleDefinition* pd = system->GetParticipant( i )->GetDefinition();
|
||||
@@ -630,6 +653,7 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB );
|
||||
G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV );
|
||||
theParticleChange.AddSecondary( dp );
|
||||
//G4cout << "In the last theParticleChange loop : " << pd->GetParticleName() << G4endl;
|
||||
|
||||
/*
|
||||
G4cout << "G4QMDRESULT "
|
||||
@@ -652,6 +676,14 @@ G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectil
|
||||
|
||||
theParticleChange.SetStatusChange( stopAndKill );
|
||||
|
||||
for (G4int i = 0; i < G4int(theParticleChange.GetNumberOfSecondaries() ); i++)
|
||||
{
|
||||
//G4cout << "Particle : " << theParticleChange.GetSecondary(i)->GetParticle()->GetParticleDefinition()->GetParticleName() << G4endl;
|
||||
//G4cout << "KEnergy : " << theParticleChange.GetSecondary(i)->GetParticle()->GetKineticEnergy() << G4endl;
|
||||
//G4cout << "KEnergy : " << theParticleChange.GetSecondary(i)->GetCreatorModelType() << G4endl;
|
||||
theParticleChange.GetSecondary(i)->SetCreatorModelType(1111);
|
||||
}
|
||||
|
||||
return &theParticleChange;
|
||||
|
||||
}
|
||||
@@ -695,6 +727,7 @@ G4double ptot , G4double etot , G4double bmax , G4ThreeVector boostToCM )
|
||||
G4int at = pd_targ->GetAtomicMass();
|
||||
|
||||
|
||||
// Check the ramx0 value
|
||||
//G4double rmax0 = 8.0; // T.K dicide parameter value // for low energy
|
||||
G4double rmax0 = bmax + 4.0;
|
||||
G4double rmax = std::sqrt( rmax0*rmax0 + b*b );
|
||||
|
||||
Reference in New Issue
Block a user