Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4hImpactIonisation Class Reference

#include <G4hImpactIonisation.hh>

+ Inheritance diagram for G4hImpactIonisation:

Public Member Functions

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

Additional Inherited Members

- Static Public Member Functions inherited from G4hRDEnergyLoss
static G4int GetNumberOfProcesses ()
 
static void SetNumberOfProcesses (G4int number)
 
static void PlusNumberOfProcesses ()
 
static void MinusNumberOfProcesses ()
 
static void SetdRoverRange (G4double value)
 
static void SetRndmStep (G4bool value)
 
static void SetEnlossFluc (G4bool value)
 
static void SetStepFunction (G4double c1, G4double c2)
 
- Static Public Member Functions inherited from G4VProcess
static const G4StringGetProcessTypeName (G4ProcessType)
 
- Protected Member Functions inherited from G4hRDEnergyLoss
G4bool CutsWhereModified ()
 
- Protected Member Functions inherited from G4VContinuousDiscreteProcess
void SetGPILSelection (G4GPILSelection selection)
 
G4GPILSelection GetGPILSelection () const
 
- Protected Member Functions inherited from G4VProcess
void SubtractNumberOfInteractionLengthLeft (G4double prevStepSize)
 
void ClearNumberOfInteractionLengthLeft ()
 
- Static Protected Member Functions inherited from G4hRDEnergyLoss
static void BuildDEDXTable (const G4ParticleDefinition &aParticleType)
 
- Protected Attributes inherited from G4hRDEnergyLoss
const G4double MaxExcitationNumber
 
const G4double probLimFluct
 
const long nmaxDirectFluct
 
const long nmaxCont1
 
const long nmaxCont2
 
G4PhysicsTabletheLossTable
 
G4double linLossLimit
 
G4double MinKineticEnergy
 
- Protected Attributes inherited from G4VProcess
const G4ProcessManageraProcessManager = nullptr
 
G4VParticleChangepParticleChange = nullptr
 
G4ParticleChange aParticleChange
 
G4double theNumberOfInteractionLengthLeft = -1.0
 
G4double currentInteractionLength = -1.0
 
G4double theInitialNumberOfInteractionLength = -1.0
 
G4String theProcessName
 
G4String thePhysicsTableFileName
 
G4ProcessType theProcessType = fNotDefined
 
G4int theProcessSubType = -1
 
G4double thePILfactor = 1.0
 
G4int verboseLevel = 0
 
G4bool enableAtRestDoIt = true
 
G4bool enableAlongStepDoIt = true
 
G4bool enablePostStepDoIt = true
 
- Static Protected Attributes inherited from G4hRDEnergyLoss
static G4ThreadLocal G4PhysicsTabletheDEDXpTable = 0
 
static G4ThreadLocal G4PhysicsTabletheDEDXpbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheRangepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheInverseRangepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheInverseRangepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheLabTimepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheLabTimepbarTable = 0
 
static G4ThreadLocal G4PhysicsTabletheProperTimepTable = 0
 
static G4ThreadLocal G4PhysicsTabletheProperTimepbarTable = 0
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfpProcess = 0
 
static G4ThreadLocal G4PhysicsTable ** RecorderOfpbarProcess = 0
 
static G4ThreadLocal G4int CounterOfpProcess = 0
 
static G4ThreadLocal G4int CounterOfpbarProcess = 0
 
static G4ThreadLocal G4double ParticleMass
 
static G4ThreadLocal G4double ptableElectronCutInRange = 0.0
 
static G4ThreadLocal G4double pbartableElectronCutInRange = 0.0
 
static G4ThreadLocal G4double Charge
 
static G4ThreadLocal G4double LowestKineticEnergy = 1e-05
 
static G4ThreadLocal G4double HighestKineticEnergy = 1.e5
 
static G4ThreadLocal G4int TotBin = 360
 
static G4ThreadLocal G4double RTable
 
static G4ThreadLocal G4double LOGRTable
 
static G4ThreadLocal G4double dRoverRange = 0.20
 
static G4ThreadLocal G4double finalRange = 0.2
 
static G4ThreadLocal G4double c1lim = 0.20
 
