Geant4-11
Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
G4SteppingManager Class Reference

#include <G4SteppingManager.hh>

Public Types

using ProfilerConfig = G4Step::ProfilerConfig
 

Public Member Functions

 G4SteppingManager ()
 
G4double GetCorrectedStep ()
 
G4double GetcurrentMinimumStep ()
 
std::size_t GetfAlongStepDoItProcTriggered ()
 
G4ProcessVectorGetfAlongStepDoItVector ()
 
G4ProcessVectorGetfAlongStepGetPhysIntVector ()
 
std::size_t GetfAtRestDoItProcTriggered ()
 
G4ProcessVectorGetfAtRestDoItVector ()
 
G4ProcessVectorGetfAtRestGetPhysIntVector ()
 
G4ForceCondition GetfCondition ()
 
G4VProcessGetfCurrentProcess ()
 
G4VPhysicalVolumeGetfCurrentVolume ()
 
G4GPILSelection GetfGPILSelection ()
 
G4bool GetFirstStep ()
 
G4int GetfN2ndariesAlongStepDoIt ()
 
G4int GetfN2ndariesAtRestDoIt ()
 
G4int GetfN2ndariesPostStepDoIt ()
 
G4NavigatorGetfNavigator ()
 
G4VParticleChangeGetfParticleChange ()
 
std::size_t GetfPostStepDoItProcTriggered ()
 
G4ProcessVectorGetfPostStepDoItVector ()
 
G4ProcessVectorGetfPostStepGetPhysIntVector ()
 
G4StepPointGetfPostStepPoint ()
 
G4StepPointGetfPreStepPoint ()
 
G4double GetfPreviousStepSize ()
 
G4TrackVectorGetfSecondary ()
 
G4SelectedAlongStepDoItVectorGetfSelectedAlongStepDoItVector ()
 
G4SelectedAtRestDoItVectorGetfSelectedAtRestDoItVector ()
 
G4SelectedPostStepDoItVectorGetfSelectedPostStepDoItVector ()
 
G4VSensitiveDetectorGetfSensitive ()
 
G4StepGetfStep ()
 
G4StepStatus GetfStepStatus ()
 
G4TrackGetfTrack ()
 
G4double GetGeometricalStep ()
 
G4double GetMass ()
 
std::size_t GetMAXofAlongStepLoops ()
 
std::size_t GetMAXofAtRestLoops ()
 
std::size_t GetMAXofPostStepLoops ()
 
G4double GetnumberOfInteractionLengthLeft ()
 
G4double GetPhysicalStep ()
 
G4double GetphysIntLength ()
 
G4bool GetPreStepPointIsGeom ()
 
void GetProcessNumber ()
 
const G4TrackVectorGetSecondary () const
 
G4StepGetStep () const
 
G4SteppingControl GetStepControlFlag ()
 
G4double GetsumEnergyChange ()
 
G4double GetTempInitVelocity ()
 
G4double GetTempVelocity ()
 
const G4TouchableHandleGetTouchableHandle ()
 
G4TrackGetTrack () const
 
G4UserSteppingActionGetUserAction ()
 
G4int GetverboseLevel ()
 
void SetInitialStep (G4Track *valueTrack)
 
void SetNavigator (G4Navigator *value)
 
void SetUserAction (G4UserSteppingAction *apAction)
 
void SetVerbose (G4VSteppingVerbose *)
 
void SetVerboseLevel (G4int vLevel)
 
G4StepStatus Stepping ()
 
 ~G4SteppingManager ()
 

Private Member Functions

void ApplyProductionCut (G4Track *)
 
G4double CalculateSafety ()
 
void DefinePhysicalStepLength ()
 
void InvokeAlongStepDoItProcs ()
 
void InvokeAtRestDoItProcs ()
 
void InvokePostStepDoItProcs ()
 
void InvokePSDIP (size_t)
 

Private Attributes

G4double CorrectedStep = 0.0
 
G4double endpointSafety = 0.0
 
G4ThreeVector endpointSafOrigin
 
std::size_t fAlongStepDoItProcTriggered = 0
 
G4ProcessVectorfAlongStepDoItVector = nullptr
 
G4ProcessVectorfAlongStepGetPhysIntVector = nullptr
 
std::size_t fAtRestDoItProcTriggered = 0
 
G4ProcessVectorfAtRestDoItVector = nullptr
 
G4ProcessVectorfAtRestGetPhysIntVector = nullptr
 
G4ForceCondition fCondition = InActivated
 
G4VProcessfCurrentProcess = nullptr
 
G4VPhysicalVolumefCurrentVolume = nullptr
 
G4GPILSelection fGPILSelection = NotCandidateForSelection
 
G4bool FirstStep = false
 
G4int fN2ndariesAlongStepDoIt = 0
 
G4int fN2ndariesAtRestDoIt = 0
 
G4int fN2ndariesPostStepDoIt = 0
 
G4NavigatorfNavigator = nullptr
 
G4NoProcess const * fNoProcess = nullptr
 
G4VParticleChangefParticleChange = nullptr
 
std::size_t fPostStepDoItProcTriggered = 0
 
G4ProcessVectorfPostStepDoItVector = nullptr
 
G4ProcessVectorfPostStepGetPhysIntVector = nullptr
 
G4StepPointfPostStepPoint = nullptr
 
G4StepPointfPreStepPoint = nullptr
 
G4double fPreviousStepSize = 0.0
 
G4TrackVectorfSecondary = nullptr
 
G4SelectedAlongStepDoItVectorfSelectedAlongStepDoItVector = nullptr
 
G4SelectedAtRestDoItVectorfSelectedAtRestDoItVector = nullptr
 
G4SelectedPostStepDoItVectorfSelectedPostStepDoItVector = nullptr
 
G4VSensitiveDetectorfSensitive = nullptr
 
G4StepfStep = nullptr
 
G4StepStatus fStepStatus = fUndefined
 
G4TouchableHandle fTouchableHandle
 
G4TrackfTrack = nullptr
 
G4UserSteppingActionfUserSteppingAction = nullptr
 
G4VSteppingVerbosefVerbose = nullptr
 
G4double GeometricalStep = 0.0
 
G4double kCarTolerance = 0.0
 
G4bool KillVerbose = false
 
G4double Mass = 0.0
 
std::size_t MAXofAlongStepLoops = 0
 
std::size_t MAXofAtRestLoops = 0
 
std::size_t MAXofPostStepLoops = 0
 
G4double PhysicalStep = 0.0
 
G4double physIntLength = 0.0
 
G4bool PreStepPointIsGeom = false
 
G4double proposedSafety = 0.0
 
G4SteppingControl StepControlFlag = NormalCondition
 
G4double sumEnergyChange = 0.0
 
G4double TempInitVelocity = 0.0
 
G4double TempVelocity = 0.0
 
G4int verboseLevel = 0
 

Static Private Attributes

static const size_t SizeOfSelectedDoItVector = 100
 

Detailed Description

Definition at line 75 of file G4SteppingManager.hh.

Member Typedef Documentation

◆ ProfilerConfig

Definition at line 78 of file G4SteppingManager.hh.

Constructor & Destructor Documentation

◆ G4SteppingManager()

G4SteppingManager::G4SteppingManager ( )

Definition at line 49 of file G4SteppingManager.cc.

51{
52 // Construct simple 'has-a' related objects
53
54 fStep = new G4Step();
58
59#ifdef G4VERBOSE
61 if(fVerbose==nullptr)
62 {
64 {
66 if(prec > 0)
68 else
69 { fVerbose = new G4SteppingVerbose(); }
70 }
71 else
73 KillVerbose = true;
74 }
75 else
76 { KillVerbose = false; }
77 fVerbose -> SetManager(this);
78#endif
79
81 ->GetNavigatorForTracking());
82
89
91 ->GetNavigatorForTracking());
92
96
98}
class std::vector< int, std::allocator< int > > G4SelectedPostStepDoItVector
class std::vector< int, std::allocator< int > > G4SelectedAtRestDoItVector
class std::vector< int, std::allocator< int > > G4SelectedAlongStepDoItVector
int G4int
Definition: G4Types.hh:85
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
Definition: G4Step.hh:62
G4StepPoint * GetPreStepPoint() const
G4TrackVector * NewSecondaryVector()
G4StepPoint * GetPostStepPoint() const
G4StepPoint * fPostStepPoint
void SetNavigator(G4Navigator *value)
G4NoProcess const * fNoProcess
static const size_t SizeOfSelectedDoItVector
G4StepPoint * fPreStepPoint
G4SelectedAlongStepDoItVector * fSelectedAlongStepDoItVector
G4TrackVector * fSecondary
G4VSteppingVerbose * fVerbose
G4SelectedPostStepDoItVector * fSelectedPostStepDoItVector
G4SelectedAtRestDoItVector * fSelectedAtRestDoItVector
static G4int BestUnitPrecision()
static G4TransportationManager * GetTransportationManager()
static G4VSteppingVerbose * GetInstance()
virtual G4VSteppingVerbose * Clone()
static G4VSteppingVerbose * GetMasterInstance()
static const double prec
Definition: RanecuEngine.cc:61
#define DBL_MAX
Definition: templates.hh:62

