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 ()
 
G4ProcessVector * GetfAlongStepDoItVector ()
 
G4ProcessVector * GetfAlongStepGetPhysIntVector ()
 
std::size_t GetfAtRestDoItProcTriggered ()
 
G4ProcessVector * GetfAtRestDoItVector ()
 
G4ProcessVector * GetfAtRestGetPhysIntVector ()
 
G4ForceCondition GetfCondition ()
 
G4VProcess * GetfCurrentProcess ()
 
G4VPhysicalVolume * GetfCurrentVolume ()
 
G4GPILSelection GetfGPILSelection ()
 
G4bool GetFirstStep ()
 
G4int GetfN2ndariesAlongStepDoIt ()
 
G4int GetfN2ndariesAtRestDoIt ()
 
G4int GetfN2ndariesPostStepDoIt ()
 
G4Navigator * GetfNavigator ()
 
G4VParticleChange * GetfParticleChange ()
 
std::size_t GetfPostStepDoItProcTriggered ()
 
G4ProcessVector * GetfPostStepDoItVector ()
 
G4ProcessVector * GetfPostStepGetPhysIntVector ()
 
G4StepPoint * GetfPostStepPoint ()
 
G4StepPoint * GetfPreStepPoint ()
 
G4double GetfPreviousStepSize ()
 
G4TrackVector * GetfSecondary ()
 
G4SelectedAlongStepDoItVector * GetfSelectedAlongStepDoItVector ()
 
G4SelectedAtRestDoItVector * GetfSelectedAtRestDoItVector ()
 
G4SelectedPostStepDoItVector * GetfSelectedPostStepDoItVector ()
 
G4VSensitiveDetector * GetfSensitive ()
 
G4Step * GetfStep ()
 
G4StepStatus GetfStepStatus ()
 
G4Track * GetfTrack ()
 
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 G4TrackVector * GetSecondary () const
 
G4Step * GetStep () const
 
G4SteppingControl GetStepControlFlag ()
 
G4double GetsumEnergyChange ()
 
G4double GetTempInitVelocity ()
 
G4double GetTempVelocity ()
 
const G4TouchableHandle & GetTouchableHandle ()
 
G4Track * GetTrack () const
 
G4UserSteppingAction * GetUserAction ()
 
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
 
G4ProcessVector * fAlongStepDoItVector = nullptr
 
G4ProcessVector * fAlongStepGetPhysIntVector = nullptr
 
std::size_t fAtRestDoItProcTriggered = 0
 
G4ProcessVector * fAtRestDoItVector = nullptr
 
G4ProcessVector * fAtRestGetPhysIntVector = nullptr
 
G4ForceCondition fCondition = InActivated
 
G4VProcess * fCurrentProcess = nullptr
 
G4VPhysicalVolume * fCurrentVolume = nullptr
 
G4GPILSelection fGPILSelection = NotCandidateForSelection
 
G4bool FirstStep = false
 
G4int fN2ndariesAlongStepDoIt = 0
 
G4int fN2ndariesAtRestDoIt = 0
 
G4int fN2ndariesPostStepDoIt = 0
 
G4Navigator * fNavigator = nullptr
 
G4NoProcess const * fNoProcess = nullptr
 
G4VParticleChange * fParticleChange = nullptr
 
std::size_t fPostStepDoItProcTriggered = 0
 
G4ProcessVector * fPostStepDoItVector = nullptr
 
G4ProcessVector * fPostStepGetPhysIntVector = nullptr
 
G4StepPoint * fPostStepPoint = nullptr
 
G4StepPoint * fPreStepPoint = nullptr
 
G4double fPreviousStepSize = 0.0
 
G4TrackVector * fSecondary = nullptr
 
G4SelectedAlongStepDoItVector * fSelectedAlongStepDoItVector = nullptr
 
G4SelectedAtRestDoItVector * fSelectedAtRestDoItVector = nullptr
 
G4SelectedPostStepDoItVector * fSelectedPostStepDoItVector = nullptr
 
G4VSensitiveDetector * fSensitive = nullptr
 
G4Step * fStep = nullptr
 
G4StepStatus fStepStatus = fUndefined
 
G4TouchableHandle fTouchableHandle
 
G4Track * fTrack = nullptr
 
G4UserSteppingAction * fUserSteppingAction = nullptr
 
G4VSteppingVerbose * fVerbose = 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: