Geant4-11
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Attributes
G4VXTRenergyLoss Class Reference

#include <G4VXTRenergyLoss.hh>

Inheritance diagram for G4VXTRenergyLoss:
G4VDiscreteProcess G4VProcess G4GammaXTRadiator G4GaussXTRadiator G4RegularXTRadiator G4StrawTubeXTRadiator G4TransparentRegXTRadiator G4XTRGammaRadModel G4XTRRegularRadModel G4XTRTransparentRegRadModel

Public Member Functions

virtual G4VParticleChangeAlongStepDoIt (const G4Track &, const G4Step &)
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
G4double AngleSpectralXTRdEdx (G4double energy)
 
G4double AngleXTRdEdx (G4double varAngle)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
void BuildAngleForEnergyBank ()
 
void BuildAngleTable ()
 
void BuildEnergyTable ()
 
void BuildGlobalAngleTable ()
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &) override
 
void BuildTable ()
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
void ComputeGasPhotoAbsCof ()
 
void ComputePlatePhotoAbsCof ()
 
virtual void DumpInfo () const override
 
virtual void EndTracking ()
 
 G4VXTRenergyLoss (G4LogicalVolume *anEnvelope, G4Material *, G4Material *, G4double, G4double, G4int, const G4String &processName="XTRenergyLoss", G4ProcessType type=fElectromagnetic)
 
 G4VXTRenergyLoss (G4VXTRenergyLoss &)=delete
 
G4double GetAlphaGas ()
 
G4double GetAlphaPlate ()
 
G4bool GetAngleRadDistr ()
 
G4PhysicsFreeVectorGetAngleVector (G4double energy, G4int n)
 
G4double GetAngleXTR (G4int iTR, G4double position, G4int iAngle)
 
G4bool GetCompton ()
 
G4double GetComptonPerAtom (G4double, G4double)
 
G4double GetCurrentInteractionLength () const
 
G4double GetEnergy ()
 
G4bool GetFastAngle ()
 
G4double GetGamma ()
 
G4complex GetGasComplexFZ (G4double, G4double, G4double)
 
G4double GetGasCompton (G4double)
 
G4double GetGasFormationZone (G4double, G4double, G4double)
 
G4double GetGasLinearPhotoAbs (G4double)
 
void GetGasZmuProduct ()
 
G4double GetGasZmuProduct (G4double, G4double, G4double)
 
const G4VProcessGetMasterProcess () const
 
G4double GetMaxEnergyTR ()
 
G4double GetMaxThetaTR ()
 
virtual G4double GetMeanFreePath (const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition) override
 
G4double GetMinEnergyTR ()
 
G4double GetMinThetaTR ()
 
G4double GetNumberOfInteractionLengthLeft () const
 
void GetNumberOfPhotons ()
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
G4double GetPILfactor () const
 
G4complex GetPlateComplexFZ (G4double, G4double, G4double)
 
G4double GetPlateCompton (G4double)
 
G4double GetPlateFormationZone (G4double, G4double, G4double)
 
G4double GetPlateLinearPhotoAbs (G4double)
 
void GetPlateZmuProduct ()
 
G4double GetPlateZmuProduct (G4double, G4double, G4double)
 
virtual const G4ProcessManagerGetProcessManager ()
 
const G4StringGetProcessName () const
 
G4int GetProcessSubType () const
 
G4ProcessType GetProcessType () const
 
G4PhysicsLogVectorGetProtonVector ()
 
G4double GetRandomAngle (G4double energyXTR, G4int iTkin)
 
virtual G4double GetStackFactor (G4double energy, G4double gamma, G4double varAngle)
 
G4double GetTheMaxAngle ()
 
G4double GetTheMaxEnergyTR ()
 
G4double GetTheMinAngle ()
 
G4double GetTheMinEnergyTR ()
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4int GetTotBin ()
 
G4double GetVarAngle ()
 
G4int GetVerboseLevel () const
 
G4double GetXTRenergy (G4int iPlace, G4double position, G4int iTransfer)
 
G4double GetXTRrandomEnergy (G4double scaledTkin, G4int iTkin)
 
G4bool isAlongStepDoItIsEnabled () const
 
virtual G4bool IsApplicable (const G4ParticleDefinition &) override
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
G4double OneBoundaryXTRNdensity (G4double energy, G4double gamma, G4double varAngle) const
 
G4complex OneInterfaceXTRdEdx (G4double energy, G4double gamma, G4double varAngle)
 
G4bool operator!= (const G4VProcess &right) const
 
G4VXTRenergyLossoperator= (const G4VXTRenergyLoss &right)=delete
 
G4bool operator== (const G4VProcess &right) const
 
virtual G4VParticleChangePostStepDoIt (const G4Track &aTrack, const G4Step &aStep) override
 
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 &)
 
virtual void ProcessDescription (std::ostream &) const override
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
void SetAlphaGas (G4double ag)
 
void SetAlphaPlate (G4double ap)
 
void SetAngleRadDistr (G4bool fatr)
 
void SetCompton (G4bool pC)
 
void SetEnergy (G4double energy)
 
void SetFastAngle (G4bool fatr)
 
void SetGamma (G4double gamma)
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
void SetMaxEnergyTR (G4double maxetr)
 
void SetMaxThetaTR (G4double maxatr)
 
void SetMinEnergyTR (G4double minetr)
 
void SetMinThetaTR (G4double minatr)
 
void SetPILfactor (G4double value)
 
virtual void SetProcessManager (const G4ProcessManager *)
 
void SetProcessSubType (G4int)
 
void SetProcessType (G4ProcessType)
 
void SetTheMaxAngle (G4double maxang)
 
void SetTheMaxEnergyTR (G4double maxetr)
 
void SetTheMinAngle (G4double minang)
 
void SetTheMinEnergyTR (G4double minetr)
 
void SetVarAngle (G4double varAngle)
 
void SetVerboseLevel (G4int value)
 
G4double SpectralAngleXTRdEdx (G4double varAngle)
 
virtual G4double SpectralXTRdEdx (G4double energy)
 
virtual void StartTracking (G4Track *)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
G4double XTRNAngleDensity (G4double varAngle)
 
G4double XTRNAngleSpectralDensity (G4double energy)
 
G4double XTRNSpectralAngleDensity (G4double varAngle)
 
G4double XTRNSpectralDensity (G4double energy)
 
virtual ~G4VXTRenergyLoss ()
 

Static Public Member Functions

static const G4StringGetProcessTypeName (G4ProcessType)
 

Protected Member Functions

void ClearNumberOfInteractionLengthLeft ()
 
void SubtractNumberOfInteractionLengthLeft (G4double prevStepSize)
 

Protected Attributes

G4ParticleChange aParticleChange
 
const G4ProcessManageraProcessManager = nullptr
 
G4double currentInteractionLength = -1.0
 
G4bool enableAlongStepDoIt = true
 
G4bool enableAtRestDoIt = true
 
G4bool enablePostStepDoIt = true
 
G4double fAlphaGas
 
G4double fAlphaPlate
 
std::vector< G4PhysicsTable * > fAngleBank
 
G4PhysicsTablefAngleDistrTable
 
G4PhysicsTablefAngleForEnergyTable
 
G4bool fAngleRadDistr
 
G4int fBinTR
 
G4bool fCompton
 
G4double fEnergy
 
G4PhysicsTablefEnergyDistrTable
 
G4LogicalVolumefEnvelope
 
G4bool fExitFlux
 
G4bool fFastAngle
 
G4double fGamma
 
G4doublefGammaCutInKineticEnergy
 
G4double fGammaTkinCut
 
G4SandiaTablefGasPhotoAbsCof
 
G4double fGasThick
 
G4double fLambda
 
G4int fMatIndex1
 
G4int fMatIndex2
 
G4double fMaxEnergyTR
 
G4double fMaxThetaTR
 
G4double fMinEnergyTR
 
G4double fMinThetaTR
 
G4ParticleChange fParticleChange
 
G4int fPlateNumber
 
G4SandiaTablefPlatePhotoAbsCof
 
G4double fPlateThick
 
G4PhysicsLogVectorfProtonEnergyVector
 
G4ParticleDefinitionfPtrGamma
 
G4double fSigma1
 
G4double fSigma2
 
G4double fTheMaxAngle
 
G4double fTheMaxEnergyTR
 
G4double fTheMinAngle
 
G4double fTheMinEnergyTR
 
G4double fTotalDist
 
G4int fTotBin
 
G4double fVarAngle
 
G4PhysicsLogVectorfXTREnergyVector
 
G4VParticleChangepParticleChange = nullptr
 
G4int secID = -1
 
G4double theInitialNumberOfInteractionLength = -1.0
 
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 constexpr G4double fCofTR = CLHEP::fine_structure_const / CLHEP::pi
 
static constexpr G4double fMaxProtonTkin = 100. * CLHEP::TeV
 
static constexpr G4double fMinProtonTkin = 100. * CLHEP::GeV
 
static constexpr G4double fPlasmaCof
 

Private Attributes

G4ProcessTablefProcessTable = nullptr
 
G4VProcessmasterProcessShadow = nullptr
 

Detailed Description

Definition at line 58 of file G4VXTRenergyLoss.hh.

Constructor & Destructor Documentation

◆ G4VXTRenergyLoss() [1/2]

G4VXTRenergyLoss::G4VXTRenergyLoss ( G4LogicalVolume anEnvelope,
G4Material foilMat,
G4Material gasMat,
G4double  a,
G4double  b,
G4int  n,
const G4String processName = "XTRenergyLoss",
G4ProcessType  type = fElectromagnetic 
)
explicit

Definition at line 59 of file G4VXTRenergyLoss.cc.

64 : G4VDiscreteProcess(processName, type)
66 , fAngleDistrTable(nullptr)
67 , fEnergyDistrTable(nullptr)
68 , fAngleForEnergyTable(nullptr)
69 , fPlatePhotoAbsCof(nullptr)
70 , fGasPhotoAbsCof(nullptr)
71 , fGammaTkinCut(0.0)
72{
73 verboseLevel = 1;
74 secID = G4PhysicsModelCatalog::GetModelID("model_XTRenergyLoss");
76
77 fPtrGamma = nullptr;
80 fAlphaPlate = 100.;
81 fAlphaGas = 40.;
82
83 fTheMinEnergyTR = CLHEP::keV * 1.; // 1.; //
84 fTheMaxEnergyTR = CLHEP::keV * 100.; // 40.; //
85
86 fTheMinAngle = 1.e-8; //
87 fTheMaxAngle = 4.e-4;
88
89 fTotBin = 50; // number of bins in log scale
90 fBinTR = 100; // number of bins in TR vectors
91
92 // min/max angle2 in log-vectors
93
94 fMinThetaTR = 3.0e-9;
95 fMaxThetaTR = 1.0e-4;
96
97
98 // Proton energy vector initialization
101
104
105 fEnvelope = anEnvelope;
106
107 fPlateNumber = n;
108 if(verboseLevel > 0)
109 G4cout << "### G4VXTRenergyLoss: the number of TR radiator plates = "
110 << fPlateNumber << G4endl;
111 if(fPlateNumber == 0)
112 {
113 G4Exception("G4VXTRenergyLoss::G4VXTRenergyLoss()", "VXTRELoss01",
114 FatalException, "No plates in X-ray TR radiator");
115 }
116 // default is XTR dEdx, not flux after radiator
117 fExitFlux = false;
118 // default angle distribution according numerical integration
119 fFastAngle = false; // no angle according sum of delta-functions by default
120 fAngleRadDistr = true;
121 fCompton = false;
122
124
125 // Mean thicknesses of plates and gas gaps
126 fPlateThick = a;
127 fGasThick = b;
129 if(verboseLevel > 0)
130 G4cout << "total radiator thickness = " << fTotalDist / cm << " cm"
131 << G4endl;
132
133 // index of plate material
134 fMatIndex1 = foilMat->GetIndex();
135 if(verboseLevel > 0)
136 G4cout << "plate material = " << foilMat->GetName() << G4endl;
137
138 // index of gas material
139 fMatIndex2 = gasMat->GetIndex();
140 if(verboseLevel > 0)
141 G4cout << "gas material = " << gasMat->GetName() << G4endl;
142
143 // plasma energy squared for plate material
145 if(verboseLevel > 0)
146 G4cout << "plate plasma energy = " << std::sqrt(fSigma1) / eV << " eV"
147 << G4endl;
148
149 // plasma energy squared for gas material
151 if(verboseLevel > 0)
152 G4cout << "gas plasma energy = " << std::sqrt(fSigma2) / eV << " eV"
153 << G4endl;
154
155 // Compute cofs for preparation of linear photo absorption
158
160}
@ fTransitionRadiation
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
static constexpr double eV
Definition: G4SIunits.hh:201
static constexpr double cm
Definition: G4SIunits.hh:99
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4double GetElectronDensity() const
Definition: G4Material.hh:213
const G4String & GetName() const
Definition: G4Material.hh:173
size_t GetIndex() const
Definition: G4Material.hh:256
static G4int GetModelID(const G4int modelIndex)
G4int verboseLevel
Definition: G4VProcess.hh:356
void SetProcessSubType(G4int)
Definition: G4VProcess.hh:406
G4VParticleChange * pParticleChange
Definition: G4VProcess.hh:321
G4PhysicsTable * fEnergyDistrTable
G4PhysicsTable * fAngleForEnergyTable
static constexpr G4double fMaxProtonTkin
G4PhysicsLogVector * fProtonEnergyVector
G4PhysicsLogVector * fXTREnergyVector
G4SandiaTable * fPlatePhotoAbsCof
G4PhysicsTable * fAngleDistrTable
G4SandiaTable * fGasPhotoAbsCof
G4LogicalVolume * fEnvelope
static constexpr G4double fPlasmaCof
static constexpr G4double fMinProtonTkin
G4ParticleDefinition * fPtrGamma
G4ParticleChange fParticleChange
G4double * fGammaCutInKineticEnergy
static constexpr double keV
#define DBL_MAX
Definition: templates.hh:62

