71 return std::numeric_limits<T>::has_infinity
72 && value == std::numeric_limits<T>::infinity();
82 fpTrackingManager = 0;
99 fSelectedAtRestDoItVector(
G4VITProcess::GetMaxProcessIndex(), 0),
100 fSelectedPostStepDoItVector(
G4VITProcess::GetMaxProcessIndex(), 0)
119 fSelectedAtRestDoItVector(right.fSelectedAtRestDoItVector),
120 fSelectedPostStepDoItVector(right.fSelectedPostStepDoItVector)
141 if(
this == &right)
return *
this;
173 std::map<const G4ParticleDefinition*, ProcessGeneralInfo*>::iterator it;
206 ->GetNavigatorForTracking());
283 if(
this == &rhs)
return *
this;
294 G4cout<<
"G4ITStepProcessor::CloneProcesses: is called"<<
G4endl;
301 theParticleIterator->
reset();
303 while((*theParticleIterator)())
310 G4cerr <<
"ERROR - G4ITStepProcessor::GetProcessNumber()" << G4endl<<
" ProcessManager is NULL for particle = "
313 G4Exception(
"G4ITStepProcessor::GetProcessNumber()",
"ITStepProcessor0001",
330 for(
int i = 0; i < processVector->
size(); i++)
332 G4VProcess* base_process = (*processVector)[i];
349 G4cout<<
"G4ITStepProcessor::GetProcessNumber: is called track"<<
G4endl;
353 G4cerr <<
"ERROR - G4SteppingManager::GetProcessNumber()" << G4endl<<
" ProcessManager is NULL for particle = "
356 G4Exception(
"G4SteppingManager::GetProcessNumber()",
"ITStepProcessor0002",
361 std::map<const G4ParticleDefinition*, ProcessGeneralInfo*>::iterator it =
365 G4Exception(
"G4SteppingManager::SetupGeneralProcessInfo()",
366 "ITStepProcessor0003",
380 G4cout <<
"G4ITStepProcessor::GetProcessNumber: #ofAtRest="
392 G4cout <<
"G4ITStepProcessor::GetProcessNumber:#ofAlongStp="
403 G4cout <<
"G4ITStepProcessor::GetProcessNumber: #ofPostStep="
407 if (SizeOfSelectedDoItVector<fpProcessInfo->MAXofAtRestLoops ||
408 SizeOfSelectedDoItVector<fpProcessInfo->MAXofAlongStepLoops ||
409 SizeOfSelectedDoItVector<fpProcessInfo->MAXofPostStepLoops )
411 G4cerr <<
"ERROR - G4ITStepProcessor::GetProcessNumber()" << G4endl
413 <<
" ; is smaller then one of MAXofAtRestLoops= "
417 G4Exception(
"G4ITStepProcessor::GetProcessNumber()",
419 "The array size is smaller than the actual No of processes.");
427 exceptionDescription <<
"No DoIt process found ";
428 G4Exception(
"G4ITStepProcessor::DoStepping",
"ITStepProcessor0005",
443 exceptionDescription <<
"No transportation process found ";
444 G4Exception(
"G4ITStepProcessor::SetupGeneralProcessInfo",
445 "ITStepProcessor0006",
473 errMsg <<
"No IT pointer was attached to the track you try to process.";
475 "ITStepProcessor0007",
491 std::map<const G4ParticleDefinition*, ProcessGeneralInfo*>::iterator it =
502 "ITStepProcessor0008",
504 exceptionDescription);
551 unsigned int NofInactiveProc=0;
577 if(lifeTime < shortestLifeTime )
579 shortestLifeTime = lifeTime;
598 G4cerr <<
"ERROR - G4ITStepProcessor::InvokeAtRestDoItProcs()" <<
G4endl
599 <<
" No AtRestDoIt process is active!" <<
G4endl;
728 ->GetNavigatorState());
755 ->GetNavigatorState());
760 ->fTouchableHandle()));
762 ->GetNavigatorState());
782 ->GetTouchableHandle()()));
826 G4cerr <<
"ERROR - G4ITStepProcessor::SetInitialStep()" <<
G4endl<<
" Primary particle starting at - "
828 <<
" - is outside of the world volume." <<
G4endl;
829 G4Exception(
"G4ITStepProcessor::SetInitialStep()",
"ITStepProcessor0011",
834 G4cout <<
"WARNING - G4ITStepProcessor::SetInitialStep()" <<
G4endl
835 <<
" Initial track position is outside world! - "
976 ->GetNavigatorState());
988 double proposedTimeStep =
DBL_MAX;
989 G4VProcess* processWithPostStepGivenByTimeStep(0);
1040 G4Exception(
"G4ITStepProcessor::DefinePhysicalStepLength()",
1041 "ITStepProcessor0008",
1043 "This feature is no more supported");
1070 if(fPhysIntLength < fpState->fPhysicalStep)
1113 safetyProposedToAndByProcess,
1121 if(fPhysIntLength < fpState->fPhysicalStep)
1142 exceptionDescription <<
"No transportation process found ";
1143 G4Exception(
"G4ITStepProcessor::DoDefinePhysicalStepLength",
1144 "ITStepProcessor0009",
1146 exceptionDescription);
1164 exceptionDescription <<
"No transportation process found ";
1165 G4Exception(
"G4ITStepProcessor::DoDefinePhysicalStepLength",
1166 "ITStepProcessor0010",
1168 exceptionDescription);
1178 if(fPostStepAtTimeDoItProcTriggered < fpProcessInfo->MAXofPostStepLoops)
1200 if(fPostStepDoItProcTriggered < fpProcessInfo->MAXofPostStepLoops)
1216 if(safetyProposedToAndByProcess < fpState->fProposedSafety)
G4TrackVector * fpSecondary
G4ITTrackingInteractivity * GetInteractivity()
void SetTrackStatus(const G4TrackStatus aTrackStatus)
G4ParticleDefinition * GetDefinition() const
Its role is the same as G4StepManager :
G4int GetParentID() const
size_t fAtRestDoItProcTriggered
G4ProcessVector * fpAtRestGetPhysIntVector
void SetVertexMomentumDirection(const G4ThreeVector &aValue)
G4ITTrackingManager * fpTrackingManager
void PrepareLeadingTracks()
void SetProcessDefinedStep(const G4VProcess *aValue)
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
G4ITTransportation * fpTransportation
G4GPILSelection fGPILSelection
void DeleteSecondaryVector()
G4TouchableHandle fTouchableHandle
void SetNavigator(G4ITNavigator *value)
size_t MAXofAlongStepLoops
const G4ThreeVector & GetPosition() const
G4double GetSurfaceTolerance() const
G4TrackStatus GetTrackStatus() const
std::map< const G4ParticleDefinition *, ProcessGeneralInfo * > fProcessGeneralInfoMap
void SetNextTouchableHandle(const G4TouchableHandle &apValue)
G4ProcessVector * fpAlongStepDoItVector
G4ProcessVector * fpPostStepDoItVector
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4int GetPDGEncoding() const
G4VITProcess * fpCurrentProcess
virtual const G4String & GetName() const =0
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *theNewVectorPointer)
void SetPreviousStepTime(G4double)
void PrepareLeadingTracks()
const G4Step * GetStep() const
G4ProcessManager * GetProcessManager() const
void StartTracking(G4Track *)
G4int fN2ndariesPostStepDoIt
const G4String & GetParticleName() const
G4SelectedAtRestDoItVector fSelectedAtRestDoItVector
G4ForceCondition fCondition
G4ITTrackHolder * fpTrackContainer
G4SelectedPostStepDoItVector fSelectedPostStepDoItVector
G4VProcess * SetProcessActivation(G4VProcess *aProcess, G4bool fActive)
G4VPhysicalVolume * GetNextVolume() const
void DefinePhysicalStepLength(G4Track *)
G4double AtRestGPIL(const G4Track &track, G4ForceCondition *condition)
G4StepPoint * GetPreStepPoint() const
void EndTracking(G4Track *)
G4IT * GetIT(const G4Track *track)
G4ProcessVector * GetAtRestProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4double GetKineticEnergy() const
static G4ITTransportationManager * GetTransportationManager()
G4TrackingInformation * fpTrackingInfo
G4GLOB_DLL std::ostream G4cout
void reset(G4bool ifSkipIon=true)
G4int GetCurrentStepNumber() const
G4TrackVector * NewSecondaryVector()
G4ProcessVector * fpAlongStepGetPhysIntVector
G4VPhysicalVolume * GetPhysicalVolume() const
void ActiveOnlyITProcess()
G4StepPoint * fpPreStepPoint
G4double AlongStepGPIL(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
G4ProcessVector * fpAtRestDoItVector
G4ITLeadingTracks fLeadingTracks
virtual void ComputeStep(const G4Track &, const G4Step &, const double timeStep, double &spaceStep)
virtual G4int GetRegularStructureId() const =0
virtual void DPSLStarted()=0
void ResetTotalEnergyDeposit()
size_t fPostStepDoItProcTriggered
void SetVertexKineticEnergy(const G4double aValue)
const G4TouchableHandle & GetNextTouchableHandle() const
virtual void DPSLPostStep()=0
G4ProcessVector * fpPostStepGetPhysIntVector
G4VPhysicalVolume * fpCurrentVolume
double GetInteractionTime()
G4ITNavigator * fpNavigator
G4double GetGlobalTime() const
G4ITStepProcessorState * fpState
G4StepPoint * fpPostStepPoint
G4double GetInteractionTimeLeft()
const G4TouchableHandle & GetTouchableHandle() const
G4int fN2ndariesAtRestDoIt
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual void Initialize()
G4TrackingInformation * GetTrackingInfo()
G4double PostStepGPIL(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4double ComputeInteractionLength(double previousTimeStep)
void SetProcessState(G4shared_ptr< G4ProcessState_Lock > aProcInfo)
const G4ThreeVector & GetMomentumDirection() const
G4LogicalVolume * GetLogicalVolume() const
G4TrackVector * GetfSecondary()
static G4ParticleTable * GetParticleTable()
G4ITStepProcessorState & operator=(const G4ITStepProcessorState &)
G4ITTransportation * fpTransportation
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
void SetVertexPosition(const G4ThreeVector &aValue)
G4StepPoint * GetPostStepPoint() const
G4ITStepProcessor & operator=(const G4ITStepProcessor &other)
size_t MAXofPostStepLoops
virtual void DPSLAlongStep()=0
G4VPhysicalVolume * GetVolume() const
G4VITSteppingVerbose * GetSteppingVerbose()
void DoDefinePhysicalStepLength()
static G4ITTrackHolder * Instance()
ProcessGeneralInfo * fpProcessInfo
virtual ~G4ITStepProcessor()
void InitializeStep(G4Track *aValue)
G4TrackList * GetMainList(Key)
G4VITSteppingVerbose * fpVerbose
G4double fPreviousStepSize
void SetupGeneralProcessInfo(G4ParticleDefinition *, G4ProcessManager *)
G4double fPreviousTimeStep
G4ProcessVector * GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4bool ProposesTimeStep() const
G4int fN2ndariesAlongStepDoIt
void SetStepProcessor(const G4ITStepProcessor *stepProcessor)
virtual ~G4ITStepProcessorState()
G4VITProcess inherits from G4VProcess.
void ResetLeadingTracks()
size_t GetProcessID() const
G4PTblDicIterator * GetIterator() const
void SetStep(const G4Step *aValue)
size_t fPostStepAtTimeDoItProcTriggered
#define theParticleIterator
G4double GetStepLength() const
static G4GeometryTolerance * GetInstance()
G4ProcessVector * GetProcessList() const
static const size_t SizeOfSelectedDoItVector
void ForceReInitialization()
G4GLOB_DLL std::ostream G4cerr
void SetLogicalVolumeAtVertex(const G4LogicalVolume *)
void CopyPostToPreStepPoint()
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const