dear all,
In my simulation,I want to calculate the deposited energy in semiconductor by 100 MeV Proton.my simulation result is very strange.G4MultipleScattering never happened and sometime,proton lost 0.1MeV energy in one step.the step length is 0.5um.anyone can help me ?
physicslist:
void ShieldPhysicsList::ConstructEM()
{
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);
pmanager->AddDiscreteProcess(new G4LowEnergyCompton);
pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4LowEnergyIonisation, -1, 1, 1);
pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-1, 2);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4eIonisation, -1, 1, 1);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2, 2);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
} else if (particleName == "He3" ) {
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
G4hLowEnergyIonisation*ion= new G4hLowEnergyIonisation;
ion->SetNuclearStoppingOn();
ion->SetStepFunction(0.01,1e-9*m);
pmanager->AddProcess(ion,-1, 2,2);
} else if (particleName == "alpha"||particleName =="GenericIon" ) {
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
G4hLowEnergyIonisation* ahadronLowEIon = new G4hLowEnergyIonisation;
ahadronLowEIon->SetNuclearStoppingOn();
ahadronLowEIon->SetStepFunction(0.01,1e-9*m);
pmanager->AddProcess(ahadronLowEIon, -1, 2, 2 );
}else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
G4hLowEnergyIonisation* ahadronLowEIon = new G4hLowEnergyIonisation;
pmanager->AddProcess(ahadronLowEIon, -1, 2, 2 );
}
}
}
|