From e310f219ed5afb01fdf22ce87a3c424efad6c4fa Mon Sep 17 00:00:00 2001 From: adrien-matta <a.matta@surrey.ac.uk> Date: Tue, 6 May 2014 17:23:18 +0100 Subject: [PATCH] * Smarter Generation of the EDE tables --- NPSimulation/src/Target.cc | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/NPSimulation/src/Target.cc b/NPSimulation/src/Target.cc index 6883e3ba5..5a9b130de 100644 --- a/NPSimulation/src/Target.cc +++ b/NPSimulation/src/Target.cc @@ -618,9 +618,19 @@ void Target::WriteDEDXTable(G4ParticleDefinition* Particle ,G4double Emin,G4doub << "Particle: " << Particle->GetParticleName() << "\tMaterial: " << m_TargetMaterial->GetName() << endl ; G4EmCalculator emCalculator; + // Tipical Range needed, if Emax is larger, then adapted + if(Emax < 25000) Emax = 25000; - for (G4double E=Emin; E < Emax; E+=(Emax-Emin)/1000.){ + double step = 1*keV; + double before = 0 ; + for (G4double E=Emin; E < Emax; E+=step){ G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle, m_TargetMaterial); + + if(before){ + if(abs(before-dedx)/abs(before)<0.01) step*=10; + } + + before = dedx; File << E/MeV << "\t" << dedx/(MeV/micrometer) << endl ; } @@ -632,12 +642,19 @@ void Target::WriteDEDXTable(G4ParticleDefinition* Particle ,G4double Emin,G4doub File << "Table from Geant4 generate using NPSimulation \t " << "Particle: " << Particle->GetParticleName() << "\tMaterial: " << m_WindowsMaterial->GetName() << endl ; - for (G4double E=Emin; E < Emax; E+=(Emax-Emin)/10.){ - // G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle, m_WindowsMaterial); - G4double dedx = emCalculator.ComputeDEDX( E, Particle , - "ionIoni", m_WindowsMaterial); + step = 1*keV; + before = 0 ; + for (G4double E=Emin; E < Emax; E+=step){ + G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle,m_WindowsMaterial); + + if(before){ + if(abs(before-dedx)/abs(before)<0.01) step*=10; + } + + before = dedx; File << E/MeV << "\t" << dedx/(MeV/micrometer) << endl ; } + } File.close(); -- GitLab