static G4ThreadLocal G4double c2lim = 0.32
 
static G4ThreadLocal G4double c3lim = -0.032
 
static G4ThreadLocal G4bool rndmStepFlag = false
 
static G4ThreadLocal G4bool EnlossFlucFlag = true
 

Detailed Description

Definition at line 74 of file G4hImpactIonisation.hh.

Constructor & Destructor Documentation

◆ G4hImpactIonisation()

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

Definition at line 82 of file G4hImpactIonisation.cc.

83 : G4hRDEnergyLoss(processName),
84 betheBlochModel(0),
85 protonModel(0),
86 antiprotonModel(0),
87 theIonEffChargeModel(0),
88 theNuclearStoppingModel(0),
89 theIonChuFluctuationModel(0),
90 theIonYangFluctuationModel(0),
91 protonTable("ICRU_R49p"),
92 antiprotonTable("ICRU_R49p"),
93 theNuclearTable("ICRU_R49"),
94 nStopping(true),
95 theBarkas(true),
96 theMeanFreePathTable(0),
97 paramStepLimit (0.005),
98 pixeCrossSectionHandler(0)
99{
100 InitializeMe();
101}
G4hRDEnergyLoss(const G4String &)

◆ ~G4hImpactIonisation()

G4hImpactIonisation::~G4hImpactIonisation ( )

Definition at line 139 of file G4hImpactIonisation.cc.

140{
141 if (theMeanFreePathTable)
142 {
143 theMeanFreePathTable->clearAndDestroy();
144 delete theMeanFreePathTable;
145 }
146
147 if (betheBlochModel) delete betheBlochModel;
148 if (protonModel) delete protonModel;
149 if (antiprotonModel) delete antiprotonModel;
150 if (theNuclearStoppingModel) delete theNuclearStoppingModel;
151 if (theIonEffChargeModel) delete theIonEffChargeModel;
152 if (theIonChuFluctuationModel) delete theIonChuFluctuationModel;
153 if (theIonYangFluctuationModel) delete theIonYangFluctuationModel;
154
155 delete pixeCrossSectionHandler;
156
157 // ---- MGP ---- The following is to be checked
158 // if (shellVacancy) delete shellVacancy;
159
160 cutForDelta.clear();
161}
void clearAndDestroy()

Member Function Documentation

◆ ActivateAugerElectronProduction()

void G4hImpactIonisation::ActivateAugerElectronProduction ( G4bool val)

Definition at line 1714 of file G4hImpactIonisation.cc.

1715{
1716 atomicDeexcitation.ActivateAugerElectronProduction(val);
1717}
void ActivateAugerElectronProduction(G4bool val)
Set threshold energy for Auger electron production.

◆ AlongStepDoIt()

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

Reimplemented from G4VContinuousDiscreteProcess.

Definition at line 725 of file G4hImpactIonisation.cc.

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

◆ BuildPhysicsTable()

void G4hImpactIonisation::BuildPhysicsTable ( const G4ParticleDefinition & aParticleType)
virtual

Reimplemented from G4VProcess.

Definition at line 198 of file G4hImpactIonisation.cc.

