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

#include <G4Transportation.hh>

Inheritance diagram for G4Transportation:
G4VProcess

Public Member Functions

G4VParticleChangeAlongStepDoIt (const G4Track &track, const G4Step &stepData)
 
G4double AlongStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety, G4GPILSelection *selection)
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
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
 
void EnableShortStepOptimisation (G4bool optimise=true)
 
virtual void EndTracking ()
 
G4bool FieldExertedForce ()
 
 G4Transportation (G4int verbosityLevel=1)
 
G4double GetCurrentInteractionLength () const
 
const G4VProcessGetMasterProcess () const
 
G4double GetMaxEnergyKilled () const
 
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
 
G4PropagatorInFieldGetPropagatorInField ()
 
G4double GetSumEnergyKilled () const
 
G4double GetThresholdImportantEnergy () const
 
G4int GetThresholdTrials () const
 
G4double GetThresholdWarningEnergy () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4int GetVerboseLevel () const
 
G4bool isAlongStepDoItIsEnabled () const
 
virtual G4bool IsApplicable (const G4ParticleDefinition &)
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
G4bool operator!= (const G4VProcess &right) const
 
G4bool operator== (const G4VProcess &right) const
 
G4VParticleChangePostStepDoIt (const G4Track &track, const G4Step &stepData)
 
G4double PostStepGetPhysicalInteractionLength (const G4Track &, G4double previousStepSize, G4ForceCondition *pForceCond)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 
void PrintStatistics (std::ostream &outStr) const
 
virtual void ProcessDescription (std::ostream &outFile) const
 
void PushThresholdsToLogger ()
 
void ReportLooperThresholds ()
 
void ResetKilledStatistics (G4int report=1)
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
void SetHighLooperThresholds ()
 
void SetLowLooperThresholds ()
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
void SetPILfactor (G4double value)
 
virtual void SetProcessManager (const G4ProcessManager *)
 
void SetProcessSubType (G4int)
 
void SetProcessType (G4ProcessType)
 
void SetPropagatorInField (G4PropagatorInField *pFieldPropagator)
 
void SetThresholdImportantEnergy (G4double newEnImp)
 
void SetThresholdTrials (G4int newMaxTrials)
 
void SetThresholdWarningEnergy (G4double newEnWarn)
 
void SetVerboseLevel (G4int value)
 
void StartTracking (G4Track *aTrack)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
 ~G4Transportation ()
 

Static Public Member Functions

static G4bool EnableGravity (G4bool useGravity=true)
 
static G4bool EnableMagneticMoment (G4bool useMoment=true)
 
static G4bool EnableUseMagneticMoment (G4bool useMoment=true)
 
static const G4StringGetProcessTypeName (G4ProcessType)
 
static G4bool GetSilenceLooperWarnings ()
 
static void SetSilenceLooperWarnings (G4bool val)
 

Protected Member Functions

void ClearNumberOfInteractionLengthLeft ()
 
G4bool DoesAnyFieldExist ()
 
void ReportMissingLogger (const char *methodName)
 
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 Attributes

G4int fAbandonUnstableTrials = 0
 
G4bool fAnyFieldExists = false
 
G4double fCandidateEndGlobalTime = 0.0
 
G4TouchableHandle fCurrentTouchableHandle
 
G4bool fEndGlobalTimeComputed = false
 
G4double fEndPointDistance
 
G4bool fFieldExertedForce = false
 
G4PropagatorInFieldfFieldPropagator
 
G4bool fFirstStepInVolume = true
 
G4bool fGeometryLimitedStep = true
 
G4bool fLastStepInVolume = false
 
G4NavigatorfLinearNavigator
 
G4double fMaxEnergyKilled = -1.0
 
G4int fMaxEnergyKilled_NonElecPDG = 0
 
G4double fMaxEnergyKilled_NonElectron = -1.0
 
G4int fMaxEnergyKilledPDG = 0
 
G4double fMaxEnergySaved = -1.0
 
G4bool fMomentumChanged = true
 
G4bool fNewTrack = true
 
G4int fNoLooperTrials = 0
 
unsigned long fNumLoopersKilled = 0
 
unsigned long fNumLoopersKilled_NonElectron = 0
 
G4ParticleChangeForTransport fParticleChange
 
G4bool fParticleIsLooping = false
 
G4TransportationLoggerfpLogger
 
G4double fPreviousSafety
 
G4ThreeVector fPreviousSftOrigin
 
G4ProcessTablefProcessTable = nullptr
 
G4SafetyHelperfpSafetyHelper
 
G4bool fShortStepOptimisation
 
G4double fSumEnergyKilled = 0.0
 
G4double fSumEnergyKilled_NonElectron = 0.0
 
G4double fSumEnergySaved = 0.0
 
G4double fSumEnergyUnstableSaved = 0.0
 
G4double fSumEnerSqKilled = 0.0
 
G4double fSumEnerSqKilled_NonElectron = 0.0
 
G4double fThreshold_Important_Energy = 1.0 * CLHEP::MeV
 
G4double fThreshold_Warning_Energy = 1.0 * CLHEP::keV
 
G4int fThresholdTrials = 10
 
G4double fTransportEndKineticEnergy = 0.0
 
G4ThreeVector fTransportEndMomentumDir = G4ThreeVector( 0.0, 0.0, 0.0 )
 
G4ThreeVector fTransportEndPosition = G4ThreeVector( 0.0, 0.0, 0.0 )
 
G4ThreeVector fTransportEndSpin = G4ThreeVector( 0.0, 0.0, 0.0 )
 
G4VProcessmasterProcessShadow = nullptr
 

Static Private Attributes

static G4bool fSilenceLooperWarnings = false
 
static G4bool fUseGravity = false
 
static G4bool fUseMagneticMoment =false
 

Friends

class G4CoupledTransportation
 

Detailed Description

Definition at line 60 of file G4Transportation.hh.

Constructor & Destructor Documentation

◆ G4Transportation()

G4Transportation::G4Transportation ( G4int  verbosityLevel = 1)

Definition at line 69 of file G4Transportation.cc.

70 : G4VProcess( G4String("Transportation"), fTransportation ),
71 fFieldExertedForce( false ),
72 fPreviousSftOrigin( 0.,0.,0. ),
73 fPreviousSafety( 0.0 ),
74 fEndPointDistance( -1.0 ),
75 fShortStepOptimisation( false ) // Old default: true (=fast short steps)
76{
78 pParticleChange= &fParticleChange; // Required to conform to G4VProcess
79 SetVerboseLevel(verbosity);
80
81 G4TransportationManager* transportMgr ;
82
84
85 fLinearNavigator = transportMgr->GetNavigatorForTracking() ;
86
87 fFieldPropagator = transportMgr->GetPropagatorInField() ;
88
89 fpSafetyHelper = transportMgr->GetSafetyHelper(); // New
90
91 fpLogger = new G4TransportationLogger("G4Transportation", verbosity);
92
94 // Use the old defaults: Warning = 100 MeV, Important = 250 MeV, No Trials = 10;
95
97 // Should be done by Set methods in SetHighLooperThresholds -- making sure
98
99 // Cannot determine whether a field exists here, as it would
100 // depend on the relative order of creating the detector's
101 // field and this process. That order is not guaranted.
103 // This value must be updated using DoesAnyFieldExist() at least at the
104 // start of each Run -- for now this is at the Start of every Track. TODO
105
106 static G4ThreadLocal G4TouchableHandle* pNullTouchableHandle = 0;
107 if ( !pNullTouchableHandle)
108 {
109 pNullTouchableHandle = new G4TouchableHandle;
110 }
111 fCurrentTouchableHandle = *pNullTouchableHandle;
112 // Points to (G4VTouchable*) 0
113
114
115#ifdef G4VERBOSE
116 if( verboseLevel > 0)
117 {
118 G4cout << " G4Transportation constructor> set fShortStepOptimisation to ";
119 if ( fShortStepOptimisation ) { G4cout << "true" << G4endl; }
120 else { G4cout << "false" << G4endl; }
121 }
122#endif
123}
@ fTransportation
G4ReferenceCountedHandle< G4VTouchable > G4TouchableHandle
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4TransportationManager * GetTransportationManager()
G4PropagatorInField * GetPropagatorInField() const
G4SafetyHelper * GetSafetyHelper() const
G4Navigator * GetNavigatorForTracking() const
G4ThreeVector fPreviousSftOrigin
void PushThresholdsToLogger()
G4PropagatorInField * fFieldPropagator
G4ParticleChangeForTransport fParticleChange
G4TouchableHandle fCurrentTouchableHandle
G4Navigator * fLinearNavigator
G4TransportationLogger * fpLogger
G4bool DoesAnyFieldExist()
G4SafetyHelper * fpSafetyHelper
void SetVerboseLevel(G4int value)
Definition: G4VProcess.hh:412
G4int verboseLevel
Definition: G4VProcess.hh:356
void SetProcessSubType(G4int)
Definition: G4VProcess.hh:406
G4VParticleChange * pParticleChange
Definition: G4VProcess.hh:321
#define G4ThreadLocal
Definition: tls.hh:77

References DoesAnyFieldExist(), fAnyFieldExists, fCurrentTouchableHandle, fFieldPropagator, fLinearNavigator, fParticleChange, fpLogger, fpSafetyHelper, fShortStepOptimisation, G4cout, G4endl, G4ThreadLocal, G4TransportationManager::GetNavigatorForTracking(), G4TransportationManager::GetPropagatorInField(), G4TransportationManager::GetSafetyHelper(), G4TransportationManager::GetTransportationManager(), G4VProcess::pParticleChange, PushThresholdsToLogger(), SetHighLooperThresholds(), G4VProcess::SetProcessSubType(), G4VProcess::SetVerboseLevel(), TRANSPORTATION, and G4VProcess::verboseLevel.

◆ ~G4Transportation()

G4Transportation::~G4Transportation ( )

Definition at line 127 of file G4Transportation.cc.

128{
129 if( fSumEnergyKilled > 0.0 )
130 {
132 }
133 delete fpLogger;
134}
void PrintStatistics(std::ostream &outStr) const

References fpLogger, fSumEnergyKilled, G4cout, and PrintStatistics().

Member Function Documentation

◆ AlongStepDoIt()

G4VParticleChange * G4Transportation::AlongStepDoIt ( const G4Track track,
const G4Step stepData 
)
virtual

Implements G4VProcess.

Definition at line 492 of file G4Transportation.cc.

494{
495#if defined(G4VERBOSE) || defined(G4DEBUG_TRANSPORT)
497 noCallsASDI++;
498#else
499 #define noCallsASDI 0
500#endif
501
503
504 // Code for specific process
505 //
510
512
513 G4double deltaTime = 0.0 ;
514
515 // Calculate Lab Time of Flight (ONLY if field Equations used it!)
516 // G4double endTime = fCandidateEndGlobalTime;
517 // G4double delta_time = endTime - startTime;
518
519 G4double startTime = track.GetGlobalTime() ;
520
522 {
523 // The time was not integrated .. make the best estimate possible
524 //
525 G4double initialVelocity = stepData.GetPreStepPoint()->GetVelocity();
526 G4double stepLength = track.GetStepLength();
527
528 deltaTime= 0.0; // in case initialVelocity = 0
529 if ( initialVelocity > 0.0 ) { deltaTime = stepLength/initialVelocity; }
530
531 fCandidateEndGlobalTime = startTime + deltaTime ;
532 fParticleChange.ProposeLocalTime( track.GetLocalTime() + deltaTime) ;
533 }
534 else
535 {
536 deltaTime = fCandidateEndGlobalTime - startTime ;
538 }
539
540
541 // Now Correct by Lorentz factor to get delta "proper" Time
542
543 G4double restMass = track.GetDynamicParticle()->GetMass() ;
544 G4double deltaProperTime = deltaTime*( restMass/track.GetTotalEnergy() ) ;
545
546 fParticleChange.ProposeProperTime(track.GetProperTime() + deltaProperTime) ;
547 //fParticleChange.ProposeTrueStepLength( track.GetStepLength() ) ;
548
549 // If the particle is caught looping or is stuck (in very difficult
550 // boundaries) in a magnetic field (doing many steps) THEN can kill it ...
551 //
552 if ( fParticleIsLooping )
553 {
555 fNoLooperTrials ++;
556 auto particleType= track.GetDynamicParticle()->GetParticleDefinition();
557
558 G4bool stable = particleType->GetPDGStable();
559 G4bool candidateForEnd = (endEnergy < fThreshold_Important_Energy)
561 G4bool unstableAndKillable = !stable && ( fAbandonUnstableTrials != 0);
562 G4bool unstableForEnd = (endEnergy < fThreshold_Important_Energy)
564 if( (candidateForEnd && stable) || (unstableAndKillable && unstableForEnd) )
565 {
566 // Kill the looping particle
567 //
569 G4int particlePDG= particleType->GetPDGEncoding();
570 const G4int electronPDG= 11; // G4Electron::G4Electron()->GetPDGEncoding();
571
572 // Simple statistics
573 fSumEnergyKilled += endEnergy;
574 fSumEnerSqKilled = endEnergy * endEnergy;
576
577 if( endEnergy > fMaxEnergyKilled ) {
578 fMaxEnergyKilled = endEnergy;
579 fMaxEnergyKilledPDG = particlePDG;
580 }
581 if( particleType->GetPDGEncoding() != electronPDG )
582 {
583 fSumEnergyKilled_NonElectron += endEnergy;
584 fSumEnerSqKilled_NonElectron += endEnergy * endEnergy;
586
587 if( endEnergy > fMaxEnergyKilled_NonElectron )
588 {
590 fMaxEnergyKilled_NonElecPDG = particlePDG;
591 }
592 }
593
595 {
597 noCallsASDI, __func__ );
598 }
600 }
601 else
602 {
604 if( fNoLooperTrials == 1 ) {
605 fSumEnergySaved += endEnergy;
606 if ( !stable )
607 fSumEnergyUnstableSaved += endEnergy;
608 }
609#ifdef G4VERBOSE
611 {
612 G4cout << " " << __func__
613 << " Particle is looping but is saved ..." << G4endl
614 << " Number of trials = " << fNoLooperTrials << G4endl
615 << " No of calls to = " << noCallsASDI << G4endl;
616 }
617#endif
618 }
619 }
620 else
621 {
623 }
624
625 // Another (sometimes better way) is to use a user-limit maximum Step size
626 // to alleviate this problem ..
627
628 // Introduce smooth curved trajectories to particle-change
629 //
632
633 return &fParticleChange ;
634}
@ fStopAndKill
#define noCallsASDI
double G4double
Definition: G4Types.hh:83
long G4long
Definition: G4Types.hh:87
bool G4bool
Definition: G4Types.hh:86
G4double GetMass() const
const G4ParticleDefinition * GetParticleDefinition() const
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *vec)
virtual void Initialize(const G4Track &)
void SetMomentumChanged(G4bool b)
void ProposePolarization(G4double Px, G4double Py, G4double Pz)
void ProposePosition(G4double x, G4double y, G4double z)
void ProposeLocalTime(G4double t)
void ProposeProperTime(G4double finalProperTime)
void ProposeEnergy(G4double finalEnergy)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
void ProposeGlobalTime(G4double t)
G4bool GetPDGStable() const
std::vector< G4ThreeVector > * GimmeTrajectoryVectorAndForgetIt() const
G4double GetVelocity() const
G4StepPoint * GetPreStepPoint() const
G4double GetGlobalTime() const
G4double GetProperTime() const
G4double GetLocalTime() const
const G4DynamicParticle * GetDynamicParticle() const
G4double GetStepLength() const
G4double GetTotalEnergy() const
void ReportLoopingTrack(const G4Track &track, const G4Step &stepInfo, G4int numTrials, G4long noCalls, const char *methodName) const
G4double fThreshold_Important_Energy
G4double fMaxEnergyKilled_NonElectron
G4ThreeVector fTransportEndSpin
G4double fTransportEndKineticEnergy
unsigned long fNumLoopersKilled_NonElectron
static G4bool fSilenceLooperWarnings
G4ThreeVector fTransportEndPosition
G4double fThreshold_Warning_Energy
G4double fSumEnerSqKilled_NonElectron
G4double fSumEnergyUnstableSaved
G4double fSumEnergyKilled_NonElectron
G4ThreeVector fTransportEndMomentumDir
unsigned long fNumLoopersKilled
G4double fCandidateEndGlobalTime
void ProposeTrackStatus(G4TrackStatus status)
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References fAbandonUnstableTrials, fCandidateEndGlobalTime, fEndGlobalTimeComputed, fFieldPropagator, fMaxEnergyKilled, fMaxEnergyKilled_NonElecPDG, fMaxEnergyKilled_NonElectron, fMaxEnergyKilledPDG, fMaxEnergySaved, fMomentumChanged, fNoLooperTrials, fNumLoopersKilled, fNumLoopersKilled_NonElectron, fParticleChange, fParticleIsLooping, fpLogger, fSilenceLooperWarnings, fStopAndKill, fSumEnergyKilled, fSumEnergyKilled_NonElectron, fSumEnergySaved, fSumEnergyUnstableSaved, fSumEnerSqKilled, fSumEnerSqKilled_NonElectron, fThreshold_Important_Energy, fThreshold_Warning_Energy, fThresholdTrials, fTransportEndKineticEnergy, fTransportEndMomentumDir, fTransportEndPosition, fTransportEndSpin, G4cout, G4endl, G4ThreadLocal, G4Track::GetDynamicParticle(), G4Track::GetGlobalTime(), G4Track::GetLocalTime(), G4DynamicParticle::GetMass(), G4DynamicParticle::GetParticleDefinition(), G4ParticleDefinition::GetPDGStable(), G4Step::GetPreStepPoint(), G4Track::GetProperTime(), G4Track::GetStepLength(), G4Track::GetTotalEnergy(), G4StepPoint::GetVelocity(), G4PropagatorInField::GimmeTrajectoryVectorAndForgetIt(), G4ParticleChangeForTransport::Initialize(), G4INCL::Math::max(), noCallsASDI, G4ParticleChange::ProposeEnergy(), G4ParticleChange::ProposeGlobalTime(), G4ParticleChange::ProposeLocalTime(), G4ParticleChange::ProposeMomentumDirection(), G4ParticleChange::ProposePolarization(), G4ParticleChange::ProposePosition(), G4ParticleChange::ProposeProperTime(), G4VParticleChange::ProposeTrackStatus(), G4TransportationLogger::ReportLoopingTrack(), G4ParticleChangeForTransport::SetMomentumChanged(), G4ParticleChangeForTransport::SetPointerToVectorOfAuxiliaryPoints(), and G4VProcess::verboseLevel.

