G4alphaIonisation Class Reference

#include <G4alphaIonisation.hh>

Inheritance diagram for G4alphaIonisation:

G4VEnergyLossProcess G4VContinuousDiscreteProcess G4VProcess

Public Member Functions

 G4alphaIonisation (const G4String &name="alphaIoni")
virtual ~G4alphaIonisation ()
virtual G4bool IsApplicable (const G4ParticleDefinition &p)
virtual void PrintInfo ()

Protected Member Functions

virtual void InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *)
virtual G4double MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut)
G4double BetheBlochEnergyThreshold ()

Detailed Description

Definition at line 59 of file G4alphaIonisation.hh.


Constructor & Destructor Documentation

G4alphaIonisation::G4alphaIonisation ( const G4String name = "alphaIoni"  ) 

Definition at line 65 of file G4alphaIonisation.cc.

References fIonisation, G4Exception(), JustWarning, G4VEnergyLossProcess::SetLinearLossLimit(), G4VProcess::SetProcessSubType(), and G4VEnergyLossProcess::SetStepFunction().

00066   : G4VEnergyLossProcess(name),
00067     theParticle(0),
00068     isInitialised(false)
00069 {
00070   G4Exception("G4alphaIonisation::G4alphaIonisation","em0007",JustWarning,
00071               " The process is not ready for use - incorrect results are expected");
00072   SetLinearLossLimit(0.02);
00073   SetStepFunction(0.2, 0.01*mm);
00074   //  SetIntegral(true);
00075   SetProcessSubType(fIonisation);
00076   //  SetVerboseLevel(1);
00077   mass = 0.0;
00078   ratio = 0.0;
00079   eth = 8*MeV;
00080 }

G4alphaIonisation::~G4alphaIonisation (  )  [virtual]

Definition at line 84 of file G4alphaIonisation.cc.

00085 {}


Member Function Documentation

G4double G4alphaIonisation::BetheBlochEnergyThreshold (  )  [inline, protected]

Definition at line 100 of file G4alphaIonisation.hh.

00101 {
00102   return eth;
00103 }

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

Implements G4VEnergyLossProcess.

Definition at line 108 of file G4alphaIonisation.cc.

References G4VEnergyLossProcess::AddEmModel(), G4Alpha::Alpha(), G4Electron::Electron(), G4VEnergyLossProcess::EmModel(), G4VEnergyLossProcess::FluctModel(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4VEmModel::HighEnergyLimit(), G4VEnergyLossProcess::MaxKinEnergy(), G4VEnergyLossProcess::MinKinEnergy(), G4VEnergyLossProcess::SetBaseParticle(), G4VEnergyLossProcess::SetEmModel(), G4VEnergyLossProcess::SetFluctModel(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), and G4VEnergyLossProcess::SetSecondaryParticle().

00111 {
00112   if(!isInitialised) {
00113 
00114     theParticle = part;
00115     G4String pname = part->GetParticleName();
00116 
00117     // define base particle
00118     const G4ParticleDefinition* theBaseParticle = 0;
00119     if(bpart == 0) { 
00120       if(pname != "alpha") { theBaseParticle = G4Alpha::Alpha(); }
00121     } else { theBaseParticle = bpart; }
00122 
00123     mass  = part->GetPDGMass();
00124     ratio = electron_mass_c2/mass;
00125 
00126     SetBaseParticle(theBaseParticle);
00127     SetSecondaryParticle(G4Electron::Electron());
00128 
00129     if (!EmModel(1)) { SetEmModel(new G4BraggIonModel(), 1); }
00130     EmModel(1)->SetLowEnergyLimit(MinKinEnergy());
00131 
00132     // model limit defined for alpha
00133     eth = (EmModel(1)->HighEnergyLimit())*mass/proton_mass_c2;
00134     EmModel(1)->SetHighEnergyLimit(eth);
00135 
00136     if (!FluctModel()) { SetFluctModel(new G4UniversalFluctuation()); }
00137     AddEmModel(1, EmModel(1), new G4IonFluctuations());
00138 
00139     if (!EmModel(2)) { SetEmModel(new G4BetheBlochModel(),2); }  
00140     EmModel(2)->SetLowEnergyLimit(eth);
00141     EmModel(2)->SetHighEnergyLimit(MaxKinEnergy());
00142     AddEmModel(2, EmModel(2), FluctModel());    
00143 
00144     isInitialised = true;
00145   }
00146 }

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

Implements G4VEnergyLossProcess.

Definition at line 89 of file G4alphaIonisation.cc.

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

00090 {
00091   return (!p.IsShortLived() &&
00092           std::fabs(p.GetPDGCharge()/CLHEP::eplus - 2) < 0.01);
00093 }

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

Reimplemented from G4VEnergyLossProcess.

Definition at line 97 of file G4alphaIonisation.cc.

References G4InuclParticleNames::gam.

00100 {
00101   G4double x = 0.5*cut/electron_mass_c2;
00102   G4double gam = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
00103   return mass*(gam - 1.0);
00104 }

void G4alphaIonisation::PrintInfo (  )  [virtual]

Implements G4VEnergyLossProcess.

Definition at line 150 of file G4alphaIonisation.cc.

00151 {}


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