References cm, ComputeGasPhotoAbsCof(), ComputePlatePhotoAbsCof(), DBL_MAX, eV, fAlphaGas, fAlphaPlate, fAngleRadDistr, FatalException, fBinTR, fCompton, fEnergy, fEnvelope, fExitFlux, fFastAngle, fGamma, fGasThick, fLambda, fMatIndex1, fMatIndex2, fMaxEnergyTR, fMaxProtonTkin, fMaxThetaTR, fMinEnergyTR, fMinProtonTkin, fMinThetaTR, fParticleChange, fPlasmaCof, fPlateNumber, fPlateThick, fProtonEnergyVector, fPtrGamma, fSigma1, fSigma2, fTheMaxAngle, fTheMaxEnergyTR, fTheMinAngle, fTheMinEnergyTR, fTotalDist, fTotBin, fTransitionRadiation, fVarAngle, fXTREnergyVector, G4cout, G4endl, G4Exception(), G4Material::GetElectronDensity(), G4Material::GetIndex(), G4PhysicsModelCatalog::GetModelID(), G4Material::GetName(), CLHEP::keV, CLHEP::detail::n, G4VProcess::pParticleChange, secID, G4VProcess::SetProcessSubType(), and G4VProcess::verboseLevel.

Referenced by BuildAngleForEnergyBank(), BuildEnergyTable(), BuildGlobalAngleTable(), SpectralXTRdEdx(), XTRNAngleDensity(), and XTRNSpectralDensity().

◆ ~G4VXTRenergyLoss()

G4VXTRenergyLoss::~G4VXTRenergyLoss ( )
virtual

◆ G4VXTRenergyLoss() [2/2]

G4VXTRenergyLoss::G4VXTRenergyLoss ( G4VXTRenergyLoss )
delete

Member Function Documentation

◆ AlongStepDoIt()

virtual G4VParticleChange * G4VDiscreteProcess::AlongStepDoIt ( const G4Track ,
const G4Step  
)
inlinevirtualinherited

Implements G4VProcess.

Reimplemented in G4NuclearStopping.

Definition at line 90 of file G4VDiscreteProcess.hh.

93 { return 0; }

◆ AlongStepGetPhysicalInteractionLength()

virtual G4double G4VDiscreteProcess::AlongStepGetPhysicalInteractionLength ( const G4Track ,
G4double  ,
G4double  ,
G4double ,
G4GPILSelection  
)
inlinevirtualinherited

Implements G4VProcess.

Reimplemented in G4NuclearStopping.

Definition at line 70 of file G4VDiscreteProcess.hh.

76 { return -1.0; }

◆ 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().

◆ AngleSpectralXTRdEdx()

G4double G4VXTRenergyLoss::AngleSpectralXTRdEdx ( G4double  energy)

Definition at line 905 of file G4VXTRenergyLoss.cc.

906{
908 if(result < 0)
909 result = 0.0;
910 return result;
911}
double G4double
Definition: G4Types.hh:83
virtual G4double GetStackFactor(G4double energy, G4double gamma, G4double varAngle)
G4double energy(const ThreeVector &p, const G4double m)

References G4INCL::KinematicsUtils::energy(), fGamma, fVarAngle, and GetStackFactor().

◆ AngleXTRdEdx()

G4double G4VXTRenergyLoss::AngleXTRdEdx ( G4double  varAngle)

Definition at line 915 of file G4VXTRenergyLoss.cc.

916{
917 G4double result;
918 G4double sum = 0., tmp1, tmp2, tmp = 0., cof1, cof2, cofMin, cofPHC, energy1,
919 energy2;
920 G4int k, kMax, kMin, i;
921
922 cofPHC = twopi * hbarc;
923
924 cof1 = (fPlateThick + fGasThick) * (1. / fGamma / fGamma + varAngle);
926
927 cofMin = std::sqrt(cof1 * cof2);
928 cofMin /= cofPHC;
929
930 kMin = G4int(cofMin);
931 if(cofMin > kMin)
932 kMin++;
933
934 kMax = kMin + 9;
935
936 for(k = kMin; k <= kMax; ++k)
937 {
938 tmp1 = cofPHC * k;
939 tmp2 = std::sqrt(tmp1 * tmp1 - cof1 * cof2);
940 energy1 = (tmp1 + tmp2) / cof1;
941 energy2 = (tmp1 - tmp2) / cof1;
942
943 for(i = 0; i < 2; ++i)
944 {
945 if(i == 0)
946 {
947 if(energy1 > fTheMaxEnergyTR || energy1 < fTheMinEnergyTR)
948 continue;
949
950 tmp1 =
951 (energy1 * energy1 * (1. / fGamma / fGamma + varAngle) + fSigma1) *
952 fPlateThick / (4 * hbarc * energy1);
953 tmp2 = std::sin(tmp1);
954 tmp = energy1 * tmp2 * tmp2;
955 tmp2 = fPlateThick / (4. * tmp1);
956 tmp1 =
957 hbarc * energy1 /
958 (energy1 * energy1 * (1. / fGamma / fGamma + varAngle) + fSigma2);
959 tmp *= (tmp1 - tmp2) * (tmp1 - tmp2);
960 tmp1 = cof1 / (4. * hbarc) - cof2 / (4. * hbarc * energy1 * energy1);
961 tmp2 = std::abs(tmp1);
962
963 if(tmp2 > 0.)
964 tmp /= tmp2;
965 else
966 continue;
967 }
968 else
969 {
970 if(energy2 > fTheMaxEnergyTR || energy2 < fTheMinEnergyTR)
971 continue;
972
973 tmp1 =
974 (energy2 * energy2 * (1. / fGamma / fGamma + varAngle) + fSigma1) *
975 fPlateThick / (4. * hbarc * energy2);
976 tmp2 = std::sin(tmp1);
977 tmp = energy2 * tmp2 * tmp2;
978 tmp2 = fPlateThick / (4. * tmp1);
979 tmp1 =
980 hbarc * energy2 /
981 (energy2 * energy2 * (1. / fGamma / fGamma + varAngle) + fSigma2);
982 tmp *= (tmp1 - tmp2) * (tmp1 - tmp2);
983 tmp1 = cof1 / (4. * hbarc) - cof2 / (4. * hbarc * energy2 * energy2);
984 tmp2 = std::abs(tmp1);
985
986 if(tmp2 > 0.)
987 tmp /= tmp2;
988 else
989 continue;
990 }
991 sum += tmp;
992 }
993 }
994 result = 4. * pi * fPlateNumber * sum * varAngle;
995 result /= hbarc * hbarc;
996
997 return result;
998}
static constexpr double twopi
Definition: G4SIunits.hh:56
static constexpr double pi
Definition: G4SIunits.hh:55
int G4int
Definition: G4Types.hh:85
float hbarc
Definition: hepunit.py:264

References fGamma, fGasThick, fPlateNumber, fPlateThick, fSigma1, fSigma2, fTheMaxEnergyTR, fTheMinEnergyTR, source.hepunit::hbarc, BoundingBox::kMax, BoundingBox::kMin, pi, and twopi.

Referenced by BuildGlobalAngleTable().

◆ AtRestDoIt()

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

Implements G4VProcess.

Reimplemented in G4HadronStoppingProcess, and G4eplusAnnihilation.

Definition at line 85 of file G4VDiscreteProcess.hh.

88 { return 0; }

◆ AtRestGetPhysicalInteractionLength()

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

Implements G4VProcess.

Reimplemented in G4HadronStoppingProcess, and G4eplusAnnihilation.

Definition at line 78 of file G4VDiscreteProcess.hh.

