Skip to content
Snippets Groups Projects
Commit 8c34dcb7 authored by matta's avatar matta
Browse files

*Changing code in NPL::EnergyLoss::Slow

 * code is now coherente with EvaluateInitialEnergy function
parent f5ffc56a
No related branches found
No related tags found
No related merge requests found
...@@ -237,25 +237,53 @@ double EnergyLoss::Slow( double Energy , // Energy of the detected particle ...@@ -237,25 +237,53 @@ double EnergyLoss::Slow( double Energy , // Energy of the detected particle
double Angle ) // Particle Angle double Angle ) // Particle Angle
const const
{ {
TargetThickness = TargetThickness / cos(Angle) ; // // Lise file are given in MeV/u
double SliceThickness = TargetThickness / (double)fNumberOfSlice ; // // For SRIM and geant4 file fNumberOfMass = 1 whatever is the nucleus, file are given in MeV
// Energy = Energy / (double) fNumberOfMass ;
Interpolator* s = new Interpolator( fEnergy , fdEdX_Total ) ; //
// if (Angle > halfpi) Angle = pi-Angle ;
//
// TargetThickness = TargetThickness / cos(Angle) ;
// double SliceThickness = TargetThickness / (double)fNumberOfSlice ;
//
// //Interpolator* s = new Interpolator( fEnergy , fdEdX_Total ) ;
//
//// double InitialEnergy = Energy ;
//// //double slow = 0. ;
//
// for (int i = 0; i < fNumberOfSlice ; i++)
// {
// // double de = s->Eval(Energy) * SliceThickness;
// double de = fInter->Eval(Energy) * SliceThickness ;
// // slow += de ;
// Energy -= de/fNumberOfMass ;
// // If ion do not cross the target
//// if (Energy < 0) {slow = InitialEnergy; break;}
// if (Energy < 0) {Energy=0; break;}
// }
//
// // delete s ;
// return slow ;
// Lise file are given in MeV/u
// For SRIM and geant4 file fNumberOfMass = 1 whatever is the nucleus, file are given in MeV
Energy = Energy / (double) fNumberOfMass ;
if (Angle > halfpi) Angle = pi-Angle ;
TargetThickness = TargetThickness / ( cos(Angle) ) ;
double InitialEnergy = Energy ; double SliceThickness = TargetThickness / (double)fNumberOfSlice ;
double slow = 0. ;
for (int i = 0; i < fNumberOfSlice ; i++) for (int i = 0; i < fNumberOfSlice ; i++)
{ {
double de = s->Eval(Energy) * SliceThickness; double de = fInter->Eval(Energy) * SliceThickness ;
slow += de ; Energy -= de/fNumberOfMass ;
Energy -= de ;
// If ion do not cross the target if(Energy<0) {Energy=0;break;}
if (Energy < 0) {slow = InitialEnergy; break;}
} }
delete s ; return (Energy*fNumberOfMass) ;
return slow ;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
double EnergyLoss::EvaluateInitialEnergy( double Energy , // Energy of the detected particle double EnergyLoss::EvaluateInitialEnergy( double Energy , // Energy of the detected particle
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment