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

#include <G4OpBoundaryProcess.hh>

Inheritance diagram for G4OpBoundaryProcess:
G4VDiscreteProcess G4VProcess

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)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
virtual void DumpInfo () const
 
virtual void EndTracking ()
 
 G4OpBoundaryProcess (const G4String &processName="OpBoundary", G4ProcessType type=fOptical)
 
G4double GetCurrentInteractionLength () const
 
const G4VProcessGetMasterProcess () const
 
virtual G4double GetMeanFreePath (const G4Track &, G4double, G4ForceCondition *condition) override
 
G4double GetNumberOfInteractionLengthLeft () const
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
G4double GetPILfactor () const
 
virtual const G4ProcessManagerGetProcessManager ()
 
const G4StringGetProcessName () const
 
G4int GetProcessSubType () const
 
G4ProcessType GetProcessType () const
 
virtual G4OpBoundaryProcessStatus GetStatus () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4int GetVerboseLevel () const
 
virtual void Initialise ()
 
G4bool isAlongStepDoItIsEnabled () const
 
virtual G4bool IsApplicable (const G4ParticleDefinition &aParticleType) override
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
G4bool operator!= (const G4VProcess &right) const
 
G4bool operator== (const G4VProcess &right) const
 
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 &) override
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 
virtual void ProcessDescription (std::ostream &outfile) const
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual void SetInvokeSD (G4bool)
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
void SetPILfactor (G4double value)
 
virtual void SetProcessManager (const G4ProcessManager *)
 
void SetProcessSubType (G4int)
 
void SetProcessType (G4ProcessType)
 
void SetVerboseLevel (G4int)
 
virtual void StartTracking (G4Track *)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual ~G4OpBoundaryProcess ()
 

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
 
G4VParticleChangepParticleChange = nullptr
 
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
 

Private Member Functions

void BoundaryProcessVerbose (void) const
 
void CalculateReflectivity (void)
 
void ChooseReflection ()
 
void DielectricDichroic ()
 
void DielectricDielectric ()
 
void DielectricLUT ()
 
void DielectricLUTDAVIS ()
 
void DielectricMetal ()
 
void DoAbsorption ()
 
void DoReflection ()
 
G4bool G4BooleanRand (const G4double prob) const
 
 G4OpBoundaryProcess (const G4OpBoundaryProcess &right)=delete
 
G4ThreeVector GetFacetNormal (const G4ThreeVector &Momentum, const G4ThreeVector &Normal) const
 
G4double GetIncidentAngle ()
 
G4double GetReflectivity (G4double E1_perp, G4double E1_parl, G4double incidentangle, G4double RealRindex, G4double ImaginaryRindex)
 
G4bool InvokeSD (const G4Step *step)
 
G4OpBoundaryProcessoperator= (const G4OpBoundaryProcess &right)=delete
 

Private Attributes

G4int f_iTE
 
G4int f_iTM
 
G4double fCarTolerance
 
G4Physics2DVectorfDichroicVector
 
G4double fEfficiency
 
G4ThreeVector fFacetNormal
 
G4OpticalSurfaceFinish fFinish
 
G4ThreeVector fGlobalNormal
 
G4MaterialPropertyVectorfImagRIndexMPV
 
G4bool fInvokeSD
 
G4MaterialfMaterial1
 
G4MaterialfMaterial2
 
G4OpticalSurfaceModel fModel
 
G4ThreeVector fNewMomentum
 
G4ThreeVector fNewPolarization
 
G4ThreeVector fOldMomentum
 
G4ThreeVector fOldPolarization
 
G4OpticalSurfacefOpticalSurface
 
G4double fPhotonMomentum
 
G4double fProb_bs
 
G4double fProb_sl
 
G4double fProb_ss
 
G4ProcessTablefProcessTable = nullptr
 
G4MaterialPropertyVectorfRealRIndexMPV
 
G4double fReflectivity
 
G4double fRindex1
 
G4double fRindex2
 
G4double fSint1
 
G4OpBoundaryProcessStatus fStatus
 
G4double fSurfaceRoughness
 
G4double fTransmittance
 
size_t idx_back = 0
 
size_t idx_dichroicX = 0
 
size_t idx_dichroicY = 0
 
size_t idx_eff = 0
 
size_t idx_groupvel = 0
 
size_t idx_irindex = 0
 
size_t idx_lobe = 0
 
size_t idx_reflect = 0
 
size_t idx_rindex1 = 0
 
size_t idx_rindex2 = 0
 
size_t idx_rindex_surface = 0
 
size_t idx_rrindex = 0
 
size_t idx_spike = 0
 
size_t idx_trans = 0
 
G4VProcessmasterProcessShadow = nullptr
 

Detailed Description

Definition at line 116 of file G4OpBoundaryProcess.hh.

Constructor & Destructor Documentation

◆ G4OpBoundaryProcess() [1/2]

G4OpBoundaryProcess::G4OpBoundaryProcess ( const G4String processName = "OpBoundary",
G4ProcessType  type = fOptical 
)
explicit

Definition at line 91 of file G4OpBoundaryProcess.cc.

93 : G4VDiscreteProcess(processName, type)
94{
95 Initialise();
96
97 if(verboseLevel > 0)
98 {
99 G4cout << GetProcessName() << " is created " << G4endl;
100 }
102
104 fModel = glisur;
106 fReflectivity = 1.;
107 fEfficiency = 0.;
108 fTransmittance = 0.;
110 fProb_sl = 0.;
111 fProb_ss = 0.;
112 fProb_bs = 0.;
113
114 fRealRIndexMPV = nullptr;
115 fImagRIndexMPV = nullptr;
116 fMaterial1 = nullptr;
117 fMaterial2 = nullptr;
118 fOpticalSurface = nullptr;
120
121 f_iTE = f_iTM = 0;
122 fPhotonMomentum = 0.;
123 fRindex1 = fRindex2 = 1.;
124 fSint1 = 0.;
125 fDichroicVector = nullptr;
126}
@ fOpBoundary
@ glisur
@ polished
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
G4OpticalSurfaceFinish fFinish
G4OpBoundaryProcessStatus fStatus
G4OpticalSurface * fOpticalSurface
G4OpticalSurfaceModel fModel
G4Physics2DVector * fDichroicVector
G4MaterialPropertyVector * fRealRIndexMPV
G4MaterialPropertyVector * fImagRIndexMPV
G4int verboseLevel
Definition: G4VProcess.hh:356
void SetProcessSubType(G4int)
Definition: G4VProcess.hh:406
const G4String & GetProcessName() const
Definition: G4VProcess.hh:382

References f_iTE, f_iTM, fCarTolerance, fDichroicVector, fEfficiency, fFinish, fImagRIndexMPV, fMaterial1, fMaterial2, fModel, fOpBoundary, fOpticalSurface, fPhotonMomentum, fProb_bs, fProb_sl, fProb_ss, fRealRIndexMPV, fReflectivity, fRindex1, fRindex2, fSint1, fStatus, fSurfaceRoughness, fTransmittance, G4cout, G4endl, G4GeometryTolerance::GetInstance(), G4VProcess::GetProcessName(), G4GeometryTolerance::GetSurfaceTolerance(), glisur, Initialise(), polished, G4VProcess::SetProcessSubType(), Undefined, and G4VProcess::verboseLevel.

◆ ~G4OpBoundaryProcess()

G4OpBoundaryProcess::~G4OpBoundaryProcess ( )
virtual

Definition at line 129 of file G4OpBoundaryProcess.cc.

129{}

◆ G4OpBoundaryProcess() [2/2]

G4OpBoundaryProcess::G4OpBoundaryProcess ( const G4OpBoundaryProcess right)
privatedelete

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

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

◆ BoundaryProcessVerbose()

void G4OpBoundaryProcess::BoundaryProcessVerbose ( void  ) const
private

Definition at line 530 of file G4OpBoundaryProcess.cc.

531{
532 G4cout << " *** ";
533 if(fStatus == Undefined)
534 G4cout << "Undefined";
535 else if(fStatus == Transmission)
536 G4cout << "Transmission";
537 else if(fStatus == FresnelRefraction)
538 G4cout << "FresnelRefraction";
539 else if(fStatus == FresnelReflection)
540 G4cout << "FresnelReflection";
542 G4cout << "TotalInternalReflection";
543 else if(fStatus == LambertianReflection)
544 G4cout << "LambertianReflection";
545 else if(fStatus == LobeReflection)
546 G4cout << "LobeReflection";
547 else if(fStatus == SpikeReflection)
548 G4cout << "SpikeReflection";
549 else if(fStatus == BackScattering)
550 G4cout << "BackScattering";
552 G4cout << "PolishedLumirrorAirReflection";
554 G4cout << "PolishedLumirrorGlueReflection";
556 G4cout << "PolishedAirReflection";
558 G4cout << "PolishedTeflonAirReflection";
560 G4cout << "PolishedTiOAirReflection";
562 G4cout << "PolishedTyvekAirReflection";
564 G4cout << "PolishedVM2000AirReflection";
566 G4cout << "PolishedVM2000GlueReflection";
568 G4cout << "EtchedLumirrorAirReflection";
570 G4cout << "EtchedLumirrorGlueReflection";
571 else if(fStatus == EtchedAirReflection)
572 G4cout << "EtchedAirReflection";
574 G4cout << "EtchedTeflonAirReflection";
576 G4cout << "EtchedTiOAirReflection";
578 G4cout << "EtchedTyvekAirReflection";
580 G4cout << "EtchedVM2000AirReflection";
582 G4cout << "EtchedVM2000GlueReflection";
584 G4cout << "GroundLumirrorAirReflection";
586 G4cout << "GroundLumirrorGlueReflection";
587 else if(fStatus == GroundAirReflection)
588 G4cout << "GroundAirReflection";
590 G4cout << "GroundTeflonAirReflection";
592 G4cout << "GroundTiOAirReflection";
594 G4cout << "GroundTyvekAirReflection";
596 G4cout << "GroundVM2000AirReflection";
598 G4cout << "GroundVM2000GlueReflection";
599 else if(fStatus == Absorption)
600 G4cout << "Absorption";
601 else if(fStatus == Detection)
602 G4cout << "Detection";
603 else if(fStatus == NotAtBoundary)
604 G4cout << "NotAtBoundary";
605 else if(fStatus == SameMaterial)
606 G4cout << "SameMaterial";
607 else if(fStatus == StepTooSmall)
608 G4cout << "StepTooSmall";
609 else if(fStatus == NoRINDEX)
610 G4cout << "NoRINDEX";
611 else if(fStatus == Dichroic)
612 G4cout << "Dichroic Transmission";
613 G4cout << " ***" << G4endl;
614}
@ PolishedTiOAirReflection
@ GroundTeflonAirReflection
@ EtchedVM2000AirReflection
@ Transmission
@ EtchedVM2000GlueReflection
@ GroundLumirrorGlueReflection
@ LobeReflection
@ GroundTiOAirReflection
@ GroundTyvekAirReflection
@ FresnelReflection
@ NoRINDEX
@ GroundAirReflection
@ EtchedAirReflection
@ PolishedVM2000GlueReflection
@ PolishedAirReflection
@ PolishedTeflonAirReflection
@ EtchedTyvekAirReflection
@ SpikeReflection
@ EtchedLumirrorGlueReflection
@ GroundVM2000AirReflection
@ PolishedTyvekAirReflection
@ PolishedVM2000AirReflection
@ EtchedTiOAirReflection
@ EtchedTeflonAirReflection
@ GroundVM2000GlueReflection
@ BackScattering
@ PolishedLumirrorGlueReflection
@ TotalInternalReflection
@ PolishedLumirrorAirReflection
@ EtchedLumirrorAirReflection
@ GroundLumirrorAirReflection
@ FresnelRefraction
@ Detection
@ NotAtBoundary
@ SameMaterial
@ Absorption
@ StepTooSmall
@ LambertianReflection

References Absorption, BackScattering, Detection, Dichroic, EtchedAirReflection, EtchedLumirrorAirReflection, EtchedLumirrorGlueReflection, EtchedTeflonAirReflection, EtchedTiOAirReflection, EtchedTyvekAirReflection, EtchedVM2000AirReflection, EtchedVM2000GlueReflection, FresnelReflection, FresnelRefraction, fStatus, G4cout, G4endl, GroundAirReflection, GroundLumirrorAirReflection, GroundLumirrorGlueReflection, GroundTeflonAirReflection, GroundTiOAirReflection, GroundTyvekAirReflection, GroundVM2000AirReflection, GroundVM2000GlueReflection, LambertianReflection, LobeReflection, NoRINDEX, NotAtBoundary, PolishedAirReflection, PolishedLumirrorAirReflection, PolishedLumirrorGlueReflection, PolishedTeflonAirReflection, PolishedTiOAirReflection, PolishedTyvekAirReflection, PolishedVM2000AirReflection, PolishedVM2000GlueReflection, SameMaterial, SpikeReflection, StepTooSmall, TotalInternalReflection, Transmission, and Undefined.

Referenced by PostStepDoIt().

◆ BuildPhysicsTable()

virtual void G4VProcess::BuildPhysicsTable ( const G4ParticleDefinition )
inlinevirtualinherited

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

◆ CalculateReflectivity()

void G4OpBoundaryProcess::CalculateReflectivity ( void  )
private

Definition at line 1396 of file G4OpBoundaryProcess.cc.

1397{
1399 G4double imaginaryRindex =
1401
1402 // calculate FacetNormal
1403 if(fFinish == ground)
1404 {
1406 }
1407 else
1408 {
1410 }
1411
1413 if(std::abs(cost1) < 1.0 - fCarTolerance)
1414 {
1415 fSint1 = std::sqrt(1. - cost1 * cost1);
1416 }
1417 else
1418 {
1419 fSint1 = 0.0;
1420 }
1421
1422 G4ThreeVector A_trans, A_paral, E1pp, E1pl;
1423 G4double E1_perp, E1_parl;
1424
1425 if(fSint1 > 0.0)
1426 {
1427 A_trans = (fOldMomentum.cross(fFacetNormal)).unit();
1428 E1_perp = fOldPolarization * A_trans;
1429 E1pp = E1_perp * A_trans;
1430 E1pl = fOldPolarization - E1pp;
1431 E1_parl = E1pl.mag();
1432 }
1433 else
1434 {
1435 A_trans = fOldPolarization;
1436 // Here we Follow Jackson's conventions and we set the parallel
1437 // component = 1 in case of a ray perpendicular to the surface
1438 E1_perp = 0.0;
1439 E1_parl = 1.0;
1440 }
1441
1442 G4double incidentangle = GetIncidentAngle();
1443
1444 // calculate the reflectivity depending on incident angle,
1445 // polarization and complex refractive
1446 fReflectivity = GetReflectivity(E1_perp, E1_parl, incidentangle, realRindex,
1447 imaginaryRindex);
1448}
@ ground
double G4double
Definition: G4Types.hh:83
Hep3Vector cross(const Hep3Vector &) const
double mag() const
G4double GetReflectivity(G4double E1_perp, G4double E1_parl, G4double incidentangle, G4double RealRindex, G4double ImaginaryRindex)
G4ThreeVector GetFacetNormal(const G4ThreeVector &Momentum, const G4ThreeVector &Normal) const
G4ThreeVector fOldPolarization
G4double Value(const G4double energy, std::size_t &lastidx) const

References CLHEP::Hep3Vector::cross(), fCarTolerance, fFacetNormal, fFinish, fGlobalNormal, fImagRIndexMPV, fOldMomentum, fOldPolarization, fPhotonMomentum, fRealRIndexMPV, fReflectivity, fSint1, GetFacetNormal(), GetIncidentAngle(), GetReflectivity(), ground, idx_irindex, idx_rrindex, CLHEP::Hep3Vector::mag(), and G4PhysicsVector::Value().

Referenced by DielectricMetal(), and PostStepDoIt().

◆ ChooseReflection()

void G4OpBoundaryProcess::ChooseReflection ( )
inlineprivate

Definition at line 262 of file G4OpBoundaryProcess.hh.

263{
264 G4double rand = G4UniformRand();
265 if(rand < fProb_ss)
266 {
269 }
270 else if(rand < fProb_ss + fProb_sl)
271 {
273 }
274 else if(rand < fProb_ss + fProb_sl + fProb_bs)
275 {
277 }
278 else
279 {
281 }
282}
@ LambertianReflection
#define G4UniformRand()
Definition: Randomize.hh:52

References BackScattering, fFacetNormal, fGlobalNormal, fProb_bs, fProb_sl, fProb_ss, fStatus, G4UniformRand, LambertianReflection, LobeReflection, and SpikeReflection.

Referenced by DielectricDichroic(), DielectricDielectric(), and DielectricMetal().

◆ ClearNumberOfInteractionLengthLeft()

void G4VProcess::ClearNumberOfInteractionLengthLeft ( )
inlineprotectedinherited

◆ DielectricDichroic()

void G4OpBoundaryProcess::DielectricDichroic ( )
private

Definition at line 952 of file G4OpBoundaryProcess.cc.