81 { 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().

◆ BuildAngleForEnergyBank()

void G4VXTRenergyLoss::BuildAngleForEnergyBank ( )

Definition at line 394 of file G4VXTRenergyLoss.cc.

395{
396
397 if( ( this->GetProcessName() == "TranspRegXTRadiator" ||
398 this->GetProcessName() == "TranspRegXTRmodel" ||
399 this->GetProcessName() == "RegularXTRadiator" ||
400 this->GetProcessName() == "RegularXTRmodel" ) && fFastAngle ) // ffastAngle=true!
401 {
402 BuildAngleTable(); // by sum of delta-functions
403 return;
404 }
405 G4int i, iTkin, iTR;
406 G4double angleSum = 0.0;
407
408 fGammaTkinCut = 0.0;
409
410 // setting of min/max TR energies
413 else
415
418 else
420
421 G4PhysicsLogVector* energyVector =
423
425 integral;
426
427 G4cout.precision(4);
428 G4Timer timer;
429 timer.Start();
430
431 for(iTkin = 0; iTkin < fTotBin; ++iTkin) // Lorentz factor loop
432 {
433 fGamma =
435
438 else if(fMaxThetaTR < fTheMinAngle)
440
442
443 for(iTR = 0; iTR < fBinTR; ++iTR)
444 {
445 angleSum = 0.0;
446 fEnergy = energyVector->GetLowEdgeEnergy(iTR);
447
448 // log-vector to increase number of thin bins for small angles
450
451
452
453 angleVector->PutValue(fBinTR - 1, angleSum);
454
455 for(i = fBinTR - 2; i >= 0; --i)
456 {
457 // Legendre96 or Legendre10
458
459 angleSum +=
460 integral.Legendre10(this, &G4VXTRenergyLoss::SpectralAngleXTRdEdx,
461 angleVector->GetLowEdgeEnergy(i),
462 angleVector->GetLowEdgeEnergy(i + 1));
463
464 angleVector->PutValue(i, angleSum);
465 }
466 fAngleForEnergyTable->insertAt(iTR, angleVector);
467 }
469 }
470 timer.Stop();
471 G4cout.precision(6);
472 if(verboseLevel > 0)
473 {
474 G4cout << G4endl;
475 G4cout << "total time for build X-ray TR angle for energy loss tables = "
476 << timer.GetUserElapsed() << " s" << G4endl;
477 }
478 fGamma = 0.;
479 delete energyVector;
480}
void insertAt(std::size_t, G4PhysicsVector *)
G4double GetLowEdgeEnergy(const std::size_t index) const
void PutValue(const std::size_t index, const G4double value)
void Stop()
G4double GetUserElapsed() const
Definition: G4Timer.cc:143
void Start()
const G4String & GetProcessName() const
Definition: G4VProcess.hh:382
G4VXTRenergyLoss(G4LogicalVolume *anEnvelope, G4Material *, G4Material *, G4double, G4double, G4int, const G4String &processName="XTRenergyLoss", G4ProcessType type=fElectromagnetic)
G4double SpectralAngleXTRdEdx(G4double varAngle)
std::vector< G4PhysicsTable * > fAngleBank
float proton_mass_c2
Definition: hepunit.py:274

References BuildAngleTable(), fAngleBank, fAngleForEnergyTable, fBinTR, fEnergy, fFastAngle, fGamma, fGammaTkinCut, fMaxEnergyTR, fMaxThetaTR, fMinEnergyTR, fMinThetaTR, fProtonEnergyVector, fTheMaxAngle, fTheMaxEnergyTR, fTheMinAngle, fTheMinEnergyTR, fTotBin, G4cout, G4endl, G4VXTRenergyLoss(), G4PhysicsVector::GetLowEdgeEnergy(), G4VProcess::GetProcessName(), G4Timer::GetUserElapsed(), G4PhysicsTable::insertAt(), source.hepunit::proton_mass_c2, G4PhysicsVector::PutValue(), SpectralAngleXTRdEdx(), G4Timer::Start(), G4Timer::Stop(), and G4VProcess::verboseLevel.

Referenced by BuildPhysicsTable().

◆ BuildAngleTable()

void G4VXTRenergyLoss::BuildAngleTable ( )

Definition at line 485 of file G4VXTRenergyLoss.cc.

486{
487 G4int iTkin, iTR;
489
490 fGammaTkinCut = 0.0;
491
492 // setting of min/max TR energies
495 else
497
500 else
502
503 G4cout.precision(4);
504 G4Timer timer;
505 timer.Start();
506 if(verboseLevel > 0)
507 {
508 G4cout << G4endl << "Lorentz Factor" << "\t"
509 << "XTR photon number" << G4endl << G4endl;
510 }
511 for(iTkin = 0; iTkin < fTotBin; ++iTkin) // Lorentz factor loop
512 {
513 fGamma =
515
516 // fMaxThetaTR = 25. * 2500.0 / (fGamma * fGamma); // theta^2
517
520 else
521 {
524 }
525
527
528 for(iTR = 0; iTR < fBinTR; ++iTR)
529 {
531
533
534 fAngleForEnergyTable->insertAt(iTR, angleVector);
535 }
537 }
538 timer.Stop();
539 G4cout.precision(6);
540 if(verboseLevel > 0)
541 {
542 G4cout << G4endl;
543 G4cout << "total time for build XTR angle for given energy tables = "
544 << timer.GetUserElapsed() << " s" << G4endl;
545 }
546 fGamma = 0.;
547
548 return;
549}
G4PhysicsFreeVector * GetAngleVector(G4double energy, G4int n)

References G4INCL::KinematicsUtils::energy(), fAngleBank, fAngleForEnergyTable, fBinTR, fGamma, fGammaTkinCut, fMaxEnergyTR, fMaxThetaTR, fMinEnergyTR, fProtonEnergyVector, fTheMaxAngle, fTheMaxEnergyTR, fTheMinAngle, fTheMinEnergyTR, fTotBin, fXTREnergyVector, G4cout, G4endl, GetAngleVector(), G4PhysicsVector::GetLowEdgeEnergy(), G4Timer::GetUserElapsed(), G4PhysicsTable::insertAt(), source.hepunit::proton_mass_c2, G4Timer::Start(), G4Timer::Stop(), and G4VProcess::verboseLevel.

Referenced by BuildAngleForEnergyBank().

◆ BuildEnergyTable()

void G4VXTRenergyLoss::BuildEnergyTable ( )

Definition at line 299 of file G4VXTRenergyLoss.cc.

300{
301 G4int iTkin, iTR, iPlace;
302 G4double radiatorCof = 1.0; // for tuning of XTR yield
303 G4double energySum = 0.0;
304
308
309 fGammaTkinCut = 0.0;
310
311 // setting of min/max TR energies
314 else
316
319 else
321
323 integral;
324
325 G4cout.precision(4);
326 G4Timer timer;
327 timer.Start();
328
329 if(verboseLevel > 0)
330 {
331 G4cout << G4endl;
332 G4cout << "Lorentz Factor"
333 << "\t"
334 << "XTR photon number" << G4endl;
335 G4cout << G4endl;
336 }
337 for(iTkin = 0; iTkin < fTotBin; ++iTkin) // Lorentz factor loop
338 {
339 G4PhysicsLogVector* energyVector =
341
342 fGamma =
344
345 fMaxThetaTR = 25. * 2500.0 / (fGamma * fGamma); // theta^2
346
349 else if(fMaxThetaTR < fTheMinAngle)
351
352 energySum = 0.0;
353
354 energyVector->PutValue(fBinTR - 1, energySum);
355
356 for(iTR = fBinTR - 2; iTR >= 0; --iTR)
357 {
358 // Legendre96 or Legendre10
359
360 energySum += radiatorCof * fCofTR *
361
362 // integral.Legendre10(this, &G4VXTRenergyLoss::SpectralXTRdEdx,
363
364 integral.Legendre96(this, &G4VXTRenergyLoss::SpectralXTRdEdx,
365
366 energyVector->GetLowEdgeEnergy(iTR),
367 energyVector->GetLowEdgeEnergy(iTR + 1));
368
369 energyVector->PutValue(iTR, energySum / fTotalDist);
370 }
371 iPlace = iTkin;
372 fEnergyDistrTable->insertAt(iPlace, energyVector);
373
374 if(verboseLevel > 0)
375 {
376 G4cout << fGamma << "\t" << energySum << G4endl;
377 }
378 }
379 timer.Stop();
380 G4cout.precision(6);
381 if(verboseLevel > 0)
382 {
383 G4cout << G4endl;
384 G4cout << "total time for build X-ray TR energy loss tables = "
385 << timer.GetUserElapsed() << " s" << G4endl;
386 }
387 fGamma = 0.;
388 return;
389}
static constexpr G4double fCofTR
virtual G4double SpectralXTRdEdx(G4double energy)

References fAngleDistrTable, fAngleRadDistr, fBinTR, fCofTR, fEnergyDistrTable, fGamma, fGammaTkinCut, fMaxEnergyTR, fMaxThetaTR, fMinEnergyTR, fProtonEnergyVector, fTheMaxAngle, fTheMaxEnergyTR, fTheMinAngle, fTheMinEnergyTR, fTotalDist, fTotBin, G4cout, G4endl, G4VXTRenergyLoss(), G4PhysicsVector::GetLowEdgeEnergy(), G4Timer::GetUserElapsed(), G4PhysicsTable::insertAt(), source.hepunit::proton_mass_c2, G4PhysicsVector::PutValue(), SpectralXTRdEdx(), G4Timer::Start(), G4Timer::Stop(), and G4VProcess::verboseLevel.

Referenced by BuildPhysicsTable().

◆ BuildGlobalAngleTable()

void G4VXTRenergyLoss::BuildGlobalAngleTable ( )

Definition at line 628 of file G4VXTRenergyLoss.cc.

629{
630 G4int iTkin, iTR, iPlace;
631 G4double radiatorCof = 1.0; // for tuning of XTR yield
632 G4double angleSum;
634
635 fGammaTkinCut = 0.0;
636
637 // setting of min/max TR energies
640 else
642
645 else
647
648 G4cout.precision(4);
649 G4Timer timer;
650 timer.Start();
651 if(verboseLevel > 0)
652 {
653 G4cout << G4endl;
654 G4cout << "Lorentz Factor"
655 << "\t"
656 << "XTR photon number" << G4endl;
657 G4cout << G4endl;
658 }
659 for(iTkin = 0; iTkin < fTotBin; ++iTkin) // Lorentz factor loop
660 {
661 fGamma =
663
664 // fMaxThetaTR = 25.0 / (fGamma * fGamma); // theta^2
665 // fMaxThetaTR = 1.e-4; // theta^2
666
669 else
670 {
673 }
674 G4PhysicsLinearVector* angleVector =
675 // G4PhysicsLogVector* angleVector =
677 // new G4PhysicsLogVector(1.e-8, fMaxThetaTR, fBinTR);
678
679 angleSum = 0.0;
680
682 integral;
683
684 angleVector->PutValue(fBinTR - 1, angleSum);
685
686 for(iTR = fBinTR - 2; iTR >= 0; --iTR)
687 {
688 angleSum += radiatorCof * fCofTR *
689 integral.Legendre96(this, &G4VXTRenergyLoss::AngleXTRdEdx,
690 angleVector->GetLowEdgeEnergy(iTR),
691 angleVector->GetLowEdgeEnergy(iTR + 1));
692
693 angleVector->PutValue(iTR, angleSum);
694 }
695 if(verboseLevel > 1)
696 {
697 G4cout << fGamma << "\t" << angleSum << G4endl;
698 }
699 iPlace = iTkin;
700 fAngleDistrTable->insertAt(iPlace, angleVector);
701 }
702 timer.Stop();
703 G4cout.precision(6);
704 if(verboseLevel > 0)
705 {
706 G4cout << G4endl;
707 G4cout << "total time for build X-ray TR angle tables = "
708 << timer.GetUserElapsed() << " s" << G4endl;
709 }
710 fGamma = 0.;
711
712 return;
713}
G4double AngleXTRdEdx(G4double varAngle)

References AngleXTRdEdx(), fAngleDistrTable, fBinTR, fCofTR, fGamma, fGammaTkinCut, fMaxEnergyTR, fMaxThetaTR, fMinEnergyTR, fProtonEnergyVector, fTheMaxAngle, fTheMaxEnergyTR, fTheMinAngle, fTheMinEnergyTR, fTotBin, G4cout, G4endl, G4VXTRenergyLoss(), G4PhysicsVector::GetLowEdgeEnergy(), G4Timer::GetUserElapsed(), G4PhysicsTable::insertAt(), source.hepunit::proton_mass_c2, G4PhysicsVector::PutValue(), G4Timer::Start(), G4Timer::Stop(), and G4VProcess::verboseLevel.

◆ BuildPhysicsTable()

void G4VXTRenergyLoss::BuildPhysicsTable ( const G4ParticleDefinition pd)
overridevirtual

Reimplemented from G4VProcess.

Definition at line 276 of file G4VXTRenergyLoss.cc.

277{
278 if(pd.GetPDGCharge() == 0.)
279 {
280 G4Exception("G4VXTRenergyLoss::BuildPhysicsTable", "Notification",
281 JustWarning, "XTR initialisation for neutral particle ?!");
282 }
284
286 {
287 if(verboseLevel > 0)
288 {
289 G4cout
290 << "Build angle for energy distribution according the current radiator"
291 << G4endl;
292 }
294 }
295}
@ JustWarning
G4double GetPDGCharge() const

References BuildAngleForEnergyBank(), BuildEnergyTable(), fAngleRadDistr, G4cout, G4endl, G4Exception(), G4ParticleDefinition::GetPDGCharge(), JustWarning, and G4VProcess::verboseLevel.

◆ BuildTable()

void G4VXTRenergyLoss::BuildTable ( )
inline

Definition at line 90 of file G4VXTRenergyLoss.hh.

90{};

◆ 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

◆ ComputeGasPhotoAbsCof()

void G4VXTRenergyLoss::ComputeGasPhotoAbsCof ( )

Definition at line 1090 of file G4VXTRenergyLoss.cc.

1091{
1092 const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1093 const G4Material* mat = (*theMaterialTable)[fMatIndex2];
1095 return;
1096}
std::vector< G4Material * > G4MaterialTable
G4SandiaTable * GetSandiaTable() const
Definition: G4Material.hh:225
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:672

References fGasPhotoAbsCof, fMatIndex2, G4Material::GetMaterialTable(), and G4Material::GetSandiaTable().

Referenced by G4VXTRenergyLoss().

◆ ComputePlatePhotoAbsCof()

void G4VXTRenergyLoss::ComputePlatePhotoAbsCof ( )

Definition at line 1032 of file G4VXTRenergyLoss.cc.

1033{
1034 const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1035 const G4Material* mat = (*theMaterialTable)[fMatIndex1];
1037
1038 return;
1039}

References fMatIndex1, fPlatePhotoAbsCof, G4Material::GetMaterialTable(), and G4Material::GetSandiaTable().

Referenced by G4VXTRenergyLoss().

◆ DumpInfo()

virtual void G4VXTRenergyLoss::DumpInfo ( ) const
inlineoverridevirtual

◆ EndTracking()

void G4VProcess::EndTracking ( )
virtualinherited

◆ GetAlphaGas()

G4double G4VXTRenergyLoss::GetAlphaGas ( )
inline

Definition at line 157 of file G4VXTRenergyLoss.hh.

157{ return fAlphaGas; };

References fAlphaGas.

◆ GetAlphaPlate()

G4double G4VXTRenergyLoss::GetAlphaPlate ( )
inline

Definition at line 159 of file G4VXTRenergyLoss.hh.

159{ return fAlphaPlate; };

References fAlphaPlate.

◆ GetAngleRadDistr()

G4bool G4VXTRenergyLoss::GetAngleRadDistr ( )
inline

Definition at line 186 of file G4VXTRenergyLoss.hh.

186{ return fAngleRadDistr; };

References fAngleRadDistr.

◆ GetAngleVector()

G4PhysicsFreeVector * G4VXTRenergyLoss::GetAngleVector ( G4double  energy,
G4int  n 
)

Definition at line 553 of file G4VXTRenergyLoss.cc.

554{
555 G4double theta = 0., result, tmp = 0., cof1, cof2, cofMin, cofPHC,
556 angleSum = 0.;
557 G4int iTheta, k, kMin;
558
559 G4PhysicsFreeVector* angleVector = new G4PhysicsFreeVector(n);
560
561 cofPHC = 4. * pi * hbarc;
562 tmp = (fSigma1 - fSigma2) / cofPHC / energy;
563 cof1 = fPlateThick * tmp;
564 cof2 = fGasThick * tmp;
565
566 cofMin = energy * (fPlateThick + fGasThick) / fGamma / fGamma;
567 cofMin += (fPlateThick * fSigma1 + fGasThick * fSigma2) / energy;
568 cofMin /= cofPHC;
569
570 kMin = G4int(cofMin);
571 if(cofMin > kMin)
572 kMin++;
573
574 if(verboseLevel > 2)
575 {
576 G4cout << "n-1 = " << n - 1
577 << "; theta = " << std::sqrt(fMaxThetaTR) * fGamma
578 << "; tmp = " << 0. << "; angleSum = " << angleSum << G4endl;
579 }
580
581 for(iTheta = n - 1; iTheta >= 1; --iTheta)
582 {
583 k = iTheta - 1 + kMin;
584 tmp = pi * fPlateThick * (k + cof2) / (fPlateThick + fGasThick);
585 result = (k - cof1) * (k - cof1) * (k + cof2) * (k + cof2);
586 tmp = std::sin(tmp) * std::sin(tmp) * std::abs(k - cofMin) / result;
587
588 if(k == kMin && kMin == G4int(cofMin))
589 {
590 // angleSum += 0.5 * tmp;
591 angleSum += tmp; // ATLAS TB
592 }
593 else if(iTheta == n - 1)
594 ;
595 else
596 {
597 angleSum += tmp;
598 }
599 theta = std::abs(k - cofMin) * cofPHC / energy / (fPlateThick + fGasThick);
600
601 if(verboseLevel > 2)
602 {
603 G4cout << "iTheta = " << iTheta << "; k = " << k
604 << "; theta = " << std::sqrt(theta) * fGamma << "; tmp = " << tmp
605 << "; angleSum = " << angleSum << G4endl;
606 }
607 angleVector->PutValue(iTheta, theta, angleSum);
608 }
609 if(theta > 0.)
610 {
611 // angleSum += 0.5 * tmp;
612 angleSum += 0.; // ATLAS TB
613 theta = 0.;
614 }
615 if(verboseLevel > 2)
616 {
617 G4cout << "iTheta = " << iTheta << "; theta = " << std::sqrt(theta) * fGamma
618 << "; tmp = " << tmp << "; angleSum = " << angleSum << G4endl;
619 }
620 angleVector->PutValue(iTheta, theta, angleSum);
621
622 return angleVector;
623}
void PutValue(const std::size_t index, const G4double e, const G4double value)

References G4INCL::KinematicsUtils::energy(), fGamma, fGasThick, fMaxThetaTR, fPlateThick, fSigma1, fSigma2, G4cout, G4endl, source.hepunit::hbarc, BoundingBox::kMin, CLHEP::detail::n, pi, G4PhysicsFreeVector::PutValue(), and G4VProcess::verboseLevel.

Referenced by BuildAngleTable().

◆ GetAngleXTR()

G4double G4VXTRenergyLoss::GetAngleXTR ( G4int  iTR,
G4double  position,
G4int  iAngle 
)

Definition at line 1496 of file G4VXTRenergyLoss.cc.

1498{
1499 G4double x1, x2, y1, y2, result;
1500
1501 if( iTransfer == 0 )
1502 // if( iTransfer == 1 ) // ATLAS TB
1503 {
1504 result = (*fAngleForEnergyTable)(iPlace)->GetLowEdgeEnergy(iTransfer);
1505 }
1506 else
1507 {
1508 y1 = (*(*fAngleForEnergyTable)(iPlace))(iTransfer - 1);
1509 y2 = (*(*fAngleForEnergyTable)(iPlace))(iTransfer);
1510
1511 x1 = (*fAngleForEnergyTable)(iPlace)->GetLowEdgeEnergy(iTransfer - 1);
1512 x2 = (*fAngleForEnergyTable)(iPlace)->GetLowEdgeEnergy(iTransfer);
1513
1514 if(x1 == x2) result = x2;
1515 else
1516 {
1517 if( y1 == y2 ) result = x1 + (x2 - x1) * G4UniformRand();
1518 else
1519 {
1520 result = x1 + (position - y1) * (x2 - x1) / (y2 - y1);
1521 // result = x1 + 0.1*(position - y1) * (x2 - x1) / (y2 - y1); // ATLAS TB
1522 // result = x1 + 0.05*(position - y1) * (x2 - x1) / (y2 - y1); // ATLAS TB
1523 }
1524 }
1525 }
1526 return result;
1527}
#define G4UniformRand()
Definition: Randomize.hh:52

References G4UniformRand.

Referenced by GetRandomAngle().

◆ GetCompton()

G4bool G4VXTRenergyLoss::GetCompton ( )
inline

Definition at line 152 of file G4VXTRenergyLoss.hh.

152{ return fCompton; };

References fCompton.

◆ GetComptonPerAtom()

G4double G4VXTRenergyLoss::GetComptonPerAtom ( G4double  GammaEnergy,
G4double  Z 
)

Definition at line 1232 of file G4VXTRenergyLoss.cc.

1233{
1234 G4double CrossSection = 0.0;
1235 if(Z < 0.9999)
1236 return CrossSection;
1237 if(GammaEnergy < 0.1 * keV)
1238 return CrossSection;
1239 if(GammaEnergy > (100. * GeV / Z))
1240 return CrossSection;
1241
1242 static constexpr G4double a = 20.0;
1243 static constexpr G4double b = 230.0;
1244 static constexpr G4double c = 440.0;
1245
1246 static constexpr G4double d1 = 2.7965e-1 * barn, d2 = -1.8300e-1 * barn,
1247 d3 = 6.7527 * barn, d4 = -1.9798e+1 * barn,
1248 e1 = 1.9756e-5 * barn, e2 = -1.0205e-2 * barn,
1249 e3 = -7.3913e-2 * barn, e4 = 2.7079e-2 * barn,
1250 f1 = -3.9178e-7 * barn, f2 = 6.8241e-5 * barn,
1251 f3 = 6.0480e-5 * barn, f4 = 3.0274e-4 * barn;
1252
1253 G4double p1Z = Z * (d1 + e1 * Z + f1 * Z * Z);
1254 G4double p2Z = Z * (d2 + e2 * Z + f2 * Z * Z);
1255 G4double p3Z = Z * (d3 + e3 * Z + f3 * Z * Z);
1256 G4double p4Z = Z * (d4 + e4 * Z + f4 * Z * Z);
1257
1258 G4double T0 = 15.0 * keV;
1259 if(Z < 1.5)
1260 T0 = 40.0 * keV;
1261
1262 G4double X = std::max(GammaEnergy, T0) / electron_mass_c2;
1263 CrossSection =
1264 p1Z * std::log(1. + 2. * X) / X +
1265 (p2Z + p3Z * X + p4Z * X * X) / (1. + a * X + b * X * X + c * X * X * X);
1266
1267 // modification for low energy. (special case for Hydrogen)
1268 if(GammaEnergy < T0)
1269 {
1270 G4double dT0 = 1. * keV;
1271 X = (T0 + dT0) / electron_mass_c2;
1272 G4double sigma =
1273 p1Z * std::log(1. + 2. * X) / X +
1274 (p2Z + p3Z * X + p4Z * X * X) / (1. + a * X + b * X * X + c * X * X * X);
1275 G4double c1 = -T0 * (sigma - CrossSection) / (CrossSection * dT0);
1276 G4double c2 = 0.150;
1277 if(Z > 1.5)
1278 c2 = 0.375 - 0.0556 * std::log(Z);
1279 G4double y = std::log(GammaEnergy / T0);
1280 CrossSection *= std::exp(-y * (c1 + c2 * y));
1281 }
1282 return CrossSection;
1283}
static const G4double e4[47]
static const G4double e1[44]
static const G4double e2[44]
static const G4double e3[45]
static const G4double d1
static const G4double d2
static const G4double T0[78]
static constexpr double barn
Definition: G4SIunits.hh:85
static constexpr double keV
Definition: G4SIunits.hh:202
static constexpr double GeV
Definition: G4SIunits.hh:203
const G4int Z[17]
T max(const T t1, const T t2)
brief Return the largest of the two arguments
float electron_mass_c2
Definition: hepunit.py:273

References barn, d1, d2, e1, e2, e3, e4, source.hepunit::electron_mass_c2, GeV, keV, G4INCL::Math::max(), T0, and Z.

Referenced by GetGasCompton(), and GetPlateCompton().

◆ GetCurrentInteractionLength()

G4double G4VProcess::GetCurrentInteractionLength ( ) const
inlineinherited

◆ GetEnergy()

G4double G4VXTRenergyLoss::GetEnergy ( )
inline

Definition at line 148 of file G4VXTRenergyLoss.hh.

148{ return fEnergy; };

References fEnergy.

◆ GetFastAngle()

G4bool G4VXTRenergyLoss::GetFastAngle ( )
inline

Definition at line 184 of file G4VXTRenergyLoss.hh.

184{ return fFastAngle; };

References fFastAngle.

◆ GetGamma()

G4double G4VXTRenergyLoss::GetGamma ( )
inline

Definition at line 146 of file G4VXTRenergyLoss.hh.

146{ return fGamma; };

References fGamma.

◆ GetGasComplexFZ()

G4complex G4VXTRenergyLoss::GetGasComplexFZ ( G4double  omega,
G4double  gamma,
G4double  varAngle 
)

Definition at line 1071 of file G4VXTRenergyLoss.cc.

1073{
1074 G4double cof, length, delta, real_v, image_v;
1075
1076 length = 0.5 * GetGasFormationZone(omega, gamma, varAngle);
1077 delta = length * GetGasLinearPhotoAbs(omega);
1078 cof = 1.0 / (1.0 + delta * delta);
1079
1080 real_v = length * cof;
1081 image_v = real_v * delta;
1082
1083 G4complex zone(real_v, image_v);
1084 return zone;
1085}
std::complex< G4double > G4complex
Definition: G4Types.hh:88
G4double GetGasFormationZone(G4double, G4double, G4double)
G4double GetGasLinearPhotoAbs(G4double)

References GetGasFormationZone(), and GetGasLinearPhotoAbs().

Referenced by G4StrawTubeXTRadiator::GetStackFactor(), and OneInterfaceXTRdEdx().

◆ GetGasCompton()

G4double G4VXTRenergyLoss::GetGasCompton ( G4double  omega)

Definition at line 1210 of file G4VXTRenergyLoss.cc.

1211{
1212 G4int i, numberOfElements;
1213 G4double xSection = 0., nowZ, sumZ = 0.;
1214
1215 const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1216 numberOfElements = (*theMaterialTable)[fMatIndex2]->GetNumberOfElements();
1217
1218 for(i = 0; i < numberOfElements; ++i)
1219 {
1220 nowZ = (*theMaterialTable)[fMatIndex2]->GetElement(i)->GetZ();
1221 sumZ += nowZ;
1222 xSection += GetComptonPerAtom(omega, nowZ);
1223 }
1224 xSection /= sumZ;
1225 xSection *= (*theMaterialTable)[fMatIndex2]->GetElectronDensity();
1226 return xSection;
1227}
G4double GetComptonPerAtom(G4double, G4double)

References fMatIndex2, GetComptonPerAtom(), and G4Material::GetMaterialTable().

Referenced by G4XTRTransparentRegRadModel::SpectralXTRdEdx().

◆ GetGasFormationZone()

G4double G4VXTRenergyLoss::GetGasFormationZone ( G4double  omega,
G4double  gamma,
G4double  varAngle 
)

◆ GetGasLinearPhotoAbs()

G4double G4VXTRenergyLoss::GetGasLinearPhotoAbs ( G4double  omega)

Definition at line 1101 of file G4VXTRenergyLoss.cc.

1102{
1103 G4double omega2, omega3, omega4;
1104
1105 omega2 = omega * omega;
1106 omega3 = omega2 * omega;
1107 omega4 = omega2 * omega2;
1108
1109 const G4double* SandiaCof = fGasPhotoAbsCof->GetSandiaCofForMaterial(omega);
1110 G4double cross = SandiaCof[0] / omega + SandiaCof[1] / omega2 +
1111 SandiaCof[2] / omega3 + SandiaCof[3] / omega4;
1112 return cross;
1113}
G4double GetSandiaCofForMaterial(G4int, G4int) const

References fGasPhotoAbsCof, and G4SandiaTable::GetSandiaCofForMaterial().

Referenced by GetGasComplexFZ(), GetGasZmuProduct(), G4GammaXTRadiator::GetStackFactor(), G4GaussXTRadiator::GetStackFactor(), G4RegularXTRadiator::GetStackFactor(), G4StrawTubeXTRadiator::GetStackFactor(), G4TransparentRegXTRadiator::GetStackFactor(), G4XTRGammaRadModel::GetStackFactor(), G4XTRRegularRadModel::GetStackFactor(), G4XTRTransparentRegRadModel::GetStackFactor(), G4RegularXTRadiator::SpectralXTRdEdx(), G4XTRRegularRadModel::SpectralXTRdEdx(), and G4XTRTransparentRegRadModel::SpectralXTRdEdx().

◆ GetGasZmuProduct() [1/2]

void G4VXTRenergyLoss::GetGasZmuProduct ( )

Definition at line 1164 of file G4VXTRenergyLoss.cc.

1165{
1166 std::ofstream outGas("gasZmu.dat", std::ios::out);
1167 outGas.setf(std::ios::scientific, std::ios::floatfield);
1168 G4int i;
1169 G4double omega, varAngle, gamma;
1170 gamma = 10000.;
1171 varAngle = 1 / gamma / gamma;
1172 if(verboseLevel > 0)
1173 G4cout << "energy, keV" << "\t" << "Zmu for gas" << G4endl;
1174 for(i = 0; i < 100; ++i)
1175 {
1176 omega = (1.0 + i) * keV;
1177 if(verboseLevel > 1)
1178 G4cout << omega / keV << "\t" << GetGasZmuProduct(omega, gamma, varAngle)
1179 << "\t";
1180 if(verboseLevel > 0)
1181 outGas << omega / keV << "\t\t"
1182 << GetGasZmuProduct(omega, gamma, varAngle) << G4endl;
1183 }
1184 return;
1185}

References G4cout, G4endl, GetGasZmuProduct(), keV, and G4VProcess::verboseLevel.

Referenced by GetGasZmuProduct().

◆ GetGasZmuProduct() [2/2]

G4double G4VXTRenergyLoss::GetGasZmuProduct ( G4double  omega,
G4double  gamma,
G4double  varAngle 
)

Definition at line 1154 of file G4VXTRenergyLoss.cc.

1156{
1157 return GetGasFormationZone(omega, gamma, varAngle) *
1158 GetGasLinearPhotoAbs(omega);
1159}

References GetGasFormationZone(), and GetGasLinearPhotoAbs().

◆ GetMasterProcess()

const G4VProcess * G4VProcess::GetMasterProcess ( ) const
inlineinherited

◆ GetMaxEnergyTR()

G4double G4VXTRenergyLoss::GetMaxEnergyTR ( )
inline

Definition at line 169 of file G4VXTRenergyLoss.hh.

169{ return fMaxEnergyTR; };

References fMaxEnergyTR.

◆ GetMaxThetaTR()

G4double G4VXTRenergyLoss::GetMaxThetaTR ( )
inline

Definition at line 179 of file G4VXTRenergyLoss.hh.

179{ return fMaxThetaTR; };

References fMaxThetaTR.

◆ GetMeanFreePath()

G4double G4VXTRenergyLoss::GetMeanFreePath ( const G4Track aTrack,
G4double  previousStepSize,
G4ForceCondition condition 
)
overridevirtual

Implements G4VDiscreteProcess.

Definition at line 200 of file G4VXTRenergyLoss.cc.

202{
203 G4int iTkin, iPlace;
204 G4double lambda, sigma, kinEnergy, mass, gamma;
205 G4double charge, chargeSq, massRatio, TkinScaled;
206 G4double E1, E2, W, W1, W2;
207
209
210 if(aTrack.GetVolume()->GetLogicalVolume() != fEnvelope)
211 lambda = DBL_MAX;
212 else
213 {
214 const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
215 kinEnergy = aParticle->GetKineticEnergy();
216 mass = aParticle->GetDefinition()->GetPDGMass();
217 gamma = 1.0 + kinEnergy / mass;
218 if(verboseLevel > 1)
219 {
220 G4cout << " gamma = " << gamma << "; fGamma = " << fGamma << G4endl;
221 }
222
223 if(std::fabs(gamma - fGamma) < 0.05 * gamma)
224 lambda = fLambda;
225 else
226 {
227 charge = aParticle->GetDefinition()->GetPDGCharge();
228 chargeSq = charge * charge;
229 massRatio = proton_mass_c2 / mass;
230 TkinScaled = kinEnergy * massRatio;
231
232 for(iTkin = 0; iTkin < fTotBin; ++iTkin)
233 {
234 if(TkinScaled < fProtonEnergyVector->GetLowEdgeEnergy(iTkin))
235 break;
236 }
237 iPlace = iTkin - 1;
238
239 if(iTkin == 0)
240 lambda = DBL_MAX; // Tkin is too small, neglect of TR photon generation
241 else // general case: Tkin between two vectors of the material
242 {
243 if(iTkin == fTotBin)
244 {
245 sigma = (*(*fEnergyDistrTable)(iPlace))(0) * chargeSq;
246 }
247 else
248 {
249 E1 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin - 1);
251 W = 1.0 / (E2 - E1);
252 W1 = (E2 - TkinScaled) * W;
253 W2 = (TkinScaled - E1) * W;
254 sigma = ((*(*fEnergyDistrTable)(iPlace))(0) * W1 +
255 (*(*fEnergyDistrTable)(iPlace + 1))(0) * W2) *
256 chargeSq;
257 }
258 if(sigma < DBL_MIN)
259 lambda = DBL_MAX;
260 else
261 lambda = 1. / sigma;
262 fLambda = lambda;
263 fGamma = gamma;
264 if(verboseLevel > 1)
265 {
266 G4cout << " lambda = " << lambda / mm << " mm" << G4endl;
267 }
268 }
269 }
270 }
271 return lambda;
272}
@ NotForced
static constexpr double mm
Definition: G4SIunits.hh:95
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4VPhysicalVolume * GetVolume() const
const G4DynamicParticle * GetDynamicParticle() const
G4LogicalVolume * GetLogicalVolume() const
#define DBL_MIN
Definition: templates.hh:54