201{
202
203 // Verbose print-out
204 if(verboseLevel > 0)
205 {
206 G4cout << "G4hImpactIonisation::BuildPhysicsTable for "
207 << particleDef.GetParticleName()
208 << " mass(MeV)= " << particleDef.GetPDGMass()/MeV
209 << " charge= " << particleDef.GetPDGCharge()/eplus
210 << " type= " << particleDef.GetParticleType()
211 << G4endl;
212
213 if(verboseLevel > 1)
214 {
215 G4ProcessVector* pv = particleDef.GetProcessManager()->GetProcessList();
216
217 G4cout << " 0: " << (*pv)[0]->GetProcessName() << " " << (*pv)[0]
218 << " 1: " << (*pv)[1]->GetProcessName() << " " << (*pv)[1]
219 // << " 2: " << (*pv)[2]->GetProcessName() << " " << (*pv)[2]
220 << G4endl;
221 G4cout << "ionModel= " << theIonEffChargeModel
222 << " MFPtable= " << theMeanFreePathTable
223 << " iniMass= " << initialMass
224 << G4endl;
225 }
226 }
227 // End of verbose print-out
228
229 if (particleDef.GetParticleType() == "nucleus" &&
230 particleDef.GetParticleName() != "GenericIon" &&
231 particleDef.GetParticleSubType() == "generic")
232 {
233
234 G4EnergyLossTables::Register(&particleDef,
241 proton_mass_c2/particleDef.GetPDGMass(),
242 TotBin);
243
244 return;
245 }
246
247 if( !CutsWhereModified() && theLossTable) return;
248
249 InitializeParametrisation() ;
252
253 charge = particleDef.GetPDGCharge() / eplus;
254 chargeSquare = charge*charge ;
255
256 const G4ProductionCutsTable* theCoupleTable=
258 G4int numOfCouples = (G4int)theCoupleTable->GetTableSize();
259
260 cutForDelta.clear();
261 cutForGamma.clear();
262
263 for (G4int j=0; j<numOfCouples; ++j) {
264
265 // get material parameters needed for the energy loss calculation
266 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(j);
267 const G4Material* material= couple->GetMaterial();
268
269 // the cut cannot be below lowest limit
270 G4double tCut = (*(theCoupleTable->GetEnergyCutsVector(1)))[j];
272
273 G4double excEnergy = material->GetIonisation()->GetMeanExcitationEnergy();
274
275 tCut = std::max(tCut,excEnergy);
276 cutForDelta.push_back(tCut);
277
278 // the cut cannot be below lowest limit
279 tCut = (*(theCoupleTable->GetEnergyCutsVector(0)))[j];
281 tCut = std::max(tCut,minGammaEnergy);
282 cutForGamma.push_back(tCut);
283 }
284
285 if(verboseLevel > 0) {
286 G4cout << "Cuts are defined " << G4endl;
287 }
288
289 if(0.0 < charge)
290 {
291 {
292 BuildLossTable(*proton) ;
293
294 // The following vector has a fixed dimension (see src/G4hImpactLoss.cc for more details)
295 // It happended in the past that caused memory corruption errors. The problem is still pending, even if temporary solved
296 // G4cout << "[NOTE]: __LINE__=" << __LINE__ << ", particleDef=" << particleDef.GetParticleName() << ", proton=" << proton << ", theLossTable=" << theLossTable << ", CounterOfpProcess=" << CounterOfpProcess << G4endl;
297
300 }
301 } else {
302 {
303 BuildLossTable(*antiproton) ;
304
305 // The following vector has a fixed dimension (see src/G4hImpactLoss.cc for more details)
306 // It happended in the past that caused memory corruption errors. The problem is still pending, even if temporary solved
307 // G4cout << "[NOTE]: __LINE__=" << __LINE__ << ", particleDef=" << particleDef.GetParticleName() << ", antiproton=" << antiproton << ", theLossTable=" << theLossTable << ", CounterOfpbarProcess=" << CounterOfpbarProcess << G4endl;
308
311 }
312 }
313
314 if(verboseLevel > 0) {
315 G4cout << "G4hImpactIonisation::BuildPhysicsTable: "
316 << "Loss table is built "
317 // << theLossTable
318 << G4endl;
319 }
320
321 BuildLambdaTable(particleDef) ;
322 // BuildDataForFluorescence(particleDef);
323
324 if(verboseLevel > 1) {
325 G4cout << (*theMeanFreePathTable) << G4endl;
326 }
327
328 if(verboseLevel > 0) {
329 G4cout << "G4hImpactIonisation::BuildPhysicsTable: "
330 << "DEDX table will be built "
331 // << theDEDXpTable << " " << theDEDXpbarTable
332 // << " " << theRangepTable << " " << theRangepbarTable
333 << G4endl;
334 }
335
336 BuildDEDXTable(particleDef) ;
337
338 if(verboseLevel > 1) {
339 G4cout << (*theDEDXpTable) << G4endl;
340 }
341
342 if((&particleDef == proton) || (&particleDef == antiproton)) PrintInfoDefinition() ;
343
344 if(verboseLevel > 0) {
345 G4cout << "G4hImpactIonisation::BuildPhysicsTable: end for "
346 << particleDef.GetParticleName() << G4endl;
347 }
348}
int G4int
Definition G4Types.hh:85
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
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 GetMeanExcitationEnergy() const
G4IonisParamMat * GetIonisation() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
const std::vector< G4double > * GetEnergyCutsVector(std::size_t pcIdx) const
static G4ProductionCutsTable * GetProductionCutsTable()
G4int verboseLevel
static G4ThreadLocal G4PhysicsTable * theDEDXpTable
static G4ThreadLocal G4PhysicsTable * theInverseRangepTable
static G4ThreadLocal G4PhysicsTable ** RecorderOfpProcess
static G4ThreadLocal G4int TotBin
static G4ThreadLocal G4PhysicsTable * theProperTimepTable
G4PhysicsTable * theLossTable
static G4ThreadLocal G4PhysicsTable * theLabTimepTable
static G4ThreadLocal G4PhysicsTable * theRangepTable
static G4ThreadLocal G4int CounterOfpProcess
static G4ThreadLocal G4int CounterOfpbarProcess
static G4ThreadLocal G4PhysicsTable ** RecorderOfpbarProcess
static G4ThreadLocal G4double LowestKineticEnergy
static void BuildDEDXTable(const G4ParticleDefinition &aParticleType)

