2 // ********************************************************************
 
    3 // * License and Disclaimer                                           *
 
    5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
 
    6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
 
    7 // * conditions of the Geant4 Software License,  included in the file *
 
    8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
 
    9 // * include a list of copyright holders.                             *
 
   11 // * Neither the authors of this software system, nor their employing *
 
   12 // * institutes,nor the agencies providing financial support for this *
 
   13 // * work  make  any representation or  warranty, express or implied, *
 
   14 // * regarding  this  software system or assume any liability for its *
 
   15 // * use.  Please see the license in the file  LICENSE  and URL above *
 
   16 // * for the full disclaimer and the limitation of liability.         *
 
   18 // * This  code  implementation is the result of  the  scientific and *
 
   19 // * technical work of the GEANT4 collaboration.                      *
 
   20 // * By using,  copying,  modifying or  distributing the software (or *
 
   21 // * any work based  on the software)  you  agree  to acknowledge its *
 
   22 // * use  in  resulting  scientific  publications,  and indicate your *
 
   23 // * acceptance of all terms of the Geant4 Software license.          *
 
   24 // ********************************************************************
 
   28 // GEANT4 tag $Name: geant4-09-01-ref-00 $
 
   30 // ---------------------------------------------------------------
 
   31 //      GEANT 4 class inlined methods file 
 
   33 //      History: based on object model of
 
   34 //      2nd December 1995, G.Cosmo
 
   35 //      ------------ G4eLowEnergyLoss physics process ------------
 
   36 //                  by Laszlo Urban, 20 March 1997
 
   37 // ***************************************************************
 
   38 // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS.
 
   39 // It calculates the energy loss of e+/e-.
 
   40 // -------------------------------------------------------------
 
   43 // 28-03-02  V.Ivanchenko add fluorescence flag
 
   44 // 21-01-03  V.Ivanchenko cut per region
 
   45 // 18-04-03  V.Ivanchenko finalRange redefinition
 
   47 // ---------------------------------------------------------------
 
   49 inline G4double G4eLowEnergyLoss::GetConstraints(
 
   50                                       const G4DynamicParticle* aParticle,
 
   51                                       const G4MaterialCutsCouple* couple)
 
   54   // returns the Step limit
 
   55   // dRoverRange is the max. allowed relative range loss in one Step
 
   56   // it calculates dEdx and the range as well....
 
   58   const G4ParticleDefinition* ParticleType=aParticle->GetDefinition();
 
   60   Charge = aParticle->GetDefinition()->GetPDGCharge();
 
   61   if(Charge != lastCharge) lastCharge = Charge ;
 
   63   G4double KineticEnergy = aParticle->GetKineticEnergy();
 
   65   fdEdx = G4EnergyLossTables::GetDEDX(ParticleType,KineticEnergy,couple);
 
   67            G4EnergyLossTables::GetRange(ParticleType,KineticEnergy,couple);
 
   69   G4double r = std::min(finalRange, couple->GetProductionCuts()
 
   70                  ->GetProductionCut(idxG4ElectronCut));
 
   73     StepLimit = dRoverRange*fRangeNow + r*(1.0 - dRoverRange)*(2.0 - r/fRangeNow);
 
   74     //randomise this value
 
   75     if (rndmStepFlag) StepLimit = finalRange + (StepLimit-finalRange)*G4UniformRand();
 
   76     if (StepLimit > fRangeNow) StepLimit = fRangeNow;
 
   78   else StepLimit = fRangeNow;
 
   85 inline G4double G4eLowEnergyLoss::GetContinuousStepLimit(
 
   88                                                G4double currentMinimumStep,
 
   93     GetConstraints(track.GetDynamicParticle(),track.GetMaterialCutsCouple());
 
   95   if ((Step>0.0)&&(Step<currentMinimumStep)) currentMinimumStep = Step;
 
  101 inline G4bool G4eLowEnergyLoss::IsApplicable(const G4ParticleDefinition&
 
  104   return(   (&particle == G4Electron::Electron())
 
  105            ||(&particle == G4Positron::Positron()) );
 
  108 inline void G4eLowEnergyLoss::ActivateFluorescence(G4bool val)
 
  113 inline G4bool G4eLowEnergyLoss::Fluorescence() const