References condition(), DBL_MAX, DBL_MIN, fEnergyDistrTable, fEnvelope, fGamma, fLambda, fProtonEnergyVector, fTotBin, G4cout, G4endl, G4DynamicParticle::GetDefinition(), G4Track::GetDynamicParticle(), G4DynamicParticle::GetKineticEnergy(), G4VPhysicalVolume::GetLogicalVolume(), G4PhysicsVector::GetLowEdgeEnergy(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4Track::GetVolume(), G4InuclParticleNames::lambda, mm, NotForced, source.hepunit::proton_mass_c2, and G4VProcess::verboseLevel.

◆ GetMinEnergyTR()

G4double G4VXTRenergyLoss::GetMinEnergyTR ( )
inline

Definition at line 167 of file G4VXTRenergyLoss.hh.

167{ return fMinEnergyTR; };

References fMinEnergyTR.

◆ GetMinThetaTR()

G4double G4VXTRenergyLoss::GetMinThetaTR ( )
inline

Definition at line 177 of file G4VXTRenergyLoss.hh.

177{ return fMinThetaTR; };

References fMinThetaTR.

◆ GetNumberOfInteractionLengthLeft()

G4double G4VProcess::GetNumberOfInteractionLengthLeft ( ) const
inlineinherited

Definition at line 431 of file G4VProcess.hh.

432{
434}

References G4VProcess::theNumberOfInteractionLengthLeft.

◆ GetNumberOfPhotons()

void G4VXTRenergyLoss::GetNumberOfPhotons ( )

Definition at line 1354 of file G4VXTRenergyLoss.cc.

1355{
1356 G4int iTkin;
1357 G4double gamma, numberE;
1358
1359 std::ofstream outEn("numberE.dat", std::ios::out);
1360 outEn.setf(std::ios::scientific, std::ios::floatfield);
1361
1362 std::ofstream outAng("numberAng.dat", std::ios::out);
1363 outAng.setf(std::ios::scientific, std::ios::floatfield);
1364
1365 for(iTkin = 0; iTkin < fTotBin; ++iTkin) // Lorentz factor loop
1366 {
1367 gamma =
1369 numberE = (*(*fEnergyDistrTable)(iTkin))(0);
1370 if(verboseLevel > 1)
1371 G4cout << gamma << "\t\t" << numberE << "\t" << G4endl;
1372 if(verboseLevel > 0)
1373 outEn << gamma << "\t\t" << numberE << G4endl;
1374 }
1375 return;
1376}

References fProtonEnergyVector, fTotBin, G4cout, G4endl, G4PhysicsVector::GetLowEdgeEnergy(), source.hepunit::proton_mass_c2, and G4VProcess::verboseLevel.

◆ 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().

◆ GetPlateComplexFZ()

G4complex G4VXTRenergyLoss::GetPlateComplexFZ ( G4double  omega,
G4double  gamma,
G4double  varAngle 
)

Definition at line 1013 of file G4VXTRenergyLoss.cc.

1015{
1016 G4double cof, length, delta, real_v, image_v;
1017
1018 length = 0.5 * GetPlateFormationZone(omega, gamma, varAngle);
1019 delta = length * GetPlateLinearPhotoAbs(omega);
1020 cof = 1.0 / (1.0 + delta * delta);
1021
1022 real_v = length * cof;
1023 image_v = real_v * delta;
1024
1025 G4complex zone(real_v, image_v);
1026 return zone;
1027}
G4double GetPlateLinearPhotoAbs(G4double)
G4double GetPlateFormationZone(G4double, G4double, G4double)

References GetPlateFormationZone(), and GetPlateLinearPhotoAbs().

Referenced by G4StrawTubeXTRadiator::GetStackFactor(), and OneInterfaceXTRdEdx().

◆ GetPlateCompton()

G4double G4VXTRenergyLoss::GetPlateCompton ( G4double  omega)

Definition at line 1189 of file G4VXTRenergyLoss.cc.

1190{
1191 G4int i, numberOfElements;
1192 G4double xSection = 0., nowZ, sumZ = 0.;
1193
1194 const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable();
1195 numberOfElements = (*theMaterialTable)[fMatIndex1]->GetNumberOfElements();
1196
1197 for(i = 0; i < numberOfElements; ++i)
1198 {
1199 nowZ = (*theMaterialTable)[fMatIndex1]->GetElement(i)->GetZ();
1200 sumZ += nowZ;
1201 xSection += GetComptonPerAtom(omega, nowZ);
1202 }
1203 xSection /= sumZ;
1204 xSection *= (*theMaterialTable)[fMatIndex1]->GetElectronDensity();
1205 return xSection;
1206}

References fMatIndex1, GetComptonPerAtom(), and G4Material::GetMaterialTable().

Referenced by G4XTRTransparentRegRadModel::SpectralXTRdEdx().

◆ GetPlateFormationZone()

G4double G4VXTRenergyLoss::GetPlateFormationZone ( G4double  omega,
G4double  gamma,
G4double  varAngle 
)

◆ GetPlateLinearPhotoAbs()

G4double G4VXTRenergyLoss::GetPlateLinearPhotoAbs ( G4double  omega)

◆ GetPlateZmuProduct() [1/2]

void G4VXTRenergyLoss::GetPlateZmuProduct ( )

Definition at line 1127 of file G4VXTRenergyLoss.cc.

1128{
1129 std::ofstream outPlate("plateZmu.dat", std::ios::out);
1130 outPlate.setf(std::ios::scientific, std::ios::floatfield);
1131
1132 G4int i;
1133 G4double omega, varAngle, gamma;
1134 gamma = 10000.;
1135 varAngle = 1 / gamma / gamma;
1136 if(verboseLevel > 0)
1137 G4cout << "energy, keV" << "\t" << "Zmu for plate" << G4endl;
1138 for(i = 0; i < 100; ++i)
1139 {
1140 omega = (1.0 + i) * keV;
1141 if(verboseLevel > 1)
1142 G4cout << omega / keV << "\t"
1143 << GetPlateZmuProduct(omega, gamma, varAngle) << "\t";
1144 if(verboseLevel > 0)
1145 outPlate << omega / keV << "\t\t"
1146 << GetPlateZmuProduct(omega, gamma, varAngle) << G4endl;
1147 }
1148 return;
1149}

References G4cout, G4endl, GetPlateZmuProduct(), keV, and G4VProcess::verboseLevel.

Referenced by GetPlateZmuProduct().

◆ GetPlateZmuProduct() [2/2]

G4double G4VXTRenergyLoss::GetPlateZmuProduct ( G4double  omega,
G4double  gamma,
G4double  varAngle 
)

Definition at line 1118 of file G4VXTRenergyLoss.cc.

1120{
1121 return GetPlateFormationZone(omega, gamma, varAngle) *
1123}

References GetPlateFormationZone(), and GetPlateLinearPhotoAbs().

◆ 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(), 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(), G4hImpactIonisation::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().

◆ GetProtonVector()

G4PhysicsLogVector * G4VXTRenergyLoss::GetProtonVector ( )
inline

Definition at line 191 of file G4VXTRenergyLoss.hh.

191{ return fProtonEnergyVector; };

References fProtonEnergyVector.

◆ GetRandomAngle()

G4double G4VXTRenergyLoss::GetRandomAngle ( G4double  energyXTR,
G4int  iTkin 
)

Definition at line 1461 of file G4VXTRenergyLoss.cc.

1462{
1463 G4int iTR, iAngle;
1465
1466 if(iTkin == fTotBin)
1467 --iTkin;
1468
1470
1471 for(iTR = 0; iTR < fBinTR; ++iTR)
1472 {
1473 if(energyXTR < fXTREnergyVector->GetLowEdgeEnergy(iTR))
1474 break;
1475 }
1476 if(iTR == fBinTR)
1477 --iTR;
1478
1479 position = (*(*fAngleForEnergyTable)(iTR))(0) * G4UniformRand();
1480 // position = (*(*fAngleForEnergyTable)(iTR))(1) * G4UniformRand(); // ATLAS TB
1481
1482 for(iAngle = 0;; ++iAngle)
1483 // for(iAngle = 1;; ++iAngle) // ATLAS TB
1484 {
1485 if(position >= (*(*fAngleForEnergyTable)(iTR))(iAngle))
1486 break;
1487 }
1488 angle = GetAngleXTR(iTR, position, iAngle);
1489 return angle;
1490}
static const G4double angle[DIMMOTT]
G4double GetAngleXTR(G4int iTR, G4double position, G4int iAngle)
#define position
Definition: xmlparse.cc:622

References angle, fAngleBank, fAngleForEnergyTable, fBinTR, fTotBin, G4UniformRand, GetAngleXTR(), and position.

Referenced by PostStepDoIt().

◆ GetStackFactor()

G4double G4VXTRenergyLoss::GetStackFactor ( G4double  energy,
G4double  gamma,
G4double  varAngle 
)
virtual

Reimplemented in G4GammaXTRadiator, G4GaussXTRadiator, G4RegularXTRadiator, G4StrawTubeXTRadiator, G4TransparentRegXTRadiator, G4XTRGammaRadModel, G4XTRRegularRadModel, and G4XTRTransparentRegRadModel.

Definition at line 1305 of file G4VXTRenergyLoss.cc.

1307{
1308 // return stack factor corresponding to one interface
1309 return std::real(OneInterfaceXTRdEdx(energy, gamma, varAngle));
1310}
G4complex OneInterfaceXTRdEdx(G4double energy, G4double gamma, G4double varAngle)

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

Referenced by AngleSpectralXTRdEdx(), SpectralAngleXTRdEdx(), XTRNAngleSpectralDensity(), and XTRNSpectralAngleDensity().

◆ GetTheMaxAngle()

G4double G4VXTRenergyLoss::GetTheMaxAngle ( )
inline

Definition at line 174 of file G4VXTRenergyLoss.hh.

174{ return fTheMaxAngle; };

References fTheMaxAngle.

◆ GetTheMaxEnergyTR()

G4double G4VXTRenergyLoss::GetTheMaxEnergyTR ( )
inline

Definition at line 164 of file G4VXTRenergyLoss.hh.

164{ return fTheMaxEnergyTR; };

References fTheMaxEnergyTR.

◆ GetTheMinAngle()

G4double G4VXTRenergyLoss::GetTheMinAngle ( )
inline

Definition at line 172 of file G4VXTRenergyLoss.hh.

172{ return fTheMinAngle; };

References fTheMinAngle.

◆ GetTheMinEnergyTR()

G4double G4VXTRenergyLoss::GetTheMinEnergyTR ( )
inline

Definition at line 162 of file G4VXTRenergyLoss.hh.

162{ return fTheMinEnergyTR; };

References fTheMinEnergyTR.

◆ GetTotalNumberOfInteractionLengthTraversed()

G4double G4VProcess::GetTotalNumberOfInteractionLengthTraversed ( ) const
inlineinherited

◆ GetTotBin()

G4int G4VXTRenergyLoss::GetTotBin ( )
inline

Definition at line 192 of file G4VXTRenergyLoss.hh.

192{ return fTotBin; };

References fTotBin.

◆ GetVarAngle()

G4double G4VXTRenergyLoss::GetVarAngle ( )
inline

Definition at line 150 of file G4VXTRenergyLoss.hh.

150{ return fVarAngle; };

References fVarAngle.

◆ GetVerboseLevel()

G4int G4VProcess::GetVerboseLevel ( ) const
inlineinherited

◆ GetXTRenergy()

G4double G4VXTRenergyLoss::GetXTRenergy ( G4int  iPlace,
G4double  position,
G4int  iTransfer 
)

Definition at line 1427 of file G4VXTRenergyLoss.cc.

1428{
1429 G4double x1, x2, y1, y2, result;
1430
1431 if(iTransfer == 0)
1432 {
1433 result = (*fEnergyDistrTable)(iPlace)->GetLowEdgeEnergy(iTransfer);
1434 }
1435 else
1436 {
1437 y1 = (*(*fEnergyDistrTable)(iPlace))(iTransfer - 1);
1438 y2 = (*(*fEnergyDistrTable)(iPlace))(iTransfer);
1439
1440 x1 = (*fEnergyDistrTable)(iPlace)->GetLowEdgeEnergy(iTransfer - 1);
1441 x2 = (*fEnergyDistrTable)(iPlace)->GetLowEdgeEnergy(iTransfer);
1442
1443 if(x1 == x2)
1444 result = x2;
1445 else
1446 {
1447 if(y1 == y2)
1448 result = x1 + (x2 - x1) * G4UniformRand();
1449 else
1450 {
1451 result = x1 + (x2 - x1) * G4UniformRand();
1452 }
1453 }
1454 }
1455 return result;
1456}

References G4UniformRand.

Referenced by GetXTRrandomEnergy().

◆ GetXTRrandomEnergy()

G4double G4VXTRenergyLoss::GetXTRrandomEnergy ( G4double  scaledTkin,
G4int  iTkin 
)

Definition at line 1381 of file G4VXTRenergyLoss.cc.

1382{
1383 G4int iTransfer, iPlace;
1384 G4double transfer = 0.0, position, E1, E2, W1, W2, W;
1385
1386 iPlace = iTkin - 1;
1387
1388 if(iTkin == fTotBin) // relativistic plato, try from left
1389 {
1390 position = (*(*fEnergyDistrTable)(iPlace))(0) * G4UniformRand();
1391
1392 for(iTransfer = 0;; ++iTransfer)
1393 {
1394 if(position >= (*(*fEnergyDistrTable)(iPlace))(iTransfer))
1395 break;
1396 }
1397 transfer = GetXTRenergy(iPlace, position, iTransfer);
1398 }
1399 else
1400 {
1401 E1 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin - 1);
1403 W = 1.0 / (E2 - E1);
1404 W1 = (E2 - scaledTkin) * W;
1405 W2 = (scaledTkin - E1) * W;
1406
1407 position = ((*(*fEnergyDistrTable)(iPlace))(0) * W1 +
1408 (*(*fEnergyDistrTable)(iPlace + 1))(0) * W2) *
1409 G4UniformRand();
1410
1411 for(iTransfer = 0;; ++iTransfer)
1412 {
1413 if(position >= ((*(*fEnergyDistrTable)(iPlace))(iTransfer) *W1 +
1414 (*(*fEnergyDistrTable)(iPlace + 1))(iTransfer) *W2))
1415 break;
1416 }
1417 transfer = GetXTRenergy(iPlace, position, iTransfer);
1418 }
1419 if(transfer < 0.0)
1420 transfer = 0.0;
1421 return transfer;
1422}
G4double GetXTRenergy(G4int iPlace, G4double position, G4int iTransfer)

References fEnergyDistrTable, fProtonEnergyVector, fTotBin, G4UniformRand, G4PhysicsVector::GetLowEdgeEnergy(), GetXTRenergy(), and position.

Referenced by PostStepDoIt().

◆ 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 G4VXTRenergyLoss::IsApplicable ( const G4ParticleDefinition particle)
overridevirtual

Reimplemented from G4VProcess.

Definition at line 193 of file G4VXTRenergyLoss.cc.

194{
195 return (particle.GetPDGCharge() != 0.0);
196}

References G4ParticleDefinition::GetPDGCharge().

◆ 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().

◆ OneBoundaryXTRNdensity()

G4double G4VXTRenergyLoss::OneBoundaryXTRNdensity ( G4double  energy,
G4double  gamma,
G4double  varAngle 
) const

Definition at line 1292 of file G4VXTRenergyLoss.cc.

1295{
1296 G4double formationLength1, formationLength2;
1297 formationLength1 =
1298 1.0 / (1.0 / (gamma * gamma) + fSigma1 / (energy * energy) + varAngle);
1299 formationLength2 =
1300 1.0 / (1.0 / (gamma * gamma) + fSigma2 / (energy * energy) + varAngle);
1301 return (varAngle / energy) * (formationLength1 - formationLength2) *
1302 (formationLength1 - formationLength2);
1303}

References G4INCL::KinematicsUtils::energy(), fSigma1, and fSigma2.

Referenced by XTRNAngleSpectralDensity(), and XTRNSpectralAngleDensity().

◆ OneInterfaceXTRdEdx()

G4complex G4VXTRenergyLoss::OneInterfaceXTRdEdx ( G4double  energy,
G4double  gamma,
G4double  varAngle 
)

◆ operator!=()

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

Definition at line 161 of file G4VProcess.cc.

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

◆ operator=()

G4VXTRenergyLoss & G4VXTRenergyLoss::operator= ( const G4VXTRenergyLoss right)
delete

◆ operator==()

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

Definition at line 155 of file G4VProcess.cc.

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

◆ PostStepDoIt()

G4VParticleChange * G4VXTRenergyLoss::PostStepDoIt ( const G4Track aTrack,
const G4Step aStep 
)
overridevirtual

Reimplemented from G4VDiscreteProcess.

Definition at line 718 of file G4VXTRenergyLoss.cc.

720{
721 G4int iTkin;
722 G4double energyTR, theta, theta2, phi, dirX, dirY, dirZ;
723
725
726 if(verboseLevel > 1)
727 {
728 G4cout << "Start of G4VXTRenergyLoss::PostStepDoIt " << G4endl;
729 G4cout << "name of current material = "
730 << aTrack.GetVolume()->GetLogicalVolume()->GetMaterial()->GetName()
731 << G4endl;
732 }
733 if(aTrack.GetVolume()->GetLogicalVolume() != fEnvelope)
734 {
735 if(verboseLevel > 0)
736 {
737 G4cout << "Go out from G4VXTRenergyLoss::PostStepDoIt: wrong volume "
738 << G4endl;
739 }
740 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
741 }
742 else
743 {
744 G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint();
745 const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
746
747 // Now we are ready to Generate one TR photon
748 G4double kinEnergy = aParticle->GetKineticEnergy();
749 G4double mass = aParticle->GetDefinition()->GetPDGMass();
750 G4double gamma = 1.0 + kinEnergy / mass;
751
752 if(verboseLevel > 1)
753 {
754 G4cout << "gamma = " << gamma << G4endl;
755 }
756 G4double massRatio = proton_mass_c2 / mass;
757 G4double TkinScaled = kinEnergy * massRatio;
758 G4ThreeVector position = pPostStepPoint->GetPosition();
759 G4ParticleMomentum direction = aParticle->GetMomentumDirection();
760 G4double startTime = pPostStepPoint->GetGlobalTime();
761
762 for(iTkin = 0; iTkin < fTotBin; ++iTkin)
763 {
764 if(TkinScaled < fProtonEnergyVector->GetLowEdgeEnergy(iTkin))
765 break;
766 }
767
768 if(iTkin == 0) // Tkin is too small, neglect of TR photon generation
769 {
770 if(verboseLevel > 0)
771 {
772 G4cout << "Go out from G4VXTRenergyLoss::PostStepDoIt:iTkin = " << iTkin
773 << G4endl;
774 }
775 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
776 }
777 else // general case: Tkin between two vectors of the material
778 {
780
781 energyTR = GetXTRrandomEnergy(TkinScaled, iTkin);
782
783 if(verboseLevel > 1)
784 {
785 G4cout << "energyTR = " << energyTR / keV << " keV" << G4endl;
786 }
788 {
789 theta2 = GetRandomAngle(energyTR, iTkin);
790 if(theta2 > 0.)
791 theta = std::sqrt(theta2);
792 else
793 theta = 0.;
794 }
795 else
796 theta = std::fabs(G4RandGauss::shoot(0.0, pi / gamma));
797
798 if(theta >= 0.1)
799 theta = 0.1;
800
801 phi = twopi * G4UniformRand();
802
803 dirX = std::sin(theta) * std::cos(phi);
804 dirY = std::sin(theta) * std::sin(phi);
805 dirZ = std::cos(theta);
806
807 G4ThreeVector directionTR(dirX, dirY, dirZ);
808 directionTR.rotateUz(direction);
809 directionTR.unit();
810
811 G4DynamicParticle* aPhotonTR =
812 new G4DynamicParticle(G4Gamma::Gamma(), directionTR, energyTR);
813
814 // A XTR photon is set on the particle track inside the radiator
815 // and is moved to the G4Envelope surface for standard X-ray TR models
816 // only. The case of fExitFlux=true
817
818 if(fExitFlux)
819 {
820 const G4RotationMatrix* rotM =
821 pPostStepPoint->GetTouchable()->GetRotation();
822 G4ThreeVector transl = pPostStepPoint->GetTouchable()->GetTranslation();
824 transform.Invert();
825 G4ThreeVector localP = transform.TransformPoint(position);
826 G4ThreeVector localV = transform.TransformAxis(directionTR);
827
828 G4double distance =
829 fEnvelope->GetSolid()->DistanceToOut(localP, localV);
830 if(verboseLevel > 1)
831 {
832 G4cout << "distance to exit = " << distance / mm << " mm" << G4endl;
833 }
834 position += distance * directionTR;
835 startTime += distance / c_light;
836 }
837 G4Track* aSecondaryTrack = new G4Track(aPhotonTR, startTime, position);
838 aSecondaryTrack->SetTouchableHandle(
840 aSecondaryTrack->SetParentID(aTrack.GetTrackID());
841
842 fParticleChange.AddSecondary(aSecondaryTrack);
844 }
845 }
846 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
847}
const G4ThreeVector & GetMomentumDirection() const
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
G4VSolid * GetSolid() const
G4Material * GetMaterial() const
void AddSecondary(G4Track *aSecondary)
void ProposeEnergy(G4double finalEnergy)
virtual void Initialize(const G4Track &)
const G4VTouchable * GetTouchable() const
G4double GetGlobalTime() const
const G4ThreeVector & GetPosition() const
const G4TouchableHandle & GetTouchableHandle() const
G4StepPoint * GetPostStepPoint() const
G4int GetTrackID() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
void SetParentID(const G4int aValue)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void SetNumberOfSecondaries(G4int totSecondaries)
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const =0
virtual const G4ThreeVector & GetTranslation(G4int depth=0) const =0
virtual const G4RotationMatrix * GetRotation(G4int depth=0) const =0
G4double GetRandomAngle(G4double energyXTR, G4int iTkin)
G4double GetXTRrandomEnergy(G4double scaledTkin, G4int iTkin)
ThreeVector shoot(const G4int Ap, const G4int Af)
G4bool transform(G4String &input, const G4String &type)
float c_light
Definition: hepunit.py:256

References G4ParticleChange::AddSecondary(), source.hepunit::c_light, G4VSolid::DistanceToOut(), fAngleRadDistr, fEnvelope, fExitFlux, fParticleChange, fTotBin, G4cout, G4endl, G4UniformRand, G4Gamma::Gamma(), G4DynamicParticle::GetDefinition(), G4Track::GetDynamicParticle(), G4StepPoint::GetGlobalTime(), G4DynamicParticle::GetKineticEnergy(), G4VPhysicalVolume::GetLogicalVolume(), G4LogicalVolume::GetMaterial(), G4DynamicParticle::GetMomentumDirection(), G4Material::GetName(), G4ParticleDefinition::GetPDGMass(), G4StepPoint::GetPosition(), G4Step::GetPostStepPoint(), GetRandomAngle(), G4VTouchable::GetRotation(), G4LogicalVolume::GetSolid(), G4StepPoint::GetTouchable(), G4StepPoint::GetTouchableHandle(), G4Track::GetTrackID(), G4VTouchable::GetTranslation(), G4Track::GetVolume(), GetXTRrandomEnergy(), G4ParticleChange::Initialize(), keV, mm, pi, G4VDiscreteProcess::PostStepDoIt(), G4ParticleChange::ProposeEnergy(), source.hepunit::proton_mass_c2, CLHEP::Hep3Vector::rotateUz(), G4VParticleChange::SetNumberOfSecondaries(), G4Track::SetParentID(), G4Track::SetTouchableHandle(), G4INCL::DeJongSpin::shoot(), G4coutFormatters::anonymous_namespace{G4coutFormatters.cc}::transform(), twopi, CLHEP::Hep3Vector::unit(), and G4VProcess::verboseLevel.

◆ PostStepGetPhysicalInteractionLength()

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

Implements G4VProcess.

Reimplemented in G4ErrorMagFieldLimitProcess, G4ErrorStepLengthLimitProcess, G4ErrorTrackLengthTarget, G4HadronStoppingProcess, G4NeutronKiller, G4GammaGeneralProcess, G4UnknownDecay, G4PolarizedAnnihilation, G4PolarizedCompton, G4VEmProcess, G4VErrorLimitProcess, and G4LowECapture.

Definition at line 70 of file G4VDiscreteProcess.cc.

74{
75 if ( (previousStepSize < 0.0) || (theNumberOfInteractionLengthLeft<=0.0))
76 {
77 // beginning of tracking (or just after DoIt() of this process)
79 }
80 else if ( previousStepSize > 0.0)
81 {
82 // subtract NumberOfInteractionLengthLeft
84 }
85 else
86 {
87 // zero step
88 // DO NOTHING
89 }
90
91 // condition is set to "Not Forced"
93
94 // get mean free path
95 currentInteractionLength = GetMeanFreePath(track, previousStepSize, condition);
96
97 G4double value;
99 {
101 }
102 else
103 {
104 value = DBL_MAX;
105 }
106#ifdef G4VERBOSE
107 if (verboseLevel>1)
108 {
109 G4cout << "G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - ";
110 G4cout << "[ " << GetProcessName() << "]" <<G4endl;
111 track.GetDynamicParticle()->DumpInfo();
112 G4cout << " in Material " << track.GetMaterial()->GetName() <<G4endl;
113 G4cout << "InteractionLength= " << value/cm <<"[cm] " <<G4endl;
114 }
115#endif
116 return value;
117}
void DumpInfo(G4int mode=0) const
G4Material * GetMaterial() const
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(), G4VDiscreteProcess::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().

◆ ProcessDescription()

void G4VXTRenergyLoss::ProcessDescription ( std::ostream &  out) const
overridevirtual

Reimplemented from G4VProcess.

Reimplemented in G4GammaXTRadiator, G4GaussXTRadiator, G4RegularXTRadiator, G4StrawTubeXTRadiator, G4TransparentRegXTRadiator, G4XTRGammaRadModel, G4XTRRegularRadModel, and G4XTRTransparentRegRadModel.

Definition at line 184 of file G4VXTRenergyLoss.cc.

185{
186 out << "Base class for 'fast' parameterisation model describing X-ray "
187 "transition\n"
188 "radiation. Angular distribution is very rough.\n";
189}

Referenced by DumpInfo().

◆ ResetNumberOfInteractionLengthLeft()

void G4VProcess::ResetNumberOfInteractionLengthLeft ( )
virtualinherited

◆ RetrievePhysicsTable()

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

◆ SetAlphaGas()

void G4VXTRenergyLoss::SetAlphaGas ( G4double  ag)
inline

Definition at line 156 of file G4VXTRenergyLoss.hh.

156{ fAlphaGas = ag;};

References fAlphaGas.

◆ SetAlphaPlate()

void G4VXTRenergyLoss::SetAlphaPlate ( G4double  ap)
inline

◆ SetAngleRadDistr()

void G4VXTRenergyLoss::SetAngleRadDistr ( G4bool  fatr)
inline

Definition at line 185 of file G4VXTRenergyLoss.hh.

185{ fAngleRadDistr = fatr;};

References fAngleRadDistr.

◆ SetCompton()

void G4VXTRenergyLoss::SetCompton ( G4bool  pC)
inline

Definition at line 151 of file G4VXTRenergyLoss.hh.

151{ fCompton = pC; };

References fCompton.

◆ SetEnergy()

void G4VXTRenergyLoss::SetEnergy ( G4double  energy)
inline

Definition at line 147 of file G4VXTRenergyLoss.hh.

147{ fEnergy = energy; };

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

◆ SetFastAngle()

void G4VXTRenergyLoss::SetFastAngle ( G4bool  fatr)
inline

Definition at line 183 of file G4VXTRenergyLoss.hh.

183{ fFastAngle = fatr;};

References fFastAngle.

◆ SetGamma()

void G4VXTRenergyLoss::SetGamma ( G4double  gamma)
inline

Definition at line 145 of file G4VXTRenergyLoss.hh.

145{ fGamma = gamma; };

References fGamma.

◆ SetMasterProcess()

void G4VProcess::SetMasterProcess ( G4VProcess masterP)
virtualinherited

◆ SetMaxEnergyTR()

void G4VXTRenergyLoss::SetMaxEnergyTR ( G4double  maxetr)
inline

Definition at line 168 of file G4VXTRenergyLoss.hh.

168{ fMaxEnergyTR = maxetr;};

References fMaxEnergyTR.

◆ SetMaxThetaTR()

void G4VXTRenergyLoss::SetMaxThetaTR ( G4double  maxatr)
inline

Definition at line 178 of file G4VXTRenergyLoss.hh.

178{ fMaxThetaTR = maxatr;};

References fMaxThetaTR.

◆ SetMinEnergyTR()

void G4VXTRenergyLoss::SetMinEnergyTR ( G4double  minetr)
inline

Definition at line 166 of file G4VXTRenergyLoss.hh.

166{ fMinEnergyTR = minetr;};

References fMinEnergyTR.

◆ SetMinThetaTR()

void G4VXTRenergyLoss::SetMinThetaTR ( G4double  minatr)
inline

Definition at line 176 of file G4VXTRenergyLoss.hh.

176{ fMinThetaTR = minatr;};

References fMinThetaTR.

◆ 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().

◆ 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(), 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().

◆ SetTheMaxAngle()

void G4VXTRenergyLoss::SetTheMaxAngle ( G4double  maxang)
inline

Definition at line 173 of file G4VXTRenergyLoss.hh.

173{ fTheMaxAngle = maxang;};

References fTheMaxAngle.

◆ SetTheMaxEnergyTR()

void G4VXTRenergyLoss::SetTheMaxEnergyTR ( G4double  maxetr)
inline

Definition at line 163 of file G4VXTRenergyLoss.hh.

163{ fTheMaxEnergyTR = maxetr;};

References fTheMaxEnergyTR.

◆ SetTheMinAngle()

void G4VXTRenergyLoss::SetTheMinAngle ( G4double  minang)
inline

Definition at line 171 of file G4VXTRenergyLoss.hh.

171{ fTheMinAngle = minang;};

References fTheMinAngle.

◆ SetTheMinEnergyTR()

void G4VXTRenergyLoss::SetTheMinEnergyTR ( G4double  minetr)
inline

Definition at line 161 of file G4VXTRenergyLoss.hh.

161{ fTheMinEnergyTR = minetr;};

References fTheMinEnergyTR.

◆ SetVarAngle()

void G4VXTRenergyLoss::SetVarAngle ( G4double  varAngle)
inline

Definition at line 149 of file G4VXTRenergyLoss.hh.

149{ fVarAngle = varAngle; };

References fVarAngle.

◆ SetVerboseLevel()

void G4VProcess::SetVerboseLevel ( G4int  value)
inlineinherited

◆ SpectralAngleXTRdEdx()

G4double G4VXTRenergyLoss::SpectralAngleXTRdEdx ( G4double  varAngle)

Definition at line 868 of file G4VXTRenergyLoss.cc.

869{
870 G4double result = GetStackFactor(fEnergy, fGamma, varAngle);
871 if(result < 0.0)
872 result = 0.0;
873 return result;
874}

References fEnergy, fGamma, and GetStackFactor().

Referenced by BuildAngleForEnergyBank(), and SpectralXTRdEdx().

◆ SpectralXTRdEdx()

G4double G4VXTRenergyLoss::SpectralXTRdEdx ( G4double  energy)
virtual

Reimplemented in G4GaussXTRadiator, G4RegularXTRadiator, G4TransparentRegXTRadiator, G4XTRRegularRadModel, and G4XTRTransparentRegRadModel.

Definition at line 878 of file G4VXTRenergyLoss.cc.

879{
880 G4int i;
881 static constexpr G4int iMax = 8;
882 G4double angleSum = 0.0;
883
884 G4double lim[iMax] = { 0.0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0 };
885
886 for(i = 0; i < iMax; ++i)
887 lim[i] *= fMaxThetaTR;
888
890 integral;
891
892 fEnergy = energy;
893 {
894 for(i = 0; i < iMax - 1; ++i)
895 {
896 angleSum += integral.Legendre96(
897 this, &G4VXTRenergyLoss::SpectralAngleXTRdEdx, lim[i], lim[i + 1]);
898 }
899 }
900 return angleSum;
901}

References G4INCL::KinematicsUtils::energy(), fEnergy, fMaxThetaTR, G4VXTRenergyLoss(), and SpectralAngleXTRdEdx().

Referenced by BuildEnergyTable().

◆ 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
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().

◆ XTRNAngleDensity()

G4double G4VXTRenergyLoss::XTRNAngleDensity ( G4double  varAngle)

Definition at line 1342 of file G4VXTRenergyLoss.cc.

1343{
1344 fVarAngle = varAngle;
1346 integral;
1347 return integral.Legendre96(this, &G4VXTRenergyLoss::XTRNAngleSpectralDensity,
1349}
G4double XTRNAngleSpectralDensity(G4double energy)

References fMaxEnergyTR, fMinEnergyTR, fVarAngle, G4VXTRenergyLoss(), and XTRNAngleSpectralDensity().

◆ XTRNAngleSpectralDensity()

G4double G4VXTRenergyLoss::XTRNAngleSpectralDensity ( G4double  energy)

Definition at line 1335 of file G4VXTRenergyLoss.cc.

1336{
1339}
G4double OneBoundaryXTRNdensity(G4double energy, G4double gamma, G4double varAngle) const

References G4INCL::KinematicsUtils::energy(), fGamma, fVarAngle, GetStackFactor(), and OneBoundaryXTRNdensity().

Referenced by XTRNAngleDensity().

◆ XTRNSpectralAngleDensity()

G4double G4VXTRenergyLoss::XTRNSpectralAngleDensity ( G4double  varAngle)

Definition at line 1314 of file G4VXTRenergyLoss.cc.

1315{
1316 return OneBoundaryXTRNdensity(fEnergy, fGamma, varAngle) *
1317 GetStackFactor(fEnergy, fGamma, varAngle);
1318}

References fEnergy, fGamma, GetStackFactor(), and OneBoundaryXTRNdensity().

Referenced by XTRNSpectralDensity().

◆ XTRNSpectralDensity()

G4double G4VXTRenergyLoss::XTRNSpectralDensity ( G4double  energy)

Definition at line 1322 of file G4VXTRenergyLoss.cc.

1323{
1324 fEnergy = energy;
1326 integral;
1327 return integral.Legendre96(this, &G4VXTRenergyLoss::XTRNSpectralAngleDensity,
1328 0.0, 0.2 * fMaxThetaTR) +
1329 integral.Legendre10(this, &G4VXTRenergyLoss::XTRNSpectralAngleDensity,
1330 0.2 * fMaxThetaTR, fMaxThetaTR);
1331}
G4double XTRNSpectralAngleDensity(G4double varAngle)

References G4INCL::KinematicsUtils::energy(), fEnergy, fMaxThetaTR, G4VXTRenergyLoss(), and XTRNSpectralAngleDensity().

Field Documentation

◆ 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().

◆ currentInteractionLength

G4double G4VProcess::currentInteractionLength = -1.0
protectedinherited

◆ enableAlongStepDoIt

G4bool G4VProcess::enableAlongStepDoIt = true
protectedinherited

◆ enableAtRestDoIt

G4bool G4VProcess::enableAtRestDoIt = true
protectedinherited

◆ enablePostStepDoIt

G4bool G4VProcess::enablePostStepDoIt = true
protectedinherited

◆ fAlphaGas

G4double G4VXTRenergyLoss::fAlphaGas
protected

◆ fAlphaPlate

G4double G4VXTRenergyLoss::fAlphaPlate
protected

◆ fAngleBank

std::vector<G4PhysicsTable*> G4VXTRenergyLoss::fAngleBank
protected

Definition at line 231 of file G4VXTRenergyLoss.hh.

Referenced by BuildAngleForEnergyBank(), BuildAngleTable(), and GetRandomAngle().

◆ fAngleDistrTable

G4PhysicsTable* G4VXTRenergyLoss::fAngleDistrTable
protected

Definition at line 222 of file G4VXTRenergyLoss.hh.

Referenced by BuildEnergyTable(), BuildGlobalAngleTable(), and ~G4VXTRenergyLoss().

◆ fAngleForEnergyTable

G4PhysicsTable* G4VXTRenergyLoss::fAngleForEnergyTable
protected

◆ fAngleRadDistr

G4bool G4VXTRenergyLoss::fAngleRadDistr
protected

◆ fBinTR

G4int G4VXTRenergyLoss::fBinTR
protected

◆ fCofTR

constexpr G4double G4VXTRenergyLoss::fCofTR = CLHEP::fine_structure_const / CLHEP::pi
staticconstexprprotected

Definition at line 213 of file G4VXTRenergyLoss.hh.

Referenced by BuildEnergyTable(), and BuildGlobalAngleTable().

◆ fCompton

G4bool G4VXTRenergyLoss::fCompton
protected

◆ fEnergy

G4double G4VXTRenergyLoss::fEnergy
protected

◆ fEnergyDistrTable

G4PhysicsTable* G4VXTRenergyLoss::fEnergyDistrTable
protected

◆ fEnvelope

G4LogicalVolume* G4VXTRenergyLoss::fEnvelope
protected

Definition at line 221 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss(), GetMeanFreePath(), and PostStepDoIt().

◆ fExitFlux

G4bool G4VXTRenergyLoss::fExitFlux
protected

◆ fFastAngle

G4bool G4VXTRenergyLoss::fFastAngle
protected

◆ fGamma

G4double G4VXTRenergyLoss::fGamma
protected

◆ fGammaCutInKineticEnergy

G4double* G4VXTRenergyLoss::fGammaCutInKineticEnergy
protected

Definition at line 220 of file G4VXTRenergyLoss.hh.

◆ fGammaTkinCut

G4double G4VXTRenergyLoss::fGammaTkinCut
protected

◆ fGasPhotoAbsCof

G4SandiaTable* G4VXTRenergyLoss::fGasPhotoAbsCof
protected

Definition at line 228 of file G4VXTRenergyLoss.hh.

Referenced by ComputeGasPhotoAbsCof(), and GetGasLinearPhotoAbs().

◆ fGasThick

G4double G4VXTRenergyLoss::fGasThick
protected

◆ fLambda

G4double G4VXTRenergyLoss::fLambda
protected

Definition at line 245 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss(), and GetMeanFreePath().

◆ fMatIndex1

G4int G4VXTRenergyLoss::fMatIndex1
protected

Definition at line 249 of file G4VXTRenergyLoss.hh.

Referenced by ComputePlatePhotoAbsCof(), G4VXTRenergyLoss(), and GetPlateCompton().

◆ fMatIndex2

G4int G4VXTRenergyLoss::fMatIndex2
protected

Definition at line 250 of file G4VXTRenergyLoss.hh.

Referenced by ComputeGasPhotoAbsCof(), G4VXTRenergyLoss(), and GetGasCompton().

◆ fMaxEnergyTR

G4double G4VXTRenergyLoss::fMaxEnergyTR
protected

◆ fMaxProtonTkin

constexpr G4double G4VXTRenergyLoss::fMaxProtonTkin = 100. * CLHEP::TeV
staticconstexprprotected

Definition at line 208 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss().

◆ fMaxThetaTR

G4double G4VXTRenergyLoss::fMaxThetaTR
protected

◆ fMinEnergyTR

G4double G4VXTRenergyLoss::fMinEnergyTR
protected

◆ fMinProtonTkin

constexpr G4double G4VXTRenergyLoss::fMinProtonTkin = 100. * CLHEP::GeV
staticconstexprprotected

Definition at line 206 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss().

◆ fMinThetaTR

G4double G4VXTRenergyLoss::fMinThetaTR
protected

◆ fParticleChange

G4ParticleChange G4VXTRenergyLoss::fParticleChange
protected

Definition at line 230 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss(), and PostStepDoIt().

◆ fPlasmaCof

constexpr G4double G4VXTRenergyLoss::fPlasmaCof
staticconstexprprotected
Initial value:
=
static constexpr double electron_mass_c2
static constexpr double fine_structure_const
static constexpr double hbarc
static constexpr double pi
Definition: SystemOfUnits.h:55

Definition at line 210 of file G4VXTRenergyLoss.hh.

Referenced by G4StrawTubeXTRadiator::G4StrawTubeXTRadiator(), and G4VXTRenergyLoss().

◆ fPlateNumber

G4int G4VXTRenergyLoss::fPlateNumber
protected

◆ fPlatePhotoAbsCof

G4SandiaTable* G4VXTRenergyLoss::fPlatePhotoAbsCof
protected

Definition at line 227 of file G4VXTRenergyLoss.hh.

Referenced by ComputePlatePhotoAbsCof(), and GetPlateLinearPhotoAbs().

◆ fPlateThick

G4double G4VXTRenergyLoss::fPlateThick
protected

◆ fProcessTable

G4ProcessTable* G4VProcess::fProcessTable = nullptr
privateinherited

Definition at line 374 of file G4VProcess.hh.

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

◆ fProtonEnergyVector

G4PhysicsLogVector* G4VXTRenergyLoss::fProtonEnergyVector
protected

◆ fPtrGamma

G4ParticleDefinition* G4VXTRenergyLoss::fPtrGamma
protected

Definition at line 218 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss().

◆ fSigma1

G4double G4VXTRenergyLoss::fSigma1
protected

◆ fSigma2

G4double G4VXTRenergyLoss::fSigma2
protected

◆ fTheMaxAngle

G4double G4VXTRenergyLoss::fTheMaxAngle
protected

◆ fTheMaxEnergyTR

G4double G4VXTRenergyLoss::fTheMaxEnergyTR
protected

◆ fTheMinAngle

G4double G4VXTRenergyLoss::fTheMinAngle
protected

◆ fTheMinEnergyTR

G4double G4VXTRenergyLoss::fTheMinEnergyTR
protected

◆ fTotalDist

G4double G4VXTRenergyLoss::fTotalDist
protected

Definition at line 237 of file G4VXTRenergyLoss.hh.

Referenced by BuildEnergyTable(), and G4VXTRenergyLoss().

◆ fTotBin

G4int G4VXTRenergyLoss::fTotBin
protected

◆ fVarAngle

G4double G4VXTRenergyLoss::fVarAngle
protected

◆ fXTREnergyVector

G4PhysicsLogVector* G4VXTRenergyLoss::fXTREnergyVector
protected

Definition at line 226 of file G4VXTRenergyLoss.hh.

Referenced by BuildAngleTable(), G4VXTRenergyLoss(), and ~G4VXTRenergyLoss().

◆ masterProcessShadow

G4VProcess* G4VProcess::masterProcessShadow = nullptr
privateinherited

Definition at line 370 of file G4VProcess.hh.

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

◆ 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(), 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().

◆ secID

G4int G4VXTRenergyLoss::secID = -1
protected

Definition at line 257 of file G4VXTRenergyLoss.hh.

Referenced by G4VXTRenergyLoss().

◆ theInitialNumberOfInteractionLength

G4double G4VProcess::theInitialNumberOfInteractionLength = -1.0
protectedinherited

◆ 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().

◆ thePhysicsTableFileName

G4String G4VProcess::thePhysicsTableFileName
protectedinherited

Definition at line 344 of file G4VProcess.hh.

Referenced by G4VProcess::GetPhysicsTableFileName().

◆ thePILfactor

G4double G4VProcess::thePILfactor = 1.0
protectedinherited

◆ theProcessName

G4String G4VProcess::theProcessName
protectedinherited

◆ theProcessSubType

G4int G4VProcess::theProcessSubType = -1
protectedinherited

◆ theProcessType

G4ProcessType G4VProcess::theProcessType = fNotDefined
protectedinherited

◆ 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(), G4hImpactIonisation::AntiProtonParametrisedDEDX(), G4ParallelWorldScoringProcess::AtRestDoIt(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), BuildAngleForEnergyBank(), BuildAngleTable(), G4VEnergyLossProcess::BuildDEDXTable(), BuildEnergyTable(), BuildGlobalAngleTable(), G4VEmProcess::BuildLambdaTable(), G4hImpactIonisation::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4hImpactIonisation::BuildLossTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4LowECapture::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4SynchrotronRadiation::BuildPhysicsTable(), BuildPhysicsTable(), G4hImpactIonisation::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(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), GetAngleVector(), G4ChargeExchangeProcess::GetElementCrossSection(), GetGasZmuProduct(), G4PhononDownconversion::GetMeanFreePath(), G4PhononScattering::GetMeanFreePath(), G4PolarizedCompton::GetMeanFreePath(), GetMeanFreePath(), G4UCNAbsorption::GetMeanFreePath(), G4PolarizedAnnihilation::GetMeanFreePath(), G4PolarizedIonisation::GetMeanFreePath(), G4SynchrotronRadiation::GetMeanFreePath(), GetNumberOfPhotons(), GetPlateZmuProduct(), G4SynchrotronRadiation::GetRandomEnergySR(), G4VProcess::GetVerboseLevel(), G4hhIonisation::InitialiseEnergyLossProcess(), G4eeToHadrons::InitialiseProcess(), G4hImpactIonisation::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(), 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(), G4hImpactIonisation::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: