G4hhIonisation Class Reference

#include <G4hhIonisation.hh>

Inheritance diagram for G4hhIonisation:

G4VEnergyLossProcess G4VContinuousDiscreteProcess G4VProcess

Public Member Functions

 G4hhIonisation (const G4String &name="hhIoni")
virtual ~G4hhIonisation ()
virtual G4bool IsApplicable (const G4ParticleDefinition &p)
virtual G4double MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut)
virtual void PrintInfo ()

Protected Member Functions

virtual void InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *)

Detailed Description

Definition at line 61 of file G4hhIonisation.hh.


Constructor & Destructor Documentation

G4hhIonisation::G4hhIonisation ( const G4String name = "hhIoni"  ) 

Definition at line 64 of file G4hhIonisation.cc.

References fIonisation, G4VProcess::SetProcessSubType(), G4VEnergyLossProcess::SetStepFunction(), and G4VProcess::SetVerboseLevel().

00065   : G4VEnergyLossProcess(name),
00066     theParticle(0),
00067     theBaseParticle(0),
00068     isInitialised(false)
00069 {
00070   SetStepFunction(0.1, 0.1*mm);
00071   SetVerboseLevel(1);
00072   SetProcessSubType(fIonisation);
00073   mass = 0.0;
00074   ratio = 0.0;
00075   flucModel = 0;
00076 }

G4hhIonisation::~G4hhIonisation (  )  [virtual]

Definition at line 80 of file G4hhIonisation.cc.

00081 {}


Member Function Documentation

void G4hhIonisation::InitialiseEnergyLossProcess ( const G4ParticleDefinition ,
const G4ParticleDefinition  
) [protected, virtual]

Implements G4VEnergyLossProcess.

Definition at line 105 of file G4hhIonisation.cc.

References G4VEnergyLossProcess::AddEmModel(), G4Electron::Electron(), G4cout, G4endl, G4lrint(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4VProcess::GetProcessName(), G4LossTableManager::Instance(), G4VEnergyLossProcess::MaxKinEnergy(), G4VEnergyLossProcess::MinKinEnergy(), G4VEnergyLossProcess::SetBaseParticle(), G4VEnergyLossProcess::SetDEDXBinning(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), G4VEnergyLossProcess::SetMaxKinEnergy(), G4VEnergyLossProcess::SetMinKinEnergy(), G4VEnergyLossProcess::SetSecondaryParticle(), and G4VProcess::verboseLevel.

00107 {
00108   if(isInitialised) { return; }
00109 
00110   theParticle = part;
00111   if(bpart) { 
00112     G4cout << "G4hhIonisation::InitialiseEnergyLossProcess WARNING: no "
00113            << "base particle should be defined for the process "
00114            << GetProcessName() << G4endl; 
00115   }
00116   SetBaseParticle(0);
00117   SetSecondaryParticle(G4Electron::Electron());
00118   mass  = theParticle->GetPDGMass();
00119   ratio = electron_mass_c2/mass;
00120   G4double eth = 2*MeV*mass/proton_mass_c2;
00121   flucModel = new G4IonFluctuations();
00122 
00123   G4double emin = std::min(MinKinEnergy(), 0.1*eth);
00124   G4double emax = std::max(MaxKinEnergy(), 100*eth);
00125 
00126   SetMinKinEnergy(emin);
00127   SetMaxKinEnergy(emax);
00128   G4int bin = G4lrint(G4LossTableManager::Instance()->GetNumberOfBinsPerDecade()
00129                       *std::log10(emax/emin));
00130   SetDEDXBinning(bin);
00131 
00132   G4VEmModel* em = 0; 
00133   if(part->GetPDGCharge() > 0.0) { em = new G4BraggNoDeltaModel(); }
00134   else { em = new G4ICRU73NoDeltaModel(); }
00135   em->SetLowEnergyLimit(emin);
00136   em->SetHighEnergyLimit(eth);
00137   AddEmModel(1, em, flucModel);
00138 
00139   em = new G4BetheBlochNoDeltaModel();
00140   em->SetLowEnergyLimit(eth);
00141   em->SetHighEnergyLimit(emax);
00142   AddEmModel(1, em, flucModel);
00143 
00144   if(verboseLevel>1) {
00145     G4cout << "G4hhIonisation is initialised" << G4endl;
00146   }
00147   isInitialised = true;
00148 }

G4bool G4hhIonisation::IsApplicable ( const G4ParticleDefinition p  )  [virtual]

Implements G4VEnergyLossProcess.

Definition at line 85 of file G4hhIonisation.cc.

References G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), and G4ParticleDefinition::IsShortLived().

00086 {
00087   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV &&
00088          !p.IsShortLived());
00089 }

G4double G4hhIonisation::MinPrimaryEnergy ( const G4ParticleDefinition p,
const G4Material ,
G4double  cut 
) [virtual]

Reimplemented from G4VEnergyLossProcess.

Definition at line 93 of file G4hhIonisation.cc.

References G4InuclParticleNames::gam.

00096 {
00097   G4double x = 0.5*cut/electron_mass_c2;
00098   G4double y = electron_mass_c2/mass;
00099   G4double gam = x*y + std::sqrt((1. + x)*(1. + x*y*y));
00100   return mass*(gam - 1.0);
00101 }

void G4hhIonisation::PrintInfo (  )  [virtual]

Implements G4VEnergyLossProcess.

Definition at line 152 of file G4hhIonisation.cc.

References G4cout, and G4endl.

00153 {
00154   G4cout << "      Delta-ray will not be produced; "
00155          << G4endl;
00156 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:13 2013 for Geant4 by  doxygen 1.4.7