Geant4-11
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
G4hImpactIonisation Class Reference

#include <G4hImpactIonisation.hh>

Inheritance diagram for G4hImpactIonisation:
G4hRDEnergyLoss G4VContinuousDiscreteProcess G4VProcess

Public Member Functions

void ActivateAugerElectronProduction (G4bool val)
 
G4VParticleChangeAlongStepDoIt (const G4Track &trackData, const G4Step &stepData)
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety, G4GPILSelection *selection)
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
void BuildPhysicsTable (const G4ParticleDefinition &aParticleType)
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
G4double ComputeDEDX (const G4ParticleDefinition *aParticle, const G4MaterialCutsCouple *couple, G4double kineticEnergy)
 
virtual void DumpInfo () const
 
virtual void EndTracking ()
 
 G4hImpactIonisation (const G4String &processName="hImpactIoni")
 
G4double GetContinuousStepLimit (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety)
 
G4double GetCurrentInteractionLength () const
 
const G4VProcessGetMasterProcess () const
 
G4double GetMeanFreePath (const G4Track &track, G4double previousStepSize, enum G4ForceCondition *condition)
 
G4double GetNumberOfInteractionLengthLeft () const
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
G4double GetPILfactor () const
 
virtual const G4ProcessManagerGetProcessManager ()
 
const G4StringGetProcessName () const
 
G4int GetProcessSubType () const
 
G4ProcessType GetProcessType () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4int GetVerboseLevel () const
 
G4bool isAlongStepDoItIsEnabled () const
 
G4bool IsApplicable (const G4ParticleDefinition &)
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
G4bool operator!= (const G4VProcess &right) const
 
G4bool operator== (const G4VProcess &right) const
 
G4VParticleChangePostStepDoIt (const G4Track &track, const G4Step &Step)
 
virtual G4double PostStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 
void PrintInfoDefinition () const
 
virtual void ProcessDescription (std::ostream &outfile) const
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
void SetBarkasOff ()
 
void SetBarkasOn ()
 
void SetCutForAugerElectrons (G4double cut)
 
void SetCutForSecondaryPhotons (G4double cut)
 
void SetElectronicStoppingPowerModel (const G4ParticleDefinition *aParticle, const G4String &dedxTable)
 
void SetHighEnergyForAntiProtonParametrisation (G4double energy)
 
void SetHighEnergyForProtonParametrisation (G4double energy)
 
void SetLowEnergyForAntiProtonParametrisation (G4double energy)
 
void SetLowEnergyForProtonParametrisation (G4double energy)
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
void SetNuclearStoppingOff ()
 
void SetNuclearStoppingOn ()
 
void SetNuclearStoppingPowerModel (const G4String &dedxTable)
 
void SetPILfactor (G4double value)
 
void SetPixe (const G4bool)
 
void SetPixeCrossSectionK (const G4String &name)
 
void SetPixeCrossSectionL (const G4String &name)
 
void SetPixeCrossSectionM (const G4String &name)
 
void SetPixeProjectileMaxEnergy (G4double energy)
 
void SetPixeProjectileMinEnergy (G4double energy)
 
virtual void SetProcessManager (const G4ProcessManager *)
 
void SetProcessSubType (G4int)
 
void SetProcessType (G4ProcessType)
 
void SetVerboseLevel (G4int value)
 
virtual void StartTracking (G4Track *)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
 ~G4hImpactIonisation ()
 

Static Public Member Functions

static G4int GetNumberOfProcesses ()
 
static const G4StringGetProcessTypeName (G4ProcessType)
 
static void MinusNumberOfProcesses ()
 
static void PlusNumberOfProcesses ()
 
static void SetdRoverRange (G4double value)
 
static void SetEnlossFluc (G4bool value)
 
static void SetNumberOfProcesses (G4int number)
 
static void SetRndmStep (G4bool value)
 
static void SetStepFunction (G4double c1, G4double c2)
 

Protected Member Functions

void ClearNumberOfInteractionLengthLeft ()
 
G4bool CutsWhereModified ()
 
G4GPILSelection GetGPILSelection () const
 
void SetGPILSelection (G4GPILSelection selection)
 
void SubtractNumberOfInteractionLengthLeft (G4double prevStepSize)
 

Static Protected Member Functions

static void BuildDEDXTable (const G4ParticleDefinition &aParticleType)
 

Protected Attributes

G4ParticleChange aParticleChange
 
const G4ProcessManageraProcessManager = nullptr
 
G4double currentInteractionLength = -1.0
 
G4bool enableAlongStepDoIt = true
 
G4bool enableAtRestDoIt = true
 
G4bool enablePostStepDoIt = true
 
G4double linLossLimit
 
const G4double MaxExcitationNumber
 
G4double MinKineticEnergy
 
const long nmaxCont1
 
const long nmaxCont2
 
const long nmaxDirectFluct
 
G4VParticleChangepParticleChange = nullptr
 
const G4double probLimFluct
 
G4double theInitialNumberOfInteractionLength = -1.0
 
G4PhysicsTabletheLossTable
 
G4double theNumberOfInteractionLengthLeft = -1.0
 
G4String thePhysicsTableFileName
 
G4double thePILfactor = 1.0
 
G4String theProcessName
 
G4int theProcessSubType = -1
 
G4ProcessType theProcessType = fNotDefined
 
G4int verboseLevel = 0
 

Static Protected Attributes

static G4ThreadLocal G4double c1lim = 0.20
 
static G4ThreadLocal G4double c2lim = 0.32
 
static G4ThreadLocal G4double c3lim = -0.032
 
static G4ThreadLocal G4double Charge
 
static G4ThreadLocal G4int CounterOfpbarProcess = 0
 
static G4ThreadLocal G4int CounterOfpProcess = 0
 
static G4ThreadLocal G4double dRoverRange = 0.20
 
static G4ThreadLocal G4bool EnlossFlucFlag = true
 
static G4ThreadLocal G4double finalRange = 0.2
 
static G4ThreadLocal G4double HighestKineticEnergy = 1.e5
 
static G4ThreadLocal G4double LOGRTable
 
static G4ThreadLocal G4double LowestKineticEnergy = 1e-05
 
static G4ThreadLocal G4double ParticleMass
 
static G4ThreadLocal G4double pbartableElectronCutInRange = 0.0
 
static G4ThreadLocal G4double ptableElectronCutInRange = 0.0
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfpbarProcess = 0
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfpProcess = 0
 
static G4ThreadLocal G4bool rndmStepFlag = false
 
static G4ThreadLocal G4double RTable
 
static G4ThreadLocal G4PhysicsTabletheDEDXpbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheDEDXpTable = 0
 
static G4ThreadLocal G4PhysicsTabletheInverseRangepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheInverseRangepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheLabTimepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheLabTimepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheProperTimepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheProperTimepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangepTable = 0
 
static G4ThreadLocal G4int TotBin = 360
 

Private Member Functions

G4double AntiProtonParametrisedDEDX (const G4MaterialCutsCouple *couple, G4double kineticEnergy) const
 
G4double BarkasTerm (const G4Material *material, G4double kineticEnergy) const
 
G4double BlochTerm (const G4Material *material, G4double kineticEnergy, G4double cSquare) const
 
void BuildLambdaTable (const G4ParticleDefinition &aParticleType)
 
void BuildLossTable (const G4ParticleDefinition &aParticleType)
 
G4double DeltaRaysEnergy (const G4MaterialCutsCouple *couple, G4double kineticEnergy, G4double particleMass) const
 
G4double ElectronicLossFluctuation (const G4DynamicParticle *particle, const G4MaterialCutsCouple *material, G4double meanLoss, G4double step) const
 
 G4hImpactIonisation (const G4hImpactIonisation &)
 
G4double GetConstraints (const G4DynamicParticle *particle, const G4MaterialCutsCouple *couple)
 
void InitializeMe ()
 
void InitializeParametrisation ()
 
G4double MicroscopicCrossSection (const G4ParticleDefinition &aParticleType, G4double kineticEnergy, G4double atomicNumber, G4double deltaCutInEnergy) const
 
G4hImpactIonisationoperator= (const G4hImpactIonisation &right)
 
G4double ProtonParametrisedDEDX (const G4MaterialCutsCouple *couple, G4double kineticEnergy) const
 
void SetAntiProtonElectronicStoppingPowerModel (const G4String &dedxTable)
 
void SetProtonElectronicStoppingPowerModel (const G4String &dedxTable)
 

Static Private Member Functions

static void BuildInverseRangeTable (const G4ParticleDefinition &aParticleType)
 
static void BuildLabTimeVector (G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static void BuildProperTimeVector (G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static void BuildRangeCoeffATable (const G4ParticleDefinition &aParticleType)
 
static void BuildRangeCoeffBTable (const G4ParticleDefinition &aParticleType)
 
static void BuildRangeCoeffCTable (const G4ParticleDefinition &aParticleType)
 
static void BuildRangeTable (const G4ParticleDefinition &aParticleType)
 
static void BuildRangeVector (G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static void BuildTimeTables (const G4ParticleDefinition &aParticleType)
 
static void InvertRangeVector (G4int materialIndex, G4PhysicsLogVector *rangeVector)
 
static G4double LabTimeIntLog (G4PhysicsVector *physicsVector, G4int nbin)
 
static G4double ProperTimeIntLog (G4PhysicsVector *physicsVector, G4int nbin)
 
static G4double RangeIntLin (G4PhysicsVector *physicsVector, G4int nbin)
 
static G4double RangeIntLog (G4PhysicsVector *physicsVector, G4int nbin)
 

Private Attributes

G4double antiprotonHighEnergy
 
G4double antiprotonLowEnergy
 
G4VLowEnergyModelantiprotonModel
 
G4String antiprotonTable
 
G4AtomicDeexcitation atomicDeexcitation
 
G4VLowEnergyModelbetheBlochModel
 
G4double charge
 
G4double chargeSquare
 
G4DataVector cutForDelta
 
G4DataVector cutForGamma
 
G4double eMaxPixe
 
G4double eMinPixe
 
G4double fBarkas
 
G4double fdEdx
 
G4ProcessTablefProcessTable = nullptr
 
G4double fRangeNow
 
G4double initialMass
 
G4VProcessmasterProcessShadow = nullptr
 
G4double minElectronEnergy
 
G4double minGammaEnergy
 
G4String modelK
 
G4String modelL
 
G4String modelM
 
G4bool nStopping
 
const G4double paramStepLimit
 
G4PixeCrossSectionHandlerpixeCrossSectionHandler
 
G4bool pixeIsActive
 
G4double protonHighEnergy
 
G4double protonLowEnergy
 
G4VLowEnergyModelprotonModel
 
G4String protonTable
 
G4bool theBarkas
 
G4VLowEnergyModeltheIonChuFluctuationModel
 
G4VLowEnergyModeltheIonEffChargeModel
 
G4VLowEnergyModeltheIonYangFluctuationModel
 
G4PhysicsTabletheMeanFreePathTable
 
G4VLowEnergyModeltheNuclearStoppingModel
 
G4String theNuclearTable
 
G4GPILSelection valueGPILSelection = CandidateForSelection
 

Static Private Attributes

static G4ThreadLocal G4int CounterOfProcess = 0
 
static G4ThreadLocal G4double ltauhigh
 
static G4ThreadLocal G4double ltaulow
 
static G4ThreadLocal G4double Mass
 
static G4ThreadLocal G4int NumberOfProcesses = 1
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfProcess = 0
 
static G4ThreadLocal G4double tauhigh
 
static G4ThreadLocal G4double taulow
 
static G4ThreadLocal G4PhysicsTabletheDEDXTable = 0
 
static G4ThreadLocal G4PhysicsTabletheInverseRangeTable = 0
 
static G4ThreadLocal G4PhysicsTabletheLabTimeTable = 0
 
static G4ThreadLocal G4PhysicsTablethepbarRangeCoeffATable = 0
 
static G4ThreadLocal G4PhysicsTablethepbarRangeCoeffBTable = 0
 
static G4ThreadLocal G4PhysicsTablethepbarRangeCoeffCTable = 0
 
static G4ThreadLocal G4PhysicsTablethepRangeCoeffATable = 0
 
static G4ThreadLocal G4PhysicsTablethepRangeCoeffBTable = 0
 
static G4ThreadLocal G4PhysicsTablethepRangeCoeffCTable = 0
 
static G4ThreadLocal G4PhysicsTabletheProperTimeTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangeCoeffATable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangeCoeffBTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangeCoeffCTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangeTable = 0
 

Detailed Description

Definition at line 74 of file G4hImpactIonisation.hh.

Constructor & Destructor Documentation

◆ G4hImpactIonisation() [1/2]

G4hImpactIonisation::G4hImpactIonisation ( const G4String processName = "hImpactIoni")

Definition at line 82 of file G4hImpactIonisation.cc.

83 : G4hRDEnergyLoss(processName),
85 protonModel(0),
91 protonTable("ICRU_R49p"),
92 antiprotonTable("ICRU_R49p"),
93 theNuclearTable("ICRU_R49"),
94 nStopping(true),
95 theBarkas(true),
97 paramStepLimit (0.005),
99{
100 InitializeMe();
101}
G4VLowEnergyModel * theIonChuFluctuationModel
G4VLowEnergyModel * theIonYangFluctuationModel
G4VLowEnergyModel * theNuclearStoppingModel
G4VLowEnergyModel * antiprotonModel
G4VLowEnergyModel * theIonEffChargeModel
G4PhysicsTable * theMeanFreePathTable
G4PixeCrossSectionHandler * pixeCrossSectionHandler
G4VLowEnergyModel * protonModel
const G4double paramStepLimit
G4VLowEnergyModel * betheBlochModel
G4hRDEnergyLoss(const G4String &)

References InitializeMe().

◆ ~G4hImpactIonisation()

G4hImpactIonisation::~G4hImpactIonisation ( )

◆ G4hImpactIonisation() [2/2]

G4hImpactIonisation::G4hImpactIonisation ( const G4hImpactIonisation )
private

Member Function Documentation

◆ ActivateAugerElectronProduction()

void G4hImpactIonisation::ActivateAugerElectronProduction ( G4bool  val)

Definition at line 1706 of file G4hImpactIonisation.cc.

1707{
1709}
void ActivateAugerElectronProduction(G4bool val)
Set threshold energy for Auger electron production.
G4AtomicDeexcitation atomicDeexcitation

References G4AtomicDeexcitation::ActivateAugerElectronProduction(), and atomicDeexcitation.

◆ AlongStepDoIt()

G4VParticleChange * G4hImpactIonisation::AlongStepDoIt ( const G4Track trackData,
const G4Step stepData 
)
virtual

Reimplemented from G4VContinuousDiscreteProcess.

Definition at line 717 of file G4hImpactIonisation.cc.

719{
720 // compute the energy loss after a step
723 G4double finalT = 0.;
724
726
727 const G4MaterialCutsCouple* couple = track.GetMaterialCutsCouple();
728 const G4Material* material = couple->GetMaterial();
729
730 // get the actual (true) Step length from step
731 const G4double stepLength = step.GetStepLength() ;
732
733 const G4DynamicParticle* particle = track.GetDynamicParticle() ;
734
735 G4double kineticEnergy = particle->GetKineticEnergy() ;
736 G4double massRatio = proton_mass_c2/(particle->GetMass()) ;
737 G4double tScaled = kineticEnergy * massRatio ;
738 G4double eLoss = 0.0 ;
739 G4double nLoss = 0.0 ;
740
741
742 // very small particle energy
743 if (kineticEnergy < MinKineticEnergy)
744 {
745 eLoss = kineticEnergy ;
746 // particle energy outside tabulated energy range
747 }
748
749 else if( kineticEnergy > HighestKineticEnergy)
750 {
751 eLoss = stepLength * fdEdx ;
752 // big step
753 }
754 else if (stepLength >= fRangeNow )
755 {
756 eLoss = kineticEnergy ;
757
758 // tabulated range
759 }
760 else
761 {
762 // step longer than linear step limit
763 if(stepLength > linLossLimit * fRangeNow)
764 {
765 G4double rScaled = fRangeNow * massRatio * chargeSquare ;
766 G4double sScaled = stepLength * massRatio * chargeSquare ;
767
768 if(charge > 0.0)
769 {
772
773 }
774 else
775 {
776 // Antiproton
777 eLoss = G4EnergyLossTables::GetPreciseEnergyFromRange(antiproton,rScaled,couple) -
778 G4EnergyLossTables::GetPreciseEnergyFromRange(antiproton,rScaled-sScaled,couple) ;
779 }
780 eLoss /= massRatio ;
781
782 // Barkas correction at big step
783 eLoss += fBarkas * stepLength;
784
785 // step shorter than linear step limit
786 }
787 else
788 {
789 eLoss = stepLength *fdEdx ;
790 }
791 if (nStopping && tScaled < protonHighEnergy)
792 {
793 nLoss = (theNuclearStoppingModel->TheValue(particle, material)) * stepLength;
794 }
795 }
796
797 if (eLoss < 0.0) eLoss = 0.0;
798
799 finalT = kineticEnergy - eLoss - nLoss;
800
801 if ( EnlossFlucFlag && 0.0 < eLoss && finalT > MinKineticEnergy)
802 {
803
804 // now the electron loss with fluctuation
805 eLoss = ElectronicLossFluctuation(particle, couple, eLoss, stepLength) ;
806 if (eLoss < 0.0) eLoss = 0.0;
807 finalT = kineticEnergy - eLoss - nLoss;
808 }
809
810 // stop particle if the kinetic energy <= MinKineticEnergy
811 if (finalT*massRatio <= MinKineticEnergy )
812 {
813
814 finalT = 0.0;
817 else
819 }
820
822 eLoss = kineticEnergy-finalT;
823
825 return &aParticleChange ;
826}
@ fStopAndKill
@ fStopButAlive
double G4double
Definition: G4Types.hh:83
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:92
G4double GetMass() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
static G4double GetPreciseEnergyFromRange(const G4ParticleDefinition *aParticle, G4double range, const G4Material *aMaterial)
const G4Material * GetMaterial() const
void ProposeEnergy(G4double finalEnergy)
virtual void Initialize(const G4Track &)
G4ProcessManager * GetProcessManager() const
G4ProcessVector * GetAtRestProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
std::size_t size() const
static G4Proton * Proton()
Definition: G4Proton.cc:92
virtual G4double TheValue(const G4DynamicParticle *particle, const G4Material *material)=0
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4ParticleChange aParticleChange
Definition: G4VProcess.hh:327
G4double ElectronicLossFluctuation(const G4DynamicParticle *particle, const G4MaterialCutsCouple *material, G4double meanLoss, G4double step) const
G4double MinKineticEnergy
static G4ThreadLocal G4double HighestKineticEnergy
static G4ThreadLocal G4bool EnlossFlucFlag
string material
Definition: eplot.py:19
float proton_mass_c2
Definition: hepunit.py:274

References G4AntiProton::AntiProton(), G4VProcess::aParticleChange, charge, chargeSquare, ElectronicLossFluctuation(), G4hRDEnergyLoss::EnlossFlucFlag, fBarkas, fdEdx, fRangeNow, fStopAndKill, fStopButAlive, G4ProcessManager::GetAtRestProcessVector(), G4DynamicParticle::GetDefinition(), G4Track::GetDynamicParticle(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMass(), G4MaterialCutsCouple::GetMaterial(), G4Track::GetMaterialCutsCouple(), G4EnergyLossTables::GetPreciseEnergyFromRange(), G4ParticleDefinition::GetProcessManager(), G4Step::GetStepLength(), G4hRDEnergyLoss::HighestKineticEnergy, G4ParticleChange::Initialize(), G4hRDEnergyLoss::linLossLimit, eplot::material, G4hRDEnergyLoss::MinKineticEnergy, nStopping, G4ParticleChange::ProposeEnergy(), G4VParticleChange::ProposeLocalEnergyDeposit(), G4VParticleChange::ProposeTrackStatus(), G4Proton::Proton(), G4InuclParticleNames::proton, source.hepunit::proton_mass_c2, protonHighEnergy, G4ProcessVector::size(), theNuclearStoppingModel, and G4VLowEnergyModel::TheValue().

◆ AlongStepGetPhysicalInteractionLength()

G4double G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double currentSafety,
G4GPILSelection selection 
)
virtualinherited

Implements G4VProcess.

Reimplemented in G4VMultipleScattering, and G4VEnergyLossProcess.

Definition at line 143 of file G4VContinuousDiscreteProcess.cc.

149{
150 // GPILSelection is set to defaule value of CandidateForSelection
152
153 // get Step limit proposed by the process
154 G4double steplength = GetContinuousStepLimit(track,previousStepSize,currentMinimumStep,currentSafety);
155
156 // set return value for G4GPILSelection
157 *selection = valueGPILSelection;
158
159#ifdef G4VERBOSE
160 if (verboseLevel>1)
161 {
162 G4cout << "G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength() - ";
163 G4cout << "[ " << GetProcessName() << "]" << G4endl;
164 track.GetDynamicParticle()->DumpInfo();
165 G4cout << " in Material " << track.GetMaterial()->GetName() << G4endl;
166 G4cout << "IntractionLength= " << steplength/cm <<"[cm] " << G4endl;
167 }
168#endif
169 return steplength;
170}
@ CandidateForSelection
static constexpr double cm
Definition: G4SIunits.hh:99
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void DumpInfo(G4int mode=0) const
const G4String & GetName() const
Definition: G4Material.hh:173
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
virtual G4double GetContinuousStepLimit(const G4Track &aTrack, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety)=0
G4int verboseLevel
Definition: G4VProcess.hh:356
const G4String & GetProcessName() const
Definition: G4VProcess.hh:382

References CandidateForSelection, cm, G4DynamicParticle::DumpInfo(), G4cout, G4endl, G4VContinuousDiscreteProcess::GetContinuousStepLimit(), G4Track::GetDynamicParticle(), G4Track::GetMaterial(), G4Material::GetName(), G4VProcess::GetProcessName(), G4VContinuousDiscreteProcess::valueGPILSelection, and G4VProcess::verboseLevel.

◆ AlongStepGPIL()

G4double G4VProcess::AlongStepGPIL ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double proposedSafety,
G4GPILSelection selection 
)
inlineinherited

Definition at line 461 of file G4VProcess.hh.

466{
467 return AlongStepGetPhysicalInteractionLength(track, previousStepSize,
468 currentMinimumStep, proposedSafety, selection);
469}
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)=0

References G4VProcess::AlongStepGetPhysicalInteractionLength().

Referenced by G4SteppingManager::DefinePhysicalStepLength(), and G4ITStepProcessor::DoDefinePhysicalStepLength().

◆ AntiProtonParametrisedDEDX()

G4double G4hImpactIonisation::AntiProtonParametrisedDEDX ( const G4MaterialCutsCouple couple,
G4double  kineticEnergy 
) const
private

Definition at line 866 of file G4hImpactIonisation.cc.

868{
869 const G4Material* material = couple->GetMaterial();
871 G4double eLoss = 0.0 ;
872
873 // Antiproton model is used
874 if(antiprotonModel->IsInCharge(antiproton,material)) {
875 if(kineticEnergy < antiprotonLowEnergy) {
877 * std::sqrt(kineticEnergy/antiprotonLowEnergy) ;
878
879 // Parametrisation
880 } else {
881 eLoss = antiprotonModel->TheValue(antiproton,material,
882 kineticEnergy);
883 }
884
885 // The proton model is used + Barkas correction
886 } else {
887 if(kineticEnergy < protonLowEnergy) {
889 * std::sqrt(kineticEnergy/protonLowEnergy) ;
890
891 // Parametrisation
892 } else {
894 kineticEnergy);
895 }
896 //if(theBarkas) eLoss -= 2.0*BarkasTerm(material, kineticEnergy);
897 }
898
899 // Delta rays energy
900 eLoss -= DeltaRaysEnergy(couple,kineticEnergy,proton_mass_c2) ;
901
902 if(verboseLevel > 2) {
903 G4cout << "pbar E(MeV)= " << kineticEnergy/MeV
904 << " dE/dx(MeV/mm)= " << eLoss*mm/MeV
905 << " for " << material->GetName()
906 << " model: " << protonModel << G4endl;
907 }
908
909 if(eLoss < 0.0) eLoss = 0.0 ;
910
911 return eLoss ;
912}
static constexpr double mm
Definition: G4SIunits.hh:95
static constexpr double MeV
Definition: G4SIunits.hh:200
virtual G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const =0
G4double DeltaRaysEnergy(const G4MaterialCutsCouple *couple, G4double kineticEnergy, G4double particleMass) const

References G4AntiProton::AntiProton(), antiprotonLowEnergy, antiprotonModel, DeltaRaysEnergy(), G4cout, G4endl, G4MaterialCutsCouple::GetMaterial(), G4VLowEnergyModel::IsInCharge(), eplot::material, MeV, mm, G4Proton::Proton(), source.hepunit::proton_mass_c2, protonLowEnergy, protonModel, G4VLowEnergyModel::TheValue(), and G4VProcess::verboseLevel.

Referenced by BuildLossTable(), and ComputeDEDX().

◆ AtRestDoIt()

virtual G4VParticleChange * G4VContinuousDiscreteProcess::AtRestDoIt ( const G4Track ,
const G4Step  
)
inlinevirtualinherited

Implements G4VProcess.

Definition at line 87 of file G4VContinuousDiscreteProcess.hh.

90 { return 0; }

◆ AtRestGetPhysicalInteractionLength()

virtual G4double G4VContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength ( const G4Track ,
G4ForceCondition  
)
inlinevirtualinherited

Implements G4VProcess.

Definition at line 81 of file G4VContinuousDiscreteProcess.hh.