◆ AlongStepGetPhysicalInteractionLength()

G4double G4Transportation::AlongStepGetPhysicalInteractionLength ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double currentSafety,
G4GPILSelection selection 
)
virtual

Implements G4VProcess.

Definition at line 181 of file G4Transportation.cc.

186{
187 // Initial actions moved to StartTrack()
188 // --------------------------------------
189 // Note: in case another process changes touchable handle
190 // it will be necessary to add here (for all steps)
191 // fCurrentTouchableHandle = aTrack->GetTouchableHandle();
192
193 // GPILSelection is set to defaule value of CandidateForSelection
194 // It is a return value
195 //
196 *selection = CandidateForSelection;
197
198 // Get initial Energy/Momentum of the track
199 //
200 const G4ThreeVector startPosition = track.GetPosition();
201 const G4ThreeVector startMomentumDir = track.GetMomentumDirection();
202
203 // The Step Point safety can be limited by other geometries and/or the
204 // assumptions of any process - it's not always the geometrical safety.
205 // We calculate the starting point's isotropic safety here.
206 {
207 const G4double MagSqShift = (startPosition - fPreviousSftOrigin).mag2();
208
209 if(MagSqShift >= sqr(fPreviousSafety))
210 currentSafety = 0.0;
211 else
212 currentSafety = fPreviousSafety - std::sqrt(MagSqShift);
213 }
214
215 // Is the particle charged or has it a magnetic moment?
216 //
217 const G4DynamicParticle* pParticle = track.GetDynamicParticle();
218
219 const G4double particleMass = pParticle->GetMass();
220 const G4double particleCharge = pParticle->GetCharge();
221 const G4double kineticEnergy = pParticle->GetKineticEnergy();
222
223 const G4double magneticMoment = pParticle->GetMagneticMoment();
224 const G4ThreeVector particleSpin = pParticle->GetPolarization();
225
226 // There is no need to locate the current volume. It is Done elsewhere:
227 // On track construction
228 // By the tracking, after all AlongStepDoIts, in "Relocation"
229
230 // Check if the particle has a force, EM or gravitational, exerted on it
231 //
232
233 G4bool eligibleEM =
234 (particleCharge != 0.0) || ((magneticMoment != 0.0) && fUseMagneticMoment);
235 G4bool eligibleGrav = (particleMass != 0.0) && fUseGravity;
236
237 fFieldExertedForce = false;
238
239 if(eligibleEM || eligibleGrav)
240 {
241 if(G4FieldManager* fieldMgr =
243 {
244 // User can configure the field Manager for this track
245 fieldMgr->ConfigureForTrack(&track);
246 // Called here to allow a transition from no-field pointer
247 // to finite field (non-zero pointer).
248
249 // If the field manager has no field ptr, the field is zero
250 // by definition ( = there is no field ! )
251 if(const G4Field* ptrField = fieldMgr->GetDetectorField())
253 eligibleEM || (eligibleGrav && ptrField->IsGravityActive());
254 }
255 }
256
257 G4double geometryStepLength = currentMinimumStep;
258
259 if(currentMinimumStep == 0.0)
260 {
261 fEndPointDistance = 0.0;
262 // flag step as geometry limited if current safety is also zero
263 fGeometryLimitedStep = (currentSafety == 0.0);
264
265 fMomentumChanged = false;
266 fParticleIsLooping = false;
268 fTransportEndPosition = startPosition;
269 fTransportEndMomentumDir = startMomentumDir;
270 fTransportEndKineticEnergy = kineticEnergy;
271 fTransportEndSpin = particleSpin;
272 }
273 else if(!fFieldExertedForce)
274 {
275 fGeometryLimitedStep = false;
276 if(geometryStepLength > currentSafety || !fShortStepOptimisation)
277 {
278 const G4double linearStepLength = fLinearNavigator->ComputeStep(
279 startPosition, startMomentumDir, currentMinimumStep, currentSafety);
280
281 if(linearStepLength <= currentMinimumStep)
282 {
283 geometryStepLength = linearStepLength;
285 }
286 // Remember last safety origin & value.
287 //
288 fPreviousSftOrigin = startPosition;
289 fPreviousSafety = currentSafety;
290 fpSafetyHelper->SetCurrentSafety(currentSafety, startPosition);
291 }
292
293 fEndPointDistance = geometryStepLength;
294
295 fMomentumChanged = false;
296 fParticleIsLooping = false;
299 startPosition + geometryStepLength * startMomentumDir;
300 fTransportEndMomentumDir = startMomentumDir;
301 fTransportEndKineticEnergy = kineticEnergy;
302 fTransportEndSpin = particleSpin;
303 }
304 else // A field exerts force
305 {
306 const auto pParticleDef = pParticle->GetDefinition();
307 const auto particlePDGSpin = pParticleDef->GetPDGSpin();
308 const auto particlePDGMagM = pParticleDef->GetPDGMagneticMoment();
309
310 auto equationOfMotion = fFieldPropagator->GetCurrentEquationOfMotion();
311
312 // The charge can change (dynamic), therefore the use of G4ChargeState
313 //
314 equationOfMotion->SetChargeMomentumMass(
315 G4ChargeState(particleCharge, magneticMoment, particlePDGSpin),
316 pParticle->GetTotalMomentum(), particleMass);
317
318 G4FieldTrack aFieldTrack(startPosition,
319 track.GetGlobalTime(), // Lab.
320 startMomentumDir, kineticEnergy, particleMass,
321 particleCharge, particleSpin, particlePDGMagM,
322 0.0, // Length along track
323 particlePDGSpin);
324
325 // Do the Transport in the field (non recti-linear)
326 //
327 const G4double lengthAlongCurve = fFieldPropagator->ComputeStep(
328 aFieldTrack, currentMinimumStep, currentSafety, track.GetVolume(),
329 kineticEnergy < fThreshold_Important_Energy);
330
331 if(lengthAlongCurve < geometryStepLength)
332 geometryStepLength = lengthAlongCurve;
333
334 // Remember last safety origin & value.
335 //
336 fPreviousSftOrigin = startPosition;
337 fPreviousSafety = currentSafety;
338 fpSafetyHelper->SetCurrentSafety(currentSafety, startPosition);
339
341 //
342 // It is possible that step was reduced in PropagatorInField due to
343 // previous zero steps. To cope with case that reduced step is taken
344 // in full, we must rely on PiF to obtain this value
345
346 G4bool changesEnergy =
348
349 fMomentumChanged = true;
351
352 fEndGlobalTimeComputed = changesEnergy;
353 fTransportEndPosition = aFieldTrack.GetPosition();
354 fTransportEndMomentumDir = aFieldTrack.GetMomentumDir();
355
356 fEndPointDistance = (fTransportEndPosition - startPosition).mag();
357
358 // Ignore change in energy for fields that conserve energy
359 // This hides the integration error, but gives a better physical answer
361 changesEnergy ? aFieldTrack.GetKineticEnergy() : kineticEnergy;
362 fTransportEndSpin = aFieldTrack.GetSpin();
363
365 {
366 // If the field can change energy, then the time must be integrated
367 // - so this should have been updated
368 //
369 fCandidateEndGlobalTime = aFieldTrack.GetLabTimeOfFlight();
370
371 // was ( fCandidateEndGlobalTime != track.GetGlobalTime() );
372 // a cleaner way is to have FieldTrack knowing whether time is updated.
373 }
374#if defined(G4VERBOSE) || defined(G4DEBUG_TRANSPORT)
375 else
376 {
377 // The energy should be unchanged by field transport,
378 // - so the time changed will be calculated elsewhere
379 //
380 // Check that the integration preserved the energy
381 // - and if not correct this!
382 G4double startEnergy = kineticEnergy;
384
385 static G4ThreadLocal G4int no_inexact_steps = 0, no_large_ediff;
386 G4double absEdiff = std::fabs(startEnergy - endEnergy);
387 if(absEdiff > perMillion * endEnergy)
388 {
389 no_inexact_steps++;
390 // Possible statistics keeping here ...
391 }
392 if(verboseLevel > 1)
393 {
394 if(std::fabs(startEnergy - endEnergy) > perThousand * endEnergy)
395 {
396 static G4ThreadLocal G4int no_warnings = 0, warnModulo = 1,
397 moduloFactor = 10;
398 no_large_ediff++;
399 if((no_large_ediff % warnModulo) == 0)
400 {
401 no_warnings++;
402 std::ostringstream message;
403 message << "Energy change in Step is above 1^-3 relative value. "
404 << G4endl << " Relative change in 'tracking' step = "
405 << std::setw(15) << (endEnergy - startEnergy) / startEnergy
406 << G4endl << " Starting E= " << std::setw(12)
407 << startEnergy / MeV << " MeV " << G4endl
408 << " Ending E= " << std::setw(12) << endEnergy / MeV
409 << " MeV " << G4endl
410 << "Energy has been corrected -- however, review"
411 << " field propagation parameters for accuracy." << G4endl;
412 if((verboseLevel > 2) || (no_warnings < 4) ||
413 (no_large_ediff == warnModulo * moduloFactor))
414 {
415 message << "These include EpsilonStepMax(/Min) in G4FieldManager "
416 << G4endl
417 << "which determine fractional error per step for "
418 "integrated quantities. "
419 << G4endl
420 << "Note also the influence of the permitted number of "
421 "integration steps."
422 << G4endl;
423 }
424 message << "Bad 'endpoint'. Energy change detected and corrected."
425 << G4endl << "Has occurred already " << no_large_ediff
426 << " times.";
427 G4Exception("G4Transportation::AlongStepGetPIL()", "EnergyChange",
428 JustWarning, message);
429 if(no_large_ediff == warnModulo * moduloFactor)
430 {
431 warnModulo *= moduloFactor;
432 }
433 }
434 }
435 } // end of if (verboseLevel)
436 }
437#endif
438 }
439
440 // Update the safety starting from the end-point,
441 // if it will become negative at the end-point.
442 //
443 if(currentSafety < fEndPointDistance)
444 {
445 if(particleCharge != 0.0)
446 {
447 G4double endSafety =
449 currentSafety = endSafety;
451 fPreviousSafety = currentSafety;
453
454 // Because the Stepping Manager assumes it is from the start point,
455 // add the StepLength
456 //
457 currentSafety += fEndPointDistance;
458
459#ifdef G4DEBUG_TRANSPORT
460 G4cout.precision(12);
461 G4cout << "***G4Transportation::AlongStepGPIL ** " << G4endl;
462 G4cout << " Called Navigator->ComputeSafety at " << fTransportEndPosition
463 << " and it returned safety= " << endSafety << G4endl;
464 G4cout << " Adding endpoint distance " << fEndPointDistance
465 << " to obtain pseudo-safety= " << currentSafety << G4endl;
466 }
467 else
468 {
469 G4cout << "***G4Transportation::AlongStepGPIL ** " << G4endl;
470 G4cout << " Avoiding call to ComputeSafety : " << G4endl;
471 G4cout << " charge = " << particleCharge << G4endl;
472 G4cout << " mag moment = " << magneticMoment << G4endl;
473#endif
474 }
475 }
476
478 fLastStepInVolume = false;
479 fNewTrack = false;
480
482 fParticleChange.ProposeTrueStepLength(geometryStepLength);
483
484 return geometryStepLength;
485}
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
@ CandidateForSelection
static constexpr double perMillion
Definition: G4SIunits.hh:327
static constexpr double MeV
Definition: G4SIunits.hh:200
static constexpr double perThousand
Definition: G4SIunits.hh:326
G4double GetCharge() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetMagneticMoment() const
G4double GetTotalMomentum() const
const G4ThreeVector & GetPolarization() const
virtual void SetChargeMomentumMass(G4ChargeState particleCharge, G4double MomentumXc, G4double MassXc2)=0
G4bool DoesFieldChangeEnergy() const
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
virtual G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
Definition: G4Navigator.cc:770
G4FieldManager * FindAndSetFieldManager(G4VPhysicalVolume *pCurrentPhysVol)
G4FieldManager * GetCurrentFieldManager()
G4bool IsLastStepInVolume()
G4bool IsParticleLooping() const
G4EquationOfMotion * GetCurrentEquationOfMotion()
G4double ComputeStep(G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4double &pNewSafety, G4VPhysicalVolume *pPhysVol=nullptr, G4bool canRelaxDeltaChord=false)
void SetCurrentSafety(G4double val, const G4ThreeVector &pos)
G4VPhysicalVolume * GetVolume() const
const G4ThreeVector & GetPosition() const
const G4ThreeVector & GetMomentumDirection() const
static G4bool fUseGravity
static G4bool fUseMagneticMoment
void ProposeFirstStepInVolume(G4bool flag)
void ProposeTrueStepLength(G4double truePathLength)
T sqr(const T &x)
Definition: templates.hh:128

References CandidateForSelection, G4Navigator::ComputeSafety(), G4Navigator::ComputeStep(), G4PropagatorInField::ComputeStep(), G4FieldManager::DoesFieldChangeEnergy(), fCandidateEndGlobalTime, fEndGlobalTimeComputed, fEndPointDistance, fFieldExertedForce, fFieldPropagator, fFirstStepInVolume, fGeometryLimitedStep, G4PropagatorInField::FindAndSetFieldManager(), fLastStepInVolume, fLinearNavigator, fMomentumChanged, fNewTrack, fParticleChange, fParticleIsLooping, fPreviousSafety, fPreviousSftOrigin, fpSafetyHelper, fShortStepOptimisation, fThreshold_Important_Energy, fTransportEndKineticEnergy, fTransportEndMomentumDir, fTransportEndPosition, fTransportEndSpin, fUseGravity, fUseMagneticMoment, G4cout, G4endl, G4Exception(), G4ThreadLocal, G4DynamicParticle::GetCharge(), G4PropagatorInField::GetCurrentEquationOfMotion(), G4PropagatorInField::GetCurrentFieldManager(), G4DynamicParticle::GetDefinition(), G4Track::GetDynamicParticle(), G4Track::GetGlobalTime(), G4FieldTrack::GetKineticEnergy(), G4DynamicParticle::GetKineticEnergy(), G4FieldTrack::GetLabTimeOfFlight(), G4DynamicParticle::GetMagneticMoment(), G4DynamicParticle::GetMass(), G4FieldTrack::GetMomentumDir(), G4Track::GetMomentumDirection(), G4ParticleDefinition::GetPDGSpin(), G4DynamicParticle::GetPolarization(), G4FieldTrack::GetPosition(), G4Track::GetPosition(), G4FieldTrack::GetSpin(), G4DynamicParticle::GetTotalMomentum(), G4Track::GetVolume(), G4PropagatorInField::IsLastStepInVolume(), G4PropagatorInField::IsParticleLooping(), JustWarning, MeV, perMillion, perThousand, G4VParticleChange::ProposeFirstStepInVolume(), G4VParticleChange::ProposeTrueStepLength(), G4EquationOfMotion::SetChargeMomentumMass(), G4SafetyHelper::SetCurrentSafety(), sqr(), and G4VProcess::verboseLevel.

◆ AlongStepGPIL()

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

Definition at line 461 of file G4VProcess.hh.

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

References G4VProcess::AlongStepGetPhysicalInteractionLength().

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

◆ AtRestDoIt()

G4VParticleChange * G4Transportation::AtRestDoIt ( const G4Track ,
const G4Step  
)
inlinevirtual

Implements G4VProcess.

Definition at line 147 of file G4Transportation.hh.

148 { return 0; } // No operation in AtRestDoIt

◆ AtRestGetPhysicalInteractionLength()

G4double G4Transportation::AtRestGetPhysicalInteractionLength ( const G4Track ,
G4ForceCondition  
)
inlinevirtual

Implements G4VProcess.

Definition at line 143 of file G4Transportation.hh.

145 { return -1.0; } // No operation in AtRestGPIL

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

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

◆ ClearNumberOfInteractionLengthLeft()

void G4VProcess::ClearNumberOfInteractionLengthLeft ( )
inlineprotectedinherited

◆ DoesAnyFieldExist()

G4bool G4Transportation::DoesAnyFieldExist ( )
protected

Referenced by G4Transportation(), and StartTracking().

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

◆ EnableGravity()

G4bool G4Transportation::EnableGravity ( G4bool  useGravity = true)
static

Definition at line 830 of file G4Transportation.cc.

831{
832 G4bool lastValue= fUseGravity;
833 fUseGravity= useGravity;
835 return lastValue;
836}

References G4CoupledTransportation::fUseGravity, and fUseGravity.

◆ EnableMagneticMoment()

G4bool G4Transportation::EnableMagneticMoment ( G4bool  useMoment = true)
static

Definition at line 819 of file G4Transportation.cc.

820{
821 G4bool lastValue= fUseMagneticMoment;
822 fUseMagneticMoment= useMoment;
824 return lastValue;
825}

References G4CoupledTransportation::fUseMagneticMoment, and fUseMagneticMoment.

Referenced by EnableUseMagneticMoment().

◆ EnableShortStepOptimisation()

void G4Transportation::EnableShortStepOptimisation ( G4bool  optimise = true)
inline

◆ EnableUseMagneticMoment()

static G4bool G4Transportation::EnableUseMagneticMoment ( G4bool  useMoment = true)
inlinestatic

Definition at line 138 of file G4Transportation.hh.

139 { return EnableMagneticMoment(useMoment); } // Old name - will be deprecated
static G4bool EnableMagneticMoment(G4bool useMoment=true)

References EnableMagneticMoment().

◆ EndTracking()

void G4VProcess::EndTracking ( )
virtualinherited

◆ FieldExertedForce()

G4bool G4Transportation::FieldExertedForce ( )
inline

Definition at line 96 of file G4Transportation.hh.

96{ return fFieldExertedForce; }

References fFieldExertedForce.

◆ GetCurrentInteractionLength()

G4double G4VProcess::GetCurrentInteractionLength ( ) const
inlineinherited

◆ GetMasterProcess()

const G4VProcess * G4VProcess::GetMasterProcess ( ) const
inlineinherited

◆ GetMaxEnergyKilled()

G4double G4Transportation::GetMaxEnergyKilled ( ) const
inline

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

◆ GetPropagatorInField()

G4PropagatorInField * G4Transportation::GetPropagatorInField ( )

◆ GetSilenceLooperWarnings()

G4bool G4Transportation::GetSilenceLooperWarnings ( )
static

Definition at line 850 of file G4Transportation.cc.

851{
853}

References fSilenceLooperWarnings.

◆ GetSumEnergyKilled()

G4double G4Transportation::GetSumEnergyKilled ( ) const
inline

◆ GetThresholdImportantEnergy()

G4double G4Transportation::GetThresholdImportantEnergy ( ) const
inline

◆ GetThresholdTrials()

G4int G4Transportation::GetThresholdTrials ( ) const
inline

◆ GetThresholdWarningEnergy()

G4double G4Transportation::GetThresholdWarningEnergy ( ) const
inline

◆ GetTotalNumberOfInteractionLengthTraversed()

G4double G4VProcess::GetTotalNumberOfInteractionLengthTraversed ( ) const
inlineinherited

◆ GetVerboseLevel()

G4int G4VProcess::GetVerboseLevel ( ) const
inlineinherited

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

virtual G4bool G4VProcess::IsApplicable ( const G4ParticleDefinition )
inlinevirtualinherited

Reimplemented in G4DNAAttachment, G4DNAChargeDecrease, G4DNAChargeIncrease, G4DNADissociation, G4DNAElastic, G4DNAElectronSolvation, G4DNAExcitation, G4DNAIonisation, G4DNAPlasmonExcitation, G4DNAPositronium, G4DNARotExcitation, G4DNAVibExcitation, G4hImpactIonisation, G4RadioactiveDecay, G4HadronicAbsorptionBertini, G4HadronicAbsorptionFritiof, G4HadronicAbsorptionFritiofWithBinaryCascade, G4HadronStoppingProcess, G4MuonicAtomDecay, G4MuonMinusAtomicCapture, G4MuonMinusCapture, G4WrapperProcess, G4PhononDownconversion, G4NeutronKiller, G4ComptonScattering, G4GammaConversion, G4PhotoElectricEffect, G4GammaGeneralProcess, G4Decay, G4UnknownDecay, G4AdjointProcessEquivalentToDirectProcess, G4DNAElectronHoleRecombination, G4DNAMolecularDissociation, G4AnnihiToMuPair, G4GammaConversionToMuons, G4JAEAElasticScattering, G4LowECapture, G4MicroElecElastic, G4MicroElecInelastic, G4MicroElecLOPhononScattering, G4RayleighScattering, G4PolarizedCompton, G4PolarizedGammaConversion, G4PolarizedPhotoElectric, G4SynchrotronRadiation, G4SynchrotronRadiationInMat, G4VXTRenergyLoss, G4HadronInelasticProcess, G4NoProcess, G4ChargeExchangeProcess, G4MuonNuclearProcess, G4UCNAbsorption, G4UCNBoundaryProcess, G4UCNLoss, G4UCNMultiScattering, G4NeutronCaptureProcess, G4MicroElecSurface, G4ErrorEnergyLoss, G4Cerenkov, G4Scintillation, G4TransitionRadiation, G4VTransitionRadiation, G4OpAbsorption, G4OpBoundaryProcess, G4OpMieHG, G4OpRayleigh, G4OpWLS, G4OpWLS2, G4Channeling, G4VPhononProcess, G4NeutronFissionProcess, G4CoulombScattering, G4eBremsstrahlung, G4eIonisation, G4eMultipleScattering, G4eplusAnnihilation, G4hMultipleScattering, G4ionIonisation, G4NuclearStopping, G4AdjointhMultipleScattering, G4eAdjointMultipleScattering, G4eeToHadrons, G4hBremsstrahlung, G4hhIonisation, G4hPairProduction, G4mplIonisation, G4ePairProduction, G4MuBremsstrahlung, G4MuIonisation, G4MuMultipleScattering, G4MuPairProduction, G4PolarizedIonisation, G4hIonisation, G4VEmProcess, and G4BiasingProcessInterface.

Definition at line 182 of file G4VProcess.hh.

182{ return true; }

Referenced by G4ProcessManager::AddProcess(), export_G4VProcess(), G4WrapperProcess::IsApplicable(), G4AdjointProcessEquivalentToDirectProcess::IsApplicable(), and G4BiasingProcessInterface::IsApplicable().

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

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

Definition at line 155 of file G4VProcess.cc.

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

◆ PostStepDoIt()

G4VParticleChange * G4Transportation::PostStepDoIt ( const G4Track track,
const G4Step stepData 
)
virtual

Implements G4VProcess.

Definition at line 655 of file G4Transportation.cc.

657{
658 G4TouchableHandle retCurrentTouchable ; // The one to return
659 G4bool isLastStep= false;
660
661 // Initialize ParticleChange (by setting all its members equal
662 // to corresponding members in G4Track)
663 // fParticleChange.Initialize(track) ; // To initialise TouchableChange
664
666
667 // If the Step was determined by the volume boundary,
668 // logically relocate the particle
669
671 {
672 // fCurrentTouchable will now become the previous touchable,
673 // and what was the previous will be freed.
674 // (Needed because the preStepPoint can point to the previous touchable)
675
678 LocateGlobalPointAndUpdateTouchableHandle( track.GetPosition(),
679 track.GetMomentumDirection(),
681 true ) ;
682 // Check whether the particle is out of the world volume
683 // If so it has exited and must be killed.
684 //
686 {
688 }
689 retCurrentTouchable = fCurrentTouchableHandle ;
691
692 // Update the Step flag which identifies the Last Step in a volume
693 if( !fFieldExertedForce )
694 isLastStep = fLinearNavigator->ExitedMotherVolume()
696 else
697 isLastStep = fFieldPropagator->IsLastStepInVolume();
698 }
699 else // fGeometryLimitedStep is false
700 {
701 // This serves only to move the Navigator's location
702 //
704
705 // The value of the track's current Touchable is retained.
706 // (and it must be correct because we must use it below to
707 // overwrite the (unset) one in particle change)
708 // It must be fCurrentTouchable too ??
709 //
711 retCurrentTouchable = track.GetTouchableHandle() ;
712
713 isLastStep= false;
714 } // endif ( fGeometryLimitedStep )
715 fLastStepInVolume= isLastStep;
716
719
720 const G4VPhysicalVolume* pNewVol = retCurrentTouchable->GetVolume() ;
721 const G4Material* pNewMaterial = 0 ;
722 const G4VSensitiveDetector* pNewSensitiveDetector = 0 ;
723
724 if( pNewVol != 0 )
725 {
726 pNewMaterial= pNewVol->GetLogicalVolume()->GetMaterial();
727 pNewSensitiveDetector= pNewVol->GetLogicalVolume()->GetSensitiveDetector();
728 }
729
732
733 const G4MaterialCutsCouple* pNewMaterialCutsCouple = 0;
734 if( pNewVol != 0 )
735 {
736 pNewMaterialCutsCouple=pNewVol->GetLogicalVolume()->GetMaterialCutsCouple();
737 }
738
739 if ( pNewVol!=0 && pNewMaterialCutsCouple!=0
740 && pNewMaterialCutsCouple->GetMaterial()!=pNewMaterial )
741 {
742 // for parametrized volume
743 //
744 pNewMaterialCutsCouple =
746 ->GetMaterialCutsCouple(pNewMaterial,
747 pNewMaterialCutsCouple->GetProductionCuts());
748 }
749 fParticleChange.SetMaterialCutsCoupleInTouchable( pNewMaterialCutsCouple );
750
751 // temporarily until Get/Set Material of ParticleChange,
752 // and StepPoint can be made const.
753 // Set the touchable in ParticleChange
754 // this must always be done because the particle change always
755 // uses this value to overwrite the current touchable pointer.
756 //
757 fParticleChange.SetTouchableHandle(retCurrentTouchable) ;
758
759 return &fParticleChange ;
760}
G4VSensitiveDetector * GetSensitiveDetector() const
G4Material * GetMaterial() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
const G4Material * GetMaterial() const
G4ProductionCuts * GetProductionCuts() const
void SetGeometricallyLimitedStep()
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
Definition: G4Navigator.cc:614
G4bool EnteredDaughterVolume() const
G4bool ExitedMotherVolume() const
void SetMaterialInTouchable(G4Material *fMaterial)
void SetTouchableHandle(const G4TouchableHandle &fTouchable)
void SetMaterialCutsCoupleInTouchable(const G4MaterialCutsCouple *fMaterialCutsCouple)
void SetSensitiveDetectorInTouchable(G4VSensitiveDetector *fSensitiveDetector)
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
static G4ProductionCutsTable * GetProductionCutsTable()
G4TrackStatus GetTrackStatus() const
const G4TouchableHandle & GetTouchableHandle() const
void ProposeLastStepInVolume(G4bool flag)
G4LogicalVolume * GetLogicalVolume() const
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
Definition: G4VTouchable.cc:34

References G4Navigator::EnteredDaughterVolume(), G4Navigator::ExitedMotherVolume(), fCurrentTouchableHandle, fFieldExertedForce, fFieldPropagator, fFirstStepInVolume, fGeometryLimitedStep, fLastStepInVolume, fLinearNavigator, fParticleChange, fStopAndKill, G4VPhysicalVolume::GetLogicalVolume(), G4LogicalVolume::GetMaterial(), G4MaterialCutsCouple::GetMaterial(), G4LogicalVolume::GetMaterialCutsCouple(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4Track::GetMomentumDirection(), G4Track::GetPosition(), G4MaterialCutsCouple::GetProductionCuts(), G4ProductionCutsTable::GetProductionCutsTable(), G4LogicalVolume::GetSensitiveDetector(), G4Track::GetTouchableHandle(), G4Track::GetTrackStatus(), G4VTouchable::GetVolume(), G4PropagatorInField::IsLastStepInVolume(), G4Navigator::LocateGlobalPointWithinVolume(), G4VParticleChange::ProposeFirstStepInVolume(), G4VParticleChange::ProposeLastStepInVolume(), G4VParticleChange::ProposeTrackStatus(), G4Navigator::SetGeometricallyLimitedStep(), G4ParticleChangeForTransport::SetMaterialCutsCoupleInTouchable(), G4ParticleChangeForTransport::SetMaterialInTouchable(), G4ParticleChangeForTransport::SetSensitiveDetectorInTouchable(), and G4ParticleChangeForTransport::SetTouchableHandle().

◆ PostStepGetPhysicalInteractionLength()

G4double G4Transportation::PostStepGetPhysicalInteractionLength ( const G4Track ,
G4double  previousStepSize,
G4ForceCondition pForceCond 
)
virtual

Implements G4VProcess.

Definition at line 642 of file G4Transportation.cc.

646{
647 fFieldExertedForce = false; // Not known
648 *pForceCond = Forced ;
649 return DBL_MAX ; // was kInfinity ; but convention now is DBL_MAX
650}
@ Forced
#define DBL_MAX
Definition: templates.hh:62

References DBL_MAX, fFieldExertedForce, and Forced.

◆ PostStepGPIL()

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

Definition at line 479 of file G4VProcess.hh.

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

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

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

◆ PreparePhysicsTable()

virtual void G4VProcess::PreparePhysicsTable ( const G4ParticleDefinition )
inlinevirtualinherited

◆ PrepareWorkerPhysicsTable()

void G4VProcess::PrepareWorkerPhysicsTable ( const G4ParticleDefinition part)
virtualinherited

Reimplemented in G4BiasingProcessInterface.

Definition at line 206 of file G4VProcess.cc.

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

References G4VProcess::PreparePhysicsTable().

Referenced by G4BiasingProcessInterface::PrepareWorkerPhysicsTable().

◆ PrintStatistics()

void G4Transportation::PrintStatistics ( std::ostream &  outStr) const

Definition at line 139 of file G4Transportation.cc.

140{
141 outStr << " G4Transportation: Statistics for looping particles " << G4endl;
142 if( fSumEnergyKilled > 0.0 || fNumLoopersKilled > 0 )
143 {
144 outStr << " Sum of energy of looping tracks killed: "
145 << fSumEnergyKilled / CLHEP::MeV << " MeV "
146 << " from " << fNumLoopersKilled << " tracks " << G4endl
147 << " Sum of energy of non-electrons : "
149 << " from " << fNumLoopersKilled_NonElectron << " tracks "
150 << G4endl;
151 outStr << " Max energy of *any type* looper killed: " << fMaxEnergyKilled
152 << " its PDG was " << fMaxEnergyKilledPDG << G4endl;
154 {
155 outStr << " Max energy of non-electron looper killed: "
157 << " its PDG was " << fMaxEnergyKilled_NonElecPDG << G4endl;
158 }
159 if( fMaxEnergySaved > 0.0 )
160 {
161 outStr << " Max energy of loopers 'saved': " << fMaxEnergySaved << G4endl;
162 outStr << " Sum of energy of loopers 'saved': "
164 outStr << " Sum of energy of unstable loopers 'saved': "
166 }
167 }
168 else
169 {
170 outStr << " No looping tracks found or killed. " << G4endl;
171 }
172}
static constexpr double MeV

References fMaxEnergyKilled, fMaxEnergyKilled_NonElecPDG, fMaxEnergyKilled_NonElectron, fMaxEnergyKilledPDG, fMaxEnergySaved, fNumLoopersKilled, fNumLoopersKilled_NonElectron, fSumEnergyKilled, fSumEnergyKilled_NonElectron, fSumEnergySaved, fSumEnergyUnstableSaved, G4endl, and CLHEP::MeV.

Referenced by ~G4Transportation().

◆ ProcessDescription()

void G4Transportation::ProcessDescription ( std::ostream &  outFile) const
virtual

Reimplemented from G4VProcess.

Definition at line 909 of file G4Transportation.cc.

913{
914 G4String indent = " "; // : "");
915 G4int oldPrec= outStr.precision(6);
916 // outStr << std::setprecision(6);
917 outStr << G4endl << indent << GetProcessName() << ": ";
918
919 outStr << " Parameters for looping particles: " << G4endl
920 << " warning-E = " << fThreshold_Warning_Energy / CLHEP::MeV << " MeV " << G4endl
921 << " important E = " << fThreshold_Important_Energy / CLHEP::MeV << " MeV " << G4endl
922 << " thresholdTrials " << fThresholdTrials << G4endl;
923 outStr.precision(oldPrec);
924}
const G4String & GetProcessName() const
Definition: G4VProcess.hh:382

References G4endl, and CLHEP::MeV.

◆ PushThresholdsToLogger()

void G4Transportation::PushThresholdsToLogger ( )

◆ ReportLooperThresholds()

void G4Transportation::ReportLooperThresholds ( )

Definition at line 901 of file G4Transportation.cc.

902{
903 PushThresholdsToLogger(); // To be absolutely certain they are in sync
904 fpLogger->ReportLooperThresholds("G4Transportation");
905}
void ReportLooperThresholds(const char *className)

References fpLogger, PushThresholdsToLogger(), and G4TransportationLogger::ReportLooperThresholds().

Referenced by SetHighLooperThresholds(), and SetLowLooperThresholds().

◆ ReportMissingLogger()

void G4Transportation::ReportMissingLogger ( const char *  methodName)
protected

Definition at line 890 of file G4Transportation.cc.

891{
892 const char* message= "Logger object missing from G4Transportation object";
893 G4String classAndMethod= G4String("G4Transportation") + G4String( methodName );
894 G4Exception(classAndMethod, "Missing Logger", JustWarning, message);
895}

References G4Exception(), and JustWarning.

◆ ResetKilledStatistics()

void G4Transportation::ResetKilledStatistics ( G4int  report = 1)
inline

◆ ResetNumberOfInteractionLengthLeft()

void G4VProcess::ResetNumberOfInteractionLengthLeft ( )
virtualinherited

Reimplemented in G4BiasingProcessInterface, G4VITProcess, G4WrapperProcess, and G4AdjointProcessEquivalentToDirectProcess.

Definition at line 80 of file G4VProcess.cc.

81{
84}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
#define G4UniformRand()
Definition: Randomize.hh:52

References G4Log(), G4UniformRand, G4VProcess::theInitialNumberOfInteractionLength, and G4VProcess::theNumberOfInteractionLengthLeft.

Referenced by G4MuonicAtomDecay::AtRestGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4BiasingProcessInterface::InvokeWrappedProcessPostStepGPIL(), G4BiasingProcessInterface::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4BiasingProcessInterface::ResetNumberOfInteractionLengthLeft(), G4WrapperProcess::ResetNumberOfInteractionLengthLeft(), G4AdjointProcessEquivalentToDirectProcess::ResetNumberOfInteractionLengthLeft(), and G4Decay::StartTracking().

◆ RetrievePhysicsTable()

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

◆ SetHighLooperThresholds()

void G4Transportation::SetHighLooperThresholds ( )

Definition at line 858 of file G4Transportation.cc.

859{
860 // Restores the old high values -- potentially appropriate for energy-frontier
861 // HEP experiments.
862 // Caution: All tracks with E < 100 MeV that are found to loop are
863 SetThresholdWarningEnergy( 100.0 * CLHEP::MeV ); // Warn above this energy
864 SetThresholdImportantEnergy( 250.0 * CLHEP::MeV ); // Extra trial above this En
865
866 G4int maxTrials = 10;
867 SetThresholdTrials( maxTrials );
868
869 PushThresholdsToLogger(); // Again, to be sure
871}
void SetThresholdImportantEnergy(G4double newEnImp)
void SetThresholdTrials(G4int newMaxTrials)
void SetThresholdWarningEnergy(G4double newEnWarn)

References CLHEP::MeV, PushThresholdsToLogger(), ReportLooperThresholds(), SetThresholdImportantEnergy(), SetThresholdTrials(), SetThresholdWarningEnergy(), and G4VProcess::verboseLevel.

Referenced by G4Transportation().

◆ SetLowLooperThresholds()

void G4Transportation::SetLowLooperThresholds ( )

Definition at line 874 of file G4Transportation.cc.

875{
876 // These values were the default in Geant4 10.5 - beta
877 SetThresholdWarningEnergy( 1.0 * CLHEP::keV ); // Warn above this En
878 SetThresholdImportantEnergy( 1.0 * CLHEP::MeV ); // Extra trials above it
879
880 G4int maxTrials = 30; // A new value - was 10
881 SetThresholdTrials( maxTrials );
882
883 PushThresholdsToLogger(); // Again, to be sure
885}
static constexpr double keV

References CLHEP::keV, CLHEP::MeV, PushThresholdsToLogger(), ReportLooperThresholds(), SetThresholdImportantEnergy(), SetThresholdTrials(), SetThresholdWarningEnergy(), and G4VProcess::verboseLevel.

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

◆ SetPropagatorInField()

void G4Transportation::SetPropagatorInField ( G4PropagatorInField pFieldPropagator)

◆ SetSilenceLooperWarnings()

void G4Transportation::SetSilenceLooperWarnings ( G4bool  val)
static

Definition at line 842 of file G4Transportation.cc.

843{
844 fSilenceLooperWarnings= val; // Flag to *Supress* all 'looper' warnings
845 // G4CoupledTransportation::fSilenceLooperWarnings= val;
846}

References fSilenceLooperWarnings.

◆ SetThresholdImportantEnergy()

void G4Transportation::SetThresholdImportantEnergy ( G4double  newEnImp)
inline

◆ SetThresholdTrials()

void G4Transportation::SetThresholdTrials ( G4int  newMaxTrials)
inline

◆ SetThresholdWarningEnergy()

void G4Transportation::SetThresholdWarningEnergy ( G4double  newEnWarn)
inline

◆ SetVerboseLevel()

void G4VProcess::SetVerboseLevel ( G4int  value)
inlineinherited

◆ StartTracking()

void G4Transportation::StartTracking ( G4Track aTrack)
virtual

Reimplemented from G4VProcess.

Definition at line 769 of file G4Transportation.cc.

770{
772 fNewTrack= true;
773 fFirstStepInVolume= true;
774 fLastStepInVolume= false;
775
776 // The actions here are those that were taken in AlongStepGPIL
777 // when track.GetCurrentStepNumber()==1
778
779 // Whether field exists should be determined at run level -- TODO
781
782 // reset safety value and center
783 //
784 fPreviousSafety = 0.0 ;
786
787 // reset looping counter -- for motion in field
788 fNoLooperTrials= 0;
789 // Must clear this state .. else it depends on last track's value
790 // --> a better solution would set this from state of suspended track TODO ?
791 // Was if( aTrack->GetCurrentStepNumber()==1 ) { .. }
792
793 // ChordFinder reset internal state
794 //
796 {
798 // Resets all state of field propagator class (ONLY) including safety
799 // values (in case of overlaps and to wipe for first track).
800 }
801
802 // Make sure to clear the chord finders of all fields (i.e. managers)
803 //
805 fieldMgrStore->ClearAllChordFindersState();
806
807 // Update the current touchable handle (from the track's)
808 //
810
811 // Inform field propagator of new track
812 //
814}
CLHEP::Hep3Vector G4ThreeVector
static G4FieldManagerStore * GetInstance()
virtual void StartTracking(G4Track *)
Definition: G4VProcess.cc:87

References G4FieldManagerStore::ClearAllChordFindersState(), G4PropagatorInField::ClearPropagatorState(), DoesAnyFieldExist(), fAnyFieldExists, fCurrentTouchableHandle, fFieldPropagator, fFirstStepInVolume, fLastStepInVolume, fNewTrack, fNoLooperTrials, fPreviousSafety, fPreviousSftOrigin, G4FieldManagerStore::GetInstance(), G4Track::GetTouchableHandle(), G4PropagatorInField::PrepareNewTrack(), and G4VProcess::StartTracking().

◆ StorePhysicsTable()

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

◆ SubtractNumberOfInteractionLengthLeft()

void G4VProcess::SubtractNumberOfInteractionLengthLeft ( G4double  prevStepSize)
inlineprotectedinherited

Definition at line 524 of file G4VProcess.hh.

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

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

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

Friends And Related Function Documentation

◆ G4CoupledTransportation

friend class G4CoupledTransportation
friend

Definition at line 240 of file G4Transportation.hh.

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

◆ fAbandonUnstableTrials

G4int G4Transportation::fAbandonUnstableTrials = 0
private

Definition at line 209 of file G4Transportation.hh.

Referenced by AlongStepDoIt().

◆ fAnyFieldExists

G4bool G4Transportation::fAnyFieldExists = false
private

Definition at line 179 of file G4Transportation.hh.

Referenced by G4Transportation(), and StartTracking().

◆ fCandidateEndGlobalTime

G4double G4Transportation::fCandidateEndGlobalTime = 0.0
private

Definition at line 176 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fCurrentTouchableHandle

G4TouchableHandle G4Transportation::fCurrentTouchableHandle
private

Definition at line 191 of file G4Transportation.hh.

Referenced by G4Transportation(), PostStepDoIt(), and StartTracking().

◆ fEndGlobalTimeComputed

G4bool G4Transportation::fEndGlobalTimeComputed = false
private

Definition at line 175 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fEndPointDistance

G4double G4Transportation::fEndPointDistance
private

Definition at line 200 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength().

◆ fFieldExertedForce

G4bool G4Transportation::fFieldExertedForce = false
private

◆ fFieldPropagator

G4PropagatorInField* G4Transportation::fFieldPropagator
private

◆ fFirstStepInVolume

G4bool G4Transportation::fFirstStepInVolume = true
private

◆ fGeometryLimitedStep

G4bool G4Transportation::fGeometryLimitedStep = true
private

Definition at line 186 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength(), and PostStepDoIt().

◆ fLastStepInVolume

G4bool G4Transportation::fLastStepInVolume = false
private

◆ fLinearNavigator

G4Navigator* G4Transportation::fLinearNavigator
private

◆ fMaxEnergyKilled

G4double G4Transportation::fMaxEnergyKilled = -1.0
private

Definition at line 219 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fMaxEnergyKilled_NonElecPDG

G4int G4Transportation::fMaxEnergyKilled_NonElecPDG = 0
private

Definition at line 225 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fMaxEnergyKilled_NonElectron

G4double G4Transportation::fMaxEnergyKilled_NonElectron = -1.0
private

Definition at line 224 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fMaxEnergyKilledPDG

G4int G4Transportation::fMaxEnergyKilledPDG = 0
private

Definition at line 220 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fMaxEnergySaved

G4double G4Transportation::fMaxEnergySaved = -1.0
private

Definition at line 228 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fMomentumChanged

G4bool G4Transportation::fMomentumChanged = true
private

Definition at line 174 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fNewTrack

G4bool G4Transportation::fNewTrack = true
private

Definition at line 182 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength(), and StartTracking().

◆ fNoLooperTrials

G4int G4Transportation::fNoLooperTrials = 0
private

Definition at line 213 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and StartTracking().

◆ fNumLoopersKilled

unsigned long G4Transportation::fNumLoopersKilled = 0
private

Definition at line 221 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fNumLoopersKilled_NonElectron

unsigned long G4Transportation::fNumLoopersKilled_NonElectron = 0
private

Definition at line 226 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fParticleChange

G4ParticleChangeForTransport G4Transportation::fParticleChange
private

◆ fParticleIsLooping

G4bool G4Transportation::fParticleIsLooping = false
private

Definition at line 181 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fpLogger

G4TransportationLogger* G4Transportation::fpLogger
private

◆ fPreviousSafety

G4double G4Transportation::fPreviousSafety
private

Definition at line 194 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength(), and StartTracking().

◆ fPreviousSftOrigin

G4ThreeVector G4Transportation::fPreviousSftOrigin
private

Definition at line 193 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength(), and StartTracking().

◆ fProcessTable

G4ProcessTable* G4VProcess::fProcessTable = nullptr
privateinherited

Definition at line 374 of file G4VProcess.hh.

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

◆ fpSafetyHelper

G4SafetyHelper* G4Transportation::fpSafetyHelper
private

Definition at line 235 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength(), and G4Transportation().

◆ fShortStepOptimisation

G4bool G4Transportation::fShortStepOptimisation
private

Definition at line 233 of file G4Transportation.hh.

Referenced by AlongStepGetPhysicalInteractionLength(), and G4Transportation().

◆ fSilenceLooperWarnings

G4bool G4Transportation::fSilenceLooperWarnings = false
staticprivate

◆ fSumEnergyKilled

G4double G4Transportation::fSumEnergyKilled = 0.0
private

Definition at line 217 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), PrintStatistics(), and ~G4Transportation().

◆ fSumEnergyKilled_NonElectron

G4double G4Transportation::fSumEnergyKilled_NonElectron = 0.0
private

Definition at line 222 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fSumEnergySaved

G4double G4Transportation::fSumEnergySaved = 0.0
private

Definition at line 227 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fSumEnergyUnstableSaved

G4double G4Transportation::fSumEnergyUnstableSaved = 0.0
private

Definition at line 229 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and PrintStatistics().

◆ fSumEnerSqKilled

G4double G4Transportation::fSumEnerSqKilled = 0.0
private

Definition at line 218 of file G4Transportation.hh.

Referenced by AlongStepDoIt().

◆ fSumEnerSqKilled_NonElectron

G4double G4Transportation::fSumEnerSqKilled_NonElectron = 0.0
private

Definition at line 223 of file G4Transportation.hh.

Referenced by AlongStepDoIt().

◆ fThreshold_Important_Energy

G4double G4Transportation::fThreshold_Important_Energy = 1.0 * CLHEP::MeV
private

Definition at line 205 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fThreshold_Warning_Energy

G4double G4Transportation::fThreshold_Warning_Energy = 1.0 * CLHEP::keV
private

Definition at line 204 of file G4Transportation.hh.

Referenced by AlongStepDoIt().

◆ fThresholdTrials

G4int G4Transportation::fThresholdTrials = 10
private

Definition at line 206 of file G4Transportation.hh.

Referenced by AlongStepDoIt().

◆ fTransportEndKineticEnergy

G4double G4Transportation::fTransportEndKineticEnergy = 0.0
private

Definition at line 172 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fTransportEndMomentumDir

G4ThreeVector G4Transportation::fTransportEndMomentumDir = G4ThreeVector( 0.0, 0.0, 0.0 )
private

Definition at line 171 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fTransportEndPosition

G4ThreeVector G4Transportation::fTransportEndPosition = G4ThreeVector( 0.0, 0.0, 0.0 )
private

Definition at line 170 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fTransportEndSpin

G4ThreeVector G4Transportation::fTransportEndSpin = G4ThreeVector( 0.0, 0.0, 0.0 )
private

Definition at line 173 of file G4Transportation.hh.

Referenced by AlongStepDoIt(), and AlongStepGetPhysicalInteractionLength().

◆ fUseGravity

G4bool G4Transportation::fUseGravity = false
staticprivate

◆ fUseMagneticMoment

G4bool G4Transportation::fUseMagneticMoment =false
staticprivate

◆ 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(), 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(), AlongStepDoIt(), G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength(), G4VRestContinuousProcess::AlongStepGetPhysicalInteractionLength(), G4CoupledTransportation::AlongStepGetPhysicalInteractionLength(), 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::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(), 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(), G4OpBoundaryProcess::PostStepDoIt(), G4OpMieHG::PostStepDoIt(), G4OpRayleigh::PostStepDoIt(), G4OpWLS::PostStepDoIt(), G4OpWLS2::PostStepDoIt(), G4CoupledTransportation::PostStepDoIt(), G4VITDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNASecondOrderReaction::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4DNAScavengerProcess::PostStepGetPhysicalInteractionLength(), G4PolarizedAnnihilation::PostStepGetPhysicalInteractionLength(), G4PolarizedCompton::PostStepGetPhysicalInteractionLength(), G4PolarizedIonisation::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4GammaGeneralProcess::PreparePhysicsTable(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4hImpactIonisation::ProtonParametrisedDEDX(), G4UCNBoundaryProcess::Reflect(), G4CoupledTransportation::ReportInexactEnergy(), G4CoupledTransportation::ReportMissingLogger(), G4GammaGeneralProcess::RetrievePhysicsTable(), G4VEmProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrievePhysicsTable(), G4VEnergyLossProcess::RetrieveTable(), G4VEmProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCrossSectionBiasingFactor(), G4VEnergyLossProcess::SetCSDARangeTable(), G4CoupledTransportation::SetHighLooperThresholds(), SetHighLooperThresholds(), G4VEnergyLossProcess::SetInverseRangeTable(), G4LowECapture::SetKinEnergyLimit(), G4NeutronKiller::SetKinEnergyLimit(), G4VEnergyLossProcess::SetLambdaTable(), G4CoupledTransportation::SetLowLooperThresholds(), SetLowLooperThresholds(), G4VEnergyLossProcess::SetRangeTableForLoss(), G4VEnergyLossProcess::SetSecondaryRangeTable(), G4NeutronKiller::SetTimeLimit(), G4VProcess::SetVerboseLevel(), G4Cerenkov::SetVerboseLevel(), G4Scintillation::SetVerboseLevel(), G4OpAbsorption::SetVerboseLevel(), G4OpBoundaryProcess::SetVerboseLevel(), G4OpMieHG::SetVerboseLevel(), G4OpRayleigh::SetVerboseLevel(), G4OpWLS::SetVerboseLevel(), G4OpWLS2::SetVerboseLevel(), G4FastSimulationManagerProcess::SetWorldVolume(), G4GaussXTRadiator::SpectralXTRdEdx(), G4RegularXTRadiator::SpectralXTRdEdx(), G4TransparentRegXTRadiator::SpectralXTRdEdx(), G4XTRRegularRadModel::SpectralXTRdEdx(), G4VProcess::StartTracking(), G4CoupledTransportation::StartTracking(), G4VEmProcess::StorePhysicsTable(), G4VMultipleScattering::StorePhysicsTable(), G4VEnergyLossProcess::StoreTable(), G4VEnergyLossProcess::StreamInfo(), G4VEmProcess::StreamInfo(), G4VMultipleScattering::StreamInfo(), G4VITProcess::SubtractNumberOfInteractionLengthLeft(), and G4VProcess::SubtractNumberOfInteractionLengthLeft().


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