◆ ComputeDEDX()

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

Definition at line 1273 of file G4hImpactIonisation.cc.

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

◆ 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{
298 G4double step = GetConstraints(track.GetDynamicParticle(),track.GetMaterialCutsCouple()) ;
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 G4DynamicParticle * GetDynamicParticle() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const

◆ GetMeanFreePath()

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

Implements G4hRDEnergyLoss.

Definition at line 596 of file G4hImpactIonisation.cc.

599{
600 const G4DynamicParticle* dynamicParticle = track.GetDynamicParticle();
601 const G4MaterialCutsCouple* couple = track.GetMaterialCutsCouple();
602 const G4Material* material = couple->GetMaterial();
603
604 G4double meanFreePath = DBL_MAX;
605 // ---- MGP ---- What is the meaning of the local variable isOutOfRange?
606 G4bool isOutRange = false;
607
609
610 G4double kineticEnergy = (dynamicParticle->GetKineticEnergy())*initialMass/(dynamicParticle->GetMass());
611 charge = dynamicParticle->GetCharge()/eplus;
612 chargeSquare = theIonEffChargeModel->TheValue(dynamicParticle, material);
613
614 if (kineticEnergy < LowestKineticEnergy)
615 {
616 meanFreePath = DBL_MAX;
617 }
618 else
619 {
620 if (kineticEnergy > HighestKineticEnergy) kineticEnergy = HighestKineticEnergy;
621 meanFreePath = (((*theMeanFreePathTable)(couple->GetIndex()))->
622 GetValue(kineticEnergy,isOutRange))/chargeSquare;
623 }
624
625 return meanFreePath ;
626}
G4double condition(const G4ErrorSymMatrix &m)
@ NotForced
bool G4bool
Definition G4Types.hh:86
G4double GetCharge() const
#define DBL_MAX
Definition templates.hh:62

◆ 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}

◆ PostStepDoIt()

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

Implements G4hRDEnergyLoss.

Definition at line 959 of file G4hImpactIonisation.cc.

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

◆ PrintInfoDefinition()

void G4hImpactIonisation::PrintInfoDefinition ( ) const

Definition at line 1721 of file G4hImpactIonisation.cc.

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

Referenced by BuildPhysicsTable().

◆ SetBarkasOff()

void G4hImpactIonisation::SetBarkasOff ( )
inline

Definition at line 147 of file G4hImpactIonisation.hh.

147{theBarkas = false;};

◆ SetBarkasOn()

void G4hImpactIonisation::SetBarkasOn ( )
inline

Definition at line 144 of file G4hImpactIonisation.hh.

144{theBarkas = true;};

◆ SetCutForAugerElectrons()

void G4hImpactIonisation::SetCutForAugerElectrons ( G4double cut)