84 { return -1.0; }

◆ AtRestGPIL()

G4double G4VProcess::AtRestGPIL ( const G4Track track,
G4ForceCondition condition 
)
inlineinherited

Definition at line 472 of file G4VProcess.hh.

474{
476}
G4double condition(const G4ErrorSymMatrix &m)
G4double thePILfactor
Definition: G4VProcess.hh:352
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)=0

References G4VProcess::AtRestGetPhysicalInteractionLength(), condition(), and G4VProcess::thePILfactor.

Referenced by G4ITStepProcessor::GetAtRestIL(), and G4SteppingManager::InvokeAtRestDoItProcs().

◆ BarkasTerm()

G4double G4hImpactIonisation::BarkasTerm ( const G4Material material,
G4double  kineticEnergy 
) const
private

Definition at line 1305 of file G4hImpactIonisation.cc.

1313{
1314 static G4ThreadLocal G4double FTable[47][2] = {
1315 { 0.02, 21.5},
1316 { 0.03, 20.0},
1317 { 0.04, 18.0},
1318 { 0.05, 15.6},
1319 { 0.06, 15.0},
1320 { 0.07, 14.0},
1321 { 0.08, 13.5},
1322 { 0.09, 13.},
1323 { 0.1, 12.2},
1324 { 0.2, 9.25},
1325 { 0.3, 7.0},
1326 { 0.4, 6.0},
1327 { 0.5, 4.5},
1328 { 0.6, 3.5},
1329 { 0.7, 3.0},
1330 { 0.8, 2.5},
1331 { 0.9, 2.0},
1332 { 1.0, 1.7},
1333 { 1.2, 1.2},
1334 { 1.3, 1.0},
1335 { 1.4, 0.86},
1336 { 1.5, 0.7},
1337 { 1.6, 0.61},
1338 { 1.7, 0.52},
1339 { 1.8, 0.5},
1340 { 1.9, 0.43},
1341 { 2.0, 0.42},
1342 { 2.1, 0.3},
1343 { 2.4, 0.2},
1344 { 3.0, 0.13},
1345 { 3.08, 0.1},
1346 { 3.1, 0.09},
1347 { 3.3, 0.08},
1348 { 3.5, 0.07},
1349 { 3.8, 0.06},
1350 { 4.0, 0.051},
1351 { 4.1, 0.04},
1352 { 4.8, 0.03},
1353 { 5.0, 0.024},
1354 { 5.1, 0.02},
1355 { 6.0, 0.013},
1356 { 6.5, 0.01},
1357 { 7.0, 0.009},
1358 { 7.1, 0.008},
1359 { 8.0, 0.006},
1360 { 9.0, 0.0032},
1361 { 10.0, 0.0025} };
1362
1363 // Information on particle and material
1364 G4double kinE = kineticEnergy ;
1365 if(0.5*MeV > kinE) kinE = 0.5*MeV ;
1366 G4double gamma = 1.0 + kinE / proton_mass_c2 ;
1367 G4double beta2 = 1.0 - 1.0/(gamma*gamma) ;
1368 if(0.0 >= beta2) return 0.0;
1369
1370 G4double BTerm = 0.0;
1371 //G4double AMaterial = 0.0;
1372 G4double ZMaterial = 0.0;
1373 const G4ElementVector* theElementVector = material->GetElementVector();
1374 G4int numberOfElements = material->GetNumberOfElements();
1375
1376 for (G4int i = 0; i<numberOfElements; i++) {
1377
1378 //AMaterial = (*theElementVector)[i]->GetA()*mole/g;
1379 ZMaterial = (*theElementVector)[i]->GetZ();
1380
1381 G4double X = 137.0 * 137.0 * beta2 / ZMaterial;
1382
1383 // Variables to compute L_1
1384 G4double Eta0Chi = 0.8;
1385 G4double EtaChi = Eta0Chi * ( 1.0 + 6.02*std::pow( ZMaterial,-1.19 ) );
1386 G4double W = ( EtaChi * std::pow( ZMaterial,1.0/6.0 ) ) / std::sqrt(X);
1387 G4double FunctionOfW = FTable[46][1]*FTable[46][0]/W ;
1388
1389 for(G4int j=0; j<47; j++) {
1390
1391 if( W < FTable[j][0] ) {
1392
1393 if(0 == j) {
1394 FunctionOfW = FTable[0][1] ;
1395
1396 } else {
1397 FunctionOfW = (FTable[j][1] - FTable[j-1][1]) * (W - FTable[j-1][0])
1398 / (FTable[j][0] - FTable[j-1][0])
1399 + FTable[j-1][1] ;
1400 }
1401
1402 break;
1403 }
1404
1405 }
1406
1407 BTerm += FunctionOfW /( std::sqrt(ZMaterial * X) * X);
1408 }
1409
1410 BTerm *= twopi_mc2_rcl2 * (material->GetElectronDensity()) / beta2 ;
1411
1412 return BTerm;
1413}
std::vector< const G4Element * > G4ElementVector
int G4int
Definition: G4Types.hh:85
int twopi_mc2_rcl2
Definition: hepunit.py:293
#define G4ThreadLocal
Definition: tls.hh:77

References G4ThreadLocal, eplot::material, MeV, source.hepunit::proton_mass_c2, and source.hepunit::twopi_mc2_rcl2.

Referenced by GetConstraints().

◆ BlochTerm()

G4double G4hImpactIonisation::BlochTerm ( const G4Material material,
G4double  kineticEnergy,
G4double  cSquare 
) const
private

Definition at line 1417 of file G4hImpactIonisation.cc.

1426{
1427 G4double eLoss = 0.0 ;
1428 G4double gamma = 1.0 + kineticEnergy / proton_mass_c2 ;
1429 G4double beta2 = 1.0 - 1.0/(gamma*gamma) ;
1430 G4double y = cSquare / (137.0*137.0*beta2) ;
1431
1432 if(y < 0.05) {
1433 eLoss = 1.202 ;
1434
1435 } else {
1436 eLoss = 1.0 / (1.0 + y) ;
1437 G4double de = eLoss ;
1438
1439 for(G4int i=2; de>eLoss*0.01; i++) {
1440 de = 1.0/( i * (i*i + y)) ;
1441 eLoss += de ;
1442 }
1443 }
1444 eLoss *= -1.0 * y * cSquare * twopi_mc2_rcl2 *
1445 (material->GetElectronDensity()) / beta2 ;
1446
1447 return eLoss;
1448}

References eplot::material, source.hepunit::proton_mass_c2, and source.hepunit::twopi_mc2_rcl2.

Referenced by GetConstraints().

◆ BuildDEDXTable()

void G4hRDEnergyLoss::BuildDEDXTable ( const G4ParticleDefinition aParticleType)
staticprotectedinherited

Definition at line 250 of file G4hRDEnergyLoss.cc.

251{
252 // calculate data members TotBin,LOGRTable,RTable first
253
257
258 const G4ProductionCutsTable* theCoupleTable=
260 size_t numOfCouples = theCoupleTable->GetTableSize();
261
262 // create/fill proton or antiproton tables depending on the charge
263 Charge = aParticleType.GetPDGCharge()/eplus;
264 ParticleMass = aParticleType.GetPDGMass() ;
265
268
269 if( ((Charge>0.) && (theDEDXTable==0)) ||
270 ((Charge<0.) && (theDEDXTable==0))
271 )
272 {
273
274 // Build energy loss table as a sum of the energy loss due to the
275 // different processes.
276 if( Charge >0.)
277 {
280
282 {
283 if(theDEDXpTable)
285 delete theDEDXpTable; }
286 theDEDXpTable = new G4PhysicsTable(numOfCouples);
288 }
289 }
290 else
291 {
294
296 {
299 delete theDEDXpbarTable; }
300 theDEDXpbarTable = new G4PhysicsTable(numOfCouples);
302 }
303 }
304
306 {
307 // loop for materials
308 G4double LowEdgeEnergy , Value ;
309 G4bool isOutRange ;
310 G4PhysicsTable* pointer ;
311
312 for (size_t J=0; J<numOfCouples; J++)
313 {
314 // create physics vector and fill it
315 G4PhysicsLogVector* aVector =
318
319 // loop for the kinetic energy
320 for (G4int i=0; i<TotBin; i++)
321 {
322 LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ;
323 Value = 0. ;
324
325 // loop for the contributing processes
326 for (G4int process=0; process < NumberOfProcesses; process++)
327 {
328 pointer= RecorderOfProcess[process];
329 Value += (*pointer)[J]->
330 GetValue(LowEdgeEnergy,isOutRange) ;
331 }
332
333 aVector->PutValue(i,Value) ;
334 }
335
336 theDEDXTable->insert(aVector) ;
337 }
338
339 // reset counter to zero ..................
340 if( Charge >0.)
342 else
344
345 // Build range table
346 BuildRangeTable( aParticleType);
347
348 // Build lab/proper time tables
349 BuildTimeTables( aParticleType) ;
350
351 // Build coeff tables for the energy loss calculation
352 BuildRangeCoeffATable( aParticleType);
353 BuildRangeCoeffBTable( aParticleType);
354 BuildRangeCoeffCTable( aParticleType);
355
356 // invert the range table
357
358 BuildInverseRangeTable(aParticleType);
359 }
360 }
361 // make the energy loss and the range table available
362
363 G4EnergyLossTables::Register(&aParticleType,
364 (Charge>0)?
366 (Charge>0)?
368 (Charge>0)?
370 (Charge>0)?
372 (Charge>0)?
375 proton_mass_c2/aParticleType.GetPDGMass(),
376 TotBin);
377
378}
static constexpr double eplus
Definition: G4SIunits.hh:184
bool G4bool
Definition: G4Types.hh:86
static void Register(const G4ParticleDefinition *p, const G4PhysicsTable *tDEDX, const G4PhysicsTable *tRange, const G4PhysicsTable *tInverseRange, const G4PhysicsTable *tLabTime, const G4PhysicsTable *tProperTime, G4double lowestKineticEnergy, G4double highestKineticEnergy, G4double massRatio, G4int NumberOfBins)
G4double GetPDGCharge() const
void insert(G4PhysicsVector *)
G4double GetLowEdgeEnergy(const std::size_t index) const
void PutValue(const std::size_t index, const G4double value)
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
static G4ThreadLocal G4PhysicsTable * theDEDXpTable
static G4ThreadLocal G4PhysicsTable * theInverseRangepTable
static G4ThreadLocal G4double Charge
static G4ThreadLocal G4PhysicsTable * theDEDXpbarTable
static G4ThreadLocal G4PhysicsTable ** RecorderOfpProcess
static G4ThreadLocal G4int CounterOfProcess
static void BuildRangeCoeffATable(const G4ParticleDefinition &aParticleType)
static G4ThreadLocal G4int TotBin
static G4ThreadLocal G4PhysicsTable * theProperTimepTable
static G4ThreadLocal G4PhysicsTable * theLabTimepTable
static G4ThreadLocal G4PhysicsTable * theRangepTable
static G4ThreadLocal G4int NumberOfProcesses
static G4ThreadLocal G4PhysicsTable * theLabTimepbarTable
static G4ThreadLocal G4PhysicsTable * theInverseRangepbarTable
static G4ThreadLocal G4int CounterOfpProcess
static G4ThreadLocal G4double ParticleMass
static void BuildRangeTable(const G4ParticleDefinition &aParticleType)
static void BuildRangeCoeffBTable(const G4ParticleDefinition &aParticleType)
static void BuildInverseRangeTable(const G4ParticleDefinition &aParticleType)
static G4ThreadLocal G4int CounterOfpbarProcess
static G4ThreadLocal G4PhysicsTable * theProperTimepbarTable
static G4ThreadLocal G4PhysicsTable ** RecorderOfProcess
static G4ThreadLocal G4PhysicsTable ** RecorderOfpbarProcess
static G4ThreadLocal G4double LowestKineticEnergy
static G4ThreadLocal G4PhysicsTable * theDEDXTable
static G4ThreadLocal G4PhysicsTable * theRangepbarTable
static void BuildTimeTables(const G4ParticleDefinition &aParticleType)
static void BuildRangeCoeffCTable(const G4ParticleDefinition &aParticleType)

References G4hRDEnergyLoss::BuildInverseRangeTable(), G4hRDEnergyLoss::BuildRangeCoeffATable(), G4hRDEnergyLoss::BuildRangeCoeffBTable(), G4hRDEnergyLoss::BuildRangeCoeffCTable(), G4hRDEnergyLoss::BuildRangeTable(), G4hRDEnergyLoss::BuildTimeTables(), G4hRDEnergyLoss::Charge, G4PhysicsTable::clearAndDestroy(), G4hRDEnergyLoss::CounterOfpbarProcess, G4hRDEnergyLoss::CounterOfpProcess, G4hRDEnergyLoss::CounterOfProcess, eplus, G4PhysicsVector::GetLowEdgeEnergy(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, G4hRDEnergyLoss::NumberOfProcesses, G4hRDEnergyLoss::ParticleMass, source.hepunit::proton_mass_c2, G4PhysicsVector::PutValue(), G4hRDEnergyLoss::RecorderOfpbarProcess, G4hRDEnergyLoss::RecorderOfpProcess, G4hRDEnergyLoss::RecorderOfProcess, G4EnergyLossTables::Register(), G4hRDEnergyLoss::theDEDXpbarTable, G4hRDEnergyLoss::theDEDXpTable, G4hRDEnergyLoss::theDEDXTable, G4hRDEnergyLoss::theInverseRangepbarTable, G4hRDEnergyLoss::theInverseRangepTable, G4hRDEnergyLoss::theLabTimepbarTable, G4hRDEnergyLoss::theLabTimepTable, G4hRDEnergyLoss::theProperTimepbarTable, G4hRDEnergyLoss::theProperTimepTable, G4hRDEnergyLoss::theRangepbarTable, G4hRDEnergyLoss::theRangepTable, and G4hRDEnergyLoss::TotBin.

Referenced by BuildPhysicsTable().

◆ BuildInverseRangeTable()

void G4hRDEnergyLoss::BuildInverseRangeTable ( const G4ParticleDefinition aParticleType)
staticprivateinherited

Definition at line 1001 of file G4hRDEnergyLoss.cc.

1003{
1004 // Build inverse table of the range table
1005
1006 G4bool b;
1007
1008 const G4ProductionCutsTable* theCoupleTable=
1010 size_t numOfCouples = theCoupleTable->GetTableSize();
1011
1012 if(&aParticleType == G4Proton::Proton())
1013 {
1016 delete theInverseRangepTable; }
1017 theInverseRangepTable = new G4PhysicsTable(numOfCouples);
1024 }
1025
1026 if(&aParticleType == G4AntiProton::AntiProton())
1027 {
1030 delete theInverseRangepbarTable; }
1031 theInverseRangepbarTable = new G4PhysicsTable(numOfCouples);
1038 }
1039
1040 // loop for materials
1041 for (size_t i=0; i<numOfCouples; i++)
1042 {
1043
1044 G4PhysicsVector* pv = (*theRangeTable)[i];
1045 size_t nbins = pv->GetVectorLength();
1046 G4double elow = pv->GetLowEdgeEnergy(0);
1047 G4double ehigh = pv->GetLowEdgeEnergy(nbins-1);
1048 G4double rlow = pv->GetValue(elow, b);
1049 G4double rhigh = pv->GetValue(ehigh, b);
1050
1051 if (rlow <DBL_MIN) rlow = 1.e-8;
1052 if (rhigh > 1.e16) rhigh = 1.e16;
1053 if (rhigh < 1.e-8) rhigh =1.e-8;
1054 G4double tmpTrick = rhigh/rlow;
1055
1056 //std::cout << nbins << ", elow " << elow << ", ehigh " << ehigh
1057 // << ", rlow " << rlow << ", rhigh " << rhigh
1058 // << ", trick " << tmpTrick << std::endl;
1059
1060 if (tmpTrick <= 0. || tmpTrick < DBL_MIN) tmpTrick = 1.e-8;
1061 if (tmpTrick > 1.e16) tmpTrick = 1.e16;
1062
1063 rhigh *= std::exp(std::log(tmpTrick)/((G4double)(nbins-1)));
1064
1065 G4PhysicsLogVector* v = new G4PhysicsLogVector(rlow, rhigh, nbins);
1066
1067 v->PutValue(0,elow);
1068 G4double energy1 = elow;
1069 G4double range1 = rlow;
1070 G4double energy2 = elow;
1071 G4double range2 = rlow;
1072 size_t ilow = 0;
1073 size_t ihigh;
1074
1075 for (size_t j=1; j<nbins; j++) {
1076
1077 G4double range = v->GetLowEdgeEnergy(j);
1078
1079 for (ihigh=ilow+1; ihigh<nbins; ihigh++) {
1080 energy2 = pv->GetLowEdgeEnergy(ihigh);
1081 range2 = pv->GetValue(energy2, b);
1082 if(range2 >= range || ihigh == nbins-1) {
1083 ilow = ihigh - 1;
1084 energy1 = pv->GetLowEdgeEnergy(ilow);
1085 range1 = pv->GetValue(energy1, b);
1086 break;
1087 }
1088 }
1089
1090 G4double e = std::log(energy1) + std::log(energy2/energy1)*std::log(range/range1)/std::log(range2/range1);
1091
1092 v->PutValue(j,std::exp(e));
1093 }
1095
1096 }
1097}
G4double GetValue(const G4double energy, G4bool &isOutRange) const
std::size_t GetVectorLength() const
static G4ThreadLocal G4PhysicsTable * theRangeTable
static G4ThreadLocal G4PhysicsTable * thepbarRangeCoeffBTable
static G4ThreadLocal G4PhysicsTable * thepbarRangeCoeffCTable
static G4ThreadLocal G4PhysicsTable * thepRangeCoeffBTable
static G4ThreadLocal G4PhysicsTable * theInverseRangeTable
static G4ThreadLocal G4PhysicsTable * thepRangeCoeffCTable
static G4ThreadLocal G4PhysicsTable * thepbarRangeCoeffATable
static G4ThreadLocal G4PhysicsTable * theRangeCoeffATable
static G4ThreadLocal G4PhysicsTable * thepRangeCoeffATable
static G4ThreadLocal G4PhysicsTable * theRangeCoeffCTable
static G4ThreadLocal G4PhysicsTable * theRangeCoeffBTable
#define DBL_MIN
Definition: templates.hh:54

References G4AntiProton::AntiProton(), G4PhysicsTable::clearAndDestroy(), DBL_MIN, G4PhysicsVector::GetLowEdgeEnergy(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4PhysicsVector::GetValue(), G4PhysicsVector::GetVectorLength(), G4PhysicsTable::insert(), G4Proton::Proton(), G4PhysicsVector::PutValue(), G4hRDEnergyLoss::theDEDXpbarTable, G4hRDEnergyLoss::theDEDXpTable, G4hRDEnergyLoss::theDEDXTable, G4hRDEnergyLoss::theInverseRangepbarTable, G4hRDEnergyLoss::theInverseRangepTable, G4hRDEnergyLoss::theInverseRangeTable, G4hRDEnergyLoss::thepbarRangeCoeffATable, G4hRDEnergyLoss::thepbarRangeCoeffBTable, G4hRDEnergyLoss::thepbarRangeCoeffCTable, G4hRDEnergyLoss::thepRangeCoeffATable, G4hRDEnergyLoss::thepRangeCoeffBTable, G4hRDEnergyLoss::thepRangeCoeffCTable, G4hRDEnergyLoss::theRangeCoeffATable, G4hRDEnergyLoss::theRangeCoeffBTable, G4hRDEnergyLoss::theRangeCoeffCTable, G4hRDEnergyLoss::theRangepbarTable, G4hRDEnergyLoss::theRangepTable, and G4hRDEnergyLoss::theRangeTable.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ BuildLabTimeVector()

void G4hRDEnergyLoss::BuildLabTimeVector ( G4int  materialIndex,
G4PhysicsLogVector rangeVector 
)
staticprivateinherited

Definition at line 515 of file G4hRDEnergyLoss.cc.

517{
518 // create lab time vector for a material
519
520 G4int nbin=100;
521 G4bool isOut;
522 G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ;
523 //G4double losslim,clim,taulim,timelim,ltaulim,ltaumax,
524 G4double losslim,clim,taulim,timelim,
525 LowEdgeEnergy,tau,Value ;
526
527 G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex];
528
529 // low energy part first...
530 losslim = physicsVector->GetValue(tlim,isOut);
531 taulim=tlim/ParticleMass ;
532 clim=std::sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar) ;
533 //ltaulim = std::log(taulim);
534 //ltaumax = std::log(HighestKineticEnergy/ParticleMass) ;
535
536 G4int i=-1;
537 G4double oldValue = 0. ;
538 G4double tauold ;
539 do
540 {
541 i += 1 ;
542 LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i);
543 tau = LowEdgeEnergy/ParticleMass ;
544 if ( tau <= taulim )
545 {
546 Value = clim*std::exp(ppar*std::log(tau/taulim)) ;
547 }
548 else
549 {
550 timelim=clim ;
551 ltaulow = std::log(taulim);
552 ltauhigh = std::log(tau);
553 Value = timelim+LabTimeIntLog(physicsVector,nbin);
554 }
555 timeVector->PutValue(i,Value);
556 oldValue = Value ;
557 tauold = tau ;
558 } while (tau<=taulim) ;
559
560 i += 1 ;
561 for (G4int j=i; j<TotBin; j++)
562 {
563 LowEdgeEnergy = timeVector->GetLowEdgeEnergy(j);
564 tau = LowEdgeEnergy/ParticleMass ;
565 ltaulow = std::log(tauold);
566 ltauhigh = std::log(tau);
567 Value = oldValue+LabTimeIntLog(physicsVector,nbin);
568 timeVector->PutValue(j,Value);
569 oldValue = Value ;
570 tauold = tau ;
571 }
572}
static constexpr double keV
Definition: G4SIunits.hh:202
static G4ThreadLocal G4double ltaulow
static G4double LabTimeIntLog(G4PhysicsVector *physicsVector, G4int nbin)
static G4ThreadLocal G4double ltauhigh
float c_light
Definition: hepunit.py:256

References source.hepunit::c_light, G4PhysicsVector::GetLowEdgeEnergy(), G4PhysicsVector::GetValue(), keV, G4hRDEnergyLoss::LabTimeIntLog(), G4hRDEnergyLoss::ltauhigh, G4hRDEnergyLoss::ltaulow, G4hRDEnergyLoss::ParticleMass, G4PhysicsVector::PutValue(), and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildTimeTables().

◆ BuildLambdaTable()

void G4hImpactIonisation::BuildLambdaTable ( const G4ParticleDefinition aParticleType)
private

Definition at line 445 of file G4hImpactIonisation.cc.

447{
448 // Build mean free path tables for the delta ray production process
449 // tables are built for MATERIALS
450
451 if(verboseLevel > 1) {
452 G4cout << "G4hImpactIonisation::BuildLambdaTable for "
453 << particleDef.GetParticleName() << " is started" << G4endl;
454 }
455
456
457 G4double lowEdgeEnergy, value;
458 charge = particleDef.GetPDGCharge()/eplus ;
460 initialMass = particleDef.GetPDGMass();
461
462 const G4ProductionCutsTable* theCoupleTable=
464 size_t numOfCouples = theCoupleTable->GetTableSize();
465
466
470 }
471
472 theMeanFreePathTable = new G4PhysicsTable(numOfCouples);
473
474 // loop for materials
475
476 for (size_t j=0 ; j < numOfCouples; j++) {
477
478 //create physics vector then fill it ....
481 TotBin);
482
483 // compute the (macroscopic) cross section first
484 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(j);
485 const G4Material* material= couple->GetMaterial();
486
487 const G4ElementVector* theElementVector = material->GetElementVector() ;
488 const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector();
489 const G4int numberOfElements = material->GetNumberOfElements() ;
490
491 // get the electron kinetic energy cut for the actual material,
492 // it will be used in ComputeMicroscopicCrossSection
493 // ( it is the SAME for ALL the ELEMENTS in THIS MATERIAL )
494 // ------------------------------------------------------
495
496 G4double deltaCut = cutForDelta[j];
497
498 for ( G4int i = 0 ; i < TotBin ; i++ ) {
499 lowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ;
500 G4double sigma = 0.0 ;
501 G4int Z;
502
503 for (G4int iel=0; iel<numberOfElements; iel++ )
504 {
505 Z = (G4int) (*theElementVector)[iel]->GetZ();
506 // ---- MGP --- Corrected duplicated cross section calculation here from
507 // G4hLowEnergyIonisation original
508 G4double microCross = MicroscopicCrossSection( particleDef,
509 lowEdgeEnergy,
510 Z,
511 deltaCut ) ;
512 //totalCrossSectionMap [Z] = microCross;
513 sigma += theAtomicNumDensityVector[iel] * microCross ;
514 }
515
516 // mean free path = 1./macroscopic cross section
517
518 value = sigma<=0 ? DBL_MAX : 1./sigma ;
519
520 aVector->PutValue(i, value) ;
521 }
522
524 }
525
526}
const G4int Z[17]
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
G4double MicroscopicCrossSection(const G4ParticleDefinition &aParticleType, G4double kineticEnergy, G4double atomicNumber, G4double deltaCutInEnergy) const
#define DBL_MAX
Definition: templates.hh:62

References charge, chargeSquare, G4PhysicsTable::clearAndDestroy(), cutForDelta, DBL_MAX, eplus, G4cout, G4endl, G4PhysicsVector::GetLowEdgeEnergy(), G4MaterialCutsCouple::GetMaterial(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, initialMass, G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, eplot::material, MicroscopicCrossSection(), G4PhysicsVector::PutValue(), theMeanFreePathTable, G4hRDEnergyLoss::TotBin, G4VProcess::verboseLevel, and Z.

Referenced by BuildPhysicsTable().

◆ BuildLossTable()

void G4hImpactIonisation::BuildLossTable ( const G4ParticleDefinition aParticleType)
private

Definition at line 347 of file G4hImpactIonisation.cc.

348{
349 // Initialisation
350 G4double lowEdgeEnergy , ionloss, ionlossBB, paramB ;
351 //G4double lowEnergy, highEnergy;
352 G4double highEnergy;
354
355 if (particleDef == *proton)
356 {
357 //lowEnergy = protonLowEnergy ;
358 highEnergy = protonHighEnergy ;
359 charge = 1. ;
360 }
361 else
362 {
363 //lowEnergy = antiprotonLowEnergy ;
364 highEnergy = antiprotonHighEnergy ;
365 charge = -1. ;
366 }
367 chargeSquare = 1. ;
368
369 const G4ProductionCutsTable* theCoupleTable=
371 size_t numOfCouples = theCoupleTable->GetTableSize();
372
373 if ( theLossTable)
374 {
376 delete theLossTable;
377 }
378
379 theLossTable = new G4PhysicsTable(numOfCouples);
380
381 // loop for materials
382 for (size_t j=0; j<numOfCouples; j++) {
383
384 // create physics vector and fill it
387 TotBin);
388
389 // get material parameters needed for the energy loss calculation
390 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(j);
391 const G4Material* material= couple->GetMaterial();
392
393 if ( charge > 0.0 ) {
394 ionloss = ProtonParametrisedDEDX(couple,highEnergy) ;
395 } else {
396 ionloss = AntiProtonParametrisedDEDX(couple,highEnergy) ;
397 }
398
399 ionlossBB = betheBlochModel->TheValue(&particleDef,material,highEnergy) ;
400 ionlossBB -= DeltaRaysEnergy(couple,highEnergy,proton_mass_c2) ;
401
402
403 paramB = ionloss/ionlossBB - 1.0 ;
404
405 // now comes the loop for the kinetic energy values
406 for (G4int i = 0 ; i < TotBin ; i++) {
407 lowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ;
408
409 // low energy part for this material, parametrised energy loss formulae
410 if ( lowEdgeEnergy < highEnergy ) {
411
412 if ( charge > 0.0 ) {
413 ionloss = ProtonParametrisedDEDX(couple,lowEdgeEnergy) ;
414 } else {
415 ionloss = AntiProtonParametrisedDEDX(couple,lowEdgeEnergy) ;
416 }
417
418 } else {
419
420 // high energy part for this material, Bethe-Bloch formula
422 lowEdgeEnergy) ;
423
424 ionloss -= DeltaRaysEnergy(couple,lowEdgeEnergy,proton_mass_c2) ;
425
426 ionloss *= (1.0 + paramB*highEnergy/lowEdgeEnergy) ;
427 }
428
429 // now put the loss into the vector
430 if(verboseLevel > 1) {
431 G4cout << "E(MeV)= " << lowEdgeEnergy/MeV
432 << " dE/dx(MeV/mm)= " << ionloss*mm/MeV
433 << " in " << material->GetName() << G4endl;
434 }
435 aVector->PutValue(i,ionloss) ;
436 }
437 // Insert vector for this material into the table
438 theLossTable->insert(aVector) ;
439 }
440}
G4double ProtonParametrisedDEDX(const G4MaterialCutsCouple *couple, G4double kineticEnergy) const
G4double AntiProtonParametrisedDEDX(const G4MaterialCutsCouple *couple, G4double kineticEnergy) const
G4PhysicsTable * theLossTable

References antiprotonHighEnergy, AntiProtonParametrisedDEDX(), betheBlochModel, charge, chargeSquare, G4PhysicsTable::clearAndDestroy(), DeltaRaysEnergy(), G4cout, G4endl, G4PhysicsVector::GetLowEdgeEnergy(), G4MaterialCutsCouple::GetMaterial(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, eplot::material, MeV, mm, G4Proton::Proton(), G4InuclParticleNames::proton, source.hepunit::proton_mass_c2, protonHighEnergy, ProtonParametrisedDEDX(), G4PhysicsVector::PutValue(), G4hRDEnergyLoss::theLossTable, G4VLowEnergyModel::TheValue(), G4hRDEnergyLoss::TotBin, and G4VProcess::verboseLevel.

Referenced by BuildPhysicsTable().

◆ BuildPhysicsTable()

void G4hImpactIonisation::BuildPhysicsTable ( const G4ParticleDefinition aParticleType)
virtual

Reimplemented from G4VProcess.

Definition at line 190 of file G4hImpactIonisation.cc.

193{
194
195 // Verbose print-out
196 if(verboseLevel > 0)
197 {
198 G4cout << "G4hImpactIonisation::BuildPhysicsTable for "
199 << particleDef.GetParticleName()
200 << " mass(MeV)= " << particleDef.GetPDGMass()/MeV
201 << " charge= " << particleDef.GetPDGCharge()/eplus
202 << " type= " << particleDef.GetParticleType()
203 << G4endl;
204
205 if(verboseLevel > 1)
206 {
207 G4ProcessVector* pv = particleDef.GetProcessManager()->GetProcessList();
208
209 G4cout << " 0: " << (*pv)[0]->GetProcessName() << " " << (*pv)[0]
210 << " 1: " << (*pv)[1]->GetProcessName() << " " << (*pv)[1]
211 // << " 2: " << (*pv)[2]->GetProcessName() << " " << (*pv)[2]
212 << G4endl;
213 G4cout << "ionModel= " << theIonEffChargeModel
214 << " MFPtable= " << theMeanFreePathTable
215 << " iniMass= " << initialMass
216 << G4endl;
217 }
218 }
219 // End of verbose print-out
220
221 if (particleDef.GetParticleType() == "nucleus" &&
222 particleDef.GetParticleName() != "GenericIon" &&
223 particleDef.GetParticleSubType() == "generic")
224 {
225
226 G4EnergyLossTables::Register(&particleDef,
233 proton_mass_c2/particleDef.GetPDGMass(),
234 TotBin);
235
236 return;
237 }
238
239 if( !CutsWhereModified() && theLossTable) return;
240
244
245 charge = particleDef.GetPDGCharge() / eplus;
247
248 const G4ProductionCutsTable* theCoupleTable=
250 size_t numOfCouples = theCoupleTable->GetTableSize();
251
252 cutForDelta.clear();
253 cutForGamma.clear();
254
255 for (size_t j=0; j<numOfCouples; j++) {
256
257 // get material parameters needed for the energy loss calculation
258 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(j);
259 const G4Material* material= couple->GetMaterial();
260
261 // the cut cannot be below lowest limit
262 G4double tCut = (*(theCoupleTable->GetEnergyCutsVector(1)))[j];
264
265 G4double excEnergy = material->GetIonisation()->GetMeanExcitationEnergy();
266
267 tCut = std::max(tCut,excEnergy);
268 cutForDelta.push_back(tCut);
269
270 // the cut cannot be below lowest limit
271 tCut = (*(theCoupleTable->GetEnergyCutsVector(0)))[j];
273 tCut = std::max(tCut,minGammaEnergy);
274 cutForGamma.push_back(tCut);
275 }
276
277 if(verboseLevel > 0) {
278 G4cout << "Cuts are defined " << G4endl;
279 }
280
281 if(0.0 < charge)
282 {
283 {
285
286 // The following vector has a fixed dimension (see src/G4hImpactLoss.cc for more details)
287 // It happended in the past that caused memory corruption errors. The problem is still pending, even if temporary solved
288 // G4cout << "[NOTE]: __LINE__=" << __LINE__ << ", particleDef=" << particleDef.GetParticleName() << ", proton=" << proton << ", theLossTable=" << theLossTable << ", CounterOfpProcess=" << CounterOfpProcess << G4endl;
289
292 }
293 } else {
294 {
295 BuildLossTable(*antiproton) ;
296
297 // The following vector has a fixed dimension (see src/G4hImpactLoss.cc for more details)
298 // It happended in the past that caused memory corruption errors. The problem is still pending, even if temporary solved
299 // G4cout << "[NOTE]: __LINE__=" << __LINE__ << ", particleDef=" << particleDef.GetParticleName() << ", antiproton=" << antiproton << ", theLossTable=" << theLossTable << ", CounterOfpbarProcess=" << CounterOfpbarProcess << G4endl;
300
303 }
304 }
305
306 if(verboseLevel > 0) {
307 G4cout << "G4hImpactIonisation::BuildPhysicsTable: "
308 << "Loss table is built "
309 // << theLossTable
310 << G4endl;
311 }
312
313 BuildLambdaTable(particleDef) ;
314 // BuildDataForFluorescence(particleDef);
315
316 if(verboseLevel > 1) {
317 G4cout << (*theMeanFreePathTable) << G4endl;
318 }
319
320 if(verboseLevel > 0) {
321 G4cout << "G4hImpactIonisation::BuildPhysicsTable: "
322 << "DEDX table will be built "
323 // << theDEDXpTable << " " << theDEDXpbarTable
324 // << " " << theRangepTable << " " << theRangepbarTable
325 << G4endl;
326 }
327
328 BuildDEDXTable(particleDef) ;
329
330 if(verboseLevel > 1) {
331 G4cout << (*theDEDXpTable) << G4endl;
332 }
333
334 if((&particleDef == proton) || (&particleDef == antiproton)) PrintInfoDefinition() ;
335
336 if(verboseLevel > 0) {
337 G4cout << "G4hImpactIonisation::BuildPhysicsTable: end for "
338 << particleDef.GetParticleName() << G4endl;
339 }
340}
const std::vector< G4double > * GetEnergyCutsVector(std::size_t pcIdx) const
void BuildLambdaTable(const G4ParticleDefinition &aParticleType)
void BuildLossTable(const G4ParticleDefinition &aParticleType)
G4bool CutsWhereModified()
static void BuildDEDXTable(const G4ParticleDefinition &aParticleType)
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4AntiProton::AntiProton(), G4hRDEnergyLoss::BuildDEDXTable(), BuildLambdaTable(), BuildLossTable(), charge, chargeSquare, G4hRDEnergyLoss::CounterOfpbarProcess, G4hRDEnergyLoss::CounterOfpProcess, cutForDelta, cutForGamma, G4hRDEnergyLoss::CutsWhereModified(), eplus, G4cout, G4endl, G4ProductionCutsTable::GetEnergyCutsVector(), G4MaterialCutsCouple::GetMaterial(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetParticleSubType(), G4ParticleDefinition::GetParticleType(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, InitializeParametrisation(), initialMass, G4hRDEnergyLoss::LowestKineticEnergy, eplot::material, G4INCL::Math::max(), MeV, minGammaEnergy, PrintInfoDefinition(), G4Proton::Proton(), G4InuclParticleNames::proton, source.hepunit::proton_mass_c2, G4hRDEnergyLoss::RecorderOfpbarProcess, G4hRDEnergyLoss::RecorderOfpProcess, G4EnergyLossTables::Register(), G4hRDEnergyLoss::theDEDXpTable, G4hRDEnergyLoss::theInverseRangepTable, theIonEffChargeModel, G4hRDEnergyLoss::theLabTimepTable, G4hRDEnergyLoss::theLossTable, theMeanFreePathTable, G4hRDEnergyLoss::theProperTimepTable, G4hRDEnergyLoss::theRangepTable, G4hRDEnergyLoss::TotBin, and G4VProcess::verboseLevel.

◆ BuildProperTimeVector()

void G4hRDEnergyLoss::BuildProperTimeVector ( G4int  materialIndex,
G4PhysicsLogVector rangeVector 
)
staticprivateinherited

Definition at line 576 of file G4hRDEnergyLoss.cc.

578{
579 // create proper time vector for a material
580
581 G4int nbin=100;
582 G4bool isOut;
583 G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ;
584 //G4double losslim,clim,taulim,timelim,ltaulim,ltaumax,
585 G4double losslim,clim,taulim,timelim,
586 LowEdgeEnergy,tau,Value ;
587
588 G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex];
589
590 // low energy part first...
591 losslim = physicsVector->GetValue(tlim,isOut);
592 taulim=tlim/ParticleMass ;
593 clim=std::sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar) ;
594 //ltaulim = std::log(taulim);
595 //ltaumax = std::log(HighestKineticEnergy/ParticleMass) ;
596
597 G4int i=-1;
598 G4double oldValue = 0. ;
599 G4double tauold ;
600 do
601 {
602 i += 1 ;
603 LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i);
604 tau = LowEdgeEnergy/ParticleMass ;
605 if ( tau <= taulim )
606 {
607 Value = clim*std::exp(ppar*std::log(tau/taulim)) ;
608 }
609 else
610 {
611 timelim=clim ;
612 ltaulow = std::log(taulim);
613 ltauhigh = std::log(tau);
614 Value = timelim+ProperTimeIntLog(physicsVector,nbin);
615 }
616 timeVector->PutValue(i,Value);
617 oldValue = Value ;
618 tauold = tau ;
619 } while (tau<=taulim) ;
620
621 i += 1 ;
622 for (G4int j=i; j<TotBin; j++)
623 {
624 LowEdgeEnergy = timeVector->GetLowEdgeEnergy(j);
625 tau = LowEdgeEnergy/ParticleMass ;
626 ltaulow = std::log(tauold);
627 ltauhigh = std::log(tau);
628 Value = oldValue+ProperTimeIntLog(physicsVector,nbin);
629 timeVector->PutValue(j,Value);
630 oldValue = Value ;
631 tauold = tau ;
632 }
633}
static G4double ProperTimeIntLog(G4PhysicsVector *physicsVector, G4int nbin)

References source.hepunit::c_light, G4PhysicsVector::GetLowEdgeEnergy(), G4PhysicsVector::GetValue(), keV, G4hRDEnergyLoss::ltauhigh, G4hRDEnergyLoss::ltaulow, G4hRDEnergyLoss::ParticleMass, G4hRDEnergyLoss::ProperTimeIntLog(), G4PhysicsVector::PutValue(), and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildTimeTables().

◆ BuildRangeCoeffATable()

void G4hRDEnergyLoss::BuildRangeCoeffATable ( const G4ParticleDefinition aParticleType)
staticprivateinherited

Definition at line 771 of file G4hRDEnergyLoss.cc.

772{
773 // Build tables of coefficients for the energy loss calculation
774 // create table for coefficients "A"
775
777
778 if(Charge>0.)
779 {
782 delete thepRangeCoeffATable; }
783 thepRangeCoeffATable = new G4PhysicsTable(numOfCouples);
786 }
787 else
788 {
792 thepbarRangeCoeffATable = new G4PhysicsTable(numOfCouples);
795 }
796
797 G4double R2 = RTable*RTable ;
798 G4double R1 = RTable+1.;
799 G4double w = R1*(RTable-1.)*(RTable-1.);
800 G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ;
801 G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
802 G4bool isOut;
803
804 // loop for materials
805 for (G4int J=0; J<numOfCouples; J++)
806 {
807 G4int binmax=TotBin ;
808 G4PhysicsLinearVector* aVector =
809 new G4PhysicsLinearVector(0.,binmax, TotBin);
811 if (Ti < DBL_MIN) Ti = 1.e-8;
812 G4PhysicsVector* rangeVector= (*theRangeTable)[J];
813
814 for ( G4int i=0; i<TotBin; i++)
815 {
816 Ri = rangeVector->GetValue(Ti,isOut) ;
817 if (Ti < DBL_MIN) Ti = 1.e-8;
818 if ( i==0 )
819 Rim = 0. ;
820 else
821 {
822 // ---- MGP ---- Modified to avoid a floating point exception
823 // The correction is just a temporary patch, the whole class should be redesigned
824 // Original: Tim = Ti/RTable results in 0./0.
825 if (RTable != 0.)
826 {
827 Tim = Ti/RTable ;
828 }
829 else
830 {
831 Tim = 0.;
832 }
833 Rim = rangeVector->GetValue(Tim,isOut);
834 }
835 if ( i==(TotBin-1))
836 Rip = Ri ;
837 else
838 {
839 Tip = Ti*RTable ;
840 Rip = rangeVector->GetValue(Tip,isOut);
841 }
842 Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ;
843
844 aVector->PutValue(i,Value);
845 Ti = RTable*Ti ;
846 }
847
848 theRangeCoeffATable->insert(aVector);
849 }
850}
static G4ThreadLocal G4double RTable

References G4hRDEnergyLoss::Charge, G4PhysicsTable::clearAndDestroy(), DBL_MIN, G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4PhysicsVector::GetValue(), G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, G4PhysicsVector::PutValue(), G4hRDEnergyLoss::RTable, G4hRDEnergyLoss::thepbarRangeCoeffATable, G4hRDEnergyLoss::thepRangeCoeffATable, G4hRDEnergyLoss::theRangeCoeffATable, G4hRDEnergyLoss::theRangepbarTable, G4hRDEnergyLoss::theRangepTable, G4hRDEnergyLoss::theRangeTable, and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ BuildRangeCoeffBTable()

void G4hRDEnergyLoss::BuildRangeCoeffBTable ( const G4ParticleDefinition aParticleType)
staticprivateinherited

Definition at line 854 of file G4hRDEnergyLoss.cc.

855{
856 // Build tables of coefficients for the energy loss calculation
857 // create table for coefficients "B"
858
859 G4int numOfCouples =
861
862 if(Charge>0.)
863 {
866 delete thepRangeCoeffBTable; }
867 thepRangeCoeffBTable = new G4PhysicsTable(numOfCouples);
870 }
871 else
872 {
876 thepbarRangeCoeffBTable = new G4PhysicsTable(numOfCouples);
879 }
880
881 G4double R2 = RTable*RTable ;
882 G4double R1 = RTable+1.;
883 G4double w = R1*(RTable-1.)*(RTable-1.);
884 if (w < DBL_MIN) w = DBL_MIN;
885 G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ;
886 G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
887 G4bool isOut;
888
889 // loop for materials
890 for (G4int J=0; J<numOfCouples; J++)
891 {
892 G4int binmax=TotBin ;
893 G4PhysicsLinearVector* aVector =
894 new G4PhysicsLinearVector(0.,binmax, TotBin);
896 if (Ti < DBL_MIN) Ti = 1.e-8;
897 G4PhysicsVector* rangeVector= (*theRangeTable)[J];
898
899 for ( G4int i=0; i<TotBin; i++)
900 {
901 Ri = rangeVector->GetValue(Ti,isOut) ;
902 if (Ti < DBL_MIN) Ti = 1.e-8;
903 if ( i==0 )
904 Rim = 0. ;
905 else
906 {
907 if (RTable < DBL_MIN) RTable = DBL_MIN;
908 Tim = Ti/RTable ;
909 Rim = rangeVector->GetValue(Tim,isOut);
910 }
911 if ( i==(TotBin-1))
912 Rip = Ri ;
913 else
914 {
915 Tip = Ti*RTable ;
916 Rip = rangeVector->GetValue(Tip,isOut);
917 }
918 if (Ti < DBL_MIN) Ti = DBL_MIN;
919 Value = (w1*Rip + w2*Ri + w3*Rim)/Ti;
920
921 aVector->PutValue(i,Value);
922 Ti = RTable*Ti ;
923 }
924 theRangeCoeffBTable->insert(aVector);
925 }
926}

References G4hRDEnergyLoss::Charge, G4PhysicsTable::clearAndDestroy(), DBL_MIN, G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4PhysicsVector::GetValue(), G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, G4PhysicsVector::PutValue(), G4hRDEnergyLoss::RTable, G4hRDEnergyLoss::thepbarRangeCoeffBTable, G4hRDEnergyLoss::thepRangeCoeffBTable, G4hRDEnergyLoss::theRangeCoeffBTable, G4hRDEnergyLoss::theRangepbarTable, G4hRDEnergyLoss::theRangepTable, G4hRDEnergyLoss::theRangeTable, and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ BuildRangeCoeffCTable()

void G4hRDEnergyLoss::BuildRangeCoeffCTable ( const G4ParticleDefinition aParticleType)
staticprivateinherited

Definition at line 930 of file G4hRDEnergyLoss.cc.

931{
932 // Build tables of coefficients for the energy loss calculation
933 // create table for coefficients "C"
934
935 G4int numOfCouples =
937
938 if(Charge>0.)
939 {
942 delete thepRangeCoeffCTable; }
943 thepRangeCoeffCTable = new G4PhysicsTable(numOfCouples);
946 }
947 else
948 {
952 thepbarRangeCoeffCTable = new G4PhysicsTable(numOfCouples);
955 }
956
957 G4double R2 = RTable*RTable ;
958 G4double R1 = RTable+1.;
959 G4double w = R1*(RTable-1.)*(RTable-1.);
960 G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ;
961 G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ;
962 G4bool isOut;
963
964 // loop for materials
965 for (G4int J=0; J<numOfCouples; J++)
966 {
967 G4int binmax=TotBin ;
968 G4PhysicsLinearVector* aVector =
969 new G4PhysicsLinearVector(0.,binmax, TotBin);
971 G4PhysicsVector* rangeVector= (*theRangeTable)[J];
972
973 for ( G4int i=0; i<TotBin; i++)
974 {
975 Ri = rangeVector->GetValue(Ti,isOut) ;
976 if ( i==0 )
977 Rim = 0. ;
978 else
979 {
980 Tim = Ti/RTable ;
981 Rim = rangeVector->GetValue(Tim,isOut);
982 }
983 if ( i==(TotBin-1))
984 Rip = Ri ;
985 else
986 {
987 Tip = Ti*RTable ;
988 Rip = rangeVector->GetValue(Tip,isOut);
989 }
990 Value = w1*Rip + w2*Ri + w3*Rim ;
991
992 aVector->PutValue(i,Value);
993 Ti = RTable*Ti ;
994 }
995 theRangeCoeffCTable->insert(aVector);
996 }
997}

References G4hRDEnergyLoss::Charge, G4PhysicsTable::clearAndDestroy(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4PhysicsVector::GetValue(), G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, G4PhysicsVector::PutValue(), G4hRDEnergyLoss::RTable, G4hRDEnergyLoss::thepbarRangeCoeffCTable, G4hRDEnergyLoss::thepRangeCoeffCTable, G4hRDEnergyLoss::theRangeCoeffCTable, G4hRDEnergyLoss::theRangepbarTable, G4hRDEnergyLoss::theRangepTable, G4hRDEnergyLoss::theRangeTable, and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ BuildRangeTable()

void G4hRDEnergyLoss::BuildRangeTable ( const G4ParticleDefinition aParticleType)
staticprivateinherited

Definition at line 382 of file G4hRDEnergyLoss.cc.

383{
384 // Build range table from the energy loss table
385
386 Mass = aParticleType.GetPDGMass();
387
388 const G4ProductionCutsTable* theCoupleTable=
390 size_t numOfCouples = theCoupleTable->GetTableSize();
391
392 if( Charge >0.)
393 {
396 delete theRangepTable; }
397 theRangepTable = new G4PhysicsTable(numOfCouples);
399 }
400 else
401 {
404 delete theRangepbarTable; }
405 theRangepbarTable = new G4PhysicsTable(numOfCouples);
407 }
408
409 // loop for materials
410
411 for (size_t J=0; J<numOfCouples; J++)
412 {
413 G4PhysicsLogVector* aVector;
416
417 BuildRangeVector(J, aVector);
418 theRangeTable->insert(aVector);
419 }
420}
static void BuildRangeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
static G4ThreadLocal G4double Mass

References G4hRDEnergyLoss::BuildRangeVector(), G4hRDEnergyLoss::Charge, G4PhysicsTable::clearAndDestroy(), G4ParticleDefinition::GetPDGMass(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, G4hRDEnergyLoss::Mass, G4hRDEnergyLoss::theRangepbarTable, G4hRDEnergyLoss::theRangepTable, G4hRDEnergyLoss::theRangeTable, and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ BuildRangeVector()

void G4hRDEnergyLoss::BuildRangeVector ( G4int  materialIndex,
G4PhysicsLogVector rangeVector 
)
staticprivateinherited

Definition at line 481 of file G4hRDEnergyLoss.cc.

483{
484 // create range vector for a material
485
486 G4bool isOut;
487 G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex];
488 G4double energy1 = rangeVector->GetLowEdgeEnergy(0);
489 G4double dedx = physicsVector->GetValue(energy1,isOut);
490 G4double range = 0.5*energy1/dedx;
491 rangeVector->PutValue(0,range);
492 G4int n = 100;
493 G4double del = 1.0/(G4double)n ;
494
495 for (G4int j=1; j<TotBin; j++) {
496
497 G4double energy2 = rangeVector->GetLowEdgeEnergy(j);
498 G4double de = (energy2 - energy1) * del ;
499 G4double dedx1 = dedx ;
500
501 for (G4int i=1; i<n; i++) {
502 G4double energy = energy1 + i*de ;
503 G4double dedx2 = physicsVector->GetValue(energy,isOut);
504 range += 0.5*de*(1.0/dedx1 + 1.0/dedx2);
505 dedx1 = dedx2;
506 }
507 rangeVector->PutValue(j,range);
508 dedx = dedx1 ;
509 energy1 = energy2 ;
510 }
511}
G4double energy(const ThreeVector &p, const G4double m)

References G4INCL::KinematicsUtils::energy(), G4PhysicsVector::GetLowEdgeEnergy(), G4PhysicsVector::GetValue(), CLHEP::detail::n, G4PhysicsVector::PutValue(), and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildRangeTable().

◆ BuildTimeTables()

void G4hRDEnergyLoss::BuildTimeTables ( const G4ParticleDefinition aParticleType)
staticprivateinherited

Definition at line 424 of file G4hRDEnergyLoss.cc.

