68 fpTrackingManager = 0;
81 fSelectedAtRestDoItVector (
G4VITProcess::GetMaxProcessIndex(),0),
82 fSelectedPostStepDoItVector (
G4VITProcess::GetMaxProcessIndex(),0)
101 fSelectedAtRestDoItVector (
G4VITProcess::GetMaxProcessIndex(),0),
102 fSelectedPostStepDoItVector (
G4VITProcess::GetMaxProcessIndex(),0)
119 if(
this == &rhs)
return *
this;
121 fSelectedAtRestDoItVector.clear();
124 fSelectedPostStepDoItVector.clear();
129 fPreviousStepSize = -1.;
132 proposedSafety = -1.;
137 fTouchableHandle = 0;
148 std::map<const G4ParticleDefinition*, ProcessGeneralInfo*> ::iterator it;
180 ->GetNavigatorForTracking());
226 if (
this == &rhs)
return *
this;
236 G4cout<<
"G4ITStepProcessor::CloneProcesses: is called"<<
G4endl;
242 theParticleIterator->
reset();
244 while( (*theParticleIterator)() )
251 G4cerr <<
"ERROR - G4ITStepProcessor::GetProcessNumber()" << G4endl
252 <<
" ProcessManager is NULL for particle = "
255 G4Exception(
"G4ITStepProcessor::GetProcessNumber()",
"ITStepProcessor0001",
271 for(
int i = 0 ; i < processVector->
size() ; i++)
273 G4VProcess* base_process = (*processVector)[i];
288 G4cout<<
"G4ITStepProcessor::GetProcessNumber: is called track"<<
G4endl;
292 G4cerr <<
"ERROR - G4SteppingManager::GetProcessNumber()" << G4endl
293 <<
" ProcessManager is NULL for particle = "
296 G4Exception(
"G4SteppingManager::GetProcessNumber()",
"ITStepProcessor0002",
301 std::map<const G4ParticleDefinition*, ProcessGeneralInfo*>::iterator it =
fProcessGeneralInfoMap.find(particle);
304 G4Exception(
"G4SteppingManager::SetupGeneralProcessInfo()",
"ITStepProcessor0003",
317 G4cout <<
"G4ITStepProcessor::GetProcessNumber: #ofAtRest="
326 G4cout <<
"G4ITStepProcessor::GetProcessNumber:#ofAlongStp="
335 G4cout <<
"G4ITStepProcessor::GetProcessNumber: #ofPostStep="
339 if (SizeOfSelectedDoItVector<fpProcessInfo->MAXofAtRestLoops ||
340 SizeOfSelectedDoItVector<fpProcessInfo->MAXofAlongStepLoops ||
341 SizeOfSelectedDoItVector<fpProcessInfo->MAXofPostStepLoops )
343 G4cerr <<
"ERROR - G4ITStepProcessor::GetProcessNumber()" << G4endl
345 <<
" ; is smaller then one of MAXofAtRestLoops= "
349 G4Exception(
"G4ITStepProcessor::GetProcessNumber()",
351 "The array size is smaller than the actual No of processes.");
359 exceptionDescription <<
"No DoIt process found " ;
360 G4Exception(
"G4ITStepProcessor::DoStepping",
"ITStepProcessor0005",
373 exceptionDescription <<
"No transportation process found " ;
374 G4Exception(
"G4ITStepProcessor::SetupGeneralProcessInfo",
"ITStepProcessor0006",
401 G4ExceptionDescription exceptionDescription (
"No IT pointer was attached to the track you try to process.");
402 G4Exception(
"G4ITStepProcessor::SetTrack",
"ITStepProcessor0007",
417 std::map<const G4ParticleDefinition*, ProcessGeneralInfo*>::iterator it =
fProcessGeneralInfoMap.find(particle);
425 G4Exception(
"G4ITStepProcessor::GetProcessNumber",
"ITStepProcessor0008",
469 unsigned int NofInactiveProc=0;
493 if(lifeTime < shortestLifeTime )
495 shortestLifeTime = lifeTime;
508 G4cerr <<
"ERROR - G4ITStepProcessor::InvokeAtRestDoItProcs()" <<
G4endl
509 <<
" No AtRestDoIt process is active!" <<
G4endl;
534 &direction,
false, false );
590 G4cerr <<
"ERROR - G4ITStepProcessor::SetInitialStep()" <<
G4endl
591 <<
" Primary particle starting at - "
593 <<
" - is outside of the world volume." <<
G4endl;
594 G4Exception(
"G4ITStepProcessor::SetInitialStep()",
"ITStepProcessor0011",
599 G4cout <<
"WARNING - G4ITStepProcessor::SetInitialStep()" <<
G4endl
600 <<
" Initial track position is outside world! - "
731 double proposedTimeStep =
DBL_MAX;
732 G4VProcess* processWithPostStepGivenByTimeStep(0);
772 G4Exception(
"G4ITStepProcessor::DefinePhysicalStepLength()",
"ITStepProcessor0008",
799 if(fPhysIntLength < fpState->fPhysicalStep )
840 safetyProposedToAndByProcess,
843 if(fPhysIntLength < fpState->fPhysicalStep)
865 exceptionDescription <<
"No transportation process found " ;
866 G4Exception(
"G4ITStepProcessor::DoDefinePhysicalStepLength",
"ITStepProcessor0009",
888 exceptionDescription <<
"No transportation process found " ;
889 G4Exception(
"G4ITStepProcessor::DoDefinePhysicalStepLength",
"ITStepProcessor0010",
899 if(fPostStepAtTimeDoItProcTriggered<fpProcessInfo->MAXofPostStepLoops)
918 if (fPostStepDoItProcTriggered<fpProcessInfo->MAXofPostStepLoops)
934 if (safetyProposedToAndByProcess < fpState->proposedSafety)
G4TrackVector * fpSecondary
void SetTrackStatus(const G4TrackStatus aTrackStatus)
G4ParticleDefinition * GetDefinition() const
Its role is the same as G4StepManager :
G4int GetParentID() const
size_t fAtRestDoItProcTriggered
virtual G4VPhysicalVolume * ResetHierarchyAndLocate(const G4ThreeVector &point, const G4ThreeVector &direction, const G4TouchableHistory &h)
G4ProcessVector * fpPostStepDoItVector
static void DeleteInstance()
void SetVertexMomentumDirection(const G4ThreeVector &aValue)
G4ITTrackingManager * fpTrackingManager
void SetProcessDefinedStep(const G4VProcess *aValue)
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
static const size_t & GetMaxProcessIndex()
G4GPILSelection fGPILSelection
void DeleteSecondaryVector()
G4SelectedAtRestDoItVector fSelectedAtRestDoItVector
void SetNavigator(G4ITNavigator *value)
G4ProcessVector * fpAtRestGetPhysIntVector
const G4ThreeVector & GetPosition() const
G4double GetSurfaceTolerance() const
G4TrackStatus GetTrackStatus() const
std::map< const G4ParticleDefinition *, ProcessGeneralInfo * > fProcessGeneralInfoMap
void SetNextTouchableHandle(const G4TouchableHandle &apValue)
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4int GetPDGEncoding() const
G4VITProcess * fpCurrentProcess
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *theNewVectorPointer)
G4ProcessManager * GetProcessManager() const
virtual void StartTracking(G4Track *)
G4int fN2ndariesPostStepDoIt
const G4String & GetParticleName() const
G4ForceCondition fCondition
G4VProcess * SetProcessActivation(G4VProcess *aProcess, G4bool fActive)
G4VPhysicalVolume * GetNextVolume() const
size_t MAXofPostStepLoops
void DefinePhysicalStepLength(G4Track *)
G4double AtRestGPIL(const G4Track &track, G4ForceCondition *condition)
G4StepPoint * GetPreStepPoint() const
G4ITNavigatorState_Lock * GetNavigatorState()
G4TouchableHandle fTouchableHandle
G4ProcessVector * fpAlongStepDoItVector
G4IT * GetIT(const G4Track *track)
G4ITStepProcessorState & operator=(const G4ITStepProcessorState &)
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()
G4VPhysicalVolume * GetPhysicalVolume() const
void ActiveOnlyITProcess()
G4StepPoint * fpPreStepPoint
G4ITTransportation * fpTransportation
G4ProcessVector * fpAlongStepGetPhysIntVector
virtual void ComputeStep(const G4Track &, const G4Step &, const double timeStep, double &spaceStep)
virtual G4int GetRegularStructureId() const =0
void ResetTotalEnergyDeposit()
size_t fPostStepDoItProcTriggered
void SetVertexKineticEnergy(const G4double aValue)
const G4TouchableHandle & GetNextTouchableHandle() const
G4VPhysicalVolume * fpCurrentVolume
G4ITNavigator * fpNavigator
G4ITStepProcessorState * fpState
G4StepPoint * fpPostStepPoint
G4double GetInteractionTimeLeft()
void SetProcessState(G4ProcessState_Lock *aProcInfo)
const G4TouchableHandle & GetTouchableHandle() const
G4int fN2ndariesAtRestDoIt
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual void Initialize()
G4TrackingInformation * GetTrackingInfo()
const G4ThreeVector & GetMomentumDirection() const
G4LogicalVolume * GetLogicalVolume() const
G4TrackVector * GetfSecondary()
static G4ParticleTable * GetParticleTable()
G4ITTransportation * fpTransportation
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
void SetVertexPosition(const G4ThreeVector &aValue)
G4StepPoint * GetPostStepPoint() const
G4ITStepProcessor & operator=(const G4ITStepProcessor &other)
G4double fPreviousStepSize
G4VPhysicalVolume * GetVolume() const
void SetNavigatorState(G4ITNavigatorState_Lock *)
G4ProcessVector * fpPostStepGetPhysIntVector
void DoDefinePhysicalStepLength()
ProcessGeneralInfo * fpProcessInfo
virtual ~G4ITStepProcessor()
G4ProcessVector * fpAtRestDoItVector
void InitializeStep(G4Track *aValue)
G4TouchableHistory * CreateTouchableHistory() const
void SetupGeneralProcessInfo(G4ParticleDefinition *, G4ProcessManager *)
G4double fPreviousTimeStep
G4ProcessVector * GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4bool ProposesTimeStep() const
G4int fN2ndariesAlongStepDoIt
G4VITProcess inherits from G4VProcess.
G4SelectedPostStepDoItVector fSelectedPostStepDoItVector
size_t GetProcessID() const
G4PTblDicIterator * GetIterator() const
virtual ~G4ITStepProcessorState()
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 *)
size_t MAXofAlongStepLoops
void CopyPostToPreStepPoint()
G4ProcessVector * GetPostStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const