Import Geant4 9.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 16:15:05 +02:00
parent b79225fb37
commit 74cad5e589
3877 changed files with 234205 additions and 167127 deletions
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4MuIonisation.cc,v 1.57 2008/10/27 10:55:07 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4MuIonisation.cc,v 1.59 2009/02/26 11:04:20 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
// -------------------------------------------------------------------
//
@@ -85,6 +85,7 @@
#include "G4BetheBlochModel.hh"
#include "G4MuBetheBlochModel.hh"
#include "G4UniversalFluctuation.hh"
#include "G4IonFluctuations.hh"
#include "G4BohrFluctuations.hh"
#include "G4UnitsTable.hh"
@@ -111,6 +112,24 @@ G4MuIonisation::~G4MuIonisation()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4bool G4MuIonisation::IsApplicable(const G4ParticleDefinition& p)
{
return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4double G4MuIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
const G4Material*,
G4double cut)
{
G4double x = 0.5*cut/electron_mass_c2;
G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
return mass*(g - 1.0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void G4MuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part,
const G4ParticleDefinition* bpart)
{
@@ -122,20 +141,26 @@ void G4MuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* par
mass = theParticle->GetPDGMass();
SetSecondaryParticle(G4Electron::Electron());
flucModel = new G4UniversalFluctuation();
// Bragg peak model
if (!EmModel(1)) SetEmModel(new G4BraggModel(),1);
EmModel(1)->SetLowEnergyLimit(MinKinEnergy());
EmModel(1)->SetHighEnergyLimit(0.2*MeV);
AddEmModel(1, EmModel(1), new G4IonFluctuations());
G4VEmModel* em = new G4BraggModel();
em->SetLowEnergyLimit(MinKinEnergy());
em->SetHighEnergyLimit(0.2*MeV);
AddEmModel(1, em, flucModel);
G4VEmModel* em1 = new G4BetheBlochModel();
em1->SetLowEnergyLimit(0.2*MeV);
em1->SetHighEnergyLimit(1.0*GeV);
AddEmModel(2, em1, flucModel);
G4VEmModel* em2 = new G4MuBetheBlochModel();
em2->SetLowEnergyLimit(1.0*GeV);
em2->SetHighEnergyLimit(MaxKinEnergy());
AddEmModel(3, em2, flucModel);
// high energy fluctuation model
if (!FluctModel()) SetFluctModel(new G4UniversalFluctuation());
// moderate energy model
if (!EmModel(2)) SetEmModel(new G4BetheBlochModel(),2);
EmModel(2)->SetLowEnergyLimit(0.2*MeV);
EmModel(2)->SetHighEnergyLimit(1.0*GeV);
AddEmModel(2, EmModel(2), FluctModel());
// high energy model
if (!EmModel(3)) SetEmModel(new G4MuBetheBlochModel(),3);
EmModel(3)->SetLowEnergyLimit(1.0*GeV);
EmModel(3)->SetHighEnergyLimit(MaxKinEnergy());
AddEmModel(3, EmModel(3), FluctModel());
ratio = electron_mass_c2/mass;
isInitialised = true;