425{
426 const G4ProductionCutsTable* theCoupleTable=
428 size_t numOfCouples = theCoupleTable->GetTableSize();
429
430 if(&aParticleType == G4Proton::Proton())
431 {
434 delete theLabTimepTable; }
435 theLabTimepTable = new G4PhysicsTable(numOfCouples);
437
440 delete theProperTimepTable; }
441 theProperTimepTable = new G4PhysicsTable(numOfCouples);
443 }
444
445 if(&aParticleType == G4AntiProton::AntiProton())
446 {
449 delete theLabTimepbarTable; }
450 theLabTimepbarTable = new G4PhysicsTable(numOfCouples);
452
455 delete theProperTimepbarTable; }
456 theProperTimepbarTable = new G4PhysicsTable(numOfCouples);
458 }
459
460 for (size_t J=0; J<numOfCouples; J++)
461 {
462 G4PhysicsLogVector* aVector;
463 G4PhysicsLogVector* bVector;
464
467
468 BuildLabTimeVector(J, aVector);
469 theLabTimeTable->insert(aVector);
470
473
474 BuildProperTimeVector(J, bVector);
475 theProperTimeTable->insert(bVector);
476 }
477}
static void BuildLabTimeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
static G4ThreadLocal G4PhysicsTable * theProperTimeTable
static void BuildProperTimeVector(G4int materialIndex, G4PhysicsLogVector *rangeVector)
static G4ThreadLocal G4PhysicsTable * theLabTimeTable

References G4AntiProton::AntiProton(), G4hRDEnergyLoss::BuildLabTimeVector(), G4hRDEnergyLoss::BuildProperTimeVector(), G4PhysicsTable::clearAndDestroy(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, G4PhysicsTable::insert(), G4hRDEnergyLoss::LowestKineticEnergy, G4Proton::Proton(), G4hRDEnergyLoss::theLabTimepbarTable, G4hRDEnergyLoss::theLabTimepTable, G4hRDEnergyLoss::theLabTimeTable, G4hRDEnergyLoss::theProperTimepbarTable, G4hRDEnergyLoss::theProperTimepTable, G4hRDEnergyLoss::theProperTimeTable, and G4hRDEnergyLoss::TotBin.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ BuildWorkerPhysicsTable()

void G4VProcess::BuildWorkerPhysicsTable ( const G4ParticleDefinition part)
virtualinherited

Reimplemented in G4BiasingProcessInterface.

Definition at line 200 of file G4VProcess.cc.

201{
202 BuildPhysicsTable(part);
203}
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:187

References G4VProcess::BuildPhysicsTable().

Referenced by G4BiasingProcessInterface::BuildWorkerPhysicsTable().

◆ ClearNumberOfInteractionLengthLeft()

void G4VProcess::ClearNumberOfInteractionLengthLeft ( )
inlineprotectedinherited

◆ ComputeDEDX()

G4double G4hImpactIonisation::ComputeDEDX ( const G4ParticleDefinition aParticle,
const G4MaterialCutsCouple couple,
G4double  kineticEnergy 
)

Definition at line 1265 of file G4hImpactIonisation.cc.

1268{
1269 const G4Material* material = couple->GetMaterial();
1271 G4AntiProton* antiproton = G4AntiProton::AntiProton();
1272 G4double dedx = 0.;
1273
1274 G4double tScaled = kineticEnergy * proton_mass_c2 / (aParticle->GetPDGMass()) ;
1275 charge = aParticle->GetPDGCharge() ;
1276
1277 if( charge > 0.)
1278 {
1279 if (tScaled > protonHighEnergy)
1280 {
1281 dedx = G4EnergyLossTables::GetDEDX(proton,tScaled,couple) ;
1282 }
1283 else
1284 {
1285 dedx = ProtonParametrisedDEDX(couple,tScaled) ;
1286 }
1287 }
1288 else
1289 {
1290 if (tScaled > antiprotonHighEnergy)
1291 {
1292 dedx = G4EnergyLossTables::GetDEDX(antiproton,tScaled,couple);
1293 }
1294 else
1295 {
1296 dedx = AntiProtonParametrisedDEDX(couple,tScaled) ;
1297 }
1298 }
1299 dedx *= theIonEffChargeModel->TheValue(aParticle, material, kineticEnergy) ;
1300
1301 return dedx ;
1302}
static G4double GetDEDX(const G4ParticleDefinition *aParticle, G4double KineticEnergy, const G4Material *aMaterial)

References G4AntiProton::AntiProton(), antiprotonHighEnergy, AntiProtonParametrisedDEDX(), charge, G4EnergyLossTables::GetDEDX(), G4MaterialCutsCouple::GetMaterial(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), eplot::material, G4Proton::Proton(), G4InuclParticleNames::proton, source.hepunit::proton_mass_c2, protonHighEnergy, ProtonParametrisedDEDX(), theIonEffChargeModel, and G4VLowEnergyModel::TheValue().

◆ CutsWhereModified()

G4bool G4hRDEnergyLoss::CutsWhereModified ( )
protectedinherited

Definition at line 1154 of file G4hRDEnergyLoss.cc.

1155{
1156 G4bool wasModified = false;
1157 const G4ProductionCutsTable* theCoupleTable=
1159 size_t numOfCouples = theCoupleTable->GetTableSize();
1160
1161 for (size_t j=0; j<numOfCouples; j++){
1162 if (theCoupleTable->GetMaterialCutsCouple(j)->IsRecalcNeeded()) {
1163 wasModified = true;
1164 break;
1165 }
1166 }
1167 return wasModified;
1168}

References G4ProductionCutsTable::GetMaterialCutsCouple(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), and G4MaterialCutsCouple::IsRecalcNeeded().

Referenced by BuildPhysicsTable().

◆ DeltaRaysEnergy()

G4double G4hImpactIonisation::DeltaRaysEnergy ( const G4MaterialCutsCouple couple,
G4double  kineticEnergy,
G4double  particleMass 
) const
private

Definition at line 916 of file G4hImpactIonisation.cc.

919{
920 G4double dLoss = 0.;
921
922 G4double deltaCutNow = cutForDelta[(couple->GetIndex())] ;
923 const G4Material* material = couple->GetMaterial();
924 G4double electronDensity = material->GetElectronDensity();
925 G4double excitationEnergy = material->GetIonisation()->GetMeanExcitationEnergy();
926
927 G4double tau = kineticEnergy / particleMass ;
928 G4double rateMass = electron_mass_c2/particleMass ;
929
930 // some local variables
931
932 G4double gamma = tau + 1.0 ;
933 G4double bg2 = tau*(tau+2.0) ;
934 G4double beta2 = bg2/(gamma*gamma) ;
935 G4double tMax = 2.*electron_mass_c2*bg2/(1.0+2.0*gamma*rateMass+rateMass*rateMass) ;
936
937 // Validity range for delta electron cross section
938 G4double deltaCut = std::max(deltaCutNow, excitationEnergy);
939
940 if ( deltaCut < tMax)
941 {
942 G4double x = deltaCut / tMax ;
943 dLoss = ( beta2 * (x-1.) - std::log(x) ) * twopi_mc2_rcl2 * electronDensity / beta2 ;
944 }
945 return dLoss ;
946}
float electron_mass_c2
Definition: hepunit.py:273

References cutForDelta, source.hepunit::electron_mass_c2, G4MaterialCutsCouple::GetIndex(), G4MaterialCutsCouple::GetMaterial(), eplot::material, G4INCL::Math::max(), and source.hepunit::twopi_mc2_rcl2.

Referenced by AntiProtonParametrisedDEDX(), BuildLossTable(), and ProtonParametrisedDEDX().

◆ DumpInfo()

void G4VProcess::DumpInfo ( ) const
virtualinherited

Reimplemented in G4AdjointAlongStepWeightCorrection, G4AdjointForcedInteractionForGamma, G4AdjointhMultipleScattering, G4ContinuousGainOfEnergy, G4eAdjointMultipleScattering, G4eInverseBremsstrahlung, G4eInverseCompton, G4eInverseIonisation, G4InversePEEffect, G4IonInverseIonisation, G4PolarizedAnnihilation, G4PolarizedBremsstrahlung, G4PolarizedCompton, G4PolarizedGammaConversion, G4PolarizedIonisation, G4PolarizedPhotoElectric, G4Cerenkov, G4ForwardXrayTR, G4GammaXTRadiator, G4GaussXTRadiator, G4RegularXTRadiator, G4Scintillation, G4StrawTubeXTRadiator, G4SynchrotronRadiation, G4TransitionRadiation, G4TransparentRegXTRadiator, G4VTransitionRadiation, G4VXTRenergyLoss, G4XTRGammaRadModel, G4XTRRegularRadModel, and G4XTRTransparentRegRadModel.

Definition at line 167 of file G4VProcess.cc.

168{
169 G4cout << "Process Name " << theProcessName ;
170 G4cout << " : Type[" << GetProcessTypeName(theProcessType) << "]";
171 G4cout << " : SubType[" << theProcessSubType << "]"<< G4endl;
172}
static const G4String & GetProcessTypeName(G4ProcessType)
Definition: G4VProcess.cc:134
G4ProcessType theProcessType
Definition: G4VProcess.hh:346
G4int theProcessSubType
Definition: G4VProcess.hh:349
G4String theProcessName
Definition: G4VProcess.hh:341

References G4cout, G4endl, G4VProcess::GetProcessTypeName(), G4VProcess::theProcessName, G4VProcess::theProcessSubType, and G4VProcess::theProcessType.

Referenced by G4ProcessTable::DumpInfo(), export_G4VProcess(), G4Scintillation::ProcessDescription(), G4Cerenkov::ProcessDescription(), and G4ProcessManagerMessenger::SetNewValue().

◆ ElectronicLossFluctuation()

G4double G4hImpactIonisation::ElectronicLossFluctuation ( const G4DynamicParticle particle,
const G4MaterialCutsCouple material,
G4double  meanLoss,
G4double  step 
) const
private

Definition at line 1452 of file G4hImpactIonisation.cc.

1460{
1461 // data members to speed up the fluctuation calculation
1462 // G4int imat ;
1463 // G4double f1Fluct,f2Fluct,e1Fluct,e2Fluct,rateFluct,ipotFluct;
1464 // G4double e1LogFluct,e2LogFluct,ipotLogFluct;
1465
1466 static const G4double minLoss = 1.*eV ;
1467 static const G4double kappa = 10. ;
1468 static const G4double theBohrBeta2 = 50.0 * keV/proton_mass_c2 ;
1469
1470 const G4Material* material = couple->GetMaterial();
1471 G4int imaterial = couple->GetIndex() ;
1472 G4double ipotFluct = material->GetIonisation()->GetMeanExcitationEnergy() ;
1473 G4double electronDensity = material->GetElectronDensity() ;
1474 G4double zeff = electronDensity/(material->GetTotNbOfAtomsPerVolume()) ;
1475
1476 // get particle data
1477 G4double tkin = particle->GetKineticEnergy();
1478 G4double particleMass = particle->GetMass() ;
1479 G4double deltaCutInKineticEnergyNow = cutForDelta[imaterial];
1480
1481 // shortcut for very very small loss
1482 if(meanLoss < minLoss) return meanLoss ;
1483
1484 // Validity range for delta electron cross section
1485 G4double threshold = std::max(deltaCutInKineticEnergyNow,ipotFluct);
1486 G4double loss, siga;
1487
1488 G4double rmass = electron_mass_c2/particleMass;
1489 G4double tau = tkin/particleMass;
1490 G4double tau1 = tau+1.0;
1491 G4double tau2 = tau*(tau+2.);
1492 G4double tMax = 2.*electron_mass_c2*tau2/(1.+2.*tau1*rmass+rmass*rmass);
1493
1494
1495 if(tMax > threshold) tMax = threshold;
1496 G4double beta2 = tau2/(tau1*tau1);
1497
1498 // Gaussian fluctuation
1499 if(meanLoss > kappa*tMax || tMax < kappa*ipotFluct )
1500 {
1501 siga = tMax * (1.0-0.5*beta2) * step * twopi_mc2_rcl2
1502 * electronDensity / beta2 ;
1503
1504 // High velocity or negatively charged particle
1505 if( beta2 > 3.0*theBohrBeta2*zeff || charge < 0.0) {
1506 siga = std::sqrt( siga * chargeSquare ) ;
1507
1508 // Low velocity - additional ion charge fluctuations according to
1509 // Q.Yang et al., NIM B61(1991)149-155.
1510 } else {
1513 siga = std::sqrt( siga * (chargeSquare * chu + yang)) ;
1514 }
1515
1516 do {
1517 loss = G4RandGauss::shoot(meanLoss,siga);
1518 } while (loss < 0. || loss > 2.0*meanLoss);
1519 return loss;
1520 }
1521
1522 // Non Gaussian fluctuation
1523 static const G4double probLim = 0.01 ;
1524 static const G4double sumaLim = -std::log(probLim) ;
1525 static const G4double alim = 10.;
1526
1527 G4double suma,w1,w2,C,e0,lossc,w;
1528 G4double a1,a2,a3;
1529 G4int p1,p2,p3;
1530 G4int nb;
1531 G4double corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea;
1532 G4double dp3;
1533
1534 G4double f1Fluct = material->GetIonisation()->GetF1fluct();
1535 G4double f2Fluct = material->GetIonisation()->GetF2fluct();
1536 G4double e1Fluct = material->GetIonisation()->GetEnergy1fluct();
1537 G4double e2Fluct = material->GetIonisation()->GetEnergy2fluct();
1538 G4double e1LogFluct = material->GetIonisation()->GetLogEnergy1fluct();
1539 G4double e2LogFluct = material->GetIonisation()->GetLogEnergy2fluct();
1540 G4double rateFluct = material->GetIonisation()->GetRateionexcfluct();
1541 G4double ipotLogFluct= material->GetIonisation()->GetLogMeanExcEnergy();
1542
1543 w1 = tMax/ipotFluct;
1544 w2 = std::log(2.*electron_mass_c2*tau2);
1545
1546 C = meanLoss*(1.-rateFluct)/(w2-ipotLogFluct-beta2);
1547
1548 a1 = C*f1Fluct*(w2-e1LogFluct-beta2)/e1Fluct;
1549 a2 = C*f2Fluct*(w2-e2LogFluct-beta2)/e2Fluct;
1550 a3 = rateFluct*meanLoss*(tMax-ipotFluct)/(ipotFluct*tMax*std::log(w1));
1551 if(a1 < 0.0) a1 = 0.0;
1552 if(a2 < 0.0) a2 = 0.0;
1553 if(a3 < 0.0) a3 = 0.0;
1554
1555 suma = a1+a2+a3;
1556
1557 loss = 0.;
1558
1559
1560 if(suma < sumaLim) // very small Step
1561 {
1562 e0 = material->GetIonisation()->GetEnergy0fluct();
1563
1564 if(tMax == ipotFluct)
1565 {
1566 a3 = meanLoss/e0;
1567
1568 if(a3>alim)
1569 {
1570 siga=std::sqrt(a3) ;
1571 p3 = std::max(0,G4int(G4RandGauss::shoot(a3,siga)+0.5));
1572 }
1573 else
1574 p3 = G4Poisson(a3);
1575
1576 loss = p3*e0 ;
1577
1578 if(p3 > 0)
1579 loss += (1.-2.*G4UniformRand())*e0 ;
1580
1581 }
1582 else
1583 {
1584 tMax = tMax-ipotFluct+e0 ;
1585 a3 = meanLoss*(tMax-e0)/(tMax*e0*std::log(tMax/e0));
1586
1587 if(a3>alim)
1588 {
1589 siga=std::sqrt(a3) ;
1590 p3 = std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5));
1591 }
1592 else
1593 p3 = G4Poisson(a3);
1594
1595 if(p3 > 0)
1596 {
1597 w = (tMax-e0)/tMax ;
1598 if(p3 > nmaxCont2)
1599 {
1600 dp3 = G4float(p3) ;
1601 corrfac = dp3/G4float(nmaxCont2) ;
1602 p3 = nmaxCont2 ;
1603 }
1604 else
1605 corrfac = 1. ;
1606
1607 for(G4int i=0; i<p3; i++) loss += 1./(1.-w*G4UniformRand()) ;
1608 loss *= e0*corrfac ;
1609 }
1610 }
1611 }
1612
1613 else // not so small Step
1614 {
1615 // excitation type 1
1616 if(a1>alim)
1617 {
1618 siga=std::sqrt(a1) ;
1619 p1 = std::max(0,G4int(G4RandGauss::shoot(a1,siga)+0.5));
1620 }
1621 else
1622 p1 = G4Poisson(a1);
1623
1624 // excitation type 2
1625 if(a2>alim)
1626 {
1627 siga=std::sqrt(a2) ;
1628 p2 = std::max(0,G4int(G4RandGauss::shoot(a2,siga)+0.5));
1629 }
1630 else
1631 p2 = G4Poisson(a2);
1632
1633 loss = p1*e1Fluct+p2*e2Fluct;
1634
1635 // smearing to avoid unphysical peaks
1636 if(p2 > 0)
1637 loss += (1.-2.*G4UniformRand())*e2Fluct;
1638 else if (loss>0.)
1639 loss += (1.-2.*G4UniformRand())*e1Fluct;
1640
1641 // ionisation .......................................
1642 if(a3 > 0.)
1643 {
1644 if(a3>alim)
1645 {
1646 siga=std::sqrt(a3) ;
1647 p3 = std::max(0,G4int(G4RandGauss::shoot(a3,siga)+0.5));
1648 }
1649 else
1650 p3 = G4Poisson(a3);
1651
1652 lossc = 0.;
1653 if(p3 > 0)
1654 {
1655 na = 0.;
1656 alfa = 1.;
1657 if (p3 > nmaxCont2)
1658 {
1659 dp3 = G4float(p3);
1660 rfac = dp3/(G4float(nmaxCont2)+dp3);
1661 namean = G4float(p3)*rfac;
1662 sa = G4float(nmaxCont1)*rfac;
1663 na = G4RandGauss::shoot(namean,sa);
1664 if (na > 0.)
1665 {
1666 alfa = w1*G4float(nmaxCont2+p3)/
1667 (w1*G4float(nmaxCont2)+G4float(p3));
1668 alfa1 = alfa*std::log(alfa)/(alfa-1.);
1669 ea = na*ipotFluct*alfa1;
1670 sea = ipotFluct*std::sqrt(na*(alfa-alfa1*alfa1));
1671 lossc += G4RandGauss::shoot(ea,sea);
1672 }
1673 }
1674
1675 nb = G4int(G4float(p3)-na);
1676 if (nb > 0)
1677 {
1678 w2 = alfa*ipotFluct;
1679 w = (tMax-w2)/tMax;
1680 for (G4int k=0; k<nb; k++) lossc += w2/(1.-w*G4UniformRand());
1681 }
1682 }
1683 loss += lossc;
1684 }
1685 }
1686
1687 return loss ;
1688}
G4double C(G4double temp)
G4long G4Poisson(G4double mean)
Definition: G4Poisson.hh:50
static constexpr double eV
Definition: G4SIunits.hh:201
float G4float
Definition: G4Types.hh:84
#define G4UniformRand()
Definition: Randomize.hh:52
const long nmaxCont1
const long nmaxCont2
ThreeVector shoot(const G4int Ap, const G4int Af)

References C(), source.hepunit::electron_mass_c2, eV, G4Poisson(), G4UniformRand, keV, eplot::material, G4INCL::Math::max(), source.hepunit::proton_mass_c2, G4INCL::DeJongSpin::shoot(), and source.hepunit::twopi_mc2_rcl2.

Referenced by AlongStepDoIt().

◆ EndTracking()

void G4VProcess::EndTracking ( )
virtualinherited

◆ GetConstraints()

G4double G4hImpactIonisation::GetConstraints ( const G4DynamicParticle particle,
const G4MaterialCutsCouple couple 
)
private

Definition at line 622 of file G4hImpactIonisation.cc.

624{
625 // returns the Step limit
626 // dEdx is calculated as well as the range
627 // based on Effective Charge Approach
628
629 const G4Material* material = couple->GetMaterial();
632
633 G4double stepLimit = 0.;
634 G4double dx, highEnergy;
635
636 G4double massRatio = proton_mass_c2/(particle->GetMass()) ;
637 G4double kineticEnergy = particle->GetKineticEnergy() ;
638
639 // Scale the kinetic energy
640
641 G4double tScaled = kineticEnergy*massRatio ;
642 fBarkas = 0.;
643
644 if (charge > 0.)
645 {
646 highEnergy = protonHighEnergy ;
648 dx = G4EnergyLossTables::GetRange(proton, highEnergy, couple);
649 fdEdx = G4EnergyLossTables::GetDEDX(proton, tScaled, couple)
650 * chargeSquare ;
651
652 // Correction for positive ions
653 if (theBarkas && tScaled > highEnergy)
654 {
657 }
658 // Antiprotons and negative hadrons
659 }
660 else
661 {
662 highEnergy = antiprotonHighEnergy ;
663 fRangeNow = G4EnergyLossTables::GetRange(antiproton, tScaled, couple);
664 dx = G4EnergyLossTables::GetRange(antiproton, highEnergy, couple);
665 fdEdx = G4EnergyLossTables::GetDEDX(antiproton, tScaled, couple) * chargeSquare ;
666
667 if (theBarkas && tScaled > highEnergy)
668 {
671 }
672 }
673 /*
674 const G4Material* mat = couple->GetMaterial();
675 G4double fac = gram/(MeV*cm2*mat->GetDensity());
676 G4cout << particle->GetDefinition()->GetParticleName()
677 << " in " << mat->GetName()
678 << " E(MeV)= " << kineticEnergy/MeV
679 << " dedx(MeV*cm^2/g)= " << fdEdx*fac
680 << " barcas(MeV*cm^2/gram)= " << fBarkas*fac
681 << " Q^2= " << chargeSquare
682 << G4endl;
683 */
684 // scaling back
685 fRangeNow /= (chargeSquare*massRatio) ;
686 dx /= (chargeSquare*massRatio) ;
687
688 stepLimit = fRangeNow ;
691
692 if (fRangeNow > r)
693 {
694 stepLimit = dRoverRange*fRangeNow + r*(1.0 - dRoverRange)*(2.0 - r/fRangeNow);
695 if (stepLimit > fRangeNow) stepLimit = fRangeNow;
696 }
697 // compute the (random) Step limit in standard energy range
698 if(tScaled > highEnergy )
699 {
700 // add Barkas correction directly to dedx
701 fdEdx += fBarkas;
702
703 if(stepLimit > fRangeNow - dx*0.9) stepLimit = fRangeNow - dx*0.9 ;
704
705 // Step limit in low energy range
706 }
707 else
708 {
710 if (stepLimit > x) stepLimit = x;
711 }
712 return stepLimit;
713}
@ idxG4ElectronCut
static G4double GetRange(const G4ParticleDefinition *aParticle, G4double KineticEnergy, const G4Material *aMaterial)
G4ProductionCuts * GetProductionCuts() const
G4double GetProductionCut(G4int index) const
G4double BlochTerm(const G4Material *material, G4double kineticEnergy, G4double cSquare) const
G4double BarkasTerm(const G4Material *material, G4double kineticEnergy) const
static G4ThreadLocal G4double finalRange
static G4ThreadLocal G4double dRoverRange
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References G4AntiProton::AntiProton(), antiprotonHighEnergy, BarkasTerm(), BlochTerm(), charge, chargeSquare, G4hRDEnergyLoss::dRoverRange, fBarkas, fdEdx, G4hRDEnergyLoss::finalRange, fRangeNow, G4EnergyLossTables::GetDEDX(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMass(), G4MaterialCutsCouple::GetMaterial(), G4ProductionCuts::GetProductionCut(), G4MaterialCutsCouple::GetProductionCuts(), G4EnergyLossTables::GetRange(), idxG4ElectronCut, eplot::material, G4INCL::Math::min(), paramStepLimit, G4Proton::Proton(), G4InuclParticleNames::proton, source.hepunit::proton_mass_c2, protonHighEnergy, and theBarkas.

Referenced by GetContinuousStepLimit().

◆ GetContinuousStepLimit()

G4double G4hImpactIonisation::GetContinuousStepLimit ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double currentSafety 
)
inlinevirtual

Implements G4VContinuousDiscreteProcess.

Definition at line 293 of file G4hImpactIonisation.hh.

297{
299
300 // ---- MGP ---- The following line, taken as is from G4hLowEnergyIonisation,
301 // is meaningless: currentMinimumStep is passed by value,
302 // therefore any local modification to it has no effect
303
304 if ((step > 0.) && (step < currentMinimumStep)) currentMinimumStep = step ;
305
306 return step ;
307}
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4double GetConstraints(const G4DynamicParticle *particle, const G4MaterialCutsCouple *couple)

References GetConstraints(), G4Track::GetDynamicParticle(), and G4Track::GetMaterialCutsCouple().

◆ GetCurrentInteractionLength()

G4double G4VProcess::GetCurrentInteractionLength ( ) const
inlineinherited

◆ GetGPILSelection()

G4GPILSelection G4VContinuousDiscreteProcess::GetGPILSelection ( ) const
inlineprotectedinherited

◆ GetMasterProcess()

const G4VProcess * G4VProcess::GetMasterProcess ( ) const
inlineinherited

◆ GetMeanFreePath()

G4double G4hImpactIonisation::GetMeanFreePath ( const G4Track track,
G4double  previousStepSize,
enum G4ForceCondition condition 
)
virtual

Implements G4hRDEnergyLoss.

Definition at line 588 of file G4hImpactIonisation.cc.

591{
592 const G4DynamicParticle* dynamicParticle = track.GetDynamicParticle();
593 const G4MaterialCutsCouple* couple = track.GetMaterialCutsCouple();
594 const G4Material* material = couple->GetMaterial();
595
596 G4double meanFreePath = DBL_MAX;
597 // ---- MGP ---- What is the meaning of the local variable isOutOfRange?
598 G4bool isOutRange = false;
599
601
602 G4double kineticEnergy = (dynamicParticle->GetKineticEnergy())*initialMass/(dynamicParticle->GetMass());
603 charge = dynamicParticle->GetCharge()/eplus;
605
606 if (kineticEnergy < LowestKineticEnergy)
607 {
608 meanFreePath = DBL_MAX;
609 }
610 else
611 {
612 if (kineticEnergy > HighestKineticEnergy) kineticEnergy = HighestKineticEnergy;
613 meanFreePath = (((*theMeanFreePathTable)(couple->GetIndex()))->
614 GetValue(kineticEnergy,isOutRange))/chargeSquare;
615 }
616
617 return meanFreePath ;
618}
@ NotForced
G4double GetCharge() const

References charge, chargeSquare, condition(), DBL_MAX, eplus, G4DynamicParticle::GetCharge(), G4Track::GetDynamicParticle(), G4MaterialCutsCouple::GetIndex(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMass(), G4MaterialCutsCouple::GetMaterial(), G4Track::GetMaterialCutsCouple(), G4hRDEnergyLoss::HighestKineticEnergy, initialMass, G4hRDEnergyLoss::LowestKineticEnergy, eplot::material, NotForced, theIonEffChargeModel, and G4VLowEnergyModel::TheValue().

◆ GetNumberOfInteractionLengthLeft()

G4double G4VProcess::GetNumberOfInteractionLengthLeft ( ) const
inlineinherited

Definition at line 431 of file G4VProcess.hh.

432{
434}

References G4VProcess::theNumberOfInteractionLengthLeft.

◆ GetNumberOfProcesses()

G4int G4hRDEnergyLoss::GetNumberOfProcesses ( )
staticinherited

Definition at line 190 of file G4hRDEnergyLoss.cc.

191{
192 return NumberOfProcesses;
193}

References G4hRDEnergyLoss::NumberOfProcesses.

◆ GetPhysicsTableFileName()

const G4String & G4VProcess::GetPhysicsTableFileName ( const G4ParticleDefinition particle,
const G4String directory,
const G4String tableName,
G4bool  ascii = false 
)
inherited

Definition at line 181 of file G4VProcess.cc.

186{
187 G4String thePhysicsTableFileExt;
188 if (ascii) thePhysicsTableFileExt = ".asc";
189 else thePhysicsTableFileExt = ".dat";
190
191 thePhysicsTableFileName = directory + "/";
192 thePhysicsTableFileName += tableName + "." + theProcessName + ".";
194 + thePhysicsTableFileExt;
195
197}
const G4String & GetParticleName() const
G4String thePhysicsTableFileName
Definition: G4VProcess.hh:344

References G4ParticleDefinition::GetParticleName(), G4VProcess::thePhysicsTableFileName, and G4VProcess::theProcessName.

Referenced by export_G4VProcess(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrieveTable(), G4GammaGeneralProcess::StorePhysicsTable(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), and G4VEnergyLossProcess::StoreTable().

◆ GetPILfactor()

G4double G4VProcess::GetPILfactor ( ) const
inlineinherited

Definition at line 455 of file G4VProcess.hh.

456{
457 return thePILfactor;
458}

References G4VProcess::thePILfactor.

Referenced by export_G4VProcess().

◆ GetProcessManager()

const G4ProcessManager * G4VProcess::GetProcessManager ( )
inlinevirtualinherited

Reimplemented in G4BiasingProcessInterface, and G4WrapperProcess.

Definition at line 494 of file G4VProcess.hh.

495{
496 return aProcessManager;
497}
const G4ProcessManager * aProcessManager
Definition: G4VProcess.hh:319

References G4VProcess::aProcessManager.

Referenced by G4BiasingProcessInterface::GetProcessManager(), and G4WrapperProcess::GetProcessManager().

◆ GetProcessName()

const G4String & G4VProcess::GetProcessName ( ) const
inlineinherited

Definition at line 382 of file G4VProcess.hh.

383{
384 return theProcessName;
385}

References G4VProcess::theProcessName.

Referenced by G4VEnergyLossProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateForcedInteraction(), G4ProcessManager::ActivateProcess(), G4VEmProcess::ActivateSecondaryBiasing(), G4VEnergyLossProcess::ActivateSecondaryBiasing(), G4ParallelGeometriesLimiterProcess::AddParallelWorld(), G4IonQMDPhysics::AddProcess(), G4IonINCLXXPhysics::AddProcess(), G4ProcessManager::AddProcess(), G4ProcessPlacer::AddProcessAs(), G4ITSteppingVerbose::AlongStepDoItAllDone(), G4SteppingVerbose::AlongStepDoItAllDone(), G4SteppingVerboseWithUnits::AlongStepDoItAllDone(), G4ITSteppingVerbose::AlongStepDoItOneByOne(), G4SteppingVerbose::AlongStepDoItOneByOne(), G4SteppingVerboseWithUnits::AlongStepDoItOneByOne(), G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4VContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4BOptnLeadingParticle::ApplyFinalStateBiasing(), G4ITSteppingVerbose::AtRestDoItInvoked(), G4SteppingVerbose::AtRestDoItInvoked(), G4SteppingVerboseWithUnits::AtRestDoItInvoked(), G4ITSteppingVerbose::AtRestDoItOneByOne(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4HadronicProcess::BiasCrossSectionByFactor(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VEnergyLossProcess::BuildDEDXTable(), G4VUserPhysicsList::BuildIntegralPhysicsTable(), G4VEmProcess::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4LossTableManager::BuildPhysicsTable(), G4LossTableManager::BuildTables(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4ProcessManager::CheckOrderingParameters(), G4HadronicProcess::CheckResult(), G4StackChecker::ClassifyNewTrack(), G4BOptrForceCollision::ConfigureForWorker(), G4RunManagerKernel::ConfirmCoupledTransportation(), G4FastSimulationPhysics::ConstructProcess(), G4GenericBiasingPhysics::ConstructProcess(), G4IonElasticPhysics::ConstructProcess(), G4LossTableManager::CopyTables(), G4RichTrajectory::CreateAttValues(), G4RichTrajectoryPoint::CreateAttValues(), G4VPhononProcess::CreateSecondary(), G4EmExtraParameters::DefineRegParamForEM(), G4EmExtraParameters::DefineRegParamForLoss(), G4HadronicProcessStore::DeRegisterExtraProcess(), G4ITSteppingVerbose::DPSLAlongStep(), G4SteppingVerbose::DPSLAlongStep(), G4SteppingVerboseWithUnits::DPSLAlongStep(), G4ITSteppingVerbose::DPSLPostStep(), G4SteppingVerbose::DPSLPostStep(), G4SteppingVerboseWithUnits::DPSLPostStep(), G4HadronicProcessStore::Dump(), G4HadronicProcess::DumpState(), G4MuonicAtomDecay::DumpState(), G4ExceptionHandler::DumpTrackInfo(), export_G4VProcess(), G4EmCalculator::FindEmModel(), G4VEmProcess::FindLambdaMax(), G4BiasingProcessInterface::G4BiasingProcessInterface(), G4Cerenkov::G4Cerenkov(), G4ErrorEnergyLoss::G4ErrorEnergyLoss(), G4ErrorTrackLengthTarget::G4ErrorTrackLengthTarget(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4ImportanceProcess::G4ImportanceProcess(), G4MaxTimeCuts::G4MaxTimeCuts(), G4MicroElecSurface::G4MicroElecSurface(), G4MinEkineCuts::G4MinEkineCuts(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess::G4OpBoundaryProcess(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4Scintillation::G4Scintillation(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4SpecialCuts::G4SpecialCuts(), G4StepLimiter::G4StepLimiter(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UserSpecialCuts::G4UserSpecialCuts(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4HadronicProcess::GetElementCrossSection(), G4VEmProcess::GetEmProcess(), G4GammaGeneralProcess::GetEmProcess(), G4WeightWindowProcess::GetName(), G4ProcessManager::GetProcess(), G4ProcessManager::GetProcessVectorIndex(), G4GammaGeneralProcess::GetSubProcessName(), G4ProcessManager::InActivateProcess(), G4hhIonisation::InitialiseEnergyLossProcess(), G4ProcessTable::Insert(), G4ITStepProcessor::InvokeAlongStepDoItProcs(), G4SteppingManager::InvokeAlongStepDoItProcs(), G4SteppingManager::InvokeAtRestDoItProcs(), G4SteppingManager::InvokePSDIP(), G4LossTableManager::LocalPhysicsTables(), G4ErrorPropagator::MakeOneStep(), G4VEmProcess::PostStepDoIt(), G4ITSteppingVerbose::PostStepDoItAllDone(), G4SteppingVerbose::PostStepDoItAllDone(), G4SteppingVerboseWithUnits::PostStepDoItAllDone(), G4ITSteppingVerbose::PostStepDoItOneByOne(), G4SteppingVerbose::PostStepDoItOneByOne(), G4SteppingVerboseWithUnits::PostStepDoItOneByOne(), G4VITDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4ITSteppingVerbose::PostStepVerbose(), G4EmConfigurator::PrepareModels(), G4HadronStoppingProcess::PreparePhysicsTable(), G4GammaGeneralProcess::PreparePhysicsTable(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4LossTableManager::PreparePhysicsTable(), G4HadronicProcessStore::Print(), G4HadronicProcessStore::PrintHtml(), G4AnnihiToMuPair::PrintInfoDefinition(), G4GammaConversionToMuons::PrintInfoDefinition(), PrintInfoDefinition(), G4ProcessPlacer::PrintProcVec(), G4VEnergyLossProcess::PrintWarning(), G4VEmProcess::PrintWarning(), G4SynchrotronRadiation::ProcessDescription(), G4Decay::ProcessDescription(), G4DecayWithSpin::ProcessDescription(), G4PionDecayMakeSpin::ProcessDescription(), G4UnknownDecay::ProcessDescription(), G4ChannelingOptrChangeCrossSection::ProposeOccurenceBiasingOperation(), G4StackManager::PushOneTrack(), G4HadronicProcessStore::Register(), G4LossTableManager::Register(), G4LossTableManager::RegisterExtraParticle(), G4HadronicProcessStore::RegisterExtraProcess(), G4HadronicProcessStore::RegisterParticle(), G4WrapperProcess::RegisterProcess(), G4PhysicsListHelper::RegisterProcess(), G4ProcessTable::Remove(), G4ParallelGeometriesLimiterProcess::RemoveParallelWorld(), G4ProcessManager::RemoveProcess(), G4ProcessPlacer::RemoveProcess(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrievePhysicsTable(), G4VEmProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCSDARangeTable(), G4VEnergyLossProcess::SetInverseRangeTable(), G4VEnergyLossProcess::SetLambdaTable(), G4ProcessTableMessenger::SetNewValue(), G4ProcessTable::SetProcessActivation(), G4ProcessManager::SetProcessOrdering(), G4ProcessManager::SetProcessOrderingToFirst(), G4ProcessManager::SetProcessOrderingToLast(), G4ProcessManager::SetProcessOrderingToSecond(), G4VEnergyLossProcess::SetRangeTableForLoss(), G4VEnergyLossProcess::SetSecondaryRangeTable(), G4FastSimulationManagerProcess::SetWorldVolume(), G4ITSteppingVerbose::ShowStep(), G4SteppingVerbose::ShowStep(), G4SteppingVerboseWithUnits::ShowStep(), G4ChannelingOptrChangeCrossSection::StartRun(), G4ITSteppingVerbose::StepInfo(), G4SteppingVerbose::StepInfo(), G4SteppingVerboseWithUnits::StepInfo(), G4ITSteppingVerbose::StepInfoForLeadingTrack(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), G4VEnergyLossProcess::StreamInfo(), G4VEmProcess::StreamInfo(), G4VMultipleScattering::StreamInfo(), G4EmCalculator::UpdateParticle(), G4ParallelWorldScoringProcess::Verbose(), G4ScoreSplittingProcess::Verbose(), G4ITSteppingVerbose::VerboseTrack(), G4SteppingVerbose::VerboseTrack(), and G4SteppingVerboseWithUnits::VerboseTrack().

◆ GetProcessSubType()

G4int G4VProcess::GetProcessSubType ( ) const
inlineinherited

◆ GetProcessType()

G4ProcessType G4VProcess::GetProcessType ( ) const
inlineinherited

◆ GetProcessTypeName()

const G4String & G4VProcess::GetProcessTypeName ( G4ProcessType  aType)
staticinherited

Definition at line 134 of file G4VProcess.cc.

135{
136 switch (aType)
137 {
138 case fNotDefined: return typeNotDefined; break;
139 case fTransportation: return typeTransportation; break;
140 case fElectromagnetic: return typeElectromagnetic; break;
141 case fOptical: return typeOptical; break;
142 case fHadronic: return typeHadronic; break;
144 case fDecay: return typeDecay; break;
145 case fGeneral: return typeGeneral; break;
146 case fParameterisation: return typeParameterisation; break;
147 case fUserDefined: return typeUserDefined; break;
148 case fPhonon: return typePhonon; break;
149 default: ;
150 }
151 return noType;
152}
@ fOptical
@ fPhonon
@ fParameterisation
@ fGeneral
@ fDecay
@ fElectromagnetic
@ fHadronic
@ fUserDefined
@ fTransportation
@ fPhotolepton_hadron
@ fNotDefined
static const G4String typeNotDefined
Definition: G4VProcess.cc:119
static const G4String typeParameterisation
Definition: G4VProcess.cc:127
static const G4String typePhotolepton_hadron
Definition: G4VProcess.cc:124
static const G4String typeElectromagnetic
Definition: G4VProcess.cc:121
static const G4String noType
Definition: G4VProcess.cc:130
static const G4String typeUserDefined
Definition: G4VProcess.cc:128
static const G4String typeDecay
Definition: G4VProcess.cc:125
static const G4String typeTransportation
Definition: G4VProcess.cc:120
static const G4String typeHadronic
Definition: G4VProcess.cc:123
static const G4String typeOptical
Definition: G4VProcess.cc:122
static const G4String typeGeneral
Definition: G4VProcess.cc:126
static const G4String typePhonon
Definition: G4VProcess.cc:129

References fDecay, fElectromagnetic, fGeneral, fHadronic, fNotDefined, fOptical, fParameterisation, fPhonon, fPhotolepton_hadron, fTransportation, fUserDefined, anonymous_namespace{G4VProcess.cc}::noType, anonymous_namespace{G4VProcess.cc}::typeDecay, anonymous_namespace{G4VProcess.cc}::typeElectromagnetic, anonymous_namespace{G4VProcess.cc}::typeGeneral, anonymous_namespace{G4VProcess.cc}::typeHadronic, anonymous_namespace{G4VProcess.cc}::typeNotDefined, anonymous_namespace{G4VProcess.cc}::typeOptical, anonymous_namespace{G4VProcess.cc}::typeParameterisation, anonymous_namespace{G4VProcess.cc}::typePhonon, anonymous_namespace{G4VProcess.cc}::typePhotolepton_hadron, anonymous_namespace{G4VProcess.cc}::typeTransportation, and anonymous_namespace{G4VProcess.cc}::typeUserDefined.

Referenced by G4RichTrajectory::CreateAttValues(), G4RichTrajectoryPoint::CreateAttValues(), G4ProcessManager::DumpInfo(), G4VProcess::DumpInfo(), G4ProcessTableMessenger::G4ProcessTableMessenger(), G4ProcessTableMessenger::GetProcessType(), G4ProcessTableMessenger::GetProcessTypeName(), and G4ProcessTableMessenger::SetNumberOfProcessType().

◆ GetTotalNumberOfInteractionLengthTraversed()

G4double G4VProcess::GetTotalNumberOfInteractionLengthTraversed ( ) const
inlineinherited

◆ GetVerboseLevel()

G4int G4VProcess::GetVerboseLevel ( ) const
inlineinherited

◆ InitializeMe()

void G4hImpactIonisation::InitializeMe ( )
private

Definition at line 105 of file G4hImpactIonisation.cc.

106{
107 LowestKineticEnergy = 10.0*eV ;
108 HighestKineticEnergy = 100.0*GeV ;
109 MinKineticEnergy = 10.0*eV ;
110 TotBin = 360 ;
111 protonLowEnergy = 1.*keV ;
112 protonHighEnergy = 100.*MeV ;
115 minGammaEnergy = 100 * eV;
116 minElectronEnergy = 250.* eV;
117 verboseLevel = 0;
118
119 // Min and max energy of incident particle for the calculation of shell cross sections
120 // for PIXE generation
121 eMinPixe = 1.* keV;
122 eMaxPixe = 200. * MeV;
123
124 G4String defaultPixeModel("ecpssr");
125 modelK = defaultPixeModel;
126 modelL = defaultPixeModel;
127 modelM = defaultPixeModel;
128}
static constexpr double GeV
Definition: G4SIunits.hh:203

References antiprotonHighEnergy, antiprotonLowEnergy, eMaxPixe, eMinPixe, eV, GeV, G4hRDEnergyLoss::HighestKineticEnergy, keV, G4hRDEnergyLoss::LowestKineticEnergy, MeV, minElectronEnergy, minGammaEnergy, G4hRDEnergyLoss::MinKineticEnergy, modelK, modelL, modelM, protonHighEnergy, protonLowEnergy, G4hRDEnergyLoss::TotBin, and G4VProcess::verboseLevel.

Referenced by G4hImpactIonisation().

◆ InitializeParametrisation()

void G4hImpactIonisation::InitializeParametrisation ( )
private

Definition at line 174 of file G4hImpactIonisation.cc.

References antiprotonModel, antiprotonTable, betheBlochModel, G4VLowEnergyModel::HighEnergyLimit(), G4INCL::Math::min(), protonHighEnergy, protonModel, protonTable, theIonChuFluctuationModel, theIonEffChargeModel, theIonYangFluctuationModel, theNuclearStoppingModel, and theNuclearTable.

Referenced by BuildPhysicsTable().

◆ InvertRangeVector()

void G4hRDEnergyLoss::InvertRangeVector ( G4int  materialIndex,
G4PhysicsLogVector rangeVector 
)
staticprivateinherited

Definition at line 1101 of file G4hRDEnergyLoss.cc.

1103{
1104 // invert range vector for a material
1105
1106 G4double LowEdgeRange,A,B,C,discr,KineticEnergy ;
1108 G4double rangebin = 0.0 ;
1109 G4int binnumber = -1 ;
1110 G4bool isOut ;
1111
1112
1113 //loop for range values
1114 for( G4int i=0; i<TotBin; i++)
1115 {
1116 LowEdgeRange = aVector->GetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i)
1117
1118 if( rangebin < LowEdgeRange )
1119 {
1120 do
1121 {
1122 binnumber += 1 ;
1123 Tbin *= RTable ;
1124 rangebin = (*theRangeTable)(materialIndex)->GetValue(Tbin,isOut) ;
1125 }
1126 while ((rangebin < LowEdgeRange) && (binnumber < TotBin )) ;
1127 }
1128
1129 if(binnumber == 0)
1131 else if(binnumber == TotBin-1)
1133 else
1134 {
1135 A = (*(*theRangeCoeffATable)(materialIndex))(binnumber-1) ;
1136 B = (*(*theRangeCoeffBTable)(materialIndex))(binnumber-1) ;
1137 C = (*(*theRangeCoeffCTable)(materialIndex))(binnumber-1) ;
1138 if(A==0.)
1139 KineticEnergy = (LowEdgeRange -C )/B ;
1140 else
1141 {
1142 discr = B*B - 4.*A*(C-LowEdgeRange);
1143 discr = discr>0. ? std::sqrt(discr) : 0.;
1144 KineticEnergy = 0.5*(discr-B)/A ;
1145 }
1146 }
1147
1148 aVector->PutValue(i,KineticEnergy) ;
1149 }
1150}
G4double B(G4double temperature)
const G4double A[17]

References A, B(), C(), G4PhysicsVector::GetLowEdgeEnergy(), G4hRDEnergyLoss::HighestKineticEnergy, G4hRDEnergyLoss::LowestKineticEnergy, G4PhysicsVector::PutValue(), G4hRDEnergyLoss::RTable, and G4hRDEnergyLoss::TotBin.

◆ isAlongStepDoItIsEnabled()

G4bool G4VProcess::isAlongStepDoItIsEnabled ( ) const
inlineinherited

Definition at line 506 of file G4VProcess.hh.

507{
508 return enableAlongStepDoIt;
509}
G4bool enableAlongStepDoIt
Definition: G4VProcess.hh:360

References G4VProcess::enableAlongStepDoIt.

Referenced by G4ProcessManager::CheckOrderingParameters().

◆ IsApplicable()

G4bool G4hImpactIonisation::IsApplicable ( const G4ParticleDefinition particle)
inlinevirtual

Reimplemented from G4VProcess.

Definition at line 310 of file G4hImpactIonisation.hh.

311{
312 // ---- MGP ---- Better criterion for applicability to be defined;
313 // now hard-coded particle mass > 0.1 * proton_mass
314
315 return (particle.GetPDGCharge() != 0.0 && particle.GetPDGMass() > CLHEP::proton_mass_c2*0.1);
316}
static constexpr double proton_mass_c2

References G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), and CLHEP::proton_mass_c2.

◆ isAtRestDoItIsEnabled()

G4bool G4VProcess::isAtRestDoItIsEnabled ( ) const
inlineinherited

Definition at line 500 of file G4VProcess.hh.

501{
502 return enableAtRestDoIt;
503}
G4bool enableAtRestDoIt
Definition: G4VProcess.hh:359

References G4VProcess::enableAtRestDoIt.

Referenced by G4ProcessManager::CheckOrderingParameters().

◆ isPostStepDoItIsEnabled()

G4bool G4VProcess::isPostStepDoItIsEnabled ( ) const
inlineinherited

Definition at line 512 of file G4VProcess.hh.

513{
514 return enablePostStepDoIt;
515}
G4bool enablePostStepDoIt
Definition: G4VProcess.hh:361

References G4VProcess::enablePostStepDoIt.

Referenced by G4ProcessManager::CheckOrderingParameters().

◆ LabTimeIntLog()

G4double G4hRDEnergyLoss::LabTimeIntLog ( G4PhysicsVector physicsVector,
G4int  nbin 
)
staticprivateinherited

Definition at line 703 of file G4hRDEnergyLoss.cc.

705{
706 // num. integration, logarithmic binning
707
708 G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
709 G4bool isOut;
710 ltt = ltauhigh-ltaulow;
711 dltau = ltt/nbin;
712 Value = 0.;
713
714 for (G4int i=0; i<=nbin; i++)
715 {
716 ui = ltaulow+dltau*i;
717 taui = std::exp(ui);
718 ti = ParticleMass*taui;
719 lossi = physicsVector->GetValue(ti,isOut);
720 if(i==0)
721 ci=0.5;
722 else
723 {
724 if(i<nbin)
725 ci=1.;
726 else
727 ci=0.5;
728 }
729 Value += ci*taui*(ti+ParticleMass)/(std::sqrt(ti*(ti+2.*ParticleMass))*lossi);
730 }
731 Value *= ParticleMass*dltau/c_light;
732 return Value;
733}

References source.hepunit::c_light, G4PhysicsVector::GetValue(), G4hRDEnergyLoss::ltauhigh, G4hRDEnergyLoss::ltaulow, and G4hRDEnergyLoss::ParticleMass.

Referenced by G4hRDEnergyLoss::BuildLabTimeVector().

◆ MicroscopicCrossSection()

G4double G4hImpactIonisation::MicroscopicCrossSection ( const G4ParticleDefinition aParticleType,
G4double  kineticEnergy,
G4double  atomicNumber,
G4double  deltaCutInEnergy 
) const
private

Definition at line 530 of file G4hImpactIonisation.cc.

534{
535 //******************************************************************
536 // cross section formula is OK for spin=0, 1/2, 1 only !
537 // *****************************************************************
538
539 // Calculates the microscopic cross section in GEANT4 internal units
540 // Formula documented in Geant4 Phys. Ref. Manual
541 // ( it is called for elements, AtomicNumber = z )
542
543 G4double totalCrossSection = 0.;
544
545 // Particle mass and energy
546 G4double particleMass = initialMass;
547 G4double energy = kineticEnergy + particleMass;
548
549 // Some kinematics
550 G4double gamma = energy / particleMass;
551 G4double beta2 = 1. - 1. / (gamma * gamma);
552 G4double var = electron_mass_c2 / particleMass;
553 G4double tMax = 2. * electron_mass_c2 * (gamma*gamma - 1.) / (1. + 2.* gamma*var + var*var);
554
555 // Calculate the total cross section
556
557 if ( tMax > deltaCutInEnergy )
558 {
559 var = deltaCutInEnergy / tMax;
560 totalCrossSection = (1. - var * (1. - beta2 * std::log(var))) / deltaCutInEnergy ;
561
562 G4double spin = particleDef.GetPDGSpin() ;
563
564 // +term for spin=1/2 particle
565 if (spin == 0.5)
566 {
567 totalCrossSection += 0.5 * (tMax - deltaCutInEnergy) / (energy*energy);
568 }
569 // +term for spin=1 particle
570 else if (spin > 0.9 )
571 {
572 totalCrossSection += -std::log(var) /
573 (3. * deltaCutInEnergy) + (tMax - deltaCutInEnergy) * ( (5. + 1. /var)*0.25 / (energy*energy) -
574 beta2 / (tMax * deltaCutInEnergy) ) / 3. ;
575 }
576 totalCrossSection *= twopi_mc2_rcl2 * atomicNumber / beta2 ;
577 }
578
579 //std::cout << "Microscopic = " << totalCrossSection/barn
580 // << ", e = " << kineticEnergy/MeV <<std:: endl;
581
582 return totalCrossSection ;
583}

References source.hepunit::electron_mass_c2, G4INCL::KinematicsUtils::energy(), G4ParticleDefinition::GetPDGSpin(), initialMass, and source.hepunit::twopi_mc2_rcl2.

Referenced by BuildLambdaTable().

◆ MinusNumberOfProcesses()

void G4hRDEnergyLoss::MinusNumberOfProcesses ( )
staticinherited

Definition at line 211 of file G4hRDEnergyLoss.cc.

212{
214}

References G4hRDEnergyLoss::NumberOfProcesses.

◆ operator!=()

G4bool G4VProcess::operator!= ( const G4VProcess right) const
inherited

Definition at line 161 of file G4VProcess.cc.

162{
163 return (this != &right);
164}

◆ operator=()

G4hImpactIonisation & G4hImpactIonisation::operator= ( const G4hImpactIonisation right)
private

◆ operator==()

G4bool G4VProcess::operator== ( const G4VProcess right) const
inherited

Definition at line 155 of file G4VProcess.cc.

156{
157 return (this == &right);
158}

◆ PlusNumberOfProcesses()

void G4hRDEnergyLoss::PlusNumberOfProcesses ( )
staticinherited

Definition at line 204 of file G4hRDEnergyLoss.cc.

205{
207}

References G4hRDEnergyLoss::NumberOfProcesses.

◆ PostStepDoIt()

G4VParticleChange * G4hImpactIonisation::PostStepDoIt ( const G4Track track,
const G4Step Step 
)
virtual

Implements G4hRDEnergyLoss.

Definition at line 951 of file G4hImpactIonisation.cc.

953{
954 // Units are expressed in GEANT4 internal units.
955
956 // std::cout << "----- Calling PostStepDoIt ----- " << std::endl;
957
959 const G4MaterialCutsCouple* couple = track.GetMaterialCutsCouple();
960 const G4DynamicParticle* aParticle = track.GetDynamicParticle() ;
961
962 // Some kinematics
963
964 G4ParticleDefinition* definition = track.GetDefinition();
965 G4double mass = definition->GetPDGMass();
966 G4double kineticEnergy = aParticle->GetKineticEnergy();
967 G4double totalEnergy = kineticEnergy + mass ;
968 G4double pSquare = kineticEnergy *( totalEnergy + mass) ;
969 G4double eSquare = totalEnergy * totalEnergy;
970 G4double betaSquare = pSquare / eSquare;
971 G4ThreeVector particleDirection = aParticle->GetMomentumDirection() ;
972
973 G4double gamma = kineticEnergy / mass + 1.;
974 G4double r = electron_mass_c2 / mass;
975 G4double tMax = 2. * electron_mass_c2 *(gamma*gamma - 1.) / (1. + 2.*gamma*r + r*r);
976
977 // Validity range for delta electron cross section
978 G4double deltaCut = cutForDelta[couple->GetIndex()];
979
980 // This should not be a case
981 if (deltaCut >= tMax)
983
984 G4double xc = deltaCut / tMax;
985 G4double rate = tMax / totalEnergy;
986 rate = rate*rate ;
987 G4double spin = aParticle->GetDefinition()->GetPDGSpin() ;
988
989 // Sampling follows ...
990 G4double x = 0.;
991 G4double gRej = 0.;
992
993 do {
994 x = xc / (1. - (1. - xc) * G4UniformRand());
995
996 if (0.0 == spin)
997 {
998 gRej = 1.0 - betaSquare * x ;
999 }
1000 else if (0.5 == spin)
1001 {
1002 gRej = (1. - betaSquare * x + 0.5 * x*x * rate) / (1. + 0.5 * rate) ;
1003 }
1004 else
1005 {
1006 gRej = (1. - betaSquare * x ) * (1. + x/(3.*xc)) +
1007 x*x * rate * (1. + 0.5*x/xc) / 3.0 /
1008 (1. + 1./(3.*xc) + rate *(1.+ 0.5/xc) / 3.);
1009 }
1010
1011 } while( G4UniformRand() > gRej );
1012
1013 G4double deltaKineticEnergy = x * tMax;
1014 G4double deltaTotalMomentum = std::sqrt(deltaKineticEnergy *
1015 (deltaKineticEnergy + 2. * electron_mass_c2 ));
1016 G4double totalMomentum = std::sqrt(pSquare) ;
1017 G4double cosTheta = deltaKineticEnergy * (totalEnergy + electron_mass_c2) / (deltaTotalMomentum*totalMomentum);
1018
1019 // protection against cosTheta > 1 or < -1
1020 if ( cosTheta < -1. ) cosTheta = -1.;
1021 if ( cosTheta > 1. ) cosTheta = 1.;
1022
1023 // direction of the delta electron
1024 G4double phi = twopi * G4UniformRand();
1025 G4double sinTheta = std::sqrt(1. - cosTheta*cosTheta);
1026 G4double dirX = sinTheta * std::cos(phi);
1027 G4double dirY = sinTheta * std::sin(phi);
1028 G4double dirZ = cosTheta;
1029
1030 G4ThreeVector deltaDirection(dirX,dirY,dirZ);
1031 deltaDirection.rotateUz(particleDirection);
1032
1033 // create G4DynamicParticle object for delta ray
1034 G4DynamicParticle* deltaRay = new G4DynamicParticle;
1035 deltaRay->SetKineticEnergy( deltaKineticEnergy );
1036 deltaRay->SetMomentumDirection(deltaDirection.x(),
1037 deltaDirection.y(),
1038 deltaDirection.z());
1040
1041 // fill aParticleChange
1042 G4double finalKineticEnergy = kineticEnergy - deltaKineticEnergy;
1043 size_t totalNumber = 1;
1044
1045 // Atomic relaxation
1046
1047 // ---- MGP ---- Temporary limitation: currently PIXE only for incident protons
1048
1049 size_t nSecondaries = 0;
1050 std::vector<G4DynamicParticle*>* secondaryVector = 0;
1051
1052 if (definition == G4Proton::ProtonDefinition())
1053 {
1054 const G4Material* material = couple->GetMaterial();
1055
1056 // Lazy initialization of pixeCrossSectionHandler
1057 if (pixeCrossSectionHandler == 0)
1058 {
1059 // Instantiate pixeCrossSectionHandler with selected shell cross section models
1060 // Ownership of interpolation is transferred to pixeCrossSectionHandler
1061 G4IInterpolator* interpolation = new G4LogLogInterpolator();
1064 G4String fileName("proton");
1066 // pixeCrossSectionHandler->PrintData();
1067 }
1068
1069 // Select an atom in the current material based on the total shell cross sections
1071 // std::cout << "G4hImpactIonisation::PostStepDoIt - Z = " << Z << std::endl;
1072
1073 // G4double microscopicCross = MicroscopicCrossSection(*definition,
1074 // kineticEnergy,
1075 // Z, deltaCut);
1076 // G4double crossFromShells = pixeCrossSectionHandler->FindValue(Z,kineticEnergy);
1077
1078 //std::cout << "G4hImpactIonisation: Z= "
1079 // << Z
1080 // << ", energy = "
1081 // << kineticEnergy/MeV
1082 // <<" MeV, microscopic = "
1083 // << microscopicCross/barn
1084 // << " barn, from shells = "
1085 // << crossFromShells/barn
1086 // << " barn"
1087 // << std::endl;
1088
1089 // Select a shell in the target atom based on the individual shell cross sections
1090 G4int shellIndex = pixeCrossSectionHandler->SelectRandomShell(Z,kineticEnergy);
1091
1093 const G4AtomicShell* atomicShell = transitionManager->Shell(Z,shellIndex);
1094 G4double bindingEnergy = atomicShell->BindingEnergy();
1095
1096 // if (verboseLevel > 1)
1097 // {
1098 // G4cout << "G4hImpactIonisation::PostStepDoIt - Z = "
1099 // << Z
1100 // << ", shell = "
1101 // << shellIndex
1102 // << ", bindingE (keV) = "
1103 // << bindingEnergy/keV
1104 // << G4endl;
1105 // }
1106
1107 // Generate PIXE if binding energy larger than cut for photons or electrons
1108
1109 G4ParticleDefinition* type = 0;
1110
1111 if (finalKineticEnergy >= bindingEnergy)
1112 // && (bindingEnergy >= minGammaEnergy || bindingEnergy >= minElectronEnergy) )
1113 {
1114 // Vacancy in subshell shellIndex; shellId is the subshell identifier in EADL jargon
1115 G4int shellId = atomicShell->ShellId();
1116 // Atomic relaxation: generate secondaries
1117 secondaryVector = atomicDeexcitation.GenerateParticles(Z, shellId);
1118
1119 // ---- Debug ----
1120 //std::cout << "ShellId = "
1121 // <<shellId << " ---- Atomic relaxation secondaries: ---- "
1122 // << secondaryVector->size()
1123 // << std::endl;
1124
1125 // ---- End debug ---
1126
1127 if (secondaryVector != 0)
1128 {
1129 nSecondaries = secondaryVector->size();
1130 for (size_t i = 0; i<nSecondaries; i++)
1131 {
1132 G4DynamicParticle* aSecondary = (*secondaryVector)[i];
1133 if (aSecondary)
1134 {
1135 G4double e = aSecondary->GetKineticEnergy();
1136 type = aSecondary->GetDefinition();
1137
1138 // ---- Debug ----
1139 //if (type == G4Gamma::GammaDefinition())
1140 // {
1141 // std::cout << "Z = " << Z
1142 // << ", shell: " << shellId
1143 // << ", PIXE photon energy (keV) = " << e/keV
1144 // << std::endl;
1145 // }
1146 // ---- End debug ---
1147
1148 if (e < finalKineticEnergy &&
1149 ((type == G4Gamma::Gamma() && e > minGammaEnergy ) ||
1150 (type == G4Electron::Electron() && e > minElectronEnergy )))
1151 {
1152 // Subtract the energy of the emitted secondary from the primary
1153 finalKineticEnergy -= e;
1154 totalNumber++;
1155 // ---- Debug ----
1156 //if (type == G4Gamma::GammaDefinition())
1157 // {
1158 // std::cout << "Z = " << Z
1159 // << ", shell: " << shellId
1160 // << ", PIXE photon energy (keV) = " << e/keV
1161 // << std::endl;
1162 // }
1163 // ---- End debug ---
1164 }
1165 else
1166 {
1167 // The atomic relaxation product has energy below the cut
1168 // ---- Debug ----
1169 // if (type == G4Gamma::GammaDefinition())
1170 // {
1171 // std::cout << "Z = " << Z
1172 //
1173 // << ", PIXE photon energy = " << e/keV
1174 // << " keV below threshold " << minGammaEnergy/keV << " keV"
1175 // << std::endl;
1176 // }
1177 // ---- End debug ---
1178
1179 delete aSecondary;
1180 (*secondaryVector)[i] = 0;
1181 }
1182 }
1183 }
1184 }
1185 }
1186 }
1187
1188
1189 // Save delta-electrons
1190
1191 G4double eDeposit = 0.;
1192
1193 if (finalKineticEnergy > MinKineticEnergy)
1194 {
1195 G4double finalPx = totalMomentum*particleDirection.x() - deltaTotalMomentum*deltaDirection.x();
1196 G4double finalPy = totalMomentum*particleDirection.y() - deltaTotalMomentum*deltaDirection.y();
1197 G4double finalPz = totalMomentum*particleDirection.z() - deltaTotalMomentum*deltaDirection.z();
1198 G4double finalMomentum = std::sqrt(finalPx*finalPx + finalPy*finalPy + finalPz*finalPz) ;
1199 finalPx /= finalMomentum;
1200 finalPy /= finalMomentum;
1201 finalPz /= finalMomentum;
1202
1203 aParticleChange.ProposeMomentumDirection( finalPx,finalPy,finalPz );
1204 }
1205 else
1206 {
1207 eDeposit = finalKineticEnergy;
1208 finalKineticEnergy = 0.;
1209 aParticleChange.ProposeMomentumDirection(particleDirection.x(),
1210 particleDirection.y(),
1211 particleDirection.z());
1212 if(!aParticle->GetDefinition()->GetProcessManager()->
1213 GetAtRestProcessVector()->size())
1215 else
1217 }
1218
1219 aParticleChange.ProposeEnergy(finalKineticEnergy);
1222 aParticleChange.AddSecondary(deltaRay);
1223
1224 // ---- Debug ----
1225 // std::cout << "RDHadronIonisation - finalKineticEnergy (MeV) = "
1226 // << finalKineticEnergy/MeV
1227 // << ", delta KineticEnergy (keV) = "
1228 // << deltaKineticEnergy/keV
1229 // << ", energy deposit (MeV) = "
1230 // << eDeposit/MeV
1231 // << std::endl;
1232 // ---- End debug ---
1233
1234 // Save Fluorescence and Auger
1235
1236 if (secondaryVector != 0)
1237 {
1238 for (size_t l = 0; l < nSecondaries; l++)
1239 {
1240 G4DynamicParticle* secondary = (*secondaryVector)[l];
1241 if (secondary) aParticleChange.AddSecondary(secondary);
1242
1243 // ---- Debug ----
1244 //if (secondary != 0)
1245 // {
1246 // if (secondary->GetDefinition() == G4Gamma::GammaDefinition())
1247 // {
1248 // G4double eX = secondary->GetKineticEnergy();
1249 // std::cout << " PIXE photon of energy " << eX/keV
1250 // << " keV added to ParticleChange; total number of secondaries is " << totalNumber
1251 // << std::endl;
1252 // }
1253 //}
1254 // ---- End debug ---
1255
1256 }
1257 delete secondaryVector;
1258 }
1259
1261}
static constexpr double twopi
Definition: G4SIunits.hh:56
double z() const
double x() const
double y() const
std::vector< G4DynamicParticle * > * GenerateParticles(G4int Z, G4int shellId)
G4double BindingEnergy() const
G4int ShellId() const
G4AtomicShell * Shell(G4int Z, size_t shellIndex) const
static G4AtomicTransitionManager * Instance()
void SetMomentumDirection(const G4ThreeVector &aDirection)
const G4ThreeVector & GetMomentumDirection() const
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
void SetKineticEnergy(G4double aEnergy)
static G4Electron * Electron()
Definition: G4Electron.cc:93
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
void AddSecondary(G4Track *aSecondary)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
G4int SelectRandomShell(G4int Z, G4double e) const
void LoadShellData(const G4String &dataFile)
G4int SelectRandomAtom(const G4Material *material, G4double e) const
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:87
G4ParticleDefinition * GetDefinition() const
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void SetNumberOfSecondaries(G4int totSecondaries)
G4double bindingEnergy(G4int A, G4int Z)

References G4ParticleChange::AddSecondary(), G4VProcess::aParticleChange, atomicDeexcitation, G4AtomicShell::BindingEnergy(), G4InuclSpecialFunctions::bindingEnergy(), cutForDelta, G4Electron::Electron(), source.hepunit::electron_mass_c2, eMaxPixe, eMinPixe, fStopAndKill, fStopButAlive, G4UniformRand, G4Gamma::Gamma(), G4AtomicDeexcitation::GenerateParticles(), G4DynamicParticle::GetDefinition(), G4Track::GetDefinition(), G4Track::GetDynamicParticle(), G4MaterialCutsCouple::GetIndex(), G4DynamicParticle::GetKineticEnergy(), G4MaterialCutsCouple::GetMaterial(), G4Track::GetMaterialCutsCouple(), G4DynamicParticle::GetMomentumDirection(), G4ParticleDefinition::GetPDGMass(), G4ParticleDefinition::GetPDGSpin(), G4ParticleDefinition::GetProcessManager(), G4ParticleChange::Initialize(), G4AtomicTransitionManager::Instance(), G4PixeCrossSectionHandler::LoadShellData(), eplot::material, minElectronEnergy, minGammaEnergy, G4hRDEnergyLoss::MinKineticEnergy, modelK, modelL, modelM, pixeCrossSectionHandler, G4VContinuousDiscreteProcess::PostStepDoIt(), G4ParticleChange::ProposeEnergy(), G4VParticleChange::ProposeLocalEnergyDeposit(), G4ParticleChange::ProposeMomentumDirection(), G4VParticleChange::ProposeTrackStatus(), G4Proton::ProtonDefinition(), CLHEP::Hep3Vector::rotateUz(), G4PixeCrossSectionHandler::SelectRandomAtom(), G4PixeCrossSectionHandler::SelectRandomShell(), G4DynamicParticle::SetDefinition(), G4DynamicParticle::SetKineticEnergy(), G4DynamicParticle::SetMomentumDirection(), G4VParticleChange::SetNumberOfSecondaries(), G4AtomicTransitionManager::Shell(), G4AtomicShell::ShellId(), twopi, CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), CLHEP::Hep3Vector::z(), and Z.

◆ PostStepGetPhysicalInteractionLength()

G4double G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength ( const G4Track track,
G4double  previousStepSize,
G4ForceCondition condition 
)
virtualinherited

Implements G4VProcess.

Reimplemented in G4VMultipleScattering, G4AdjointForcedInteractionForGamma, G4PolarizedIonisation, and G4VEnergyLossProcess.

Definition at line 71 of file G4VContinuousDiscreteProcess.cc.

75{
76 if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0))
77 {
78 // beginning of tracking (or just after DoIt() of this process)
80 }
81 else if ( previousStepSize > 0.0)
82 {
83 // subtract NumberOfInteractionLengthLeft
85 }
86 else
87 {
88 // zero step
89 // DO NOTHING
90 }
91
92 // condition is set to "Not Forced"
94
95 // get mean free path
96 currentInteractionLength = GetMeanFreePath(track,previousStepSize,condition);
97
98 G4double value;
100 {
102 }
103 else
104 {
105 value = DBL_MAX;
106 }
107#ifdef G4VERBOSE
108 if (verboseLevel>1)
109 {
110 G4cout << "G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength() - ";
111 G4cout << "[ " << GetProcessName() << "]" << G4endl;
112 track.GetDynamicParticle()->DumpInfo();
113 G4cout << " in Material " << track.GetMaterial()->GetName() << G4endl;
114 G4cout << "InteractionLength= " << value/cm <<"[cm] " << G4endl;
115 }
116#endif
117 return value;
118}
virtual G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)=0
void SubtractNumberOfInteractionLengthLeft(G4double prevStepSize)
Definition: G4VProcess.hh:524
virtual void ResetNumberOfInteractionLengthLeft()
Definition: G4VProcess.cc:80

References cm, condition(), G4VProcess::currentInteractionLength, DBL_MAX, G4DynamicParticle::DumpInfo(), G4cout, G4endl, G4Track::GetDynamicParticle(), G4Track::GetMaterial(), G4VContinuousDiscreteProcess::GetMeanFreePath(), G4Material::GetName(), G4VProcess::GetProcessName(), NotForced, G4VProcess::ResetNumberOfInteractionLengthLeft(), G4VProcess::SubtractNumberOfInteractionLengthLeft(), G4VProcess::theNumberOfInteractionLengthLeft, and G4VProcess::verboseLevel.

◆ PostStepGPIL()

G4double G4VProcess::PostStepGPIL ( const G4Track track,
G4double  previousStepSize,
G4ForceCondition condition 
)
inlineinherited

Definition at line 479 of file G4VProcess.hh.

482{
483 return thePILfactor *
484 PostStepGetPhysicalInteractionLength(track, previousStepSize, condition);
485}
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)=0

References condition(), G4VProcess::PostStepGetPhysicalInteractionLength(), and G4VProcess::thePILfactor.

Referenced by G4SteppingManager::DefinePhysicalStepLength(), and G4ITStepProcessor::DoDefinePhysicalStepLength().

◆ PreparePhysicsTable()

virtual void G4VProcess::PreparePhysicsTable ( const G4ParticleDefinition )
inlinevirtualinherited

◆ PrepareWorkerPhysicsTable()

void G4VProcess::PrepareWorkerPhysicsTable ( const G4ParticleDefinition part)
virtualinherited

Reimplemented in G4BiasingProcessInterface.

Definition at line 206 of file G4VProcess.cc.

207{
209}
virtual void PreparePhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:194

References G4VProcess::PreparePhysicsTable().

Referenced by G4BiasingProcessInterface::PrepareWorkerPhysicsTable().

◆ PrintInfoDefinition()

void G4hImpactIonisation::PrintInfoDefinition ( ) const

Definition at line 1713 of file G4hImpactIonisation.cc.

1714{
1715 G4String comments = " Knock-on electron cross sections . ";
1716 comments += "\n Good description above the mean excitation energy.\n";
1717 comments += " Delta ray energy sampled from differential Xsection.";
1718
1719 G4cout << G4endl << GetProcessName() << ": " << comments
1720 << "\n PhysicsTables from " << LowestKineticEnergy / eV << " eV "
1721 << " to " << HighestKineticEnergy / TeV << " TeV "
1722 << " in " << TotBin << " bins."
1723 << "\n Electronic stopping power model is "
1724 << protonTable
1725 << "\n from " << protonLowEnergy / keV << " keV "
1726 << " to " << protonHighEnergy / MeV << " MeV " << "." << G4endl ;
1727 G4cout << "\n Parametrisation model for antiprotons is "
1729 << "\n from " << antiprotonLowEnergy / keV << " keV "
1730 << " to " << antiprotonHighEnergy / MeV << " MeV " << "." << G4endl ;
1731 if(theBarkas){
1732 G4cout << " Parametrization of the Barkas effect is switched on."
1733 << G4endl ;
1734 }
1735 if(nStopping) {
1736 G4cout << " Nuclear stopping power model is " << theNuclearTable
1737 << G4endl ;
1738 }
1739
1740 G4bool printHead = true;
1741
1742 const G4ProductionCutsTable* theCoupleTable=
1744 size_t numOfCouples = theCoupleTable->GetTableSize();
1745
1746 // loop for materials
1747
1748 for (size_t j=0 ; j < numOfCouples; j++) {
1749
1750 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(j);
1751 const G4Material* material= couple->GetMaterial();
1752 G4double deltaCutNow = cutForDelta[(couple->GetIndex())] ;
1753 G4double excitationEnergy = material->GetIonisation()->GetMeanExcitationEnergy();
1754
1755 if(excitationEnergy > deltaCutNow) {
1756 if(printHead) {
1757 printHead = false ;
1758
1759 G4cout << " material min.delta energy(keV) " << G4endl;
1760 G4cout << G4endl;
1761 }
1762
1763 G4cout << std::setw(20) << material->GetName()
1764 << std::setw(15) << excitationEnergy/keV << G4endl;
1765 }
1766 }
1767}
static constexpr double TeV
Definition: G4SIunits.hh:204

References antiprotonHighEnergy, antiprotonLowEnergy, antiprotonTable, cutForDelta, eV, G4cout, G4endl, G4MaterialCutsCouple::GetIndex(), G4MaterialCutsCouple::GetMaterial(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4VProcess::GetProcessName(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4hRDEnergyLoss::HighestKineticEnergy, keV, G4hRDEnergyLoss::LowestKineticEnergy, eplot::material, MeV, nStopping, protonHighEnergy, protonLowEnergy, protonTable, TeV, theBarkas, theNuclearTable, and G4hRDEnergyLoss::TotBin.

Referenced by BuildPhysicsTable().

◆ ProcessDescription()

void G4VProcess::ProcessDescription ( std::ostream &  outfile) const
virtualinherited

Reimplemented in G4AdjointAlongStepWeightCorrection, G4AdjointForcedInteractionForGamma, G4AdjointhMultipleScattering, G4ContinuousGainOfEnergy, G4eAdjointMultipleScattering, G4eInverseBremsstrahlung, G4eInverseCompton, G4eInverseIonisation, G4InversePEEffect, G4IonInverseIonisation, G4eeToHadrons, G4hBremsstrahlung, G4hhIonisation, G4hPairProduction, G4mplIonisation, G4RayleighScattering, G4ePairProduction, G4MuBremsstrahlung, G4MuIonisation, G4MuMultipleScattering, G4MuPairProduction, G4PolarizedAnnihilation, G4PolarizedBremsstrahlung, G4PolarizedCompton, G4PolarizedGammaConversion, G4PolarizedIonisation, G4PolarizedPhotoElectric, G4ComptonScattering, G4CoulombScattering, G4eBremsstrahlung, G4eIonisation, G4eMultipleScattering, G4eplusAnnihilation, G4GammaConversion, G4hIonisation, G4hMultipleScattering, G4ionIonisation, G4NuclearStopping, G4PhotoElectricEffect, G4ForwardXrayTR, G4GammaXTRadiator, G4GaussXTRadiator, G4RegularXTRadiator, G4Scintillation, G4StrawTubeXTRadiator, G4SynchrotronRadiation, G4TransitionRadiation, G4TransparentRegXTRadiator, G4VTransitionRadiation, G4VXTRenergyLoss, G4XTRGammaRadModel, G4XTRRegularRadModel, G4XTRTransparentRegRadModel, G4Cerenkov, G4Radioactivation, G4RadioactiveDecay, G4ElectronNuclearProcess, G4MuonNuclearProcess, G4NeutrinoElectronProcess, G4NeutronFissionProcess, G4PositronNuclearProcess, G4HadronicAbsorptionBertini, G4HadronicAbsorptionFritiof, G4HadronicAbsorptionFritiofWithBinaryCascade, G4HadronStoppingProcess, G4MuonicAtomDecay, G4MuonMinusAtomicCapture, G4MuonMinusCapture, G4Transportation, G4NeutronCaptureProcess, G4GammaGeneralProcess, G4Decay, G4DecayWithSpin, G4PionDecayMakeSpin, G4UnknownDecay, G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering, G4HadronicProcess, G4ElNeutrinoNucleusProcess, G4HadronElasticProcess, and G4MuNeutrinoNucleusProcess.

Definition at line 175 of file G4VProcess.cc.

176{
177 outFile << "This process has not yet been described\n";
178}

Referenced by G4LossTableManager::DumpHtml(), G4HadronicProcessStore::PrintHtml(), and G4GammaGeneralProcess::ProcessDescription().

◆ ProperTimeIntLog()

G4double G4hRDEnergyLoss::ProperTimeIntLog ( G4PhysicsVector physicsVector,
G4int  nbin 
)
staticprivateinherited

Definition at line 737 of file G4hRDEnergyLoss.cc.

739{
740 // num. integration, logarithmic binning
741
742 G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
743 G4bool isOut;
744 ltt = ltauhigh-ltaulow;
745 dltau = ltt/nbin;
746 Value = 0.;
747
748 for (G4int i=0; i<=nbin; i++)
749 {
750 ui = ltaulow+dltau*i;
751 taui = std::exp(ui);
752 ti = ParticleMass*taui;
753 lossi = physicsVector->GetValue(ti,isOut);
754 if(i==0)
755 ci=0.5;
756 else
757 {
758 if(i<nbin)
759 ci=1.;
760 else
761 ci=0.5;
762 }
763 Value += ci*taui*ParticleMass/(std::sqrt(ti*(ti+2.*ParticleMass))*lossi);
764 }
765 Value *= ParticleMass*dltau/c_light;
766 return Value;
767}

References source.hepunit::c_light, G4PhysicsVector::GetValue(), G4hRDEnergyLoss::ltauhigh, G4hRDEnergyLoss::ltaulow, and G4hRDEnergyLoss::ParticleMass.

Referenced by G4hRDEnergyLoss::BuildProperTimeVector().

◆ ProtonParametrisedDEDX()

G4double G4hImpactIonisation::ProtonParametrisedDEDX ( const G4MaterialCutsCouple couple,
G4double  kineticEnergy 
) const
private

Definition at line 831 of file G4hImpactIonisation.cc.

833{
834 const G4Material* material = couple->GetMaterial();
836 G4double eLoss = 0.;
837
838 // Free Electron Gas Model
839 if(kineticEnergy < protonLowEnergy) {
841 * std::sqrt(kineticEnergy/protonLowEnergy) ;
842
843 // Parametrisation
844 } else {
845 eLoss = protonModel->TheValue(proton, material, kineticEnergy) ;
846 }
847
848 // Delta rays energy
849 eLoss -= DeltaRaysEnergy(couple,kineticEnergy,proton_mass_c2) ;
850
851 if(verboseLevel > 2) {
852 G4cout << "p E(MeV)= " << kineticEnergy/MeV
853 << " dE/dx(MeV/mm)= " << eLoss*mm/MeV
854 << " for " << material->GetName()
855 << " model: " << protonModel << G4endl;
856 }
857
858 if(eLoss < 0.0) eLoss = 0.0 ;
859
860 return eLoss ;
861}

References DeltaRaysEnergy(), G4cout, G4endl, G4MaterialCutsCouple::GetMaterial(), eplot::material, MeV, mm, G4Proton::Proton(), G4InuclParticleNames::proton, source.hepunit::proton_mass_c2, protonLowEnergy, protonModel, G4VLowEnergyModel::TheValue(), and G4VProcess::verboseLevel.

Referenced by BuildLossTable(), and ComputeDEDX().

◆ RangeIntLin()

G4double G4hRDEnergyLoss::RangeIntLin ( G4PhysicsVector physicsVector,
G4int  nbin 
)
staticprivateinherited

Definition at line 637 of file G4hRDEnergyLoss.cc.

639{
640 // num. integration, linear binning
641
642 G4double dtau,Value,taui,ti,lossi,ci;
643 G4bool isOut;
644 dtau = (tauhigh-taulow)/nbin;
645 Value = 0.;
646
647 for (G4int i=0; i<=nbin; i++)
648 {
649 taui = taulow + dtau*i ;
650 ti = Mass*taui;
651 lossi = physicsVector->GetValue(ti,isOut);
652 if(i==0)
653 ci=0.5;
654 else
655 {
656 if(i<nbin)
657 ci=1.;
658 else
659 ci=0.5;
660 }
661 Value += ci/lossi;
662 }
663 Value *= Mass*dtau;
664 return Value;
665}
static G4ThreadLocal G4double tauhigh
static G4ThreadLocal G4double taulow

References G4PhysicsVector::GetValue(), G4hRDEnergyLoss::Mass, G4hRDEnergyLoss::tauhigh, and G4hRDEnergyLoss::taulow.

◆ RangeIntLog()

G4double G4hRDEnergyLoss::RangeIntLog ( G4PhysicsVector physicsVector,
G4int  nbin 
)
staticprivateinherited

Definition at line 669 of file G4hRDEnergyLoss.cc.

671{
672 // num. integration, logarithmic binning
673
674 G4double ltt,dltau,Value,ui,taui,ti,lossi,ci;
675 G4bool isOut;
676 ltt = ltauhigh-ltaulow;
677 dltau = ltt/nbin;
678 Value = 0.;
679
680 for (G4int i=0; i<=nbin; i++)
681 {
682 ui = ltaulow+dltau*i;
683 taui = std::exp(ui);
684 ti = Mass*taui;
685 lossi = physicsVector->GetValue(ti,isOut);
686 if(i==0)
687 ci=0.5;
688 else
689 {
690 if(i<nbin)
691 ci=1.;
692 else
693 ci=0.5;
694 }
695 Value += ci*taui/lossi;
696 }
697 Value *= Mass*dltau;
698 return Value;
699}

References G4PhysicsVector::GetValue(), G4hRDEnergyLoss::ltauhigh, G4hRDEnergyLoss::ltaulow, and G4hRDEnergyLoss::Mass.

◆ ResetNumberOfInteractionLengthLeft()

void G4VProcess::ResetNumberOfInteractionLengthLeft ( )
virtualinherited

◆ RetrievePhysicsTable()

virtual G4bool G4VProcess::RetrievePhysicsTable ( const G4ParticleDefinition ,
const G4String ,
G4bool   
)
inlinevirtualinherited

◆ SetAntiProtonElectronicStoppingPowerModel()

void G4hImpactIonisation::SetAntiProtonElectronicStoppingPowerModel ( const G4String dedxTable)
inlineprivate

Definition at line 195 of file G4hImpactIonisation.hh.

196 {antiprotonTable = dedxTable;};

References antiprotonTable.

Referenced by SetElectronicStoppingPowerModel().

◆ SetBarkasOff()

void G4hImpactIonisation::SetBarkasOff ( )
inline

Definition at line 147 of file G4hImpactIonisation.hh.

147{theBarkas = false;};

References theBarkas.

◆ SetBarkasOn()

void G4hImpactIonisation::SetBarkasOn ( )
inline

Definition at line 144 of file G4hImpactIonisation.hh.

144{theBarkas = true;};

References theBarkas.

◆ SetCutForAugerElectrons()

void G4hImpactIonisation::SetCutForAugerElectrons ( G4double  cut)

Definition at line 1699 of file G4hImpactIonisation.cc.

1700{
1701 minElectronEnergy = cut;
1702}

References minElectronEnergy.

◆ SetCutForSecondaryPhotons()

void G4hImpactIonisation::SetCutForSecondaryPhotons ( G4double  cut)

Definition at line 1692 of file G4hImpactIonisation.cc.

1693{
1694 minGammaEnergy = cut;
1695}

References minGammaEnergy.

◆ SetdRoverRange()

void G4hRDEnergyLoss::SetdRoverRange ( G4double  value)
staticinherited

Definition at line 218 of file G4hRDEnergyLoss.cc.

219{
220 dRoverRange = value;
221}

References G4hRDEnergyLoss::dRoverRange.

◆ SetElectronicStoppingPowerModel()

void G4hImpactIonisation::SetElectronicStoppingPowerModel ( const G4ParticleDefinition aParticle,
const G4String dedxTable 
)

Definition at line 156 of file G4hImpactIonisation.cc.

159{
160 if (particle->GetPDGCharge() > 0 )
161 {
162 // Positive charge
164 }
165 else
166 {
167 // Antiprotons
169 }
170}
void SetProtonElectronicStoppingPowerModel(const G4String &dedxTable)
void SetAntiProtonElectronicStoppingPowerModel(const G4String &dedxTable)

References G4ParticleDefinition::GetPDGCharge(), SetAntiProtonElectronicStoppingPowerModel(), and SetProtonElectronicStoppingPowerModel().

◆ SetEnlossFluc()

void G4hRDEnergyLoss::SetEnlossFluc ( G4bool  value)
staticinherited

Definition at line 232 of file G4hRDEnergyLoss.cc.

233{
234 EnlossFlucFlag = value;
235}

References G4hRDEnergyLoss::EnlossFlucFlag.

◆ SetGPILSelection()

void G4VContinuousDiscreteProcess::SetGPILSelection ( G4GPILSelection  selection)
inlineprotectedinherited

◆ SetHighEnergyForAntiProtonParametrisation()

void G4hImpactIonisation::SetHighEnergyForAntiProtonParametrisation ( G4double  energy)
inline

◆ SetHighEnergyForProtonParametrisation()

void G4hImpactIonisation::SetHighEnergyForProtonParametrisation ( G4double  energy)
inline

◆ SetLowEnergyForAntiProtonParametrisation()

void G4hImpactIonisation::SetLowEnergyForAntiProtonParametrisation ( G4double  energy)
inline

◆ SetLowEnergyForProtonParametrisation()

void G4hImpactIonisation::SetLowEnergyForProtonParametrisation ( G4double  energy)
inline

◆ SetMasterProcess()

void G4VProcess::SetMasterProcess ( G4VProcess masterP)
virtualinherited

◆ SetNuclearStoppingOff()

void G4hImpactIonisation::SetNuclearStoppingOff ( )
inline

Definition at line 141 of file G4hImpactIonisation.hh.

141{nStopping = false;};

References nStopping.

◆ SetNuclearStoppingOn()

void G4hImpactIonisation::SetNuclearStoppingOn ( )
inline

Definition at line 138 of file G4hImpactIonisation.hh.

138{nStopping = true;};

References nStopping.

Referenced by SetNuclearStoppingPowerModel().

◆ SetNuclearStoppingPowerModel()

void G4hImpactIonisation::SetNuclearStoppingPowerModel ( const G4String dedxTable)
inline

Definition at line 130 of file G4hImpactIonisation.hh.

References SetNuclearStoppingOn(), and theNuclearTable.

◆ SetNumberOfProcesses()

void G4hRDEnergyLoss::SetNumberOfProcesses ( G4int  number)
staticinherited

Definition at line 197 of file G4hRDEnergyLoss.cc.

198{
199 NumberOfProcesses=number;
200}

References G4hRDEnergyLoss::NumberOfProcesses.

◆ SetPILfactor()

void G4VProcess::SetPILfactor ( G4double  value)
inlineinherited

Definition at line 449 of file G4VProcess.hh.

450{
451 if (value>0.) { thePILfactor = value; }
452}

References G4VProcess::thePILfactor.

Referenced by export_G4VProcess().

◆ SetPixe()

void G4hImpactIonisation::SetPixe ( const  G4bool)
inline

Definition at line 150 of file G4hImpactIonisation.hh.

150{pixeIsActive = true;};

References pixeIsActive.

◆ SetPixeCrossSectionK()

void G4hImpactIonisation::SetPixeCrossSectionK ( const G4String name)
inline

Definition at line 176 of file G4hImpactIonisation.hh.

176{ modelK = name; }
const char * name(G4int ptype)

References modelK, and G4InuclParticleNames::name().

◆ SetPixeCrossSectionL()

void G4hImpactIonisation::SetPixeCrossSectionL ( const G4String name)
inline

Definition at line 177 of file G4hImpactIonisation.hh.

177{ modelL = name; }

References modelL, and G4InuclParticleNames::name().

◆ SetPixeCrossSectionM()

void G4hImpactIonisation::SetPixeCrossSectionM ( const G4String name)
inline

Definition at line 178 of file G4hImpactIonisation.hh.

178{ modelM = name; }

References modelM, and G4InuclParticleNames::name().

◆ SetPixeProjectileMaxEnergy()

void G4hImpactIonisation::SetPixeProjectileMaxEnergy ( G4double  energy)
inline

Definition at line 180 of file G4hImpactIonisation.hh.

180{ eMaxPixe = energy; }

References eMaxPixe, and G4INCL::KinematicsUtils::energy().

◆ SetPixeProjectileMinEnergy()

void G4hImpactIonisation::SetPixeProjectileMinEnergy ( G4double  energy)
inline

Definition at line 179 of file G4hImpactIonisation.hh.

179{ eMinPixe = energy; }

References eMinPixe, and G4INCL::KinematicsUtils::energy().

◆ SetProcessManager()

void G4VProcess::SetProcessManager ( const G4ProcessManager procMan)
inlinevirtualinherited

◆ SetProcessSubType()

void G4VProcess::SetProcessSubType ( G4int  value)
inlineinherited

Definition at line 406 of file G4VProcess.hh.

407{
408 theProcessSubType = value;
409}

References G4VProcess::theProcessSubType.

Referenced by G4DNAElectronHoleRecombination::Create(), G4DNASecondOrderReaction::Create(), G4AnnihiToMuPair::G4AnnihiToMuPair(), G4BiasingProcessInterface::G4BiasingProcessInterface(), G4Cerenkov::G4Cerenkov(), G4ComptonScattering::G4ComptonScattering(), G4CoulombScattering::G4CoulombScattering(), G4CoupledTransportation::G4CoupledTransportation(), G4Decay::G4Decay(), G4DecayWithSpin::G4DecayWithSpin(), G4DNAAttachment::G4DNAAttachment(), G4DNABrownianTransportation::G4DNABrownianTransportation(), G4DNAChargeDecrease::G4DNAChargeDecrease(), G4DNAChargeIncrease::G4DNAChargeIncrease(), G4DNAElastic::G4DNAElastic(), G4DNAElectronSolvation::G4DNAElectronSolvation(), G4DNAExcitation::G4DNAExcitation(), G4DNAIonisation::G4DNAIonisation(), G4DNAMolecularDissociation::G4DNAMolecularDissociation(), G4DNAScavengerProcess::G4DNAScavengerProcess(), G4DNAVibExcitation::G4DNAVibExcitation(), G4eBremsstrahlung::G4eBremsstrahlung(), G4eeToHadrons::G4eeToHadrons(), G4eIonisation::G4eIonisation(), G4ePairProduction::G4ePairProduction(), G4eplusAnnihilation::G4eplusAnnihilation(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4GammaConversion::G4GammaConversion(), G4GammaConversionToMuons::G4GammaConversionToMuons(), G4GammaGeneralProcess::G4GammaGeneralProcess(), G4HadronicProcess::G4HadronicProcess(), G4hhIonisation::G4hhIonisation(), G4hIonisation::G4hIonisation(), G4ionIonisation::G4ionIonisation(), G4ITTransportation::G4ITTransportation(), G4JAEAElasticScattering::G4JAEAElasticScattering(), G4MicroElecElastic::G4MicroElecElastic(), G4MicroElecInelastic::G4MicroElecInelastic(), G4MicroElecLOPhononScattering::G4MicroElecLOPhononScattering(), G4MicroElecSurface::G4MicroElecSurface(), G4mplIonisation::G4mplIonisation(), G4MuBremsstrahlung::G4MuBremsstrahlung(), G4MuIonisation::G4MuIonisation(), G4MuonMinusAtomicCapture::G4MuonMinusAtomicCapture(), G4MuPairProduction::G4MuPairProduction(), G4NeutronKiller::G4NeutronKiller(), G4NuclearStopping::G4NuclearStopping(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess::G4OpBoundaryProcess(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4PhotoElectricEffect::G4PhotoElectricEffect(), G4PionDecayMakeSpin::G4PionDecayMakeSpin(), G4PolarizedCompton::G4PolarizedCompton(), G4PolarizedGammaConversion::G4PolarizedGammaConversion(), G4PolarizedIonisation::G4PolarizedIonisation(), G4PolarizedPhotoElectric::G4PolarizedPhotoElectric(), G4RadioactiveDecay::G4RadioactiveDecay(), G4RayleighScattering::G4RayleighScattering(), G4Scintillation::G4Scintillation(), G4StepLimiter::G4StepLimiter(), G4SynchrotronRadiation::G4SynchrotronRadiation(), G4SynchrotronRadiationInMat::G4SynchrotronRadiationInMat(), G4TransitionRadiation::G4TransitionRadiation(), G4Transportation::G4Transportation(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UnknownDecay::G4UnknownDecay(), G4UserSpecialCuts::G4UserSpecialCuts(), G4VMultipleScattering::G4VMultipleScattering(), G4VTransitionRadiation::G4VTransitionRadiation(), G4VXTRenergyLoss::G4VXTRenergyLoss(), and G4Decay::SetExtDecayer().

◆ SetProcessType()

void G4VProcess::SetProcessType ( G4ProcessType  aType)
inlineinherited

Definition at line 394 of file G4VProcess.hh.

395{
396 theProcessType = aType;
397}

References G4VProcess::theProcessType.

Referenced by G4MaxTimeCuts::G4MaxTimeCuts(), and G4MinEkineCuts::G4MinEkineCuts().

◆ SetProtonElectronicStoppingPowerModel()

void G4hImpactIonisation::SetProtonElectronicStoppingPowerModel ( const G4String dedxTable)
inlineprivate

Definition at line 191 of file G4hImpactIonisation.hh.

192 {protonTable = dedxTable ;};

References protonTable.

Referenced by SetElectronicStoppingPowerModel().

◆ SetRndmStep()

void G4hRDEnergyLoss::SetRndmStep ( G4bool  value)
staticinherited

Definition at line 225 of file G4hRDEnergyLoss.cc.

226{
227 rndmStepFlag = value;
228}
static G4ThreadLocal G4bool rndmStepFlag

References G4hRDEnergyLoss::rndmStepFlag.

◆ SetStepFunction()

void G4hRDEnergyLoss::SetStepFunction ( G4double  c1,
G4double  c2 
)
staticinherited

Definition at line 239 of file G4hRDEnergyLoss.cc.

240{
241 dRoverRange = c1;
242 finalRange = c2;
246}
static G4ThreadLocal G4double c3lim
static G4ThreadLocal G4double c1lim
static G4ThreadLocal G4double c2lim

References G4hRDEnergyLoss::c1lim, G4hRDEnergyLoss::c2lim, G4hRDEnergyLoss::c3lim, G4hRDEnergyLoss::dRoverRange, and G4hRDEnergyLoss::finalRange.

◆ SetVerboseLevel()

void G4VProcess::SetVerboseLevel ( G4int  value)
inlineinherited

◆ StartTracking()

void G4VProcess::StartTracking ( G4Track )
virtualinherited

Reimplemented in G4ParallelGeometriesLimiterProcess, G4ImportanceProcess, G4WeightCutOffProcess, G4WeightWindowProcess, G4VITProcess, G4DNASecondOrderReaction, G4WrapperProcess, G4FastSimulationManagerProcess, G4ParallelWorldProcess, G4ParallelWorldScoringProcess, G4ScoreSplittingProcess, G4GammaGeneralProcess, G4Decay, G4AdjointProcessEquivalentToDirectProcess, G4eAdjointMultipleScattering, G4DNAElectronHoleRecombination, G4DNAScavengerProcess, G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering, G4ITTransportation, G4DNABrownianTransportation, G4CoupledTransportation, G4Transportation, G4BiasingProcessInterface, and G4VPhononProcess.

Definition at line 87 of file G4VProcess.cc.

88{
92#ifdef G4VERBOSE
93 if (verboseLevel>2)
94 {
95 G4cout << "G4VProcess::StartTracking() - [" << theProcessName << "]"
96 << G4endl;
97 }
98#endif
99}

References G4VProcess::currentInteractionLength, G4cout, G4endl, G4VProcess::theInitialNumberOfInteractionLength, G4VProcess::theNumberOfInteractionLengthLeft, G4VProcess::theProcessName, and G4VProcess::verboseLevel.

Referenced by G4DNASecondOrderReaction::StartTracking(), G4WrapperProcess::StartTracking(), G4AdjointProcessEquivalentToDirectProcess::StartTracking(), G4DNAElectronHoleRecombination::StartTracking(), G4DNAScavengerProcess::StartTracking(), G4ITTransportation::StartTracking(), G4Transportation::StartTracking(), G4BiasingProcessInterface::StartTracking(), and G4VPhononProcess::StartTracking().

◆ StorePhysicsTable()

virtual G4bool G4VProcess::StorePhysicsTable ( const G4ParticleDefinition ,
const G4String ,
G4bool   
)
inlinevirtualinherited

◆ SubtractNumberOfInteractionLengthLeft()

void G4VProcess::SubtractNumberOfInteractionLengthLeft ( G4double  prevStepSize)
inlineprotectedinherited

Definition at line 524 of file G4VProcess.hh.

525{
527 {
530 {
532 }
533 }
534 else
535 {
536#ifdef G4VERBOSE
537 if (verboseLevel>0)
538 {
539 G4cerr << "G4VProcess::SubtractNumberOfInteractionLengthLeft()";
540 G4cerr << " [" << theProcessName << "]" <<G4endl;
541 G4cerr << " currentInteractionLength = "
542 << currentInteractionLength << " [mm]";
543 G4cerr << " previousStepSize = " << prevStepSize << " [mm]";
544 G4cerr << G4endl;
545 }
546#endif
547 G4String msg = "Negative currentInteractionLength for ";
548 msg += theProcessName;
549 G4Exception("G4VProcess::SubtractNumberOfInteractionLengthLeft()",
550 "ProcMan201", EventMustBeAborted, msg);
551 }
552}
@ EventMustBeAborted
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
G4GLOB_DLL std::ostream G4cerr
static constexpr double perMillion

References G4VProcess::currentInteractionLength, EventMustBeAborted, G4cerr, G4endl, G4Exception(), CLHEP::perMillion, G4VProcess::theNumberOfInteractionLengthLeft, G4VProcess::theProcessName, and G4VProcess::verboseLevel.

Referenced by G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), and G4Decay::PostStepGetPhysicalInteractionLength().

Field Documentation

◆ antiprotonHighEnergy

G4double G4hImpactIonisation::antiprotonHighEnergy
private

◆ antiprotonLowEnergy

G4double G4hImpactIonisation::antiprotonLowEnergy
private

◆ antiprotonModel

G4VLowEnergyModel* G4hImpactIonisation::antiprotonModel
private

◆ antiprotonTable

G4String G4hImpactIonisation::antiprotonTable
private

◆ aParticleChange

G4ParticleChange G4VProcess::aParticleChange
protectedinherited

◆ aProcessManager

const G4ProcessManager* G4VProcess::aProcessManager = nullptr
protectedinherited

Definition at line 319 of file G4VProcess.hh.

Referenced by G4VProcess::GetProcessManager(), and G4VProcess::SetProcessManager().

◆ atomicDeexcitation

G4AtomicDeexcitation G4hImpactIonisation::atomicDeexcitation
private

Definition at line 281 of file G4hImpactIonisation.hh.

Referenced by ActivateAugerElectronProduction(), and PostStepDoIt().

◆ betheBlochModel

G4VLowEnergyModel* G4hImpactIonisation::betheBlochModel
private

◆ c1lim

G4ThreadLocal G4double G4hRDEnergyLoss::c1lim = 0.20
staticprotectedinherited

Definition at line 192 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::SetStepFunction().

◆ c2lim

G4ThreadLocal G4double G4hRDEnergyLoss::c2lim = 0.32
staticprotectedinherited

Definition at line 192 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::SetStepFunction().

◆ c3lim

G4ThreadLocal G4double G4hRDEnergyLoss::c3lim = -0.032
staticprotectedinherited

Definition at line 192 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::SetStepFunction().

◆ charge

G4double G4hImpactIonisation::charge
private

◆ Charge

G4ThreadLocal G4double G4hRDEnergyLoss::Charge
staticprotectedinherited

◆ chargeSquare

G4double G4hImpactIonisation::chargeSquare
private

◆ CounterOfpbarProcess

G4ThreadLocal G4int G4hRDEnergyLoss::CounterOfpbarProcess = 0
staticprotectedinherited

Definition at line 163 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::BuildDEDXTable(), and BuildPhysicsTable().

◆ CounterOfpProcess

G4ThreadLocal G4int G4hRDEnergyLoss::CounterOfpProcess = 0
staticprotectedinherited

Definition at line 162 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::BuildDEDXTable(), and BuildPhysicsTable().

◆ CounterOfProcess

G4ThreadLocal G4int G4hRDEnergyLoss::CounterOfProcess = 0
staticprivateinherited

Definition at line 252 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::BuildDEDXTable().

◆ currentInteractionLength

G4double G4VProcess::currentInteractionLength = -1.0
protectedinherited

◆ cutForDelta

G4DataVector G4hImpactIonisation::cutForDelta
private

◆ cutForGamma

G4DataVector G4hImpactIonisation::cutForGamma
private

Definition at line 266 of file G4hImpactIonisation.hh.

Referenced by BuildPhysicsTable().

◆ dRoverRange

G4ThreadLocal G4double G4hRDEnergyLoss::dRoverRange = 0.20
staticprotectedinherited

◆ eMaxPixe

G4double G4hImpactIonisation::eMaxPixe
private

Definition at line 286 of file G4hImpactIonisation.hh.

Referenced by InitializeMe(), PostStepDoIt(), and SetPixeProjectileMaxEnergy().

◆ eMinPixe

G4double G4hImpactIonisation::eMinPixe
private

Definition at line 285 of file G4hImpactIonisation.hh.

Referenced by InitializeMe(), PostStepDoIt(), and SetPixeProjectileMinEnergy().

◆ enableAlongStepDoIt

G4bool G4VProcess::enableAlongStepDoIt = true
protectedinherited

◆ enableAtRestDoIt

G4bool G4VProcess::enableAtRestDoIt = true
protectedinherited

◆ enablePostStepDoIt

G4bool G4VProcess::enablePostStepDoIt = true
protectedinherited

◆ EnlossFlucFlag

G4ThreadLocal G4bool G4hRDEnergyLoss::EnlossFlucFlag = true
staticprotectedinherited

Definition at line 195 of file G4hRDEnergyLoss.hh.

Referenced by AlongStepDoIt(), and G4hRDEnergyLoss::SetEnlossFluc().

◆ fBarkas

G4double G4hImpactIonisation::fBarkas
private

Definition at line 278 of file G4hImpactIonisation.hh.

Referenced by AlongStepDoIt(), and GetConstraints().

◆ fdEdx

G4double G4hImpactIonisation::fdEdx
private

Definition at line 273 of file G4hImpactIonisation.hh.

Referenced by AlongStepDoIt(), and GetConstraints().

◆ finalRange

G4ThreadLocal G4double G4hRDEnergyLoss::finalRange = 0.2
staticprotectedinherited

Definition at line 191 of file G4hRDEnergyLoss.hh.

Referenced by GetConstraints(), and G4hRDEnergyLoss::SetStepFunction().

◆ fProcessTable

G4ProcessTable* G4VProcess::fProcessTable = nullptr
privateinherited

Definition at line 374 of file G4VProcess.hh.

Referenced by G4VProcess::G4VProcess(), and G4VProcess::~G4VProcess().

◆ fRangeNow

G4double G4hImpactIonisation::fRangeNow
private

Definition at line 274 of file G4hImpactIonisation.hh.

Referenced by AlongStepDoIt(), and GetConstraints().

◆ HighestKineticEnergy

G4ThreadLocal G4double G4hRDEnergyLoss::HighestKineticEnergy = 1.e5
staticprotectedinherited

◆ initialMass

G4double G4hImpactIonisation::initialMass
private

◆ linLossLimit

G4double G4hRDEnergyLoss::linLossLimit
protectedinherited

Definition at line 185 of file G4hRDEnergyLoss.hh.

Referenced by AlongStepDoIt().

◆ LOGRTable

G4ThreadLocal G4double G4hRDEnergyLoss::LOGRTable
staticprotectedinherited

Definition at line 179 of file G4hRDEnergyLoss.hh.

◆ LowestKineticEnergy

G4ThreadLocal G4double G4hRDEnergyLoss::LowestKineticEnergy = 1e-05
staticprotectedinherited

◆ ltauhigh

G4ThreadLocal G4double G4hRDEnergyLoss::ltauhigh
staticprivateinherited

◆ ltaulow

G4ThreadLocal G4double G4hRDEnergyLoss::ltaulow
staticprivateinherited

◆ Mass

G4ThreadLocal G4double G4hRDEnergyLoss::Mass
staticprivateinherited

◆ masterProcessShadow

G4VProcess* G4VProcess::masterProcessShadow = nullptr
privateinherited

Definition at line 370 of file G4VProcess.hh.

Referenced by G4VProcess::GetMasterProcess(), and G4VProcess::SetMasterProcess().

◆ MaxExcitationNumber

const G4double G4hRDEnergyLoss::MaxExcitationNumber
protectedinherited

Definition at line 134 of file G4hRDEnergyLoss.hh.

◆ minElectronEnergy

G4double G4hImpactIonisation::minElectronEnergy
private

Definition at line 268 of file G4hImpactIonisation.hh.

Referenced by InitializeMe(), PostStepDoIt(), and SetCutForAugerElectrons().

◆ minGammaEnergy

G4double G4hImpactIonisation::minGammaEnergy
private

◆ MinKineticEnergy

G4double G4hRDEnergyLoss::MinKineticEnergy
protectedinherited

Definition at line 187 of file G4hRDEnergyLoss.hh.

Referenced by AlongStepDoIt(), InitializeMe(), and PostStepDoIt().

◆ modelK

G4String G4hImpactIonisation::modelK
private

Definition at line 282 of file G4hImpactIonisation.hh.

Referenced by InitializeMe(), PostStepDoIt(), and SetPixeCrossSectionK().

◆ modelL

G4String G4hImpactIonisation::modelL
private

Definition at line 283 of file G4hImpactIonisation.hh.

Referenced by InitializeMe(), PostStepDoIt(), and SetPixeCrossSectionL().

◆ modelM

G4String G4hImpactIonisation::modelM
private

Definition at line 284 of file G4hImpactIonisation.hh.

Referenced by InitializeMe(), PostStepDoIt(), and SetPixeCrossSectionM().

◆ nmaxCont1

const long G4hRDEnergyLoss::nmaxCont1
protectedinherited

Definition at line 136 of file G4hRDEnergyLoss.hh.

◆ nmaxCont2

const long G4hRDEnergyLoss::nmaxCont2
protectedinherited

Definition at line 136 of file G4hRDEnergyLoss.hh.

◆ nmaxDirectFluct

const long G4hRDEnergyLoss::nmaxDirectFluct
protectedinherited

Definition at line 136 of file G4hRDEnergyLoss.hh.

◆ nStopping

G4bool G4hImpactIonisation::nStopping
private

◆ NumberOfProcesses

G4ThreadLocal G4int G4hRDEnergyLoss::NumberOfProcesses = 1
staticprivateinherited

◆ paramStepLimit

const G4double G4hImpactIonisation::paramStepLimit
private

Definition at line 271 of file G4hImpactIonisation.hh.

Referenced by GetConstraints().

◆ ParticleMass

G4ThreadLocal G4double G4hRDEnergyLoss::ParticleMass
staticprotectedinherited

◆ pbartableElectronCutInRange

G4ThreadLocal G4double G4hRDEnergyLoss::pbartableElectronCutInRange = 0.0
staticprotectedinherited

Definition at line 170 of file G4hRDEnergyLoss.hh.

◆ pixeCrossSectionHandler

G4PixeCrossSectionHandler* G4hImpactIonisation::pixeCrossSectionHandler
private

Definition at line 280 of file G4hImpactIonisation.hh.

Referenced by PostStepDoIt(), and ~G4hImpactIonisation().

◆ pixeIsActive

G4bool G4hImpactIonisation::pixeIsActive
private

Definition at line 288 of file G4hImpactIonisation.hh.

Referenced by SetPixe().

◆ pParticleChange

G4VParticleChange* G4VProcess::pParticleChange = nullptr
protectedinherited

Definition at line 321 of file G4VProcess.hh.

Referenced by G4VMultipleScattering::AddEmModel(), G4VEmProcess::AddEmModel(), G4VEnergyLossProcess::AddEmModel(), G4ImportanceProcess::AlongStepDoIt(), G4WeightCutOffProcess::AlongStepDoIt(), G4WeightWindowProcess::AlongStepDoIt(), G4VContinuousDiscreteProcess::AlongStepDoIt(), G4VContinuousProcess::AlongStepDoIt(), G4VRestContinuousDiscreteProcess::AlongStepDoIt(), G4VRestContinuousProcess::AlongStepDoIt(), G4ParallelWorldProcess::AlongStepDoIt(), G4ParallelWorldScoringProcess::AlongStepDoIt(), G4VITRestProcess::AtRestDoIt(), G4VRestContinuousDiscreteProcess::AtRestDoIt(), G4VRestContinuousProcess::AtRestDoIt(), G4VRestDiscreteProcess::AtRestDoIt(), G4VRestProcess::AtRestDoIt(), G4ParallelWorldProcess::AtRestDoIt(), G4ParallelWorldScoringProcess::AtRestDoIt(), G4ScoreSplittingProcess::AtRestDoIt(), G4VITRestDiscreteProcess::AtRestDoIt(), G4eplusAnnihilation::AtRestDoIt(), G4DNAElectronHoleRecombination::Create(), G4DNASecondOrderReaction::Create(), G4VEnergyLossProcess::FillSecondariesAlongStep(), G4Decay::G4Decay(), G4DNAMolecularDissociation::G4DNAMolecularDissociation(), G4DNAScavengerProcess::G4DNAScavengerProcess(), G4ImportanceProcess::G4ImportanceProcess(), G4ITTransportation::G4ITTransportation(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4RadioactiveDecay::G4RadioactiveDecay(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4Transportation::G4Transportation(), G4UnknownDecay::G4UnknownDecay(), G4VEmProcess::G4VEmProcess(), G4VEnergyLossProcess::G4VEnergyLossProcess(), G4VMultipleScattering::G4VMultipleScattering(), G4VProcess::G4VProcess(), G4VXTRenergyLoss::G4VXTRenergyLoss(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4VITDiscreteProcess::PostStepDoIt(), G4VContinuousDiscreteProcess::PostStepDoIt(), G4VDiscreteProcess::PostStepDoIt(), G4VRestContinuousDiscreteProcess::PostStepDoIt(), G4VRestDiscreteProcess::PostStepDoIt(), G4ParallelWorldProcess::PostStepDoIt(), G4ParallelWorldScoringProcess::PostStepDoIt(), G4ScoreSplittingProcess::PostStepDoIt(), G4NeutronKiller::PostStepDoIt(), G4VITRestDiscreteProcess::PostStepDoIt(), G4LowECapture::PostStepDoIt(), G4VEmProcess::PostStepDoIt(), G4VEnergyLossProcess::PostStepDoIt(), G4Cerenkov::PostStepDoIt(), and G4VTransitionRadiation::PostStepDoIt().

◆ probLimFluct

const G4double G4hRDEnergyLoss::probLimFluct
protectedinherited

Definition at line 135 of file G4hRDEnergyLoss.hh.

◆ protonHighEnergy

G4double G4hImpactIonisation::protonHighEnergy
private

◆ protonLowEnergy

G4double G4hImpactIonisation::protonLowEnergy
private

◆ protonModel

G4VLowEnergyModel* G4hImpactIonisation::protonModel
private

◆ protonTable

G4String G4hImpactIonisation::protonTable
private

◆ ptableElectronCutInRange

G4ThreadLocal G4double G4hRDEnergyLoss::ptableElectronCutInRange = 0.0
staticprotectedinherited

Definition at line 169 of file G4hRDEnergyLoss.hh.

◆ RecorderOfpbarProcess

G4ThreadLocal G4PhysicsTable ** G4hRDEnergyLoss::RecorderOfpbarProcess = 0
staticprotectedinherited

◆ RecorderOfpProcess

G4ThreadLocal G4PhysicsTable ** G4hRDEnergyLoss::RecorderOfpProcess = 0
staticprotectedinherited

◆ RecorderOfProcess

G4ThreadLocal G4PhysicsTable ** G4hRDEnergyLoss::RecorderOfProcess = 0
staticprivateinherited

◆ rndmStepFlag

G4ThreadLocal G4bool G4hRDEnergyLoss::rndmStepFlag = false
staticprotectedinherited

Definition at line 194 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::SetRndmStep().

◆ RTable

G4ThreadLocal G4double G4hRDEnergyLoss::RTable
staticprotectedinherited

◆ tauhigh

G4ThreadLocal G4double G4hRDEnergyLoss::tauhigh
staticprivateinherited

Definition at line 206 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::RangeIntLin().

◆ taulow

G4ThreadLocal G4double G4hRDEnergyLoss::taulow
staticprivateinherited

Definition at line 206 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::RangeIntLin().

◆ theBarkas

G4bool G4hImpactIonisation::theBarkas
private

◆ theDEDXpbarTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theDEDXpbarTable = 0
staticprotectedinherited

◆ theDEDXpTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theDEDXpTable = 0
staticprotectedinherited

◆ theDEDXTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theDEDXTable = 0
staticprivateinherited

◆ theInitialNumberOfInteractionLength

G4double G4VProcess::theInitialNumberOfInteractionLength = -1.0
protectedinherited

◆ theInverseRangepbarTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theInverseRangepbarTable = 0
staticprotectedinherited

◆ theInverseRangepTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theInverseRangepTable = 0
staticprotectedinherited

◆ theInverseRangeTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theInverseRangeTable = 0
staticprivateinherited

Definition at line 246 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::BuildInverseRangeTable().

◆ theIonChuFluctuationModel

G4VLowEnergyModel* G4hImpactIonisation::theIonChuFluctuationModel
private

Definition at line 245 of file G4hImpactIonisation.hh.

Referenced by InitializeParametrisation(), and ~G4hImpactIonisation().

◆ theIonEffChargeModel

G4VLowEnergyModel* G4hImpactIonisation::theIonEffChargeModel
private

◆ theIonYangFluctuationModel

G4VLowEnergyModel* G4hImpactIonisation::theIonYangFluctuationModel
private

Definition at line 246 of file G4hImpactIonisation.hh.

Referenced by InitializeParametrisation(), and ~G4hImpactIonisation().

◆ theLabTimepbarTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theLabTimepbarTable = 0
staticprotectedinherited

◆ theLabTimepTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theLabTimepTable = 0
staticprotectedinherited

◆ theLabTimeTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theLabTimeTable = 0
staticprivateinherited

Definition at line 248 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::BuildTimeTables().

◆ theLossTable

G4PhysicsTable* G4hRDEnergyLoss::theLossTable
protectedinherited

◆ theMeanFreePathTable

G4PhysicsTable* G4hImpactIonisation::theMeanFreePathTable
private

◆ theNuclearStoppingModel

G4VLowEnergyModel* G4hImpactIonisation::theNuclearStoppingModel
private

◆ theNuclearTable

G4String G4hImpactIonisation::theNuclearTable
private

◆ theNumberOfInteractionLengthLeft

G4double G4VProcess::theNumberOfInteractionLengthLeft = -1.0
protectedinherited

Definition at line 331 of file G4VProcess.hh.

Referenced by G4AdjointForcedInteractionForGamma::AlongStepDoIt(), G4MuonicAtomDecay::AtRestGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4Decay::AtRestGetPhysicalInteractionLength(), G4VProcess::ClearNumberOfInteractionLengthLeft(), G4MuonicAtomDecay::DecayIt(), G4VProcess::EndTracking(), G4VProcess::GetNumberOfInteractionLengthLeft(), G4VProcess::GetTotalNumberOfInteractionLengthTraversed(), G4GammaGeneralProcess::PostStepDoIt(), G4VEmProcess::PostStepDoIt(), G4VEnergyLossProcess::PostStepDoIt(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4GammaGeneralProcess::PostStepGetPhysicalInteractionLength(), G4Decay::PostStepGetPhysicalInteractionLength(), G4AdjointForcedInteractionForGamma::PostStepGetPhysicalInteractionLength(), G4PolarizedAnnihilation::PostStepGetPhysicalInteractionLength(), G4PolarizedCompton::PostStepGetPhysicalInteractionLength(), G4PolarizedIonisation::PostStepGetPhysicalInteractionLength(), G4VEmProcess::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4VProcess::ResetNumberOfInteractionLengthLeft(), G4VProcess::StartTracking(), G4GammaGeneralProcess::StartTracking(), G4VEmProcess::StartTracking(), G4VEnergyLossProcess::StartTracking(), and G4VProcess::SubtractNumberOfInteractionLengthLeft().

◆ thepbarRangeCoeffATable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::thepbarRangeCoeffATable = 0
staticprivateinherited

◆ thepbarRangeCoeffBTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::thepbarRangeCoeffBTable = 0
staticprivateinherited

◆ thepbarRangeCoeffCTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::thepbarRangeCoeffCTable = 0
staticprivateinherited

◆ thePhysicsTableFileName

G4String G4VProcess::thePhysicsTableFileName
protectedinherited

Definition at line 344 of file G4VProcess.hh.

Referenced by G4VProcess::GetPhysicsTableFileName().

◆ thePILfactor

G4double G4VProcess::thePILfactor = 1.0
protectedinherited

◆ thepRangeCoeffATable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::thepRangeCoeffATable = 0
staticprivateinherited

◆ thepRangeCoeffBTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::thepRangeCoeffBTable = 0
staticprivateinherited

◆ thepRangeCoeffCTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::thepRangeCoeffCTable = 0
staticprivateinherited

◆ theProcessName

G4String G4VProcess::theProcessName
protectedinherited

◆ theProcessSubType

G4int G4VProcess::theProcessSubType = -1
protectedinherited

◆ theProcessType

G4ProcessType G4VProcess::theProcessType = fNotDefined
protectedinherited

◆ theProperTimepbarTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theProperTimepbarTable = 0
staticprotectedinherited

◆ theProperTimepTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theProperTimepTable = 0
staticprotectedinherited

◆ theProperTimeTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theProperTimeTable = 0
staticprivateinherited

Definition at line 249 of file G4hRDEnergyLoss.hh.

Referenced by G4hRDEnergyLoss::BuildTimeTables().

◆ theRangeCoeffATable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theRangeCoeffATable = 0
staticprivateinherited

◆ theRangeCoeffBTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theRangeCoeffBTable = 0
staticprivateinherited

◆ theRangeCoeffCTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theRangeCoeffCTable = 0
staticprivateinherited

◆ theRangepbarTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theRangepbarTable = 0
staticprotectedinherited

◆ theRangepTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theRangepTable = 0
staticprotectedinherited

◆ theRangeTable

G4ThreadLocal G4PhysicsTable * G4hRDEnergyLoss::theRangeTable = 0
staticprivateinherited

◆ TotBin

G4ThreadLocal G4int G4hRDEnergyLoss::TotBin = 360
staticprotectedinherited

◆ valueGPILSelection

G4GPILSelection G4VContinuousDiscreteProcess::valueGPILSelection = CandidateForSelection
privateinherited

◆ verboseLevel

G4int G4VProcess::verboseLevel = 0
protectedinherited

Definition at line 356 of file G4VProcess.hh.

Referenced by G4VEnergyLossProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateSecondaryBiasing(), G4VEnergyLossProcess::ActivateSecondaryBiasing(), G4LowECapture::AddRegion(), G4CoupledTransportation::AlongStepDoIt(), G4Transportation::AlongStepDoIt(), G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4CoupledTransportation::AlongStepGetPhysicalInteractionLength(), G4Transportation::AlongStepGetPhysicalInteractionLength(), G4VContinuousProcess::AlongStepGetPhysicalInteractionLength(), AntiProtonParametrisedDEDX(), G4ParallelWorldScoringProcess::AtRestDoIt(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VXTRenergyLoss::BuildAngleTable(), G4VEnergyLossProcess::BuildDEDXTable(), G4VXTRenergyLoss::BuildEnergyTable(), G4VXTRenergyLoss::BuildGlobalAngleTable(), G4VEmProcess::BuildLambdaTable(), BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), BuildLossTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4LowECapture::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4SynchrotronRadiation::BuildPhysicsTable(), G4VXTRenergyLoss::BuildPhysicsTable(), BuildPhysicsTable(), G4ChargeExchangeProcess::BuildPhysicsTable(), G4OpRayleigh::CalculateRayleighMeanFreePaths(), G4PolarizedAnnihilation::ComputeSaturationFactor(), G4PolarizedCompton::ComputeSaturationFactor(), G4PolarizedIonisation::ComputeSaturationFactor(), G4DNAElectronHoleRecombination::Create(), G4DNASecondOrderReaction::Create(), G4VPhononProcess::CreateSecondary(), G4VProcess::EndTracking(), G4VEmProcess::FindLambdaMax(), G4Cerenkov::G4Cerenkov(), G4ChargeExchangeProcess::G4ChargeExchangeProcess(), G4CoupledTransportation::G4CoupledTransportation(), G4DNAMolecularDissociation::G4DNAMolecularDissociation(), G4DNAScavengerProcess::G4DNAScavengerProcess(), G4ErrorEnergyLoss::G4ErrorEnergyLoss(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4GaussXTRadiator::G4GaussXTRadiator(), G4ImportanceProcess::G4ImportanceProcess(), G4MaxTimeCuts::G4MaxTimeCuts(), G4MicroElecSurface::G4MicroElecSurface(), G4MinEkineCuts::G4MinEkineCuts(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess::G4OpBoundaryProcess(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4PolarizedIonisation::G4PolarizedIonisation(), G4Scintillation::G4Scintillation(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4SpecialCuts::G4SpecialCuts(), G4StepLimiter::G4StepLimiter(), G4StrawTubeXTRadiator::G4StrawTubeXTRadiator(), G4SynchrotronRadiation::G4SynchrotronRadiation(), G4TransparentRegXTRadiator::G4TransparentRegXTRadiator(), G4Transportation::G4Transportation(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UserSpecialCuts::G4UserSpecialCuts(), G4VXTRenergyLoss::G4VXTRenergyLoss(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4VXTRenergyLoss::GetAngleVector(), G4ChargeExchangeProcess::GetElementCrossSection(), G4VXTRenergyLoss::GetGasZmuProduct(), G4PhononDownconversion::GetMeanFreePath(), G4PhononScattering::GetMeanFreePath(), G4PolarizedCompton::GetMeanFreePath(), G4VXTRenergyLoss::GetMeanFreePath(), G4UCNAbsorption::GetMeanFreePath(), G4PolarizedAnnihilation::GetMeanFreePath(), G4PolarizedIonisation::GetMeanFreePath(), G4SynchrotronRadiation::GetMeanFreePath(), G4VXTRenergyLoss::GetNumberOfPhotons(), G4VXTRenergyLoss::GetPlateZmuProduct(), G4SynchrotronRadiation::GetRandomEnergySR(), G4VProcess::GetVerboseLevel(), G4hhIonisation::InitialiseEnergyLossProcess(), G4eeToHadrons::InitialiseProcess(), InitializeMe(), G4UCNBoundaryProcess::MRreflect(), G4UCNBoundaryProcess::MRreflectHigh(), G4DNASecondOrderReaction::PostStepDoIt(), G4ParallelWorldScoringProcess::PostStepDoIt(), G4ScoreSplittingProcess::PostStepDoIt(), G4DNAScavengerProcess::PostStepDoIt(), G4VEmProcess::PostStepDoIt(), G4NeutrinoElectronProcess::PostStepDoIt(), G4UCNAbsorption::PostStepDoIt(), G4UCNBoundaryProcess::PostStepDoIt(), G4UCNLoss::PostStepDoIt(), G4UCNMultiScattering::PostStepDoIt(), G4MicroElecSurface::PostStepDoIt(), G4Cerenkov::PostStepDoIt(), G4Scintillation::PostStepDoIt(), G4VXTRenergyLoss::PostStepDoIt(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4HadronElasticProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4OpAbsorption::PostStepDoIt(), G4OpBoundaryProcess::PostStepDoIt(), G4OpMieHG::PostStepDoIt(), G4OpRayleigh::PostStepDoIt(), G4OpWLS::PostStepDoIt(), G4OpWLS2::PostStepDoIt(), G4CoupledTransportation::PostStepDoIt(), G4VITDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNAScavengerProcess::PostStepGetPhysicalInteractionLength(), G4PolarizedAnnihilation::PostStepGetPhysicalInteractionLength(), G4PolarizedCompton::PostStepGetPhysicalInteractionLength(), G4PolarizedIonisation::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4GammaGeneralProcess::PreparePhysicsTable(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), ProtonParametrisedDEDX(), G4UCNBoundaryProcess::Reflect(), G4CoupledTransportation::ReportInexactEnergy(), G4CoupledTransportation::ReportMissingLogger(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrieveTable(), G4VEmProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCSDARangeTable(), G4CoupledTransportation::SetHighLooperThresholds(), G4Transportation::SetHighLooperThresholds(), G4VEnergyLossProcess::SetInverseRangeTable(), G4LowECapture::SetKinEnergyLimit(), G4NeutronKiller::SetKinEnergyLimit(), G4VEnergyLossProcess::SetLambdaTable(), G4CoupledTransportation::SetLowLooperThresholds(), G4Transportation::SetLowLooperThresholds(), G4VEnergyLossProcess::SetRangeTableForLoss(), G4VEnergyLossProcess::SetSecondaryRangeTable(), G4NeutronKiller::SetTimeLimit(), G4VProcess::SetVerboseLevel(), G4Cerenkov::SetVerboseLevel(), G4Scintillation::SetVerboseLevel(), G4OpAbsorption::SetVerboseLevel(), G4OpBoundaryProcess::SetVerboseLevel(), G4OpMieHG::SetVerboseLevel(), G4OpRayleigh::SetVerboseLevel(), G4OpWLS::SetVerboseLevel(), G4OpWLS2::SetVerboseLevel(), G4FastSimulationManagerProcess::SetWorldVolume(), G4GaussXTRadiator::SpectralXTRdEdx(), G4RegularXTRadiator::SpectralXTRdEdx(), G4TransparentRegXTRadiator::SpectralXTRdEdx(), G4XTRRegularRadModel::SpectralXTRdEdx(), G4VProcess::StartTracking(), G4CoupledTransportation::StartTracking(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), G4VEnergyLossProcess::StoreTable(), G4VEnergyLossProcess::StreamInfo(), G4VEmProcess::StreamInfo(), G4VMultipleScattering::StreamInfo(), G4VITProcess::SubtractNumberOfInteractionLengthLeft(), and G4VProcess::SubtractNumberOfInteractionLengthLeft().


The documentation for this class was generated from the following files: