From c4bb2bb74e10f4d5ff4eccd62e6dde40c5e09040 Mon Sep 17 00:00:00 2001 From: Thomas Prokscha Date: Fri, 12 Aug 2016 11:04:57 +0200 Subject: [PATCH] Fixed problems with negative energies --- src/musrMuEnergyLossLandau.cc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/musrMuEnergyLossLandau.cc b/src/musrMuEnergyLossLandau.cc index b79c4d5..779b0c0 100644 --- a/src/musrMuEnergyLossLandau.cc +++ b/src/musrMuEnergyLossLandau.cc @@ -98,26 +98,28 @@ void musrMuEnergyLossLandau::GetFinalEnergy(const G4Step* aStep) // Positive muon if(p_name=="mu+"){ do{ - Eloss = random->Landau(landauMPV,landauSigma); - } while (Eloss < 0.); + Eloss = random->Landau(landauMPV,landauSigma); + 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()); } }