Definition at line 1707 of file G4hImpactIonisation.cc.

1708{
1709 minElectronEnergy = cut;
1710}

◆ SetCutForSecondaryPhotons()

void G4hImpactIonisation::SetCutForSecondaryPhotons ( G4double cut)

Definition at line 1700 of file G4hImpactIonisation.cc.

1701{
1702 minGammaEnergy = cut;
1703}

◆ SetElectronicStoppingPowerModel()

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

Definition at line 164 of file G4hImpactIonisation.cc.

167{
168 if (particle->GetPDGCharge() > 0 )
169 {
170 // Positive charge
171 SetProtonElectronicStoppingPowerModel(dedxTable) ;
172 }
173 else
174 {
175 // Antiprotons
176 SetAntiProtonElectronicStoppingPowerModel(dedxTable) ;
177 }
178}

◆ SetHighEnergyForAntiProtonParametrisation()

void G4hImpactIonisation::SetHighEnergyForAntiProtonParametrisation ( G4double energy)
inline

Definition at line 109 of file G4hImpactIonisation.hh.

109{antiprotonHighEnergy = energy;} ;
G4double energy(const ThreeVector &p, const G4double m)

◆ SetHighEnergyForProtonParametrisation()

void G4hImpactIonisation::SetHighEnergyForProtonParametrisation ( G4double energy)
inline

Definition at line 99 of file G4hImpactIonisation.hh.

99{protonHighEnergy = energy;} ;

◆ SetLowEnergyForAntiProtonParametrisation()

void G4hImpactIonisation::SetLowEnergyForAntiProtonParametrisation ( G4double energy)
inline

Definition at line 114 of file G4hImpactIonisation.hh.

114{antiprotonLowEnergy = energy;} ;

◆ SetLowEnergyForProtonParametrisation()

void G4hImpactIonisation::SetLowEnergyForProtonParametrisation ( G4double energy)
inline

Definition at line 104 of file G4hImpactIonisation.hh.

104{protonLowEnergy = energy;} ;

◆ SetNuclearStoppingOff()

void G4hImpactIonisation::SetNuclearStoppingOff ( )
inline

Definition at line 141 of file G4hImpactIonisation.hh.

141{nStopping = false;};

◆ SetNuclearStoppingOn()

void G4hImpactIonisation::SetNuclearStoppingOn ( )
inline

Definition at line 138 of file G4hImpactIonisation.hh.

138{nStopping = true;};

Referenced by SetNuclearStoppingPowerModel().

◆ SetNuclearStoppingPowerModel()

void G4hImpactIonisation::SetNuclearStoppingPowerModel ( const G4String & dedxTable)
inline

Definition at line 130 of file G4hImpactIonisation.hh.

131 {theNuclearTable = dedxTable; SetNuclearStoppingOn();};

◆ SetPixe()

void G4hImpactIonisation::SetPixe ( const G4bool )
inline

Definition at line 150 of file G4hImpactIonisation.hh.

150{pixeIsActive = true;};

◆ SetPixeCrossSectionK()

void G4hImpactIonisation::SetPixeCrossSectionK ( const G4String & name)
inline

Definition at line 176 of file G4hImpactIonisation.hh.

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

◆ SetPixeCrossSectionL()

void G4hImpactIonisation::SetPixeCrossSectionL ( const G4String & name)
inline

Definition at line 177 of file G4hImpactIonisation.hh.

177{ modelL = name; }

◆ SetPixeCrossSectionM()

void G4hImpactIonisation::SetPixeCrossSectionM ( const G4String & name)
inline

Definition at line 178 of file G4hImpactIonisation.hh.

178{ modelM = name; }

◆ SetPixeProjectileMaxEnergy()

void G4hImpactIonisation::SetPixeProjectileMaxEnergy ( G4double energy)
inline

Definition at line 180 of file G4hImpactIonisation.hh.

180{ eMaxPixe = energy; }

◆ SetPixeProjectileMinEnergy()

void G4hImpactIonisation::SetPixeProjectileMinEnergy ( G4double energy)
inline

Definition at line 179 of file G4hImpactIonisation.hh.

179{ eMinPixe = energy; }

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