953{
954 // Calculate Angle between Normal and Photon Momentum
955 G4double anglePhotonToNormal = fOldMomentum.angle(-fGlobalNormal);
956
957 // Round it to closest integer
958 G4double angleIncident = std::floor(180. / pi * anglePhotonToNormal + 0.5);
959
960 if(!fDichroicVector)
961 {
964 }
965
967 {
968 G4double wavelength = h_Planck * c_light / fPhotonMomentum;
969 fTransmittance = fDichroicVector->Value(wavelength / nm, angleIncident,
971 perCent;
972 // G4cout << "wavelength: " << std::floor(wavelength/nm)
973 // << "nm" << G4endl;
974 // G4cout << "Incident angle: " << angleIncident << "deg" << G4endl;
975 // G4cout << "Transmittance: "
976 // << std::floor(fTransmittance/perCent) << "%" << G4endl;
977 }
978 else
979 {
981 ed << " G4OpBoundaryProcess/DielectricDichroic(): "
982 << " The dichroic surface has no G4Physics2DVector" << G4endl;
983 G4Exception("G4OpBoundaryProcess::DielectricDichroic", "OpBoun03",
984 FatalException, ed,
985 "A dichroic surface must have an associated G4Physics2DVector");
986 }
987
989 { // Not transmitted, so reflect
990 if(fModel == glisur || fFinish == polished)
991 {
992 DoReflection();
993 }
994 else
995 {
998 {
999 DoReflection();
1000 }
1001 else if(fStatus == BackScattering)
1002 {
1005 }
1006 else
1007 {
1008 G4double PdotN, EdotN;
1009 do
1010 {
1011 if(fStatus == LobeReflection)
1012 {
1014 }
1015 PdotN = fOldMomentum * fFacetNormal;
1016 fNewMomentum = fOldMomentum - (2. * PdotN) * fFacetNormal;
1017 // Loop checking, 13-Aug-2015, Peter Gumplinger
1018 } while(fNewMomentum * fGlobalNormal <= 0.0);
1019
1022 }
1023 }
1024 }
1025 else
1026 {
1027 fStatus = Dichroic;
1030 }
1031}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
static constexpr double perCent
Definition: G4SIunits.hh:325
static constexpr double nm
Definition: G4SIunits.hh:92
static constexpr double pi
Definition: G4SIunits.hh:55
double angle(const Hep3Vector &) const
G4ThreeVector fNewPolarization
G4bool G4BooleanRand(const G4double prob) const
G4Physics2DVector * GetDichroicVector()
G4double Value(G4double x, G4double y, std::size_t &lastidx, std::size_t &lastidy) const
float c_light
Definition: hepunit.py:256
float h_Planck
Definition: hepunit.py:262

References CLHEP::Hep3Vector::angle(), BackScattering, source.hepunit::c_light, ChooseReflection(), Dichroic, DoReflection(), FatalException, fDichroicVector, fFacetNormal, fFinish, fGlobalNormal, fModel, fNewMomentum, fNewPolarization, fOldMomentum, fOldPolarization, fOpticalSurface, fPhotonMomentum, fStatus, fTransmittance, G4BooleanRand(), G4endl, G4Exception(), G4OpticalSurface::GetDichroicVector(), GetFacetNormal(), glisur, source.hepunit::h_Planck, idx_dichroicX, idx_dichroicY, LambertianReflection, LobeReflection, nm, perCent, pi, polished, and G4Physics2DVector::Value().

Referenced by PostStepDoIt().

◆ DielectricDielectric()

void G4OpBoundaryProcess::DielectricDielectric ( )
private

Definition at line 1034 of file G4OpBoundaryProcess.cc.

1035{
1036 G4bool inside = false;
1037 G4bool swap = false;
1038
1039 if(fFinish == polished)
1040 {
1042 }
1043 else
1044 {
1046 }
1048 G4double cost2 = 0.;
1049 G4double sint2 = 0.;
1050
1051 G4bool surfaceRoughnessCriterionPass = true;
1052 if(fSurfaceRoughness != 0. && fRindex1 > fRindex2)
1053 {
1054 G4double wavelength = h_Planck * c_light / fPhotonMomentum;
1055 G4double surfaceRoughnessCriterion = std::exp(-std::pow(
1056 (4. * pi * fSurfaceRoughness * fRindex1 * cost1 / wavelength), 2));
1057 surfaceRoughnessCriterionPass = G4BooleanRand(surfaceRoughnessCriterion);
1058 }
1059
1060leap:
1061
1062 G4bool through = false;
1063 G4bool done = false;
1064
1065 G4ThreeVector A_trans, A_paral, E1pp, E1pl;
1066 G4double E1_perp, E1_parl;
1067 G4double s1, s2, E2_perp, E2_parl, E2_total, transCoeff;
1068 G4double E2_abs, C_parl, C_perp;
1070
1071 do
1072 {
1073 if(through)
1074 {
1075 swap = !swap;
1076 through = false;
1080 }
1081
1082 if(fFinish == polished)
1083 {
1085 }
1086 else
1087 {
1089 }
1090
1091 cost1 = -fOldMomentum * fFacetNormal;
1092 if(std::abs(cost1) < 1.0 - fCarTolerance)
1093 {
1094 fSint1 = std::sqrt(1. - cost1 * cost1);
1095 sint2 = fSint1 * fRindex1 / fRindex2; // *** Snell's Law ***
1096 // this isn't a sine as we might expect from the name; can be > 1
1097 }
1098 else
1099 {
1100 fSint1 = 0.0;
1101 sint2 = 0.0;
1102 }
1103
1104 // TOTAL INTERNAL REFLECTION
1105 if(sint2 >= 1.0)
1106 {
1107 swap = false;
1108
1110 if(!surfaceRoughnessCriterionPass)
1112 if(fModel == unified && fFinish != polished)
1115 {
1116 DoReflection();
1117 }
1118 else if(fStatus == BackScattering)
1119 {
1122 }
1123 else
1124 {
1125 fNewMomentum =
1129 }
1130 }
1131 // NOT TIR
1132 else if(sint2 < 1.0)
1133 {
1134 // Calculate amplitude for transmission (Q = P x N)
1135 if(cost1 > 0.0)
1136 {
1137 cost2 = std::sqrt(1. - sint2 * sint2);
1138 }
1139 else
1140 {
1141 cost2 = -std::sqrt(1. - sint2 * sint2);
1142 }
1143
1144 if(fSint1 > 0.0)
1145 {
1146 A_trans = (fOldMomentum.cross(fFacetNormal)).unit();
1147 E1_perp = fOldPolarization * A_trans;
1148 E1pp = E1_perp * A_trans;
1149 E1pl = fOldPolarization - E1pp;
1150 E1_parl = E1pl.mag();
1151 }
1152 else
1153 {
1154 A_trans = fOldPolarization;
1155 // Here we Follow Jackson's conventions and set the parallel
1156 // component = 1 in case of a ray perpendicular to the surface
1157 E1_perp = 0.0;
1158 E1_parl = 1.0;
1159 }
1160
1161 s1 = fRindex1 * cost1;
1162 E2_perp = 2. * s1 * E1_perp / (fRindex1 * cost1 + fRindex2 * cost2);
1163 E2_parl = 2. * s1 * E1_parl / (fRindex2 * cost1 + fRindex1 * cost2);
1164 E2_total = E2_perp * E2_perp + E2_parl * E2_parl;
1165 s2 = fRindex2 * cost2 * E2_total;
1166
1167 if(fTransmittance > 0.)
1168 transCoeff = fTransmittance;
1169 else if(cost1 != 0.0)
1170 transCoeff = s2 / s1;
1171 else
1172 transCoeff = 0.0;
1173
1174 // NOT TIR: REFLECTION
1175 if(!G4BooleanRand(transCoeff))
1176 {
1177 swap = false;
1179
1180 if(!surfaceRoughnessCriterionPass)
1182 if(fModel == unified && fFinish != polished)
1185 {
1186 DoReflection();
1187 }
1188 else if(fStatus == BackScattering)
1189 {
1192 }
1193 else
1194 {
1195 fNewMomentum =
1197 if(fSint1 > 0.0)
1198 { // incident ray oblique
1199 E2_parl = fRindex2 * E2_parl / fRindex1 - E1_parl;
1200 E2_perp = E2_perp - E1_perp;
1201 E2_total = E2_perp * E2_perp + E2_parl * E2_parl;
1202 A_paral = (fNewMomentum.cross(A_trans)).unit();
1203 E2_abs = std::sqrt(E2_total);
1204 C_parl = E2_parl / E2_abs;
1205 C_perp = E2_perp / E2_abs;
1206
1207 fNewPolarization = C_parl * A_paral + C_perp * A_trans;
1208 }
1209 else
1210 { // incident ray perpendicular
1211 if(fRindex2 > fRindex1)
1212 {
1214 }
1215 else
1216 {
1218 }
1219 }
1220 }
1221 }
1222 // NOT TIR: TRANSMISSION
1223 else
1224 {
1225 inside = !inside;
1226 through = true;
1228
1229 if(fSint1 > 0.0)
1230 { // incident ray oblique
1231 alpha = cost1 - cost2 * (fRindex2 / fRindex1);
1233 A_paral = (fNewMomentum.cross(A_trans)).unit();
1234 E2_abs = std::sqrt(E2_total);
1235 C_parl = E2_parl / E2_abs;
1236 C_perp = E2_perp / E2_abs;
1237
1238 fNewPolarization = C_parl * A_paral + C_perp * A_trans;
1239 }
1240 else
1241 { // incident ray perpendicular
1244 }
1245 }
1246 }
1247
1250
1252 {
1253 done = (fNewMomentum * fGlobalNormal <= 0.0);
1254 }
1255 else
1256 {
1258 }
1259 // Loop checking, 13-Aug-2015, Peter Gumplinger
1260 } while(!done);
1261
1262 if(inside && !swap)
1263 {
1265 {
1266 G4double rand = G4UniformRand();
1267 if(rand > fReflectivity + fTransmittance)
1268 {
1269 DoAbsorption();
1270 }
1271 else if(rand > fReflectivity)
1272 {
1276 }
1277 else
1278 {
1280 {
1282 }
1283 else
1284 {
1285 swap = !swap;
1288 }
1291
1292 DoReflection();
1293
1296
1297 goto leap;
1298 }
1299 }
1300 }
1301}
static const G4double alpha
@ unified
@ polishedbackpainted
@ groundbackpainted
bool G4bool
Definition: G4Types.hh:86
Hep3Vector unit() const
void G4SwapObj(T *a, T *b)
Definition: templates.hh:112
void G4SwapPtr(T *&a, T *&b)
Definition: templates.hh:104

References alpha, BackScattering, source.hepunit::c_light, ChooseReflection(), CLHEP::Hep3Vector::cross(), DoAbsorption(), DoReflection(), fCarTolerance, fFacetNormal, fFinish, fGlobalNormal, fMaterial1, fMaterial2, fModel, fNewMomentum, fNewPolarization, fOldMomentum, fOldPolarization, fPhotonMomentum, fReflectivity, FresnelReflection, FresnelRefraction, fRindex1, fRindex2, fSint1, fStatus, fSurfaceRoughness, fTransmittance, G4BooleanRand(), G4SwapObj(), G4SwapPtr(), G4UniformRand, GetFacetNormal(), groundbackpainted, source.hepunit::h_Planck, LambertianReflection, CLHEP::Hep3Vector::mag(), pi, polished, polishedbackpainted, TotalInternalReflection, Transmission, unified, and CLHEP::Hep3Vector::unit().

Referenced by PostStepDoIt().

◆ DielectricLUT()

void G4OpBoundaryProcess::DielectricLUT ( )
private

Definition at line 778 of file G4OpBoundaryProcess.cc.

779{
780 G4int thetaIndex, phiIndex;
781 G4double angularDistVal, thetaRad, phiRad;
782 G4ThreeVector perpVectorTheta, perpVectorPhi;
783
786
787 G4int thetaIndexMax = fOpticalSurface->GetThetaIndexMax();
788 G4int phiIndexMax = fOpticalSurface->GetPhiIndexMax();
789
790 G4double rand;
791
792 do
793 {
794 rand = G4UniformRand();
795 if(rand > fReflectivity)
796 {
797 if(rand > fReflectivity + fTransmittance)
798 {
799 DoAbsorption();
800 }
801 else
802 {
806 }
807 break;
808 }
809 else
810 {
811 // Calculate Angle between Normal and Photon Momentum
812 G4double anglePhotonToNormal = fOldMomentum.angle(-fGlobalNormal);
813 // Round to closest integer: LBNL model array has 91 values
814 G4int angleIncident = std::lrint(anglePhotonToNormal / CLHEP::deg);
815
816 // Take random angles THETA and PHI,
817 // and see if below Probability - if not - Redo
818 do
819 {
820 thetaIndex = G4RandFlat::shootInt(thetaIndexMax - 1);
821 phiIndex = G4RandFlat::shootInt(phiIndexMax - 1);
822 // Find probability with the new indeces from LUT
824 angleIncident, thetaIndex, phiIndex);
825 // Loop checking, 13-Aug-2015, Peter Gumplinger
826 } while(!G4BooleanRand(angularDistVal));
827
828 thetaRad = G4double(-90 + 4 * thetaIndex) * pi / 180.;
829 phiRad = G4double(-90 + 5 * phiIndex) * pi / 180.;
830 // Rotate Photon Momentum in Theta, then in Phi
832
833 perpVectorTheta = fNewMomentum.cross(fGlobalNormal);
834 if(perpVectorTheta.mag() < fCarTolerance)
835 {
836 perpVectorTheta = fNewMomentum.orthogonal();
837 }
839 fNewMomentum.rotate(anglePhotonToNormal - thetaRad, perpVectorTheta);
840 perpVectorPhi = perpVectorTheta.cross(fNewMomentum);
841 fNewMomentum = fNewMomentum.rotate(-phiRad, perpVectorPhi);
842
843 // Rotate Polarization too:
847 }
848 // Loop checking, 13-Aug-2015, Peter Gumplinger
849 } while(fNewMomentum * fGlobalNormal <= 0.0);
850}
G4OpBoundaryProcessStatus
int G4int
Definition: G4Types.hh:85
Hep3Vector orthogonal() const
Hep3Vector & rotate(double, const Hep3Vector &)
Definition: ThreeVectorR.cc:24
G4int GetThetaIndexMax(void) const
G4int GetPhiIndexMax(void) const
G4double GetAngularDistributionValue(G4int, G4int, G4int)
static constexpr double deg