References G4SteppingVerbose::BestUnitPrecision(), G4VSteppingVerbose::Clone(), DBL_MAX, fNoProcess, fPostStepPoint, fPreStepPoint, fSecondary, fSelectedAlongStepDoItVector, fSelectedAtRestDoItVector, fSelectedPostStepDoItVector, fStep, fVerbose, G4GeometryTolerance::GetInstance(), G4VSteppingVerbose::GetInstance(), G4VSteppingVerbose::GetMasterInstance(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4GeometryTolerance::GetSurfaceTolerance(), G4TransportationManager::GetTransportationManager(), kCarTolerance, KillVerbose, G4Step::NewSecondaryVector(), physIntLength, CLHEP::prec, SetNavigator(), and SizeOfSelectedDoItVector.

◆ ~G4SteppingManager()

G4SteppingManager::~G4SteppingManager ( )

Definition at line 101 of file G4SteppingManager.cc.

103{
105
106 // Destruct simple 'has-a' objects
107 //
109
110 // delete fSecondary;
111 delete fStep;
115 delete fUserSteppingAction;
116 #ifdef G4VERBOSE
117 if(KillVerbose) delete fVerbose;
118 #endif
119}
void DeleteSecondaryVector()
G4TouchableHandle fTouchableHandle
G4UserSteppingAction * fUserSteppingAction

References G4Step::DeleteSecondaryVector(), fSelectedAlongStepDoItVector, fSelectedAtRestDoItVector, fSelectedPostStepDoItVector, fStep, fTouchableHandle, fUserSteppingAction, fVerbose, and KillVerbose.

Member Function Documentation

◆ ApplyProductionCut()

void G4SteppingManager::ApplyProductionCut ( G4Track aSecondary)
private

Definition at line 711 of file G4SteppingManager2.cc.

713{
714 G4bool tBelowCutEnergyAndSafety = false;
715 G4int tPtclIdx
717 if (tPtclIdx<0) { return; }
718 G4ProductionCutsTable* tCutsTbl
720 G4int tCoupleIdx
722 if (tCoupleIdx<0) { return; }
723 G4double tProdThreshold
724 = (*(tCutsTbl->GetEnergyCutsVector(tPtclIdx)))[tCoupleIdx];
725 if( aSecondary->GetKineticEnergy()<tProdThreshold )
726 {
727 tBelowCutEnergyAndSafety = true;
728 if(std::abs(aSecondary->GetDynamicParticle()->GetCharge()) > DBL_MIN)
729 {
730 G4double currentRange
732 aSecondary->GetKineticEnergy(),
734 tBelowCutEnergyAndSafety = (currentRange < CalculateSafety() );
735 }
736 }
737
738 if( tBelowCutEnergyAndSafety )
739 {
740 if( !(aSecondary->IsGoodForTracking()) )
741 {
742 // Add kinetic energy to the total energy deposit
744 aSecondary->SetKineticEnergy(0.0);
745 }
746 }
747}
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
G4double GetCharge() const
static G4LossTableManager * Instance()
G4double GetRange(const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
const std::vector< G4double > * GetEnergyCutsVector(std::size_t pcIdx) const
static G4ProductionCutsTable * GetProductionCutsTable()
G4int GetCoupleIndex(const G4MaterialCutsCouple *aCouple) const
static G4int GetIndex(const G4String &name)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
void AddTotalEnergyDeposit(G4double value)
G4ParticleDefinition * GetDefinition() const
const G4DynamicParticle * GetDynamicParticle() const
G4double GetKineticEnergy() const
void SetKineticEnergy(const G4double aValue)
G4bool IsGoodForTracking() const
#define DBL_MIN
Definition: templates.hh:54

References G4Step::AddTotalEnergyDeposit(), CalculateSafety(), DBL_MIN, fPreStepPoint, fStep, G4DynamicParticle::GetCharge(), G4ProductionCutsTable::GetCoupleIndex(), G4Track::GetDefinition(), G4Track::GetDynamicParticle(), G4ProductionCutsTable::GetEnergyCutsVector(), G4ProductionCuts::GetIndex(), G4Track::GetKineticEnergy(), G4StepPoint::GetMaterialCutsCouple(), G4ProductionCutsTable::GetProductionCutsTable(), G4LossTableManager::GetRange(), G4LossTableManager::Instance(), G4Track::IsGoodForTracking(), and G4Track::SetKineticEnergy().

Referenced by InvokeAlongStepDoItProcs(), InvokeAtRestDoItProcs(), and InvokePSDIP().

◆ CalculateSafety()

G4double G4SteppingManager::CalculateSafety ( )
inlineprivate

Definition at line 550 of file G4SteppingManager.hh.

551 {
552 return std::max( endpointSafety -
555 }
const G4ThreeVector & GetPosition() const
G4ThreeVector endpointSafOrigin
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References endpointSafety, endpointSafOrigin, fPostStepPoint, G4StepPoint::GetPosition(), kCarTolerance, and G4INCL::Math::max().

Referenced by ApplyProductionCut(), and InvokePSDIP().

◆ DefinePhysicalStepLength()

void G4SteppingManager::DefinePhysicalStepLength ( )
private

Definition at line 126 of file G4SteppingManager2.cc.

128{
129 // ReSet the counter etc.
130 //
131 PhysicalStep = DBL_MAX; // Initialize by a huge number
132 physIntLength = DBL_MAX; // Initialize by a huge number
133
134 #ifdef G4VERBOSE
136 #endif
137
138 // GPIL for PostStep
139 //
141
142 for(std::size_t np=0; np<MAXofPostStepLoops; ++np)
143 {
144 fCurrentProcess = (*fPostStepGetPhysIntVector)(np);
145 if (fCurrentProcess == nullptr)
146 {
147 (*fSelectedPostStepDoItVector)[np] = InActivated;
148 continue;
149 } // NULL means the process is inactivated by a user on fly
150
153 #ifdef G4VERBOSE
155 #endif
156
157 switch (fCondition)
158 {
160 (*fSelectedPostStepDoItVector)[np] = ExclusivelyForced;
163 break;
164 case Conditionally:
165 // (*fSelectedPostStepDoItVector)[np] = Conditionally;
166 G4Exception("G4SteppingManager::DefinePhysicalStepLength()",
167 "Tracking1001", FatalException,
168 "This feature no more supported");
169 break;
170 case Forced:
171 (*fSelectedPostStepDoItVector)[np] = Forced;
172 break;
173 case StronglyForced:
174 (*fSelectedPostStepDoItVector)[np] = StronglyForced;
175 break;
176 default:
177 (*fSelectedPostStepDoItVector)[np] = InActivated;
178 break;
179 }
180
182 {
183 for(std::size_t nrest=np+1; nrest<MAXofPostStepLoops; ++nrest)
184 {
185 (*fSelectedPostStepDoItVector)[nrest] = InActivated;
186 }
187 return; // Take note the 'return' at here !!!
188 }
189 else
190 {
192 {
197 }
198 }
199 }
200
202 {
204 {
205 (*fSelectedPostStepDoItVector)[fPostStepDoItProcTriggered] = NotForced;
206 }
207 }
208
209 // GPIL for AlongStep
210 //
212 G4double safetyProposedToAndByProcess = proposedSafety;
213 G4bool delegateToTransportation = false;
214
215 for(std::size_t kp=0; kp<MAXofAlongStepLoops; ++kp)
216 {
217 fCurrentProcess = (*fAlongStepGetPhysIntVector)[kp];
218 if (fCurrentProcess == nullptr) continue;
219 // NULL means the process is inactivated by a user on fly
220
223 safetyProposedToAndByProcess,
225 #ifdef G4VERBOSE
227 #endif
228
230 {
232
233 // Check if the process wants to be the GPIL winner. For example,
234 // multi-scattering proposes Step limit, but won't be the winner
235 //
237 {
240 }
242 { // a parallel world is proposing the shortest but expecting Transportation
243 // to win.
244 delegateToTransportation = true;
245 }
246
247 // Transportation is assumed to be the last process in the vector
248 // Transportation is winning
249 if(kp == MAXofAlongStepLoops-1)
250 {
252 delegateToTransportation = false;
253 }
254 }
255
256 // Make sure to check the safety, even if Step is not limited
257 // by this process
258 //
259 if (safetyProposedToAndByProcess < proposedSafety)
260 {
261 // proposedSafety keeps the smallest value
262 //
263 proposedSafety = safetyProposedToAndByProcess;
264 }
265 else
266 {
267 // safetyProposedToAndByProcess always proposes a valid safety
268 //
269 safetyProposedToAndByProcess = proposedSafety;
270 }
271 }
272 if(delegateToTransportation)
273 {
276 }
277}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
@ InActivated
@ StronglyForced
@ NotForced
@ Conditionally
@ ExclusivelyForced
@ Forced
@ CandidateForSelection
@ fParallel
@ fGeomBoundary
Definition: G4StepStatus.hh:43
@ fPostStepDoItProc
Definition: G4StepStatus.hh:49
@ fAlongStepDoItProc
Definition: G4StepStatus.hh:47
@ fExclusivelyForcedProc
Definition: G4StepStatus.hh:53
void SetProcessDefinedStep(const G4VProcess *aValue)
std::size_t MAXofPostStepLoops
std::size_t MAXofAlongStepLoops
G4ForceCondition fCondition
std::size_t fPostStepDoItProcTriggered
G4GPILSelection fGPILSelection
G4StepStatus fStepStatus
G4VProcess * fCurrentProcess
G4ProcessType GetProcessType() const
Definition: G4VProcess.hh:388
G4double PostStepGPIL(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
Definition: G4VProcess.hh:479
G4double AlongStepGPIL(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
Definition: G4VProcess.hh:461
virtual void DPSLPostStep()=0
virtual void DPSLAlongStep()=0
virtual void DPSLStarted()=0

References G4VProcess::AlongStepGPIL(), CandidateForSelection, Conditionally, DBL_MAX, G4VSteppingVerbose::DPSLAlongStep(), G4VSteppingVerbose::DPSLPostStep(), G4VSteppingVerbose::DPSLStarted(), ExclusivelyForced, fAlongStepDoItProc, FatalException, fCondition, fCurrentProcess, fExclusivelyForcedProc, fGeomBoundary, fGPILSelection, Forced, fParallel, fPostStepDoItProc, fPostStepDoItProcTriggered, fPreviousStepSize, fSelectedPostStepDoItVector, fStep, fStepStatus, fTrack, fVerbose, G4Exception(), G4Step::GetPostStepPoint(), G4VProcess::GetProcessType(), InActivated, MAXofAlongStepLoops, MAXofPostStepLoops, NotForced, PhysicalStep, physIntLength, G4VProcess::PostStepGPIL(), proposedSafety, G4StepPoint::SetProcessDefinedStep(), StronglyForced, and verboseLevel.

Referenced by Stepping().

◆ GetCorrectedStep()

G4double G4SteppingManager::GetCorrectedStep ( )
inline

Definition at line 292 of file G4SteppingManager.hh.

293 {
294 return CorrectedStep;
295 }

References CorrectedStep.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetcurrentMinimumStep()

G4double G4SteppingManager::GetcurrentMinimumStep ( )

◆ GetfAlongStepDoItProcTriggered()

size_t G4SteppingManager::GetfAlongStepDoItProcTriggered ( )
inline

Definition at line 427 of file G4SteppingManager.hh.

428 {
430 }
std::size_t fAtRestDoItProcTriggered

References fAtRestDoItProcTriggered.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfAlongStepDoItVector()

G4ProcessVector * G4SteppingManager::GetfAlongStepDoItVector ( )
inline

Definition at line 382 of file G4SteppingManager.hh.

383 {
385 }
G4ProcessVector * fAlongStepDoItVector

References fAlongStepDoItVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfAlongStepGetPhysIntVector()

G4ProcessVector * G4SteppingManager::GetfAlongStepGetPhysIntVector ( )
inline

Definition at line 397 of file G4SteppingManager.hh.

398 {
400 }
G4ProcessVector * fAlongStepGetPhysIntVector

References fAlongStepGetPhysIntVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfAtRestDoItProcTriggered()

size_t G4SteppingManager::GetfAtRestDoItProcTriggered ( )
inline

Definition at line 422 of file G4SteppingManager.hh.

423 {
425 }

References fAtRestDoItProcTriggered.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfAtRestDoItVector()

G4ProcessVector * G4SteppingManager::GetfAtRestDoItVector ( )
inline

Definition at line 377 of file G4SteppingManager.hh.

378 {
379 return fAtRestDoItVector;
380 }
G4ProcessVector * fAtRestDoItVector

References fAtRestDoItVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfAtRestGetPhysIntVector()

G4ProcessVector * G4SteppingManager::GetfAtRestGetPhysIntVector ( )
inline

Definition at line 392 of file G4SteppingManager.hh.

393 {
395 }
G4ProcessVector * fAtRestGetPhysIntVector

References fAtRestGetPhysIntVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfCondition()

G4ForceCondition G4SteppingManager::GetfCondition ( )
inline

Definition at line 500 of file G4SteppingManager.hh.

501 {
502 return fCondition;
503 }

References fCondition.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfCurrentProcess()

G4VProcess * G4SteppingManager::GetfCurrentProcess ( )
inline

Definition at line 372 of file G4SteppingManager.hh.

373 {
374 return fCurrentProcess;
375 }

References fCurrentProcess.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfCurrentVolume()

G4VPhysicalVolume * G4SteppingManager::GetfCurrentVolume ( )
inline

Definition at line 362 of file G4SteppingManager.hh.

363 {
364 return fCurrentVolume;
365 }
G4VPhysicalVolume * fCurrentVolume

References fCurrentVolume.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfGPILSelection()

G4GPILSelection G4SteppingManager::GetfGPILSelection ( )
inline

Definition at line 505 of file G4SteppingManager.hh.

506 {
507 return fGPILSelection;
508 }

References fGPILSelection.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetFirstStep()

G4bool G4SteppingManager::GetFirstStep ( )
inline

Definition at line 302 of file G4SteppingManager.hh.

303 {
304 return FirstStep;
305 }

References FirstStep.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfN2ndariesAlongStepDoIt()

G4int G4SteppingManager::GetfN2ndariesAlongStepDoIt ( )
inline

Definition at line 442 of file G4SteppingManager.hh.

443 {
445 }

References fN2ndariesAlongStepDoIt.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfN2ndariesAtRestDoIt()

G4int G4SteppingManager::GetfN2ndariesAtRestDoIt ( )
inline

Definition at line 437 of file G4SteppingManager.hh.

438 {
440 }

References fN2ndariesAtRestDoIt.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfN2ndariesPostStepDoIt()

G4int G4SteppingManager::GetfN2ndariesPostStepDoIt ( )
inline

Definition at line 447 of file G4SteppingManager.hh.

448 {
450 }

References fN2ndariesPostStepDoIt.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfNavigator()

G4Navigator * G4SteppingManager::GetfNavigator ( )
inline

Definition at line 452 of file G4SteppingManager.hh.

453 {
454 return fNavigator;
455 }
G4Navigator * fNavigator

References fNavigator.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfParticleChange()

G4VParticleChange * G4SteppingManager::GetfParticleChange ( )
inline

Definition at line 332 of file G4SteppingManager.hh.

333 {
334 return fParticleChange;
335 }
G4VParticleChange * fParticleChange

References fParticleChange.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfPostStepDoItProcTriggered()

size_t G4SteppingManager::GetfPostStepDoItProcTriggered ( )
inline

Definition at line 432 of file G4SteppingManager.hh.

433 {
435 }

References fPostStepDoItProcTriggered.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfPostStepDoItVector()

G4ProcessVector * G4SteppingManager::GetfPostStepDoItVector ( )
inline

Definition at line 387 of file G4SteppingManager.hh.

388 {
389 return fPostStepDoItVector;
390 }
G4ProcessVector * fPostStepDoItVector

References fPostStepDoItVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfPostStepGetPhysIntVector()

G4ProcessVector * G4SteppingManager::GetfPostStepGetPhysIntVector ( )
inline

Definition at line 402 of file G4SteppingManager.hh.

403 {
405 }
G4ProcessVector * fPostStepGetPhysIntVector

References fPostStepGetPhysIntVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfPostStepPoint()

G4StepPoint * G4SteppingManager::GetfPostStepPoint ( )
inline

Definition at line 357 of file G4SteppingManager.hh.

358 {
359 return fPostStepPoint;
360 }

References fPostStepPoint.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfPreStepPoint()

G4StepPoint * G4SteppingManager::GetfPreStepPoint ( )
inline

Definition at line 352 of file G4SteppingManager.hh.

353 {
354 return fPreStepPoint;
355 }

References fPreStepPoint.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfPreviousStepSize()

G4double G4SteppingManager::GetfPreviousStepSize ( )
inline

Definition at line 480 of file G4SteppingManager.hh.

481 {
482 return fPreviousStepSize;
483 }

References fPreviousStepSize.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfSecondary()

G4TrackVector * G4SteppingManager::GetfSecondary ( )
inline

Definition at line 342 of file G4SteppingManager.hh.

343 {
344 return fStep->GetfSecondary();
345 }
G4TrackVector * GetfSecondary()

References fStep, and G4Step::GetfSecondary().

Referenced by G4VSteppingVerbose::CopyState(), and G4TrackingManager::GimmeSecondaries().

◆ GetfSelectedAlongStepDoItVector()

G4SelectedAlongStepDoItVector * G4SteppingManager::GetfSelectedAlongStepDoItVector ( )
inline

Definition at line 469 of file G4SteppingManager.hh.

470 {
472 }

References fSelectedAlongStepDoItVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfSelectedAtRestDoItVector()

G4SelectedAtRestDoItVector * G4SteppingManager::GetfSelectedAtRestDoItVector ( )
inline

Definition at line 463 of file G4SteppingManager.hh.

464 {
466 }

References fSelectedAtRestDoItVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfSelectedPostStepDoItVector()

G4SelectedPostStepDoItVector * G4SteppingManager::GetfSelectedPostStepDoItVector ( )
inline

Definition at line 475 of file G4SteppingManager.hh.

476 {
478 }

References fSelectedPostStepDoItVector.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfSensitive()

G4VSensitiveDetector * G4SteppingManager::GetfSensitive ( )
inline

Definition at line 367 of file G4SteppingManager.hh.

368 {
369 return fSensitive;
370 }
G4VSensitiveDetector * fSensitive

References fSensitive.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfStep()

G4Step * G4SteppingManager::GetfStep ( )
inline

Definition at line 347 of file G4SteppingManager.hh.

348 {
349 return fStep;
350 }

References fStep.

Referenced by G4VSteppingVerbose::CopyState(), and G4ExceptionHandler::DumpTrackInfo().

◆ GetfStepStatus()

G4StepStatus G4SteppingManager::GetfStepStatus ( )
inline

Definition at line 307 of file G4SteppingManager.hh.

308 {
309 return fStepStatus;
310 }

References fStepStatus.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetfTrack()

G4Track * G4SteppingManager::GetfTrack ( )
inline

Definition at line 337 of file G4SteppingManager.hh.

338 {
339 return fTrack;
340 }

References fTrack.

Referenced by G4VSteppingVerbose::CopyState(), and G4ExceptionHandler::DumpTrackInfo().

◆ GetGeometricalStep()

G4double G4SteppingManager::GetGeometricalStep ( )
inline

Definition at line 287 of file G4SteppingManager.hh.

288 {
289 return GeometricalStep;
290 }

References GeometricalStep.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetMass()

G4double G4SteppingManager::GetMass ( )
inline

Definition at line 322 of file G4SteppingManager.hh.

323 {
324 return Mass;
325 }

References Mass.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetMAXofAlongStepLoops()

size_t G4SteppingManager::GetMAXofAlongStepLoops ( )
inline

Definition at line 412 of file G4SteppingManager.hh.

413 {
414 return MAXofAlongStepLoops;
415 }

References MAXofAlongStepLoops.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetMAXofAtRestLoops()

size_t G4SteppingManager::GetMAXofAtRestLoops ( )
inline

Definition at line 407 of file G4SteppingManager.hh.

408 {
409 return MAXofAtRestLoops;
410 }
std::size_t MAXofAtRestLoops

References MAXofAtRestLoops.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetMAXofPostStepLoops()

size_t G4SteppingManager::GetMAXofPostStepLoops ( )
inline

Definition at line 417 of file G4SteppingManager.hh.

418 {
419 return MAXofPostStepLoops;
420 }

References MAXofPostStepLoops.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetnumberOfInteractionLengthLeft()

G4double G4SteppingManager::GetnumberOfInteractionLengthLeft ( )

◆ GetPhysicalStep()

G4double G4SteppingManager::GetPhysicalStep ( )
inline

Definition at line 282 of file G4SteppingManager.hh.

283 {
284 return PhysicalStep;
285 }

References PhysicalStep.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetphysIntLength()

G4double G4SteppingManager::GetphysIntLength ( )
inline

Definition at line 495 of file G4SteppingManager.hh.

496 {
497 return physIntLength;
498 }

References physIntLength.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetPreStepPointIsGeom()

G4bool G4SteppingManager::GetPreStepPointIsGeom ( )
inline

Definition at line 297 of file G4SteppingManager.hh.

298 {
299 return PreStepPointIsGeom;
300 }

References PreStepPointIsGeom.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetProcessNumber()

void G4SteppingManager::GetProcessNumber ( )

Definition at line 50 of file G4SteppingManager2.cc.

52{
53 #ifdef debug
54 G4cout << "G4SteppingManager::GetProcessNumber: is called track="
55 << fTrack << G4endl;
56 #endif
57
59 if(pm == nullptr)
60 {
61 G4cerr << "ERROR - G4SteppingManager::GetProcessNumber()" << G4endl
62 << " ProcessManager is NULL for particle = "
63 << fTrack->GetDefinition()->GetParticleName() << ", PDG_code = "
65 G4Exception("G4SteppingManager::GetProcessNumber()", "Tracking0011",
66 FatalException, "Process Manager is not found.");
67 return;
68 }
69
70 // AtRestDoits
71 //
75
76 #ifdef debug
77 G4cout << "G4SteppingManager::GetProcessNumber: #ofAtRest="
79 #endif
80
81 // AlongStepDoits
82 //
86
87 #ifdef debug
88 G4cout << "G4SteppingManager::GetProcessNumber:#ofAlongStp="
90 #endif
91
92 // PostStepDoits
93 //
97
98 #ifdef debug
99 G4cout << "G4SteppingManager::GetProcessNumber: #ofPostStep="
101 #endif
102
106 {
107 G4cerr << "ERROR - G4SteppingManager::GetProcessNumber()" << G4endl
108 << " SizeOfSelectedDoItVector= " << SizeOfSelectedDoItVector
109 << " ; is smaller then one of MAXofAtRestLoops= "
111 << " or MAXofAlongStepLoops= " << MAXofAlongStepLoops
112 << " or MAXofPostStepLoops= " << MAXofPostStepLoops << G4endl;
113 G4Exception("G4SteppingManager::GetProcessNumber()",
114 "Tracking0012", FatalException,
115 "The array size is smaller than the actual No of processes.");
116 }
117}
@ typeGPIL
@ typeDoIt
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4ProcessVector * GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4ProcessVector * GetAtRestProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
std::size_t entries() const

References G4ProcessVector::entries(), fAlongStepDoItVector, fAlongStepGetPhysIntVector, FatalException, fAtRestDoItVector, fAtRestGetPhysIntVector, fPostStepDoItVector, fPostStepGetPhysIntVector, fTrack, G4cerr, G4cout, G4endl, G4Exception(), G4ProcessManager::GetAlongStepProcessVector(), G4ProcessManager::GetAtRestProcessVector(), G4Track::GetDefinition(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGEncoding(), G4ProcessManager::GetPostStepProcessVector(), G4ParticleDefinition::GetProcessManager(), MAXofAlongStepLoops, MAXofAtRestLoops, MAXofPostStepLoops, SizeOfSelectedDoItVector, typeDoIt, and typeGPIL.

Referenced by G4ErrorPropagator::InitG4Track(), and G4TrackingManager::ProcessOneTrack().

◆ GetSecondary()

const G4TrackVector * G4SteppingManager::GetSecondary ( ) const
inline

Definition at line 510 of file G4SteppingManager.hh.

511 {
512 return fStep->GetSecondary();
513 }
const G4TrackVector * GetSecondary() const

References fStep, and G4Step::GetSecondary().

◆ GetStep()

G4Step * G4SteppingManager::GetStep ( ) const
inline

Definition at line 545 of file G4SteppingManager.hh.

546 {
547 return fStep;
548 }

References fStep.

Referenced by G4ErrorPropagator::InitG4Track(), and G4TrackingManager::ProcessOneTrack().

◆ GetStepControlFlag()

G4SteppingControl G4SteppingManager::GetStepControlFlag ( )
inline

Definition at line 490 of file G4SteppingManager.hh.

491 {
492 return StepControlFlag;
493 }
G4SteppingControl StepControlFlag

References StepControlFlag.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetsumEnergyChange()

G4double G4SteppingManager::GetsumEnergyChange ( )
inline

Definition at line 327 of file G4SteppingManager.hh.

328 {
329 return sumEnergyChange;
330 }

References sumEnergyChange.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetTempInitVelocity()

G4double G4SteppingManager::GetTempInitVelocity ( )
inline

Definition at line 312 of file G4SteppingManager.hh.

313 {
314 return TempInitVelocity;
315 }

References TempInitVelocity.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetTempVelocity()

G4double G4SteppingManager::GetTempVelocity ( )
inline

Definition at line 317 of file G4SteppingManager.hh.

318 {
319 return TempVelocity;
320 }

References TempVelocity.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetTouchableHandle()

const G4TouchableHandle & G4SteppingManager::GetTouchableHandle ( )
inline

Definition at line 485 of file G4SteppingManager.hh.

486 {
487 return fTouchableHandle;
488 }

References fTouchableHandle.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetTrack()

G4Track * G4SteppingManager::GetTrack ( ) const
inline

Definition at line 530 of file G4SteppingManager.hh.

531 {
532 return fTrack;
533 }

References fTrack.

Referenced by G4TrackingMessenger::SetNewValue().

◆ GetUserAction()

G4UserSteppingAction * G4SteppingManager::GetUserAction ( )
inline

Definition at line 525 of file G4SteppingManager.hh.

526 {
527 return fUserSteppingAction;
528 }

References fUserSteppingAction.

Referenced by G4VSteppingVerbose::CopyState().

◆ GetverboseLevel()

G4int G4SteppingManager::GetverboseLevel ( )
inline

Definition at line 457 of file G4SteppingManager.hh.

458 {
459 return verboseLevel;
460 }

References verboseLevel.

Referenced by G4VSteppingVerbose::CopyState().

◆ InvokeAlongStepDoItProcs()

void G4SteppingManager::InvokeAlongStepDoItProcs ( )
private

Definition at line 448 of file G4SteppingManager2.cc.

450{
451 // If the current Step is defined by a 'ExclusivelyForced'
452 // PostStepDoIt, then don't invoke any AlongStepDoIt
453 //
455 {
456 return; // Take note 'return' is here !!!
457 }
458
459 // Invoke all active continuous processes
460 //
461 for( std::size_t ci=0; ci<MAXofAlongStepLoops; ++ci )
462 {
463 fCurrentProcess = (*fAlongStepDoItVector)[ci];
464 if (fCurrentProcess== 0) continue;
465 // NULL means the process is inactivated by a user on fly.
466
468
469 // Update the PostStepPoint of Step according to ParticleChange
471
472 #ifdef G4VERBOSE
474 #endif
475
476 // Now Store the secondaries from ParticleChange to SecondaryList
477
478 G4Track* tempSecondaryTrack;
479 G4int num2ndaries;
480
482
483 for(G4int DSecLoop=0; DSecLoop<num2ndaries; ++DSecLoop)
484 {
485 tempSecondaryTrack = fParticleChange->GetSecondary(DSecLoop);
486
487 if(tempSecondaryTrack->GetDefinition()->GetApplyCutsFlag())
488 {
489 ApplyProductionCut(tempSecondaryTrack);
490 }
491
492 // Set parentID
493 tempSecondaryTrack->SetParentID( fTrack->GetTrackID() );
494
495 // Set the process pointer which created this track
496 tempSecondaryTrack->SetCreatorProcess( fCurrentProcess );
497
498 // If this secondary particle has 'zero' kinetic energy, make sure
499 // it invokes a rest process at the beginning of the tracking
500 //
501 if(tempSecondaryTrack->GetKineticEnergy() <= DBL_MIN)
502 {
503 G4ProcessManager* pm = tempSecondaryTrack->GetDefinition()
505 if(pm == nullptr)
506 {
508 ED << "A track without proper process manager is pushed\n"
509 << "into the track stack.\n"
510 << " Particle name : "
511 << tempSecondaryTrack->GetDefinition()->GetParticleName()
512 << " -- ";
513 if(tempSecondaryTrack->GetParentID()<0)
514 {
515 ED << "created by a primary particle generator.";
516 }
517 else
518 {
519 const G4VProcess* vp = tempSecondaryTrack->GetCreatorProcess();
520 if(vp != nullptr)
521 { ED << "created by " << vp->GetProcessName() << "."; }
522 else
523 { ED << "creaded by unknown process."; }
524 }
525 G4Exception("G4SteppingManager::InvokeAlongStepDoItProcs()",
526 "Tracking10051", FatalException, ED);
527 }
528 if (pm->GetAtRestProcessVector()->entries()>0)
529 {
530 tempSecondaryTrack->SetTrackStatus( fStopButAlive );
531 fSecondary->push_back( tempSecondaryTrack );
533 }
534 else
535 {
536 delete tempSecondaryTrack;
537 }
538 }
539 else
540 {
541 fSecondary->push_back( tempSecondaryTrack );
543 }
544 } //end of loop on secondary
545
546 // Set the track status according to what the process defined
547 // if kinetic energy >0, otherwise set fStopButAlive
548 //
550
551 // clear ParticleChange
553 }
554
556 G4TrackStatus fNewStatus = fTrack->GetTrackStatus();
557
558 if ( fNewStatus == fAlive && fTrack->GetKineticEnergy() <= DBL_MIN )
559 {
560 if(MAXofAtRestLoops>0) fNewStatus = fStopButAlive;
561 else fNewStatus = fStopAndKill;
562 fTrack->SetTrackStatus( fNewStatus );
563 }
564}
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4TrackStatus
@ fAlive
@ fStopAndKill
@ fStopButAlive
G4bool GetApplyCutsFlag() const
void UpdateTrack()
void ApplyProductionCut(G4Track *)
G4TrackStatus GetTrackStatus() const
void SetTrackStatus(const G4TrackStatus aTrackStatus)
G4int GetTrackID() const
const G4VProcess * GetCreatorProcess() const
G4int GetParentID() const
void SetParentID(const G4int aValue)
void SetCreatorProcess(const G4VProcess *aValue)
virtual G4Step * UpdateStepForAlongStep(G4Step *Step)
G4int GetNumberOfSecondaries() const
G4Track * GetSecondary(G4int anIndex) const
G4TrackStatus GetTrackStatus() const
virtual G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &stepData)=0
const G4String & GetProcessName() const
Definition: G4VProcess.hh:382
virtual void AlongStepDoItOneByOne()=0

References G4VProcess::AlongStepDoIt(), G4VSteppingVerbose::AlongStepDoItOneByOne(), ApplyProductionCut(), G4VParticleChange::Clear(), DBL_MIN, G4ProcessVector::entries(), fAlive, FatalException, fCurrentProcess, fExclusivelyForcedProc, fN2ndariesAlongStepDoIt, fParticleChange, fSecondary, fStep, fStepStatus, fStopAndKill, fStopButAlive, fTrack, fVerbose, G4Exception(), G4ParticleDefinition::GetApplyCutsFlag(), G4ProcessManager::GetAtRestProcessVector(), G4Track::GetCreatorProcess(), G4Track::GetDefinition(), G4Track::GetKineticEnergy(), G4VParticleChange::GetNumberOfSecondaries(), G4Track::GetParentID(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), G4VProcess::GetProcessName(), G4VParticleChange::GetSecondary(), G4Track::GetTrackID(), G4Track::GetTrackStatus(), G4VParticleChange::GetTrackStatus(), MAXofAlongStepLoops, MAXofAtRestLoops, G4Track::SetCreatorProcess(), G4Track::SetParentID(), G4Track::SetTrackStatus(), G4VParticleChange::UpdateStepForAlongStep(), G4Step::UpdateTrack(), and verboseLevel.

Referenced by Stepping().

◆ InvokeAtRestDoItProcs()

void G4SteppingManager::InvokeAtRestDoItProcs ( )
private

Definition at line 280 of file G4SteppingManager2.cc.

282{
283 // Select the rest process which has the shortest time before
284 // it is invoked. In rest processes, GPIL()
285 // returns the time before a process occurs
286
287 G4double lifeTime, shortestLifeTime;
288
290 shortestLifeTime = DBL_MAX;
291
292 unsigned int NofInactiveProc = 0;
293 for( std::size_t ri=0 ; ri < MAXofAtRestLoops ; ++ri )
294 {
295 fCurrentProcess = (*fAtRestGetPhysIntVector)[ri];
296 if (fCurrentProcess == nullptr)
297 {
298 (*fSelectedAtRestDoItVector)[ri] = InActivated;
299 ++NofInactiveProc;
300 continue;
301 } // NULL means the process is inactivated by a user on fly
302
304
305 if(fCondition == Forced)
306 {
307 (*fSelectedAtRestDoItVector)[ri] = Forced;
308 }
309 else
310 {
311 (*fSelectedAtRestDoItVector)[ri] = InActivated;
312 if(lifeTime < shortestLifeTime )
313 {
314 shortestLifeTime = lifeTime;
316 }
317 }
318 }
319
320 (*fSelectedAtRestDoItVector)[fAtRestDoItProcTriggered] = NotForced;
321
322 // at least one process is necessary to destroy the particle exit with warning
323 //
324 if(NofInactiveProc==MAXofAtRestLoops)
325 {
326 G4Exception("G4SteppingManager::InvokeAtRestDoItProcs()", "Tracking0013",
327 JustWarning, "No AtRestDoIt process is active!" );
328 }
329
330 fStep->SetStepLength( 0. ); // the particle has stopped
331 fTrack->SetStepLength( 0. );
332
333
334 // Condition to avoid that stable ions are handled by Radioactive Decay.
335 // We use a very large time threshold (many orders of magnitude bigger than
336 // the universe's age) but not DBL_MAX because shortestLifeTime can be
337 // sometimes slightly smaller for stable ions.
338 if(shortestLifeTime < 1.0e+100) // Unstable ion at rest: Radioactive Decay will decay it
339 {
340 // invoke selected process
341 //
342 for(std::size_t np=0; np<MAXofAtRestLoops; ++np)
343 {
344 //
345 // Note: DoItVector has inverse order against GetPhysIntVector
346 // and SelectedAtRestDoItVector.
347 //
349 {
350 fCurrentProcess = (*fAtRestDoItVector)[np];
352
353 // Set the current process as a process which defined this Step length
354 //
356
357 // Update Step
358 //
360
361 // Now Store the secondaries from ParticleChange to SecondaryList
362
363 G4Track* tempSecondaryTrack;
364 G4int num2ndaries;
365
367
368 for(G4int DSecLoop=0; DSecLoop< num2ndaries; ++DSecLoop)
369 {
370 tempSecondaryTrack = fParticleChange->GetSecondary(DSecLoop);
371
372 if(tempSecondaryTrack->GetDefinition()->GetApplyCutsFlag())
373 {
374 ApplyProductionCut(tempSecondaryTrack);
375 }
376
377 // Set parentID
378 tempSecondaryTrack->SetParentID( fTrack->GetTrackID() );
379
380 // Set the process pointer which created this track
381 tempSecondaryTrack->SetCreatorProcess( fCurrentProcess );
382
383 // If this 2ndry particle has 'zero' kinetic energy, make sure
384 // it invokes a rest process at the beginning of the tracking
385 //
386 if(tempSecondaryTrack->GetKineticEnergy() <= DBL_MIN)
387 {
388 G4ProcessManager* pm = tempSecondaryTrack->GetDefinition()
390 if(pm == nullptr)
391 {
393 ED << "A track without proper process manager is pushed\n"
394 << "into the track stack.\n"
395 << " Particle name : "
396 << tempSecondaryTrack->GetDefinition()->GetParticleName()
397 << " -- ";
398 if(tempSecondaryTrack->GetParentID()<0)
399 {
400 ED << "created by a primary particle generator.";
401 }
402 else
403 {
404 const G4VProcess* vp = tempSecondaryTrack->GetCreatorProcess();
405 if(vp != nullptr)
406 { ED << "created by " << vp->GetProcessName() << "."; }
407 else
408 { ED << "creaded by unknown process."; }
409 }
410 G4Exception("G4SteppingManager::InvokeAtRestDoItProcs()",
411 "Tracking10051", FatalException, ED);
412 }
413 if (pm->GetAtRestProcessVector()->entries()>0)
414 {
415 tempSecondaryTrack->SetTrackStatus( fStopButAlive );
416 fSecondary->push_back( tempSecondaryTrack );
418 }
419 else
420 {
421 delete tempSecondaryTrack;
422 }
423 }
424 else
425 {
426 fSecondary->push_back( tempSecondaryTrack );
428 }
429 } //end of loop on secondary
430
431 // clear ParticleChange
433
434 } // if(fSelectedAtRestDoItVector[np] != InActivated){
435 } // for(std::size_t np=0; np<MAXofAtRestLoops; ++np){
436 }
437 else // Stable ion at rest
438 {
440 } // if(shortestLifeTime < 1.0e+100)
441
443
445}
@ JustWarning
void SetStepLength(G4double value)
void SetStepLength(G4double value)
virtual G4Step * UpdateStepForAtRest(G4Step *Step)
virtual G4VParticleChange * AtRestDoIt(const G4Track &track, const G4Step &stepData)=0
G4double AtRestGPIL(const G4Track &track, G4ForceCondition *condition)
Definition: G4VProcess.hh:472

References ApplyProductionCut(), G4VProcess::AtRestDoIt(), G4VProcess::AtRestGPIL(), G4VParticleChange::Clear(), DBL_MAX, DBL_MIN, G4ProcessVector::entries(), FatalException, fAtRestDoItProcTriggered, fCondition, fCurrentProcess, fN2ndariesAtRestDoIt, fNoProcess, Forced, fParticleChange, fSecondary, fSelectedAtRestDoItVector, fStep, fStopAndKill, fStopButAlive, fTrack, G4Exception(), G4ParticleDefinition::GetApplyCutsFlag(), G4ProcessManager::GetAtRestProcessVector(), G4Track::GetCreatorProcess(), G4Track::GetDefinition(), G4Track::GetKineticEnergy(), G4VParticleChange::GetNumberOfSecondaries(), G4Track::GetParentID(), G4ParticleDefinition::GetParticleName(), G4Step::GetPostStepPoint(), G4ParticleDefinition::GetProcessManager(), G4VProcess::GetProcessName(), G4VParticleChange::GetSecondary(), G4Track::GetTrackID(), InActivated, JustWarning, MAXofAtRestLoops, NotForced, G4Track::SetCreatorProcess(), G4Track::SetParentID(), G4StepPoint::SetProcessDefinedStep(), G4Step::SetStepLength(), G4Track::SetStepLength(), G4Track::SetTrackStatus(), G4VParticleChange::UpdateStepForAtRest(), and G4Step::UpdateTrack().

Referenced by Stepping().

◆ InvokePostStepDoItProcs()

void G4SteppingManager::InvokePostStepDoItProcs ( )
private

Definition at line 567 of file G4SteppingManager2.cc.

569{
570 // Invoke the specified discrete processes
571 //
572 for(std::size_t np=0; np<MAXofPostStepLoops; ++np)
573 {
574 //
575 // Note: DoItVector has inverse order against GetPhysIntVector
576 // and SelectedPostStepDoItVector.
577 //
578 G4int Cond = (*fSelectedPostStepDoItVector)[MAXofPostStepLoops-np-1];
579 if(Cond != InActivated)
580 {
581 if( ((Cond == NotForced) && (fStepStatus == fPostStepDoItProc)) ||
582 ((Cond == Forced) && (fStepStatus != fExclusivelyForcedProc)) ||
584 ((Cond == StronglyForced) ) )
585 {
586 InvokePSDIP(np);
587 if ((np==0) && (fTrack->GetNextVolume() == nullptr))
588 {
591 }
592 }
593 }
594
595 // Exit from PostStepLoop if the track has been killed,
596 // but extra treatment for processes with Strongly Forced flag
597 //
599 {
600 for(std::size_t np1=np+1; np1<MAXofPostStepLoops; ++np1)
601 {
602 G4int Cond2 = (*fSelectedPostStepDoItVector)[MAXofPostStepLoops-np1-1];
603 if (Cond2 == StronglyForced)
604 {
605 InvokePSDIP(np1);
606 }
607 }
608 break;
609 }
610 }
611}
@ fWorldBoundary
Definition: G4StepStatus.hh:41
void SetStepStatus(const G4StepStatus aValue)
G4VPhysicalVolume * GetNextVolume() const

References ExclusivelyForced, fExclusivelyForcedProc, Forced, fPostStepDoItProc, fStep, fStepStatus, fStopAndKill, fTrack, fWorldBoundary, G4Track::GetNextVolume(), G4Step::GetPostStepPoint(), G4Track::GetTrackStatus(), InActivated, InvokePSDIP(), MAXofPostStepLoops, NotForced, G4StepPoint::SetStepStatus(), and StronglyForced.

Referenced by Stepping().

◆ InvokePSDIP()

void G4SteppingManager::InvokePSDIP ( size_t  np)
private

Definition at line 614 of file G4SteppingManager2.cc.

616{
617 fCurrentProcess = (*fPostStepDoItVector)[np];
619
620 // Update PostStepPoint of Step according to ParticleChange
622
623 #ifdef G4VERBOSE
625 #endif
626
627 // Update G4Track according to ParticleChange after each PostStepDoIt
629
630 // Update safety after each invocation of PostStepDoIts
632
633 // Now Store the secondaries from ParticleChange to SecondaryList
634
635 G4Track* tempSecondaryTrack;
636 G4int num2ndaries;
637
639
640 for(G4int DSecLoop=0; DSecLoop<num2ndaries; ++DSecLoop)
641 {
642 tempSecondaryTrack = fParticleChange->GetSecondary(DSecLoop);
643
644 if(tempSecondaryTrack->GetDefinition()->GetApplyCutsFlag())
645 {
646 ApplyProductionCut(tempSecondaryTrack);
647 }
648
649 // Set parentID
650 tempSecondaryTrack->SetParentID( fTrack->GetTrackID() );
651
652 // Set the process pointer which created this track
653 tempSecondaryTrack->SetCreatorProcess( fCurrentProcess );
654
655 // If this secondary particle has 'zero' kinetic energy, make sure
656 // it invokes a rest process at the beginning of the tracking
657 //
658 if(tempSecondaryTrack->GetKineticEnergy() <= DBL_MIN)
659 {
660 G4ProcessManager* pm = tempSecondaryTrack->GetDefinition()
662 if(pm == nullptr)
663 {
665 ED << "A track without proper process manager is pushed\n"
666 << "into the track stack.\n"
667 << " Particle name : "
668 << tempSecondaryTrack->GetDefinition()->GetParticleName()
669 << " -- ";
670 if(tempSecondaryTrack->GetParentID()<0)
671 {
672 ED << "created by a primary particle generator.";
673 }
674 else
675 {
676 const G4VProcess* vp = tempSecondaryTrack->GetCreatorProcess();
677 if(vp != nullptr)
678 { ED << "created by " << vp->GetProcessName() << "."; }
679 else
680 { ED << "creaded by unknown process."; }
681 }
682 G4Exception("G4SteppingManager::InvokePSDIP()","Tracking10053",
683 FatalException,ED);
684 }
685 if (pm->GetAtRestProcessVector()->entries()>0)
686 {
687 tempSecondaryTrack->SetTrackStatus( fStopButAlive );
688 fSecondary->push_back( tempSecondaryTrack );
690 }
691 else
692 {
693 delete tempSecondaryTrack;
694 }
695 }
696 else
697 {
698 fSecondary->push_back( tempSecondaryTrack );
700 }
701 } //end of loop on secondary
702
703 // Set the track status according to what the process defined
705
706 // clear ParticleChange
708}
void SetSafety(const G4double aValue)
virtual G4Step * UpdateStepForPostStep(G4Step *Step)
virtual G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &stepData)=0
virtual void PostStepDoItOneByOne()=0

References ApplyProductionCut(), CalculateSafety(), G4VParticleChange::Clear(), DBL_MIN, G4ProcessVector::entries(), FatalException, fCurrentProcess, fN2ndariesPostStepDoIt, fParticleChange, fSecondary, fStep, fStopButAlive, fTrack, fVerbose, G4Exception(), G4ParticleDefinition::GetApplyCutsFlag(), G4ProcessManager::GetAtRestProcessVector(), G4Track::GetCreatorProcess(), G4Track::GetDefinition(), G4Track::GetKineticEnergy(), G4VParticleChange::GetNumberOfSecondaries(), G4Track::GetParentID(), G4ParticleDefinition::GetParticleName(), G4Step::GetPostStepPoint(), G4ParticleDefinition::GetProcessManager(), G4VProcess::GetProcessName(), G4VParticleChange::GetSecondary(), G4Track::GetTrackID(), G4VParticleChange::GetTrackStatus(), G4VProcess::PostStepDoIt(), G4VSteppingVerbose::PostStepDoItOneByOne(), G4Track::SetCreatorProcess(), G4Track::SetParentID(), G4StepPoint::SetSafety(), G4Track::SetTrackStatus(), G4VParticleChange::UpdateStepForPostStep(), G4Step::UpdateTrack(), and verboseLevel.

Referenced by InvokePostStepDoItProcs().

◆ SetInitialStep()

void G4SteppingManager::SetInitialStep ( G4Track valueTrack)

Definition at line 281 of file G4SteppingManager.cc.

283{
284 // Set up several local variables
285 //
286 PreStepPointIsGeom = false;
287 FirstStep = true;
288 fParticleChange = nullptr;
291
292 fTrack = valueTrack;
294
295 PhysicalStep = 0.;
296 GeometricalStep = 0.;
297 CorrectedStep = 0.;
298 PreStepPointIsGeom = false;
299 FirstStep = false;
300
301 TempInitVelocity = 0.;
302 TempVelocity = 0.;
303 sumEnergyChange = 0.;
304
305 // If the primary track has 'Suspend' or 'PostponeToNextEvent' state,
306 // set the track state to 'Alive'
307 //
310 {
312 }
313
314 // If the primary track has 'zero' kinetic energy, set the track
315 // state to 'StopButAlive'
316 //
317 if(fTrack->GetKineticEnergy() <= 0.0)
318 {
320 }
321
322 // Set Touchable to track and a private attribute of G4SteppingManager
323
324 if ( ! fTrack->GetTouchableHandle() )
325 {
328 &direction, false, false );
332 }
333 else
334 {
337 G4VPhysicalVolume* newTopVolume =
341 if ( newTopVolume != oldTopVolume
342 || oldTopVolume->GetRegularStructureId() == 1 )
343 {
347 }
348 }
349
350 // Set OriginTouchableHandle for primary track
351 //
352 if(fTrack->GetParentID()==0)
353 {
355 }
356
357 // Set vertex information of G4Track at here
358 //
359 if ( fTrack->GetCurrentStepNumber() == 0 )
360 {
365 }
366
367 // Initial set up for attributes of 'G4SteppingManager'
369
370 // If track is already outside the world boundary, kill it
371 //
372 if( fCurrentVolume==nullptr )
373 {
374 // If the track is a primary, stop processing
375 if(fTrack->GetParentID()==0)
376 {
377 G4cerr << "ERROR - G4SteppingManager::SetInitialStep()" << G4endl
378 << " Primary particle starting at - "
379 << fTrack->GetPosition()
380 << " - is outside of the world volume." << G4endl;
381 G4Exception("G4SteppingManager::SetInitialStep()", "Tracking0010",
382 FatalException, "Primary vertex outside of the world!");
383 }
384
386 G4cout << "WARNING - G4SteppingManager::SetInitialStep()" << G4endl
387 << " Initial track position is outside world! - "
388 << fTrack->GetPosition() << G4endl;
389 }
390 else
391 {
392 // Initial set up for attributes of 'Step'
394 }
395
396 #ifdef G4VERBOSE
398 #endif
399}
@ fUndefined
Definition: G4StepStatus.hh:55
@ fSuspend
@ fPostponeToNextEvent
G4double GetMass() const
G4TouchableHistory * CreateTouchableHistory() const
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=nullptr, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
Definition: G4Navigator.cc:132
virtual G4VPhysicalVolume * ResetHierarchyAndLocate(const G4ThreeVector &point, const G4ThreeVector &direction, const G4TouchableHistory &h)
Definition: G4Navigator.cc:102
void InitializeStep(G4Track *aValue)
G4VPhysicalVolume * GetVolume() const
void SetVertexPosition(const G4ThreeVector &aValue)
void SetVertexMomentumDirection(const G4ThreeVector &aValue)
void SetNextTouchableHandle(const G4TouchableHandle &apValue)
const G4ThreeVector & GetPosition() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4int GetCurrentStepNumber() const
void SetOriginTouchableHandle(const G4TouchableHandle &apValue)
const G4TouchableHandle & GetTouchableHandle() const
const G4ThreeVector & GetMomentumDirection() const
void SetVertexKineticEnergy(const G4double aValue)
void SetLogicalVolumeAtVertex(const G4LogicalVolume *)
G4LogicalVolume * GetLogicalVolume() const
virtual G4int GetRegularStructureId() const =0
virtual void TrackingStarted()=0
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
Definition: G4VTouchable.cc:34

References CorrectedStep, G4Navigator::CreateTouchableHistory(), fAlive, FatalException, fCurrentVolume, FirstStep, fNavigator, fParticleChange, fPostponeToNextEvent, fPreviousStepSize, fStep, fStepStatus, fStopAndKill, fStopButAlive, fSuspend, fTouchableHandle, fTrack, fUndefined, fVerbose, G4cerr, G4cout, G4endl, G4Exception(), GeometricalStep, G4Track::GetCurrentStepNumber(), G4Track::GetDynamicParticle(), G4Track::GetKineticEnergy(), G4VPhysicalVolume::GetLogicalVolume(), G4DynamicParticle::GetMass(), G4Track::GetMomentumDirection(), G4Track::GetParentID(), G4Track::GetPosition(), G4VPhysicalVolume::GetRegularStructureId(), G4Track::GetTouchableHandle(), G4Track::GetTrackStatus(), G4Track::GetVolume(), G4VTouchable::GetVolume(), G4Step::InitializeStep(), G4Navigator::LocateGlobalPointAndSetup(), Mass, PhysicalStep, PreStepPointIsGeom, G4Navigator::ResetHierarchyAndLocate(), G4Track::SetLogicalVolumeAtVertex(), G4Track::SetNextTouchableHandle(), G4Track::SetOriginTouchableHandle(), G4Track::SetTouchableHandle(), G4Track::SetTrackStatus(), G4Track::SetVertexKineticEnergy(), G4Track::SetVertexMomentumDirection(), G4Track::SetVertexPosition(), sumEnergyChange, TempInitVelocity, TempVelocity, G4VSteppingVerbose::TrackingStarted(), and verboseLevel.

Referenced by G4ErrorPropagator::InitG4Track(), and G4TrackingManager::ProcessOneTrack().

◆ SetNavigator()

void G4SteppingManager::SetNavigator ( G4Navigator value)
inline

Definition at line 515 of file G4SteppingManager.hh.

516 {
517 fNavigator = value;
518 }

References fNavigator.

Referenced by G4SteppingManager(), and G4ErrorPropagatorManager::StartNavigator().

◆ SetUserAction()

void G4SteppingManager::SetUserAction ( G4UserSteppingAction apAction)
inline

Definition at line 520 of file G4SteppingManager.hh.

521 {
522 fUserSteppingAction = apAction;
523 }

References fUserSteppingAction.

Referenced by G4TrackingManager::SetUserAction().

◆ SetVerbose()

void G4SteppingManager::SetVerbose ( G4VSteppingVerbose yourVerbose)
inline

Definition at line 540 of file G4SteppingManager.hh.

541 {
542 fVerbose = yourVerbose;
543 }

References fVerbose.

◆ SetVerboseLevel()

void G4SteppingManager::SetVerboseLevel ( G4int  vLevel)
inline

Definition at line 535 of file G4SteppingManager.hh.

536 {
537 verboseLevel = vLevel;
538 }

References verboseLevel.

Referenced by G4ErrorPropagatorManager::SetSteppingManagerVerboseLevel().

◆ Stepping()

G4StepStatus G4SteppingManager::Stepping ( )

Definition at line 122 of file G4SteppingManager.cc.

124{
125#ifdef GEANT4_USE_TIMEMORY
126 ProfilerConfig profiler{ fStep };
127#endif
128
129 //--------
130 // Prelude
131 //--------
132 #ifdef G4VERBOSE
133 if(verboseLevel>0)
134 {
135 fVerbose->NewStep();
136 }
137 else if (verboseLevel==-1)
138 {
140 }
141 else
142 {
144 }
145 #endif
146
147 // Store last PostStepPoint to PreStepPoint, and swap current and nex
148 // volume information of G4Track. Reset total energy deposit in one Step.
149 //
152
153 // Switch next touchable in track to current one
154 //
156
157 // Reset the secondary particles
158 //
162
163 // Set the volume before it is used (in DefineStepLength() for User Limit)
164 //
166
167 // Reset the step's auxiliary points vector pointer
168 //
170
171 //-----------------
172 // AtRest Processes
173 //-----------------
174
176 {
177 if( MAXofAtRestLoops>0 )
178 {
182
183 #ifdef G4VERBOSE
185 #endif
186
187 }
188 // Make sure the track is killed
189 //
191 }
192
193 //---------------------------------
194 // AlongStep and PostStep Processes
195 //---------------------------------
196
197 else
198 {
199 // Find minimum Step length demanded by active disc./cont. processes
201
202 // Store the Step length (geometrical length) to G4Step and G4Track
205 G4double GeomStepLength = PhysicalStep;
206
207 // Store StepStatus to PostStepPoint
209
210 // Invoke AlongStepDoIt
212
213 // Update track by taking into account all changes by AlongStepDoIt
215
216 // Update safety after invocation of all AlongStepDoIts
218 // endpointSafety= std::max( proposedSafety - GeomStepLength, 0.);
220
222
223 #ifdef G4VERBOSE
225 #endif
226
227 // Invoke PostStepDoIt
229
230 #ifdef G4VERBOSE
232 #endif
233 }
234
235 //-------
236 // Finale
237 //-------
238
239 // Update 'TrackLength' and remeber the Step length of the current Step
240 //
244
245 #ifdef G4VERBOSE
247 #endif
248
249 // Send G4Step information to Hit/Dig if the volume is sensitive
250 //
254 {
256 if( fSensitive != 0 )
257 {
259 }
260 }
261
262 // User intervention process
263 //
264 if( fUserSteppingAction != nullptr )
265 {
267 }
268
269 G4UserSteppingAction* regionalAction =
271
272 if(regionalAction)
273 regionalAction->UserSteppingAction(fStep);
274
275 // Stepping process finish. Return the value of the StepStatus
276 //
277 return fStepStatus;
278}
@ fAtRestDoItProc
Definition: G4StepStatus.hh:45
@ AvoidHitInvocation
G4Region * GetRegion() const
G4UserSteppingAction * GetRegionalSteppingAction() const
Definition: G4Region.cc:158
G4VSensitiveDetector * GetSensitiveDetector() const
G4VPhysicalVolume * GetPhysicalVolume() const
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *vec)
G4SteppingControl GetControlFlag() const
void ResetTotalEnergyDeposit()
void CopyPostToPreStepPoint()
G4double GetStepLength() const
void SetTrack(G4Track *value)
G4Step::ProfilerConfig ProfilerConfig
const G4TouchableHandle & GetNextTouchableHandle() const
void AddTrackLength(const G4double aValue)
virtual void UserSteppingAction(const G4Step *)
G4bool Hit(G4Step *aStep)
virtual void AlongStepDoItAllDone()=0
virtual void PostStepDoItAllDone()=0
virtual void AtRestDoItInvoked()=0
virtual void StepInfo()=0
static void SetSilent(G4int fSilent)
virtual void NewStep()=0

References G4Track::AddTrackLength(), G4VSteppingVerbose::AlongStepDoItAllDone(), G4VSteppingVerbose::AtRestDoItInvoked(), AvoidHitInvocation, G4Step::CopyPostToPreStepPoint(), DefinePhysicalStepLength(), endpointSafety, endpointSafOrigin, fAtRestDoItProc, fCurrentVolume, fN2ndariesAlongStepDoIt, fN2ndariesAtRestDoIt, fN2ndariesPostStepDoIt, fPostStepPoint, fPreviousStepSize, fSensitive, fStep, fStepStatus, fStopAndKill, fStopButAlive, fTrack, fUserSteppingAction, fVerbose, G4Step::GetControlFlag(), G4VPhysicalVolume::GetLogicalVolume(), G4Track::GetNextTouchableHandle(), G4StepPoint::GetPhysicalVolume(), G4StepPoint::GetPosition(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4LogicalVolume::GetRegion(), G4Region::GetRegionalSteppingAction(), G4StepPoint::GetSensitiveDetector(), G4Step::GetStepLength(), G4Track::GetTrackStatus(), G4VSensitiveDetector::Hit(), InvokeAlongStepDoItProcs(), InvokeAtRestDoItProcs(), InvokePostStepDoItProcs(), kCarTolerance, G4INCL::Math::max(), MAXofAtRestLoops, G4VSteppingVerbose::NewStep(), PhysicalStep, G4VSteppingVerbose::PostStepDoItAllDone(), proposedSafety, G4Step::ResetTotalEnergyDeposit(), G4Step::SetPointerToVectorOfAuxiliaryPoints(), G4StepPoint::SetSafety(), G4VSteppingVerbose::SetSilent(), G4Step::SetStepLength(), G4Track::SetStepLength(), G4StepPoint::SetStepStatus(), G4Track::SetTouchableHandle(), G4Step::SetTrack(), G4Track::SetTrackStatus(), StepControlFlag, G4VSteppingVerbose::StepInfo(), G4Step::UpdateTrack(), G4UserSteppingAction::UserSteppingAction(), and verboseLevel.

Referenced by G4ErrorPropagator::MakeOneStep(), and G4TrackingManager::ProcessOneTrack().

Field Documentation

◆ CorrectedStep

G4double G4SteppingManager::CorrectedStep = 0.0
private

Definition at line 194 of file G4SteppingManager.hh.

Referenced by GetCorrectedStep(), and SetInitialStep().

◆ endpointSafety

G4double G4SteppingManager::endpointSafety = 0.0
private

Definition at line 260 of file G4SteppingManager.hh.

Referenced by CalculateSafety(), and Stepping().

◆ endpointSafOrigin

G4ThreeVector G4SteppingManager::endpointSafOrigin
private

Definition at line 259 of file G4SteppingManager.hh.

Referenced by CalculateSafety(), and Stepping().

◆ fAlongStepDoItProcTriggered

std::size_t G4SteppingManager::fAlongStepDoItProcTriggered = 0
private

Definition at line 232 of file G4SteppingManager.hh.

◆ fAlongStepDoItVector

G4ProcessVector* G4SteppingManager::fAlongStepDoItVector = nullptr
private

Definition at line 220 of file G4SteppingManager.hh.

Referenced by GetfAlongStepDoItVector(), and GetProcessNumber().

◆ fAlongStepGetPhysIntVector

G4ProcessVector* G4SteppingManager::fAlongStepGetPhysIntVector = nullptr
private

Definition at line 224 of file G4SteppingManager.hh.

Referenced by GetfAlongStepGetPhysIntVector(), and GetProcessNumber().

◆ fAtRestDoItProcTriggered

std::size_t G4SteppingManager::fAtRestDoItProcTriggered = 0
private

◆ fAtRestDoItVector

G4ProcessVector* G4SteppingManager::fAtRestDoItVector = nullptr
private

Definition at line 219 of file G4SteppingManager.hh.

Referenced by GetfAtRestDoItVector(), and GetProcessNumber().

◆ fAtRestGetPhysIntVector

G4ProcessVector* G4SteppingManager::fAtRestGetPhysIntVector = nullptr
private

Definition at line 223 of file G4SteppingManager.hh.

Referenced by GetfAtRestGetPhysIntVector(), and GetProcessNumber().

◆ fCondition

G4ForceCondition G4SteppingManager::fCondition = InActivated
private

◆ fCurrentProcess

G4VProcess* G4SteppingManager::fCurrentProcess = nullptr
private

◆ fCurrentVolume

G4VPhysicalVolume* G4SteppingManager::fCurrentVolume = nullptr
private

Definition at line 212 of file G4SteppingManager.hh.

Referenced by GetfCurrentVolume(), SetInitialStep(), and Stepping().

◆ fGPILSelection

G4GPILSelection G4SteppingManager::fGPILSelection = NotCandidateForSelection
private

Definition at line 265 of file G4SteppingManager.hh.

Referenced by DefinePhysicalStepLength(), and GetfGPILSelection().

◆ FirstStep

G4bool G4SteppingManager::FirstStep = false
private

Definition at line 196 of file G4SteppingManager.hh.

Referenced by GetFirstStep(), and SetInitialStep().

◆ fN2ndariesAlongStepDoIt

G4int G4SteppingManager::fN2ndariesAlongStepDoIt = 0
private

◆ fN2ndariesAtRestDoIt

G4int G4SteppingManager::fN2ndariesAtRestDoIt = 0
private

Definition at line 235 of file G4SteppingManager.hh.

Referenced by GetfN2ndariesAtRestDoIt(), InvokeAtRestDoItProcs(), and Stepping().

◆ fN2ndariesPostStepDoIt

G4int G4SteppingManager::fN2ndariesPostStepDoIt = 0
private

Definition at line 237 of file G4SteppingManager.hh.

Referenced by GetfN2ndariesPostStepDoIt(), InvokePSDIP(), and Stepping().

◆ fNavigator

G4Navigator* G4SteppingManager::fNavigator = nullptr
private

Definition at line 241 of file G4SteppingManager.hh.

Referenced by GetfNavigator(), SetInitialStep(), and SetNavigator().

◆ fNoProcess

G4NoProcess const* G4SteppingManager::fNoProcess = nullptr
private

Definition at line 271 of file G4SteppingManager.hh.

Referenced by G4SteppingManager(), and InvokeAtRestDoItProcs().

◆ fParticleChange

G4VParticleChange* G4SteppingManager::fParticleChange = nullptr
private

◆ fPostStepDoItProcTriggered

std::size_t G4SteppingManager::fPostStepDoItProcTriggered = 0
private

◆ fPostStepDoItVector

G4ProcessVector* G4SteppingManager::fPostStepDoItVector = nullptr
private

Definition at line 221 of file G4SteppingManager.hh.

Referenced by GetfPostStepDoItVector(), and GetProcessNumber().

◆ fPostStepGetPhysIntVector

G4ProcessVector* G4SteppingManager::fPostStepGetPhysIntVector = nullptr
private

Definition at line 225 of file G4SteppingManager.hh.

Referenced by GetfPostStepGetPhysIntVector(), and GetProcessNumber().

◆ fPostStepPoint

G4StepPoint* G4SteppingManager::fPostStepPoint = nullptr
private

◆ fPreStepPoint

G4StepPoint* G4SteppingManager::fPreStepPoint = nullptr
private

Definition at line 209 of file G4SteppingManager.hh.

Referenced by ApplyProductionCut(), G4SteppingManager(), and GetfPreStepPoint().

◆ fPreviousStepSize

G4double G4SteppingManager::fPreviousStepSize = 0.0
private

◆ fSecondary

G4TrackVector* G4SteppingManager::fSecondary = nullptr
private

◆ fSelectedAlongStepDoItVector

G4SelectedAlongStepDoItVector* G4SteppingManager::fSelectedAlongStepDoItVector = nullptr
private

◆ fSelectedAtRestDoItVector

G4SelectedAtRestDoItVector* G4SteppingManager::fSelectedAtRestDoItVector = nullptr
private

◆ fSelectedPostStepDoItVector

G4SelectedPostStepDoItVector* G4SteppingManager::fSelectedPostStepDoItVector = nullptr
private

◆ fSensitive

G4VSensitiveDetector* G4SteppingManager::fSensitive = nullptr
private

Definition at line 213 of file G4SteppingManager.hh.

Referenced by GetfSensitive(), and Stepping().

◆ fStep

G4Step* G4SteppingManager::fStep = nullptr
private

◆ fStepStatus

G4StepStatus G4SteppingManager::fStepStatus = fUndefined
private

◆ fTouchableHandle

G4TouchableHandle G4SteppingManager::fTouchableHandle
private

Definition at line 251 of file G4SteppingManager.hh.

Referenced by GetTouchableHandle(), SetInitialStep(), and ~G4SteppingManager().

◆ fTrack

G4Track* G4SteppingManager::fTrack = nullptr
private

◆ fUserSteppingAction

G4UserSteppingAction* G4SteppingManager::fUserSteppingAction = nullptr
private

Definition at line 188 of file G4SteppingManager.hh.

Referenced by GetUserAction(), SetUserAction(), Stepping(), and ~G4SteppingManager().

◆ fVerbose

G4VSteppingVerbose* G4SteppingManager::fVerbose = nullptr
private

◆ GeometricalStep

G4double G4SteppingManager::GeometricalStep = 0.0
private

Definition at line 193 of file G4SteppingManager.hh.

Referenced by GetGeometricalStep(), and SetInitialStep().

◆ kCarTolerance

G4double G4SteppingManager::kCarTolerance = 0.0
private

Definition at line 255 of file G4SteppingManager.hh.

Referenced by CalculateSafety(), G4SteppingManager(), and Stepping().

◆ KillVerbose

G4bool G4SteppingManager::KillVerbose = false
private

Definition at line 186 of file G4SteppingManager.hh.

Referenced by G4SteppingManager(), and ~G4SteppingManager().

◆ Mass

G4double G4SteppingManager::Mass = 0.0
private

Definition at line 201 of file G4SteppingManager.hh.

Referenced by GetMass(), and SetInitialStep().

◆ MAXofAlongStepLoops

std::size_t G4SteppingManager::MAXofAlongStepLoops = 0
private

◆ MAXofAtRestLoops

std::size_t G4SteppingManager::MAXofAtRestLoops = 0
private

◆ MAXofPostStepLoops

std::size_t G4SteppingManager::MAXofPostStepLoops = 0
private

◆ PhysicalStep

G4double G4SteppingManager::PhysicalStep = 0.0
private

◆ physIntLength

G4double G4SteppingManager::physIntLength = 0.0
private

◆ PreStepPointIsGeom

G4bool G4SteppingManager::PreStepPointIsGeom = false
private

Definition at line 195 of file G4SteppingManager.hh.

Referenced by GetPreStepPointIsGeom(), and SetInitialStep().

◆ proposedSafety

G4double G4SteppingManager::proposedSafety = 0.0
private

Definition at line 257 of file G4SteppingManager.hh.

Referenced by DefinePhysicalStepLength(), and Stepping().

◆ SizeOfSelectedDoItVector

const size_t G4SteppingManager::SizeOfSelectedDoItVector = 100
staticprivate

Definition at line 184 of file G4SteppingManager.hh.

Referenced by G4SteppingManager(), and GetProcessNumber().

◆ StepControlFlag

G4SteppingControl G4SteppingManager::StepControlFlag = NormalCondition
private

Definition at line 253 of file G4SteppingManager.hh.

Referenced by GetStepControlFlag(), and Stepping().

◆ sumEnergyChange

G4double G4SteppingManager::sumEnergyChange = 0.0
private

Definition at line 203 of file G4SteppingManager.hh.

Referenced by GetsumEnergyChange(), and SetInitialStep().

◆ TempInitVelocity

G4double G4SteppingManager::TempInitVelocity = 0.0
private

Definition at line 199 of file G4SteppingManager.hh.

Referenced by GetTempInitVelocity(), and SetInitialStep().

◆ TempVelocity

G4double G4SteppingManager::TempVelocity = 0.0
private

Definition at line 200 of file G4SteppingManager.hh.

Referenced by GetTempVelocity(), and SetInitialStep().

◆ verboseLevel

G4int G4SteppingManager::verboseLevel = 0
private

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