Fixed problems with negative energies

This commit is contained in:
Thomas Prokscha 2016-08-12 11:04:57 +02:00
parent ba04c8dc77
commit c4bb2bb74e

View File

@ -99,25 +99,27 @@ void musrMuEnergyLossLandau::GetFinalEnergy(const G4Step* aStep)
if(p_name=="mu+"){
do{
Eloss = random->Landau(landauMPV,landauSigma);
} while (Eloss < 0.);
if (Eloss > 0.) break;
} while (1);
Efinal = E - Eloss;
if (Efinal < 0. ) Efinal = 0.;
// cout << "E, Eloss, Efinal = " << E << ", " << Eloss << ", " << Efinal << endl;
particle = particleTable->FindParticle(p_name) ;
// Set the new dynamic particle DP
DP = new G4DynamicParticle(particle,
DP = new G4DynamicParticle(particle,
aStep->GetTrack()->GetDynamicParticle()->GetMomentumDirection(),
Efinal/1000.);
/* IMPORTANT : COPY THOSE DATA TO GET THE SAME PARTICLE PROPERTIES!!!
SHOULD BE KEPT WHEN BUILDING A PARTICLE CHANGE */
DP->SetProperTime( aStep->GetTrack()->GetDynamicParticle()->GetProperTime());
DP->SetPolarization(aStep->GetTrack()->GetDynamicParticle()->GetPolarization().x(),
/* IMPORTANT : COPY THOSE DATA TO GET THE SAME PARTICLE PROPERTIES!!!
SHOULD BE KEPT WHEN BUILDING A PARTICLE CHANGE */
DP->SetProperTime( aStep->GetTrack()->GetDynamicParticle()->GetProperTime());
DP->SetPolarization(aStep->GetTrack()->GetDynamicParticle()->GetPolarization().x(),
aStep->GetTrack()->GetDynamicParticle()->GetPolarization().y(),
aStep->GetTrack()->GetDynamicParticle()->GetPolarization().z());
DP->SetPreAssignedDecayProperTime(
DP->SetPreAssignedDecayProperTime(
aStep->GetTrack()->GetDynamicParticle()->GetPreAssignedDecayProperTime());
}
}