References CLHEP::Hep3Vector::angle(), CLHEP::Hep3Vector::cross(), CLHEP::deg, DoAbsorption(), fCarTolerance, fFacetNormal, fFinish, fGlobalNormal, fNewMomentum, fNewPolarization, fOldMomentum, fOldPolarization, fOpticalSurface, fReflectivity, fStatus, fTransmittance, G4BooleanRand(), G4UniformRand, G4OpticalSurface::GetAngularDistributionValue(), G4OpticalSurface::GetPhiIndexMax(), G4OpticalSurface::GetThetaIndexMax(), groundbackpainted, CLHEP::Hep3Vector::mag(), NoRINDEX, CLHEP::Hep3Vector::orthogonal(), pi, CLHEP::Hep3Vector::rotate(), and Transmission.

Referenced by PostStepDoIt().

◆ DielectricLUTDAVIS()

void G4OpBoundaryProcess::DielectricLUTDAVIS ( )
private

Definition at line 853 of file G4OpBoundaryProcess.cc.

854{
855 G4int angindex, random, angleIncident;
856 G4double reflectivityValue, elevation, azimuth;
857 G4double anglePhotonToNormal;
858
859 G4int lutbin = fOpticalSurface->GetLUTbins();
860 G4double rand = G4UniformRand();
861
862 G4double sinEl;
863 G4ThreeVector u, vNorm, w;
864
865 do
866 {
867 anglePhotonToNormal = fOldMomentum.angle(-fGlobalNormal);
868
869 // Davis model has 90 reflection bins: round down
870 // don't allow angleIncident to be 90 for anglePhotonToNormal close to 90
871 angleIncident = std::min(static_cast<G4int>(
872 std::floor(anglePhotonToNormal / CLHEP::deg)), 89);
873 reflectivityValue = fOpticalSurface->GetReflectivityLUTValue(angleIncident);
874
875 if(rand > reflectivityValue)
876 {
877 if(fEfficiency > 0.)
878 {
879 DoAbsorption();
880 break;
881 }
882 else
883 {
885
886 if(angleIncident <= 0.01)
887 {
889 break;
890 }
891
892 do
893 {
894 random = G4RandFlat::shootInt(1, lutbin + 1);
895 angindex =
896 (((random * 2) - 1)) + angleIncident * lutbin * 2 + 3640000;
897
898 azimuth =
900 elevation = fOpticalSurface->GetAngularDistributionValueLUT(angindex);
901 } while(elevation == 0. && azimuth == 0.);
902
903 sinEl = std::sin(elevation);
904 vNorm = (fGlobalNormal.cross(fOldMomentum)).unit();
905 u = vNorm.cross(fGlobalNormal) * (sinEl * std::cos(azimuth));
906 vNorm *= (sinEl * std::sin(azimuth));
907 // fGlobalNormal shouldn't be modified here
908 w = (fGlobalNormal *= std::cos(elevation));
909 fNewMomentum = u + vNorm + w;
910
911 // Rotate Polarization too:
915 }
916 }
917 else
918 {
920
921 if(angleIncident == 0)
922 {
924 break;
925 }
926
927 do
928 {
929 random = G4RandFlat::shootInt(1, lutbin + 1);
930 angindex = (((random * 2) - 1)) + (angleIncident - 1) * lutbin * 2;
931
932 azimuth = fOpticalSurface->GetAngularDistributionValueLUT(angindex - 1);
933 elevation = fOpticalSurface->GetAngularDistributionValueLUT(angindex);
934 } while(elevation == 0. && azimuth == 0.);
935
936 sinEl = std::sin(elevation);
937 vNorm = (fGlobalNormal.cross(fOldMomentum)).unit();
938 u = vNorm.cross(fGlobalNormal) * (sinEl * std::cos(azimuth));
939 vNorm *= (sinEl * std::sin(azimuth));
940 // fGlobalNormal shouldn't be modified here
941 w = (fGlobalNormal *= std::cos(elevation));
942
943 fNewMomentum = u + vNorm + w;
944
945 // Rotate Polarization too: (needs revision)
947 }
948 } while(fNewMomentum * fGlobalNormal <= 0.0);
949}
G4double GetAngularDistributionValueLUT(G4int)
G4double GetReflectivityLUTValue(G4int)
G4int GetLUTbins(void) const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References CLHEP::Hep3Vector::angle(), CLHEP::Hep3Vector::cross(), CLHEP::deg, DoAbsorption(), fEfficiency, fFacetNormal, fGlobalNormal, fNewMomentum, fNewPolarization, fOldMomentum, fOldPolarization, fOpticalSurface, fStatus, G4UniformRand, G4OpticalSurface::GetAngularDistributionValueLUT(), G4OpticalSurface::GetLUTbins(), G4OpticalSurface::GetReflectivityLUTValue(), LobeReflection, G4INCL::Math::min(), and Transmission.

Referenced by PostStepDoIt().

◆ DielectricMetal()

void G4OpBoundaryProcess::DielectricMetal ( )
private

Definition at line 682 of file G4OpBoundaryProcess.cc.

683{
684 G4int n = 0;
685 G4double rand;
686 G4ThreeVector A_trans;
687
688 do
689 {
690 ++n;
691 rand = G4UniformRand();
692 if(rand > fReflectivity && n == 1)
693 {
694 if(rand > fReflectivity + fTransmittance)
695 {
696 DoAbsorption();
697 }
698 else
699 {
703 }
704 break;
705 }
706 else
707 {
709 {
710 if(n > 1)
711 {
714 {
715 DoAbsorption();
716 break;
717 }
718 }
719 }
720 if(fModel == glisur || fFinish == polished)
721 {
722 DoReflection();
723 }
724 else
725 {
726 if(n == 1)
729 {
730 DoReflection();
731 }
732 else if(fStatus == BackScattering)
733 {
736 }
737 else
738 {
740 {
742 {
744 }
745 //else
746 // case of complex rindex needs to be implemented
747 }
750
751 if(f_iTE > 0 && f_iTM > 0)
752 {
756 }
757 else if(f_iTE > 0)
758 {
759 A_trans = (fSint1 > 0.0) ? fOldMomentum.cross(fFacetNormal).unit()
761 fNewPolarization = -A_trans;
762 }
763 else if(f_iTM > 0)
764 {
766 -fNewMomentum.cross(A_trans).unit(); // = -A_paral
767 }
768 }
769 }
772 }
773 // Loop checking, 13-Aug-2015, Peter Gumplinger
774 } while(fNewMomentum * fGlobalNormal < 0.0);
775}

References BackScattering, CalculateReflectivity(), ChooseReflection(), CLHEP::Hep3Vector::cross(), DoAbsorption(), DoReflection(), f_iTE, f_iTM, fFacetNormal, fFinish, fGlobalNormal, fImagRIndexMPV, fModel, fNewMomentum, fNewPolarization, fOldMomentum, fOldPolarization, fRealRIndexMPV, fReflectivity, fSint1, fStatus, fTransmittance, G4BooleanRand(), G4UniformRand, GetFacetNormal(), glisur, LambertianReflection, LobeReflection, CLHEP::detail::n, polished, Transmission, and CLHEP::Hep3Vector::unit().

Referenced by PostStepDoIt().

◆ DoAbsorption()

void G4OpBoundaryProcess::DoAbsorption ( )
inlineprivate

◆ DoReflection()

void G4OpBoundaryProcess::DoReflection ( )
inlineprivate

◆ DumpInfo()

void G4VProcess::DumpInfo ( ) const
virtualinherited

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

Definition at line 167 of file G4VProcess.cc.

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

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

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

◆ EndTracking()

void G4VProcess::EndTracking ( )
virtualinherited

◆ G4BooleanRand()

G4bool G4OpBoundaryProcess::G4BooleanRand ( const G4double  prob) const
inlineprivate

Definition at line 245 of file G4OpBoundaryProcess.hh.

246{
247 // Returns a random boolean variable with the specified probability
248 return (G4UniformRand() < prob);
249}

References G4UniformRand.

Referenced by DielectricDichroic(), DielectricDielectric(), DielectricLUT(), DielectricMetal(), and DoAbsorption().

◆ GetCurrentInteractionLength()

G4double G4VProcess::GetCurrentInteractionLength ( ) const
inlineinherited

◆ GetFacetNormal()

G4ThreeVector G4OpBoundaryProcess::GetFacetNormal ( const G4ThreeVector Momentum,
const G4ThreeVector Normal 
) const
private

Definition at line 617 of file G4OpBoundaryProcess.cc.

619{
620 G4ThreeVector facetNormal;
621 if(fModel == unified || fModel == LUT || fModel == DAVIS)
622 {
623 /* This function codes alpha to a random value taken from the
624 distribution p(alpha) = g(alpha; 0, sigma_alpha)*std::sin(alpha),
625 for alpha > 0 and alpha < 90, where g(alpha; 0, sigma_alpha) is a
626 gaussian distribution with mean 0 and standard deviation sigma_alpha. */
627
628 G4double sigma_alpha = 0.0;
630 sigma_alpha = fOpticalSurface->GetSigmaAlpha();
631 if(sigma_alpha == 0.0)
632 {
633 return normal;
634 }
635
636 G4double f_max = std::min(1.0, 4. * sigma_alpha);
637 G4double alpha, phi, sinAlpha;
638
639 do
640 { // Loop checking, 13-Aug-2015, Peter Gumplinger
641 do
642 { // Loop checking, 13-Aug-2015, Peter Gumplinger
643 alpha = G4RandGauss::shoot(0.0, sigma_alpha);
644 sinAlpha = std::sin(alpha);
645 } while(G4UniformRand() * f_max > sinAlpha || alpha >= halfpi);
646
647 phi = G4UniformRand() * twopi;
648 facetNormal.set(sinAlpha * std::cos(phi), sinAlpha * std::sin(phi),
649 std::cos(alpha));
650 facetNormal.rotateUz(normal);
651 } while(momentum * facetNormal >= 0.0);
652 }
653 else
654 {
655 G4double polish = 1.0;
657 polish = fOpticalSurface->GetPolish();
658 if(polish < 1.0)
659 {
660 do
661 { // Loop checking, 13-Aug-2015, Peter Gumplinger
662 G4ThreeVector smear;
663 do
664 { // Loop checking, 13-Aug-2015, Peter Gumplinger
665 smear.setX(2. * G4UniformRand() - 1.);
666 smear.setY(2. * G4UniformRand() - 1.);
667 smear.setZ(2. * G4UniformRand() - 1.);
668 } while(smear.mag2() > 1.0);
669 facetNormal = normal + (1. - polish) * smear;
670 } while(momentum * facetNormal >= 0.0);
671 facetNormal = facetNormal.unit();
672 }
673 else
674 {
675 facetNormal = normal;
676 }
677 }
678 return facetNormal;
679}
@ DAVIS
static constexpr double twopi
Definition: G4SIunits.hh:56
static constexpr double halfpi
Definition: G4SIunits.hh:57
void setY(double)
double mag2() const
void setZ(double)
void set(double x, double y, double z)
void setX(double)
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:33
G4double GetSigmaAlpha() const
G4double GetPolish() const
static double normal(HepRandomEngine *eptr)
Definition: RandPoisson.cc:79
ThreeVector shoot(const G4int Ap, const G4int Af)

References alpha, DAVIS, fModel, fOpticalSurface, G4UniformRand, G4OpticalSurface::GetPolish(), G4OpticalSurface::GetSigmaAlpha(), halfpi, LUT, CLHEP::Hep3Vector::mag2(), G4INCL::Math::min(), CLHEP::normal(), CLHEP::Hep3Vector::rotateUz(), CLHEP::Hep3Vector::set(), CLHEP::Hep3Vector::setX(), CLHEP::Hep3Vector::setY(), CLHEP::Hep3Vector::setZ(), G4INCL::DeJongSpin::shoot(), twopi, unified, and CLHEP::Hep3Vector::unit().

Referenced by CalculateReflectivity(), DielectricDichroic(), DielectricDielectric(), DielectricMetal(), and DoReflection().

◆ GetIncidentAngle()

G4double G4OpBoundaryProcess::GetIncidentAngle ( )
private

Definition at line 1312 of file G4OpBoundaryProcess.cc.

1313{
1314 return pi - std::acos(fOldMomentum * fFacetNormal /
1316}

References fFacetNormal, fOldMomentum, CLHEP::Hep3Vector::mag(), and pi.

Referenced by CalculateReflectivity().

◆ GetMasterProcess()

const G4VProcess * G4VProcess::GetMasterProcess ( ) const
inlineinherited

◆ GetMeanFreePath()

G4double G4OpBoundaryProcess::GetMeanFreePath ( const G4Track ,
G4double  ,
G4ForceCondition condition 
)
overridevirtual

Implements G4VDiscreteProcess.

Definition at line 1304 of file G4OpBoundaryProcess.cc.

1306{
1307 *condition = Forced;
1308 return DBL_MAX;
1309}
@ Forced
#define DBL_MAX
Definition: templates.hh:62

References condition(), DBL_MAX, and Forced.

◆ GetNumberOfInteractionLengthLeft()

G4double G4VProcess::GetNumberOfInteractionLengthLeft ( ) const
inlineinherited

Definition at line 431 of file G4VProcess.hh.

432{
434}

References G4VProcess::theNumberOfInteractionLengthLeft.

◆ GetPhysicsTableFileName()

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

Definition at line 181 of file G4VProcess.cc.

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

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

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

◆ GetPILfactor()

G4double G4VProcess::GetPILfactor ( ) const
inlineinherited

Definition at line 455 of file G4VProcess.hh.

456{
457 return thePILfactor;
458}

References G4VProcess::thePILfactor.

Referenced by export_G4VProcess().

◆ GetProcessManager()

const G4ProcessManager * G4VProcess::GetProcessManager ( )
inlinevirtualinherited

Reimplemented in G4BiasingProcessInterface, and G4WrapperProcess.

Definition at line 494 of file G4VProcess.hh.

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

References G4VProcess::aProcessManager.

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

◆ GetProcessName()

const G4String & G4VProcess::GetProcessName ( ) const
inlineinherited

Definition at line 382 of file G4VProcess.hh.

383{
384 return theProcessName;
385}

References G4VProcess::theProcessName.

Referenced by G4VEnergyLossProcess::ActivateForcedInteraction(), G4VEmProcess::ActivateForcedInteraction(), G4ProcessManager::ActivateProcess(), G4VEmProcess::ActivateSecondaryBiasing(), G4VEnergyLossProcess::ActivateSecondaryBiasing(), G4ParallelGeometriesLimiterProcess::AddParallelWorld(), G4IonQMDPhysics::AddProcess(), G4IonINCLXXPhysics::AddProcess(), G4ProcessManager::AddProcess(), G4ProcessPlacer::AddProcessAs(), G4ITSteppingVerbose::AlongStepDoItAllDone(), G4SteppingVerbose::AlongStepDoItAllDone(), G4SteppingVerboseWithUnits::AlongStepDoItAllDone(), G4ITSteppingVerbose::AlongStepDoItOneByOne(), G4SteppingVerbose::AlongStepDoItOneByOne(), G4SteppingVerboseWithUnits::AlongStepDoItOneByOne(), G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4VContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4BOptnLeadingParticle::ApplyFinalStateBiasing(), G4ITSteppingVerbose::AtRestDoItInvoked(), G4SteppingVerbose::AtRestDoItInvoked(), G4SteppingVerboseWithUnits::AtRestDoItInvoked(), G4ITSteppingVerbose::AtRestDoItOneByOne(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4HadronicProcess::BiasCrossSectionByFactor(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VEnergyLossProcess::BuildDEDXTable(), G4VUserPhysicsList::BuildIntegralPhysicsTable(), G4VEmProcess::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4LossTableManager::BuildPhysicsTable(), G4LossTableManager::BuildTables(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4ProcessManager::CheckOrderingParameters(), G4HadronicProcess::CheckResult(), G4StackChecker::ClassifyNewTrack(), G4BOptrForceCollision::ConfigureForWorker(), G4RunManagerKernel::ConfirmCoupledTransportation(), G4FastSimulationPhysics::ConstructProcess(), G4GenericBiasingPhysics::ConstructProcess(), G4IonElasticPhysics::ConstructProcess(), G4LossTableManager::CopyTables(), G4RichTrajectory::CreateAttValues(), G4RichTrajectoryPoint::CreateAttValues(), G4VPhononProcess::CreateSecondary(), G4EmExtraParameters::DefineRegParamForEM(), G4EmExtraParameters::DefineRegParamForLoss(), G4HadronicProcessStore::DeRegisterExtraProcess(), G4ITSteppingVerbose::DPSLAlongStep(), G4SteppingVerbose::DPSLAlongStep(), G4SteppingVerboseWithUnits::DPSLAlongStep(), G4ITSteppingVerbose::DPSLPostStep(), G4SteppingVerbose::DPSLPostStep(), G4SteppingVerboseWithUnits::DPSLPostStep(), G4HadronicProcessStore::Dump(), G4HadronicProcess::DumpState(), G4MuonicAtomDecay::DumpState(), G4ExceptionHandler::DumpTrackInfo(), export_G4VProcess(), G4EmCalculator::FindEmModel(), G4VEmProcess::FindLambdaMax(), G4BiasingProcessInterface::G4BiasingProcessInterface(), G4Cerenkov::G4Cerenkov(), G4ErrorEnergyLoss::G4ErrorEnergyLoss(), G4ErrorTrackLengthTarget::G4ErrorTrackLengthTarget(), G4FastSimulationManagerProcess::G4FastSimulationManagerProcess(), G4ImportanceProcess::G4ImportanceProcess(), G4MaxTimeCuts::G4MaxTimeCuts(), G4MicroElecSurface::G4MicroElecSurface(), G4MinEkineCuts::G4MinEkineCuts(), G4OpAbsorption::G4OpAbsorption(), G4OpBoundaryProcess(), 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().

◆ GetReflectivity()

G4double G4OpBoundaryProcess::GetReflectivity ( G4double  E1_perp,
G4double  E1_parl,
G4double  incidentangle,
G4double  RealRindex,
G4double  ImaginaryRindex 
)
private

Definition at line 1319 of file G4OpBoundaryProcess.cc.

1324{
1325 G4complex reflectivity, reflectivity_TE, reflectivity_TM;
1326 G4complex N1(fRindex1, 0.), N2(realRindex, imaginaryRindex);
1327 G4complex cosPhi;
1328
1329 G4complex u(1., 0.); // unit number 1
1330
1331 G4complex numeratorTE; // E1_perp=1 E1_parl=0 -> TE polarization
1332 G4complex numeratorTM; // E1_parl=1 E1_perp=0 -> TM polarization
1333 G4complex denominatorTE, denominatorTM;
1334 G4complex rTM, rTE;
1335
1339 if(ppR && ppI)
1340 {
1341 G4double rRindex = ppR->Value(fPhotonMomentum, idx_rrindex);
1342 G4double iRindex = ppI->Value(fPhotonMomentum, idx_irindex);
1343 N1 = G4complex(rRindex, iRindex);
1344 }
1345
1346 // Following two equations, rTM and rTE, are from: "Introduction To Modern
1347 // Optics" written by Fowles
1348 cosPhi = std::sqrt(u - ((std::sin(incidentangle) * std::sin(incidentangle)) *
1349 (N1 * N1) / (N2 * N2)));
1350
1351 numeratorTE = N1 * std::cos(incidentangle) - N2 * cosPhi;
1352 denominatorTE = N1 * std::cos(incidentangle) + N2 * cosPhi;
1353 rTE = numeratorTE / denominatorTE;
1354
1355 numeratorTM = N2 * std::cos(incidentangle) - N1 * cosPhi;
1356 denominatorTM = N2 * std::cos(incidentangle) + N1 * cosPhi;
1357 rTM = numeratorTM / denominatorTM;
1358
1359 // This is my (PG) calculaton for reflectivity on a metallic surface
1360 // depending on the fraction of TE and TM polarization
1361 // when TE polarization, E1_parl=0 and E1_perp=1, R=abs(rTE)^2 and
1362 // when TM polarization, E1_parl=1 and E1_perp=0, R=abs(rTM)^2
1363
1364 reflectivity_TE = (rTE * conj(rTE)) * (E1_perp * E1_perp) /
1365 (E1_perp * E1_perp + E1_parl * E1_parl);
1366 reflectivity_TM = (rTM * conj(rTM)) * (E1_parl * E1_parl) /
1367 (E1_perp * E1_perp + E1_parl * E1_parl);
1368 reflectivity = reflectivity_TE + reflectivity_TM;
1369
1370 do
1371 {
1372 if(G4UniformRand() * real(reflectivity) > real(reflectivity_TE))
1373 {
1374 f_iTE = -1;
1375 }
1376 else
1377 {
1378 f_iTE = 1;
1379 }
1380 if(G4UniformRand() * real(reflectivity) > real(reflectivity_TM))
1381 {
1382 f_iTM = -1;
1383 }
1384 else
1385 {
1386 f_iTM = 1;
1387 }
1388 // Loop checking, 13-Aug-2015, Peter Gumplinger
1389 } while(f_iTE < 0 && f_iTM < 0);
1390
1391 return real(reflectivity);
1392}
std::complex< G4double > G4complex
Definition: G4Types.hh:88
G4MaterialPropertyVector * GetProperty(const char *key) const
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
Definition: G4Material.hh:252

References f_iTE, f_iTM, fMaterial1, fPhotonMomentum, fRindex1, G4UniformRand, G4Material::GetMaterialPropertiesTable(), G4MaterialPropertiesTable::GetProperty(), idx_irindex, idx_rrindex, kIMAGINARYRINDEX, kREALRINDEX, and G4PhysicsVector::Value().

Referenced by CalculateReflectivity().

◆ GetStatus()

G4OpBoundaryProcessStatus G4OpBoundaryProcess::GetStatus ( ) const
inlinevirtual

Definition at line 257 of file G4OpBoundaryProcess.hh.

258{
259 return fStatus;
260}

References fStatus.

◆ GetTotalNumberOfInteractionLengthTraversed()

G4double G4VProcess::GetTotalNumberOfInteractionLengthTraversed ( ) const
inlineinherited

◆ GetVerboseLevel()

G4int G4VProcess::GetVerboseLevel ( ) const
inlineinherited

◆ Initialise()

void G4OpBoundaryProcess::Initialise ( )
virtual

◆ InvokeSD()

G4bool G4OpBoundaryProcess::InvokeSD ( const G4Step step)
private

Definition at line 1451 of file G4OpBoundaryProcess.cc.

1452{
1453 G4Step aStep = *pStep;
1455
1457 if(sd != nullptr)
1458 return sd->Hit(&aStep);
1459 else
1460 return false;
1461}
G4VSensitiveDetector * GetSensitiveDetector() const
Definition: G4Step.hh:62
void AddTotalEnergyDeposit(G4double value)
G4StepPoint * GetPostStepPoint() const
G4bool Hit(G4Step *aStep)

References G4Step::AddTotalEnergyDeposit(), fPhotonMomentum, G4Step::GetPostStepPoint(), G4StepPoint::GetSensitiveDetector(), and G4VSensitiveDetector::Hit().

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 G4OpBoundaryProcess::IsApplicable ( const G4ParticleDefinition aParticleType)
inlineoverridevirtual

Reimplemented from G4VProcess.

Definition at line 251 of file G4OpBoundaryProcess.hh.

253{
254 return (&aParticleType == G4OpticalPhoton::OpticalPhoton());
255}
static G4OpticalPhoton * OpticalPhoton()

References G4OpticalPhoton::OpticalPhoton().

Referenced by G4OpticalPhysics::ConstructProcess().

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

◆ operator!=()

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

Definition at line 161 of file G4VProcess.cc.

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

◆ operator=()

G4OpBoundaryProcess & G4OpBoundaryProcess::operator= ( const G4OpBoundaryProcess right)
privatedelete

◆ 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 * G4OpBoundaryProcess::PostStepDoIt ( const G4Track aTrack,
const G4Step aStep 
)
overridevirtual

Reimplemented from G4VDiscreteProcess.

Definition at line 146 of file G4OpBoundaryProcess.cc.

148{
152
153 // Get hyperStep from G4ParallelWorldProcess
154 // NOTE: PostSetpDoIt of this process to be invoked after
155 // G4ParallelWorldProcess!
156 const G4Step* pStep = &aStep;
158 if(hStep != nullptr)
159 pStep = hStep;
160
162 {
165 }
166 else
167 {
169 if(verboseLevel > 1)
171 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
172 }
173
176
177 if(verboseLevel > 1)
178 {
179 G4cout << " Photon at Boundary! " << G4endl;
180 if(thePrePV != nullptr)
181 G4cout << " thePrePV: " << thePrePV->GetName() << G4endl;
182 if(thePostPV != nullptr)
183 G4cout << " thePostPV: " << thePostPV->GetName() << G4endl;
184 }
185
186 if(aTrack.GetStepLength() <= fCarTolerance)
187 {
189 if(verboseLevel > 1)
191
192 G4MaterialPropertyVector* groupvel = nullptr;
194 if(aMPT != nullptr)
195 {
196 groupvel = aMPT->GetProperty(kGROUPVEL);
197 }
198 if(groupvel != nullptr)
199 {
202 }
203 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
204 }
205
206 const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
207
208 fPhotonMomentum = aParticle->GetTotalMomentum();
209 fOldMomentum = aParticle->GetMomentumDirection();
210 fOldPolarization = aParticle->GetPolarization();
211
212 if(verboseLevel > 1)
213 {
214 G4cout << " Old Momentum Direction: " << fOldMomentum << G4endl
215 << " Old Polarization: " << fOldPolarization << G4endl;
216 }
217
218 G4ThreeVector theGlobalPoint = pStep->GetPostStepPoint()->GetPosition();
219 G4bool valid;
220
221 // ID of Navigator which limits step
225 fGlobalNormal = (iNav[hNavId])->GetGlobalExitNormal(theGlobalPoint, &valid);
226
227 if(valid)
228 {
230 }
231 else
232 {
234 ed << " G4OpBoundaryProcess/PostStepDoIt(): "
235 << " The Navigator reports that it returned an invalid normal" << G4endl;
237 "G4OpBoundaryProcess::PostStepDoIt", "OpBoun01", EventMustBeAborted, ed,
238 "Invalid Surface Normal - Geometry must return valid surface normal");
239 }
240
241 if(fOldMomentum * fGlobalNormal > 0.0)
242 {
243#ifdef G4OPTICAL_DEBUG
245 ed << " G4OpBoundaryProcess/PostStepDoIt(): fGlobalNormal points in a "
246 "wrong direction. "
247 << G4endl
248 << " The momentum of the photon arriving at interface (oldMomentum)"
249 << " must exit the volume cross in the step. " << G4endl
250 << " So it MUST have dot < 0 with the normal that Exits the new "
251 "volume (globalNormal)."
252 << G4endl << " >> The dot product of oldMomentum and global Normal is "
254 << " Old Momentum (during step) = " << fOldMomentum << G4endl
255 << " Global Normal (Exiting New Vol) = " << fGlobalNormal << G4endl
256 << G4endl;
257 G4Exception("G4OpBoundaryProcess::PostStepDoIt", "OpBoun02",
258 EventMustBeAborted, // Or JustWarning to see if it happens
259 // repeatedly on one ray
260 ed,
261 "Invalid Surface Normal - Geometry must return valid surface "
262 "normal pointing in the right direction");
263#else
265#endif
266 }
267
268 G4MaterialPropertyVector* rIndexMPV = nullptr;
270 if(MPT != nullptr)
271 {
272 rIndexMPV = MPT->GetProperty(kRINDEX);
273 }
274 if(rIndexMPV != nullptr)
275 {
277 }
278 else
279 {
281 if(verboseLevel > 1)
285 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
286 }
287
288 fReflectivity = 1.;
289 fEfficiency = 0.;
290 fTransmittance = 0.;
292 fModel = glisur;
295
296 rIndexMPV = nullptr;
297 fOpticalSurface = nullptr;
298
299 G4LogicalSurface* surface =
300 G4LogicalBorderSurface::GetSurface(thePrePV, thePostPV);
301 if(surface == nullptr)
302 {
303 if(thePostPV->GetMotherLogical() == thePrePV->GetLogicalVolume())
304 {
306 if(surface == nullptr)
307 {
308 surface =
310 }
311 }
312 else
313 {
315 if(surface == nullptr)
316 {
317 surface =
319 }
320 }
321 }
322
323 if(surface != nullptr)
324 {
326 dynamic_cast<G4OpticalSurface*>(surface->GetSurfaceProperty());
327 }
328 if(fOpticalSurface != nullptr)
329 {
330 type = fOpticalSurface->GetType();
333
336 if(sMPT != nullptr)
337 {
339 {
340 rIndexMPV = sMPT->GetProperty(kRINDEX);
341 if(rIndexMPV != nullptr)
342 {
344 }
345 else
346 {
348 if(verboseLevel > 1)
352 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
353 }
354 }
355
358 f_iTE = f_iTM = 1;
359
361 if((pp = sMPT->GetProperty(kREFLECTIVITY)))
362 {
364 }
366 {
368 }
369
370 if((pp = sMPT->GetProperty(kEFFICIENCY)))
371 {
373 }
374 if((pp = sMPT->GetProperty(kTRANSMITTANCE)))
375 {
377 }
379 {
381 }
382
383 if(fModel == unified)
384 {
386 ? pp->Value(fPhotonMomentum, idx_lobe)
387 : 0.;
389 ? pp->Value(fPhotonMomentum, idx_spike)
390 : 0.;
392 ? pp->Value(fPhotonMomentum, idx_back)
393 : 0.;
394 }
395 } // end of if(sMPT)
397 {
400 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
401 }
402 } // end of if(fOpticalSurface)
403
404 // DIELECTRIC-DIELECTRIC
405 if(type == dielectric_dielectric)
406 {
407 if(fFinish == polished || fFinish == ground)
408 {
410 {
412 if(verboseLevel > 1)
414 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
415 }
417 rIndexMPV = nullptr;
418 if(MPT != nullptr)
419 {
420 rIndexMPV = MPT->GetProperty(kRINDEX);
421 }
422 if(rIndexMPV != nullptr)
423 {
425 }
426 else
427 {
429 if(verboseLevel > 1)
433 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
434 }
435 }
437 {
439 }
440 else
441 {
442 G4double rand = G4UniformRand();
443 if(rand > fReflectivity + fTransmittance)
444 {
445 DoAbsorption();
446 }
447 else if(rand > fReflectivity)
448 {
452 }
453 else
454 {
456 {
457 DoReflection();
458 }
459 else if(fFinish == groundfrontpainted)
460 {
462 DoReflection();
463 }
464 else
465 {
467 }
468 }
469 }
470 }
471 else if(type == dielectric_metal)
472 {
474 }
475 else if(type == dielectric_LUT)
476 {
478 }
479 else if(type == dielectric_LUTDAVIS)
480 {
482 }
483 else if(type == dielectric_dichroic)
484 {
486 }
487 else
488 {
490 ed << " PostStepDoIt(): Illegal boundary type." << G4endl;
491 G4Exception("G4OpBoundaryProcess", "OpBoun04", JustWarning, ed);
492 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
493 }
494
497
498 if(verboseLevel > 1)
499 {
500 G4cout << " New Momentum Direction: " << fNewMomentum << G4endl
501 << " New Polarization: " << fNewPolarization << G4endl;
503 }
504
507
509 {
510 // not all surface types check that fMaterial2 has an MPT
512 G4MaterialPropertyVector* groupvel = nullptr;
513 if(aMPT != nullptr)
514 {
515 groupvel = aMPT->GetProperty(kGROUPVEL);
516 }
517 if(groupvel != nullptr)
518 {
521 }
522 }
523
524 if(fStatus == Detection && fInvokeSD)
525 InvokeSD(pStep);
526 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
527}
@ JustWarning
@ EventMustBeAborted
@ kBACKSCATTERCONSTANT
@ kSPECULARLOBECONSTANT
@ kSPECULARSPIKECONSTANT
@ groundfrontpainted
@ polishedfrontpainted
@ fGeomBoundary
Definition: G4StepStatus.hh:43
G4SurfaceType
@ dielectric_metal
@ dielectric_LUT
@ dielectric_dielectric
@ dielectric_LUTDAVIS
@ dielectric_dichroic
const G4ThreeVector & GetMomentumDirection() const
G4double GetTotalMomentum() const
const G4ThreeVector & GetPolarization() const
static G4LogicalBorderSurface * GetSurface(const G4VPhysicalVolume *vol1, const G4VPhysicalVolume *vol2)
static G4LogicalSkinSurface * GetSurface(const G4LogicalVolume *vol)
G4SurfaceProperty * GetSurfaceProperty() const
G4bool ConstPropertyExists(const G4String &key) const
G4double GetConstProperty(const G4String &key) const
void BoundaryProcessVerbose(void) const
G4bool InvokeSD(const G4Step *step)
G4OpticalSurfaceModel GetModel() const
G4OpticalSurfaceFinish GetFinish() const
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
static const G4Step * GetHyperStep()
void ProposePolarization(G4double Px, G4double Py, G4double Pz)
void ProposeVelocity(G4double finalVelocity)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
virtual void Initialize(const G4Track &)
G4StepStatus GetStepStatus() const
G4Material * GetMaterial() const
const G4ThreeVector & GetPosition() const
G4VPhysicalVolume * GetPhysicalVolume() const
G4StepPoint * GetPreStepPoint() const
const G4SurfaceType & GetType() const
G4double GetVelocity() const
const G4DynamicParticle * GetDynamicParticle() const
G4double GetStepLength() const
std::vector< G4Navigator * >::iterator GetActiveNavigatorsIterator()
static G4TransportationManager * GetTransportationManager()
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
G4LogicalVolume * GetMotherLogical() const
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const

References G4VProcess::aParticleChange, BoundaryProcessVerbose(), CalculateReflectivity(), G4MaterialPropertiesTable::ConstPropertyExists(), Detection, dielectric_dichroic, dielectric_dielectric, dielectric_LUT, dielectric_LUTDAVIS, dielectric_metal, DielectricDichroic(), DielectricDielectric(), DielectricLUT(), DielectricLUTDAVIS(), DielectricMetal(), DoAbsorption(), DoReflection(), EventMustBeAborted, f_iTE, f_iTM, fCarTolerance, fEfficiency, fFinish, fGeomBoundary, fGlobalNormal, fImagRIndexMPV, fInvokeSD, fMaterial1, fMaterial2, fModel, fNewMomentum, fNewPolarization, fOldMomentum, fOldPolarization, fOpticalSurface, fPhotonMomentum, fProb_bs, fProb_sl, fProb_ss, fRealRIndexMPV, fReflectivity, FresnelRefraction, fRindex1, fRindex2, fStatus, fStopAndKill, fSurfaceRoughness, fTransmittance, G4cout, G4endl, G4Exception(), G4UniformRand, G4TransportationManager::GetActiveNavigatorsIterator(), G4MaterialPropertiesTable::GetConstProperty(), G4Track::GetDynamicParticle(), G4OpticalSurface::GetFinish(), G4ParallelWorldProcess::GetHyperStep(), G4ParallelWorldProcess::GetHypNavigatorID(), G4VPhysicalVolume::GetLogicalVolume(), G4StepPoint::GetMaterial(), G4Material::GetMaterialPropertiesTable(), G4OpticalSurface::GetMaterialPropertiesTable(), G4OpticalSurface::GetModel(), G4DynamicParticle::GetMomentumDirection(), G4VPhysicalVolume::GetMotherLogical(), G4VPhysicalVolume::GetName(), G4StepPoint::GetPhysicalVolume(), G4DynamicParticle::GetPolarization(), G4StepPoint::GetPosition(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4MaterialPropertiesTable::GetProperty(), G4Track::GetStepLength(), G4StepPoint::GetStepStatus(), G4LogicalSkinSurface::GetSurface(), G4LogicalBorderSurface::GetSurface(), G4LogicalSurface::GetSurfaceProperty(), G4DynamicParticle::GetTotalMomentum(), G4TransportationManager::GetTransportationManager(), G4SurfaceProperty::GetType(), G4Track::GetVelocity(), glisur, ground, groundbackpainted, groundfrontpainted, idx_back, idx_eff, idx_groupvel, idx_lobe, idx_reflect, idx_rindex1, idx_rindex2, idx_rindex_surface, idx_spike, idx_trans, G4ParticleChange::Initialize(), InvokeSD(), JustWarning, kBACKSCATTERCONSTANT, kEFFICIENCY, kGROUPVEL, kIMAGINARYRINDEX, kREALRINDEX, kREFLECTIVITY, kRINDEX, kSPECULARLOBECONSTANT, kSPECULARSPIKECONSTANT, kSURFACEROUGHNESS, kTRANSMITTANCE, LambertianReflection, NoRINDEX, NotAtBoundary, polished, polishedbackpainted, polishedfrontpainted, G4VDiscreteProcess::PostStepDoIt(), G4InuclParticleNames::pp, G4VParticleChange::ProposeLocalEnergyDeposit(), G4ParticleChange::ProposeMomentumDirection(), G4ParticleChange::ProposePolarization(), G4VParticleChange::ProposeTrackStatus(), G4ParticleChange::ProposeVelocity(), SameMaterial, StepTooSmall, Transmission, Undefined, unified, CLHEP::Hep3Vector::unit(), G4PhysicsVector::Value(), 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}
@ NotForced
static constexpr double cm
Definition: G4SIunits.hh:99
void DumpInfo(G4int mode=0) const
const G4String & GetName() const
Definition: G4Material.hh:173
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()

void G4OpBoundaryProcess::PreparePhysicsTable ( const G4ParticleDefinition )
overridevirtual

Reimplemented from G4VProcess.

Definition at line 132 of file G4OpBoundaryProcess.cc.

133{
134 Initialise();
135}

References Initialise().

◆ 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 G4VProcess::ProcessDescription ( std::ostream &  outfile) const
virtualinherited

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

Definition at line 175 of file G4VProcess.cc.

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

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

◆ ResetNumberOfInteractionLengthLeft()

void G4VProcess::ResetNumberOfInteractionLengthLeft ( )
virtualinherited

◆ RetrievePhysicsTable()

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

◆ SetInvokeSD()

void G4OpBoundaryProcess::SetInvokeSD ( G4bool  flag)
inlinevirtual

◆ SetMasterProcess()

void G4VProcess::SetMasterProcess ( G4VProcess masterP)
virtualinherited

◆ 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(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4PhotoElectricEffect::G4PhotoElectricEffect(), G4PionDecayMakeSpin::G4PionDecayMakeSpin(), G4PolarizedCompton::G4PolarizedCompton(), G4PolarizedGammaConversion::G4PolarizedGammaConversion(), G4PolarizedIonisation::G4PolarizedIonisation(), G4PolarizedPhotoElectric::G4PolarizedPhotoElectric(), G4RadioactiveDecay::G4RadioactiveDecay(), G4RayleighScattering::G4RayleighScattering(), G4Scintillation::G4Scintillation(), G4StepLimiter::G4StepLimiter(), G4SynchrotronRadiation::G4SynchrotronRadiation(), G4SynchrotronRadiationInMat::G4SynchrotronRadiationInMat(), G4TransitionRadiation::G4TransitionRadiation(), G4Transportation::G4Transportation(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UnknownDecay::G4UnknownDecay(), G4UserSpecialCuts::G4UserSpecialCuts(), G4VMultipleScattering::G4VMultipleScattering(), G4VTransitionRadiation::G4VTransitionRadiation(), G4VXTRenergyLoss::G4VXTRenergyLoss(), and G4Decay::SetExtDecayer().

◆ SetProcessType()

void G4VProcess::SetProcessType ( G4ProcessType  aType)
inlineinherited

Definition at line 394 of file G4VProcess.hh.

395{
396 theProcessType = aType;
397}

References G4VProcess::theProcessType.

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

◆ SetVerboseLevel()

void G4OpBoundaryProcess::SetVerboseLevel ( G4int  verbose)

◆ 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}
G4GLOB_DLL std::ostream G4cerr
static constexpr double perMillion

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

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

Field Documentation

◆ 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

◆ f_iTE

G4int G4OpBoundaryProcess::f_iTE
private

◆ f_iTM

G4int G4OpBoundaryProcess::f_iTM
private

◆ fCarTolerance

G4double G4OpBoundaryProcess::fCarTolerance
private

◆ fDichroicVector

G4Physics2DVector* G4OpBoundaryProcess::fDichroicVector
private

Definition at line 201 of file G4OpBoundaryProcess.hh.

Referenced by DielectricDichroic(), and G4OpBoundaryProcess().

◆ fEfficiency

G4double G4OpBoundaryProcess::fEfficiency
private

◆ fFacetNormal

G4ThreeVector G4OpBoundaryProcess::fFacetNormal
private

◆ fFinish

G4OpticalSurfaceFinish G4OpBoundaryProcess::fFinish
private

◆ fGlobalNormal

G4ThreeVector G4OpBoundaryProcess::fGlobalNormal
private

◆ fImagRIndexMPV

G4MaterialPropertyVector* G4OpBoundaryProcess::fImagRIndexMPV
private

◆ fInvokeSD

G4bool G4OpBoundaryProcess::fInvokeSD
private

Definition at line 238 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt(), and SetInvokeSD().

◆ fMaterial1

G4Material* G4OpBoundaryProcess::fMaterial1
private

◆ fMaterial2

G4Material* G4OpBoundaryProcess::fMaterial2
private

Definition at line 195 of file G4OpBoundaryProcess.hh.

Referenced by DielectricDielectric(), G4OpBoundaryProcess(), and PostStepDoIt().

◆ fModel

G4OpticalSurfaceModel G4OpBoundaryProcess::fModel
private

◆ fNewMomentum

G4ThreeVector G4OpBoundaryProcess::fNewMomentum
private

◆ fNewPolarization

G4ThreeVector G4OpBoundaryProcess::fNewPolarization
private

◆ fOldMomentum

G4ThreeVector G4OpBoundaryProcess::fOldMomentum
private

◆ fOldPolarization

G4ThreeVector G4OpBoundaryProcess::fOldPolarization
private

◆ fOpticalSurface

G4OpticalSurface* G4OpBoundaryProcess::fOpticalSurface
private

◆ fPhotonMomentum

G4double G4OpBoundaryProcess::fPhotonMomentum
private

◆ fProb_bs

G4double G4OpBoundaryProcess::fProb_bs
private

Definition at line 214 of file G4OpBoundaryProcess.hh.

Referenced by ChooseReflection(), G4OpBoundaryProcess(), and PostStepDoIt().

◆ fProb_sl

G4double G4OpBoundaryProcess::fProb_sl
private

Definition at line 214 of file G4OpBoundaryProcess.hh.

Referenced by ChooseReflection(), G4OpBoundaryProcess(), and PostStepDoIt().

◆ fProb_ss

G4double G4OpBoundaryProcess::fProb_ss
private

Definition at line 214 of file G4OpBoundaryProcess.hh.

Referenced by ChooseReflection(), G4OpBoundaryProcess(), and PostStepDoIt().

◆ fProcessTable

G4ProcessTable* G4VProcess::fProcessTable = nullptr
privateinherited

Definition at line 374 of file G4VProcess.hh.

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

◆ fRealRIndexMPV

G4MaterialPropertyVector* G4OpBoundaryProcess::fRealRIndexMPV
private

◆ fReflectivity

G4double G4OpBoundaryProcess::fReflectivity
private

◆ fRindex1

G4double G4OpBoundaryProcess::fRindex1
private

◆ fRindex2

G4double G4OpBoundaryProcess::fRindex2
private

Definition at line 205 of file G4OpBoundaryProcess.hh.

Referenced by DielectricDielectric(), G4OpBoundaryProcess(), and PostStepDoIt().

◆ fSint1

G4double G4OpBoundaryProcess::fSint1
private

◆ fStatus

G4OpBoundaryProcessStatus G4OpBoundaryProcess::fStatus
private

◆ fSurfaceRoughness

G4double G4OpBoundaryProcess::fSurfaceRoughness
private

Definition at line 212 of file G4OpBoundaryProcess.hh.

Referenced by DielectricDielectric(), G4OpBoundaryProcess(), and PostStepDoIt().

◆ fTransmittance

G4double G4OpBoundaryProcess::fTransmittance
private

◆ idx_back

size_t G4OpBoundaryProcess::idx_back = 0
private

Definition at line 232 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_dichroicX

size_t G4OpBoundaryProcess::idx_dichroicX = 0
private

Definition at line 223 of file G4OpBoundaryProcess.hh.

Referenced by DielectricDichroic().

◆ idx_dichroicY

size_t G4OpBoundaryProcess::idx_dichroicY = 0
private

Definition at line 224 of file G4OpBoundaryProcess.hh.

Referenced by DielectricDichroic().

◆ idx_eff

size_t G4OpBoundaryProcess::idx_eff = 0
private

Definition at line 228 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_groupvel

size_t G4OpBoundaryProcess::idx_groupvel = 0
private

Definition at line 234 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_irindex

size_t G4OpBoundaryProcess::idx_irindex = 0
private

Definition at line 236 of file G4OpBoundaryProcess.hh.

Referenced by CalculateReflectivity(), and GetReflectivity().

◆ idx_lobe

size_t G4OpBoundaryProcess::idx_lobe = 0
private

Definition at line 230 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_reflect

size_t G4OpBoundaryProcess::idx_reflect = 0
private

Definition at line 227 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_rindex1

size_t G4OpBoundaryProcess::idx_rindex1 = 0
private

Definition at line 225 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_rindex2

size_t G4OpBoundaryProcess::idx_rindex2 = 0
private

Definition at line 233 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_rindex_surface

size_t G4OpBoundaryProcess::idx_rindex_surface = 0
private

Definition at line 226 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_rrindex

size_t G4OpBoundaryProcess::idx_rrindex = 0
private

Definition at line 235 of file G4OpBoundaryProcess.hh.

Referenced by CalculateReflectivity(), and GetReflectivity().

◆ idx_spike

size_t G4OpBoundaryProcess::idx_spike = 0
private

Definition at line 231 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

◆ idx_trans

size_t G4OpBoundaryProcess::idx_trans = 0
private

Definition at line 229 of file G4OpBoundaryProcess.hh.

Referenced by PostStepDoIt().

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

◆ 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(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VXTRenergyLoss::BuildAngleTable(), G4VEnergyLossProcess::BuildDEDXTable(), G4VXTRenergyLoss::BuildEnergyTable(), G4VXTRenergyLoss::BuildGlobalAngleTable(), G4VEmProcess::BuildLambdaTable(), G4hImpactIonisation::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4hImpactIonisation::BuildLossTable(), G4DNABrownianTransportation::BuildPhysicsTable(), G4GammaGeneralProcess::BuildPhysicsTable(), G4LowECapture::BuildPhysicsTable(), G4VEmProcess::BuildPhysicsTable(), G4VEnergyLossProcess::BuildPhysicsTable(), G4VMultipleScattering::BuildPhysicsTable(), G4SynchrotronRadiation::BuildPhysicsTable(), G4VXTRenergyLoss::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(), G4OpMieHG::G4OpMieHG(), G4OpRayleigh::G4OpRayleigh(), G4OpWLS::G4OpWLS(), G4OpWLS2::G4OpWLS2(), G4ParallelWorldProcess::G4ParallelWorldProcess(), G4ParallelWorldScoringProcess::G4ParallelWorldScoringProcess(), G4PolarizedIonisation::G4PolarizedIonisation(), G4Scintillation::G4Scintillation(), G4ScoreSplittingProcess::G4ScoreSplittingProcess(), G4SpecialCuts::G4SpecialCuts(), G4StepLimiter::G4StepLimiter(), G4StrawTubeXTRadiator::G4StrawTubeXTRadiator(), G4SynchrotronRadiation::G4SynchrotronRadiation(), G4TransparentRegXTRadiator::G4TransparentRegXTRadiator(), G4Transportation::G4Transportation(), G4UCNAbsorption::G4UCNAbsorption(), G4UCNBoundaryProcess::G4UCNBoundaryProcess(), G4UCNLoss::G4UCNLoss(), G4UCNMultiScattering::G4UCNMultiScattering(), G4UserSpecialCuts::G4UserSpecialCuts(), G4VXTRenergyLoss::G4VXTRenergyLoss(), G4WeightCutOffProcess::G4WeightCutOffProcess(), G4WeightWindowProcess::G4WeightWindowProcess(), G4VXTRenergyLoss::GetAngleVector(), G4ChargeExchangeProcess::GetElementCrossSection(), G4VXTRenergyLoss::GetGasZmuProduct(), G4PhononDownconversion::GetMeanFreePath(), G4PhononScattering::GetMeanFreePath(), G4PolarizedCompton::GetMeanFreePath(), G4VXTRenergyLoss::GetMeanFreePath(), G4UCNAbsorption::GetMeanFreePath(), G4PolarizedAnnihilation::GetMeanFreePath(), G4PolarizedIonisation::GetMeanFreePath(), G4SynchrotronRadiation::GetMeanFreePath(), G4VXTRenergyLoss::GetNumberOfPhotons(), G4VXTRenergyLoss::GetPlateZmuProduct(), G4SynchrotronRadiation::GetRandomEnergySR(), G4VProcess::GetVerboseLevel(), G4hhIonisation::InitialiseEnergyLossProcess(), G4eeToHadrons::InitialiseProcess(), 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(), G4VXTRenergyLoss::PostStepDoIt(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4HadronElasticProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4OpAbsorption::PostStepDoIt(), 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(), 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: