#include <G4SteppingManager.hh>
Definition at line 92 of file G4SteppingManager.hh.
G4SteppingManager::G4SteppingManager | ( | ) |
Definition at line 56 of file G4SteppingManager.cc.
References DBL_MAX, G4GeometryTolerance::GetInstance(), G4VSteppingVerbose::GetInstance(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4GeometryTolerance::GetSurfaceTolerance(), G4TransportationManager::GetTransportationManager(), KillVerbose, G4Step::NewSecondaryVector(), G4VSteppingVerbose::SetInstance(), and SetNavigator().
00058 : fUserSteppingAction(0), verboseLevel(0) 00059 { 00060 00061 // Construct simple 'has-a' related objects 00062 fStep = new G4Step(); 00063 fSecondary = fStep->NewSecondaryVector(); 00064 fPreStepPoint = fStep->GetPreStepPoint(); 00065 fPostStepPoint = fStep->GetPostStepPoint(); 00066 #ifdef G4VERBOSE 00067 if(G4VSteppingVerbose::GetInstance()==0) { 00068 fVerbose = new G4SteppingVerbose(); 00069 G4VSteppingVerbose::SetInstance(fVerbose); 00070 fVerbose -> SetManager(this); 00071 KillVerbose = true; 00072 } 00073 else { 00074 fVerbose = G4VSteppingVerbose::GetInstance(); 00075 fVerbose -> SetManager(this); 00076 KillVerbose = false; 00077 } 00078 #endif 00079 SetNavigator(G4TransportationManager::GetTransportationManager() 00080 ->GetNavigatorForTracking()); 00081 00082 fSelectedAtRestDoItVector 00083 = new G4SelectedAtRestDoItVector(SizeOfSelectedDoItVector,0); 00084 fSelectedAlongStepDoItVector 00085 = new G4SelectedAlongStepDoItVector(SizeOfSelectedDoItVector,0); 00086 fSelectedPostStepDoItVector 00087 = new G4SelectedPostStepDoItVector(SizeOfSelectedDoItVector,0); 00088 00089 SetNavigator(G4TransportationManager::GetTransportationManager() 00090 ->GetNavigatorForTracking()); 00091 00092 physIntLength = DBL_MAX; 00093 kCarTolerance = 0.5*G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); 00094 }
G4SteppingManager::~G4SteppingManager | ( | ) |
Definition at line 97 of file G4SteppingManager.cc.
References G4Step::DeleteSecondaryVector(), and KillVerbose.
00099 { 00100 00101 // Destruct simple 'has-a' objects 00102 fStep->DeleteSecondaryVector(); 00104 delete fStep; 00105 delete fSelectedAtRestDoItVector; 00106 delete fSelectedAlongStepDoItVector; 00107 delete fSelectedPostStepDoItVector; 00108 if (fUserSteppingAction) delete fUserSteppingAction; 00109 #ifdef G4VERBOSE 00110 if(KillVerbose) delete fVerbose; 00111 #endif 00112 }
G4double G4SteppingManager::GetCorrectedStep | ( | ) | [inline] |
G4double G4SteppingManager::GetcurrentMinimumStep | ( | ) |
size_t G4SteppingManager::GetfAlongStepDoItProcTriggered | ( | ) | [inline] |
G4ProcessVector * G4SteppingManager::GetfAlongStepDoItVector | ( | ) | [inline] |
G4ProcessVector * G4SteppingManager::GetfAlongStepGetPhysIntVector | ( | ) | [inline] |
size_t G4SteppingManager::GetfAtRestDoItProcTriggered | ( | ) | [inline] |
G4ProcessVector * G4SteppingManager::GetfAtRestDoItVector | ( | ) | [inline] |
G4ProcessVector * G4SteppingManager::GetfAtRestGetPhysIntVector | ( | ) | [inline] |
G4ForceCondition G4SteppingManager::GetfCondition | ( | ) | [inline] |
G4VProcess * G4SteppingManager::GetfCurrentProcess | ( | ) | [inline] |
G4VPhysicalVolume * G4SteppingManager::GetfCurrentVolume | ( | ) | [inline] |
G4GPILSelection G4SteppingManager::GetfGPILSelection | ( | ) | [inline] |
G4bool G4SteppingManager::GetFirstStep | ( | ) | [inline] |
G4int G4SteppingManager::GetfN2ndariesAlongStepDoIt | ( | ) | [inline] |
G4int G4SteppingManager::GetfN2ndariesAtRestDoIt | ( | ) | [inline] |
G4int G4SteppingManager::GetfN2ndariesPostStepDoIt | ( | ) | [inline] |
G4Navigator * G4SteppingManager::GetfNavigator | ( | ) | [inline] |
G4VParticleChange * G4SteppingManager::GetfParticleChange | ( | ) | [inline] |
size_t G4SteppingManager::GetfPostStepDoItProcTriggered | ( | ) | [inline] |
G4ProcessVector * G4SteppingManager::GetfPostStepDoItVector | ( | ) | [inline] |
G4ProcessVector * G4SteppingManager::GetfPostStepGetPhysIntVector | ( | ) | [inline] |
G4StepPoint * G4SteppingManager::GetfPostStepPoint | ( | ) | [inline] |
G4StepPoint * G4SteppingManager::GetfPreStepPoint | ( | ) | [inline] |
G4double G4SteppingManager::GetfPreviousStepSize | ( | ) | [inline] |
G4TrackVector * G4SteppingManager::GetfSecondary | ( | ) | [inline] |
Definition at line 345 of file G4SteppingManager.hh.
References G4Step::GetfSecondary().
Referenced by G4VSteppingVerbose::CopyState(), and G4TrackingManager::GimmeSecondaries().
00345 { 00346 return fStep->GetfSecondary(); 00347 }
G4SelectedAlongStepDoItVector * G4SteppingManager::GetfSelectedAlongStepDoItVector | ( | ) | [inline] |
G4SelectedAtRestDoItVector * G4SteppingManager::GetfSelectedAtRestDoItVector | ( | ) | [inline] |
G4SelectedPostStepDoItVector * G4SteppingManager::GetfSelectedPostStepDoItVector | ( | ) | [inline] |
G4VSensitiveDetector * G4SteppingManager::GetfSensitive | ( | ) | [inline] |
G4Step * G4SteppingManager::GetfStep | ( | ) | [inline] |
G4StepStatus G4SteppingManager::GetfStepStatus | ( | ) | [inline] |
G4Track * G4SteppingManager::GetfTrack | ( | ) | [inline] |
G4double G4SteppingManager::GetGeometricalStep | ( | ) | [inline] |
G4double G4SteppingManager::GetMass | ( | ) | [inline] |
size_t G4SteppingManager::GetMAXofAlongStepLoops | ( | ) | [inline] |
size_t G4SteppingManager::GetMAXofAtRestLoops | ( | ) | [inline] |
size_t G4SteppingManager::GetMAXofPostStepLoops | ( | ) | [inline] |
G4double G4SteppingManager::GetnumberOfInteractionLengthLeft | ( | ) |
G4double G4SteppingManager::GetPhysicalStep | ( | ) | [inline] |
G4double G4SteppingManager::GetphysIntLength | ( | ) | [inline] |
G4bool G4SteppingManager::GetPreStepPointIsGeom | ( | ) | [inline] |
void G4SteppingManager::GetProcessNumber | ( | ) |
Definition at line 55 of file G4SteppingManager2.cc.
References G4ProcessVector::entries(), FatalException, G4cerr, G4cout, G4endl, G4Exception(), G4ProcessManager::GetAlongStepProcessVector(), G4ProcessManager::GetAtRestProcessVector(), G4Track::GetDefinition(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGEncoding(), G4ProcessManager::GetPostStepProcessVector(), G4ParticleDefinition::GetProcessManager(), typeDoIt, and typeGPIL.
Referenced by G4ErrorPropagator::InitG4Track(), and G4TrackingManager::ProcessOneTrack().
00057 { 00058 #ifdef debug 00059 G4cout<<"G4SteppingManager::GetProcessNumber: is called track=" 00060 <<fTrack<<G4endl; 00061 #endif 00062 00063 G4ProcessManager* pm= fTrack->GetDefinition()->GetProcessManager(); 00064 if(!pm) 00065 { 00066 G4cerr << "ERROR - G4SteppingManager::GetProcessNumber()" << G4endl 00067 << " ProcessManager is NULL for particle = " 00068 << fTrack->GetDefinition()->GetParticleName() << ", PDG_code = " 00069 << fTrack->GetDefinition()->GetPDGEncoding() << G4endl; 00070 G4Exception("G4SteppingManager::GetProcessNumber()", "Tracking0011", 00071 FatalException, "Process Manager is not found."); 00072 return; 00073 } 00074 00075 // AtRestDoits 00076 MAXofAtRestLoops = pm->GetAtRestProcessVector()->entries(); 00077 fAtRestDoItVector = pm->GetAtRestProcessVector(typeDoIt); 00078 fAtRestGetPhysIntVector = pm->GetAtRestProcessVector(typeGPIL); 00079 #ifdef debug 00080 G4cout << "G4SteppingManager::GetProcessNumber: #ofAtRest=" 00081 << MAXofAtRestLoops << G4endl; 00082 #endif 00083 00084 // AlongStepDoits 00085 MAXofAlongStepLoops = pm->GetAlongStepProcessVector()->entries(); 00086 fAlongStepDoItVector = pm->GetAlongStepProcessVector(typeDoIt); 00087 fAlongStepGetPhysIntVector = pm->GetAlongStepProcessVector(typeGPIL); 00088 #ifdef debug 00089 G4cout << "G4SteppingManager::GetProcessNumber:#ofAlongStp=" 00090 << MAXofAlongStepLoops << G4endl; 00091 #endif 00092 00093 // PostStepDoits 00094 MAXofPostStepLoops = pm->GetPostStepProcessVector()->entries(); 00095 fPostStepDoItVector = pm->GetPostStepProcessVector(typeDoIt); 00096 fPostStepGetPhysIntVector = pm->GetPostStepProcessVector(typeGPIL); 00097 #ifdef debug 00098 G4cout << "G4SteppingManager::GetProcessNumber: #ofPostStep=" 00099 << MAXofPostStepLoops << G4endl; 00100 #endif 00101 00102 if (SizeOfSelectedDoItVector<MAXofAtRestLoops || 00103 SizeOfSelectedDoItVector<MAXofAlongStepLoops || 00104 SizeOfSelectedDoItVector<MAXofPostStepLoops ) 00105 { 00106 G4cerr << "ERROR - G4SteppingManager::GetProcessNumber()" << G4endl 00107 << " SizeOfSelectedDoItVector= " << SizeOfSelectedDoItVector 00108 << " ; is smaller then one of MAXofAtRestLoops= " 00109 << MAXofAtRestLoops << G4endl 00110 << " or MAXofAlongStepLoops= " << MAXofAlongStepLoops 00111 << " or MAXofPostStepLoops= " << MAXofPostStepLoops << G4endl; 00112 G4Exception("G4SteppingManager::GetProcessNumber()", 00113 "Tracking0012", FatalException, 00114 "The array size is smaller than the actual No of processes."); 00115 } 00116 }
const G4TrackVector * G4SteppingManager::GetSecondary | ( | ) | const [inline] |
Definition at line 459 of file G4SteppingManager.hh.
References G4Step::GetSecondary().
00459 { 00460 return fStep->GetSecondary(); 00461 }
G4Step * G4SteppingManager::GetStep | ( | ) | const [inline] |
Definition at line 486 of file G4SteppingManager.hh.
Referenced by G4ErrorPropagator::InitG4Track(), and G4TrackingManager::ProcessOneTrack().
G4SteppingControl G4SteppingManager::GetStepControlFlag | ( | ) | [inline] |
G4double G4SteppingManager::GetsumEnergyChange | ( | ) | [inline] |
G4double G4SteppingManager::GetTempInitVelocity | ( | ) | [inline] |
G4double G4SteppingManager::GetTempVelocity | ( | ) | [inline] |
const G4TouchableHandle & G4SteppingManager::GetTouchableHandle | ( | ) | [inline] |
G4Track * G4SteppingManager::GetTrack | ( | ) | const [inline] |
Definition at line 474 of file G4SteppingManager.hh.
Referenced by G4TrackingMessenger::SetNewValue().
G4UserSteppingAction * G4SteppingManager::GetUserAction | ( | ) | [inline] |
G4int G4SteppingManager::GetverboseLevel | ( | ) | [inline] |
void G4SteppingManager::SetInitialStep | ( | G4Track * | valueTrack | ) |
Definition at line 256 of file G4SteppingManager.cc.
References G4Navigator::CreateTouchableHistory(), fAlive, FatalException, fPostponeToNextEvent, fStopAndKill, fStopButAlive, fSuspend, fUndefined, G4cerr, G4cout, G4endl, G4Exception(), G4Track::GetCurrentStepNumber(), G4Track::GetDynamicParticle(), G4Track::GetKineticEnergy(), G4VPhysicalVolume::GetLogicalVolume(), G4DynamicParticle::GetMass(), G4Track::GetMomentumDirection(), G4Track::GetParentID(), G4Track::GetPosition(), G4VPhysicalVolume::GetRegularStructureId(), G4Track::GetTouchableHandle(), G4Track::GetTrackStatus(), G4Track::GetVolume(), G4Step::InitializeStep(), G4Navigator::LocateGlobalPointAndSetup(), G4Navigator::ResetHierarchyAndLocate(), G4Track::SetLogicalVolumeAtVertex(), G4Track::SetNextTouchableHandle(), G4Track::SetTouchableHandle(), G4Track::SetTrackStatus(), G4Track::SetVertexKineticEnergy(), G4Track::SetVertexMomentumDirection(), G4Track::SetVertexPosition(), and G4VSteppingVerbose::TrackingStarted().
Referenced by G4ErrorPropagator::InitG4Track(), and G4TrackingManager::ProcessOneTrack().
00258 { 00259 00260 // Set up several local variables. 00261 PreStepPointIsGeom = false; 00262 FirstStep = true; 00263 fParticleChange = 0; 00264 fPreviousStepSize = 0.; 00265 fStepStatus = fUndefined; 00266 00267 fTrack = valueTrack; 00268 Mass = fTrack->GetDynamicParticle()->GetMass(); 00269 00270 PhysicalStep = 0.; 00271 GeometricalStep = 0.; 00272 CorrectedStep = 0.; 00273 PreStepPointIsGeom = false; 00274 FirstStep = false; 00275 fStepStatus = fUndefined; 00276 00277 TempInitVelocity = 0.; 00278 TempVelocity = 0.; 00279 sumEnergyChange = 0.; 00280 00281 00282 // If the primary track has 'Suspend' or 'PostponeToNextEvent' state, 00283 // set the track state to 'Alive'. 00284 if( (fTrack->GetTrackStatus()==fSuspend) || 00285 (fTrack->GetTrackStatus()==fPostponeToNextEvent) ){ 00286 fTrack->SetTrackStatus(fAlive); 00287 } 00288 00289 // If the primary track has 'zero' kinetic energy, set the track 00290 // state to 'StopButAlive'. 00291 if(fTrack->GetKineticEnergy() <= 0.0){ 00292 fTrack->SetTrackStatus( fStopButAlive ); 00293 } 00294 00295 00296 // Set Touchable to track and a private attribute of G4SteppingManager 00297 00298 00299 if ( ! fTrack->GetTouchableHandle() ) { 00300 G4ThreeVector direction= fTrack->GetMomentumDirection(); 00301 fNavigator->LocateGlobalPointAndSetup( fTrack->GetPosition(), 00302 &direction, false, false ); 00303 fTouchableHandle = fNavigator->CreateTouchableHistory(); 00304 00305 fTrack->SetTouchableHandle( fTouchableHandle ); 00306 fTrack->SetNextTouchableHandle( fTouchableHandle ); 00307 }else{ 00308 fTrack->SetNextTouchableHandle( fTouchableHandle = fTrack->GetTouchableHandle() ); 00309 G4VPhysicalVolume* oldTopVolume= fTrack->GetTouchableHandle()->GetVolume(); 00310 G4VPhysicalVolume* newTopVolume= 00311 fNavigator->ResetHierarchyAndLocate( fTrack->GetPosition(), 00312 fTrack->GetMomentumDirection(), 00313 *((G4TouchableHistory*)fTrack->GetTouchableHandle()()) ); 00314 // if(newTopVolume != oldTopVolume ){ 00315 if(newTopVolume != oldTopVolume || oldTopVolume->GetRegularStructureId() == 1 ) { 00316 fTouchableHandle = fNavigator->CreateTouchableHistory(); 00317 fTrack->SetTouchableHandle( fTouchableHandle ); 00318 fTrack->SetNextTouchableHandle( fTouchableHandle ); 00319 } 00320 } 00321 // Set vertex information of G4Track at here 00322 if ( fTrack->GetCurrentStepNumber() == 0 ) { 00323 fTrack->SetVertexPosition( fTrack->GetPosition() ); 00324 fTrack->SetVertexMomentumDirection( fTrack->GetMomentumDirection() ); 00325 fTrack->SetVertexKineticEnergy( fTrack->GetKineticEnergy() ); 00326 fTrack->SetLogicalVolumeAtVertex( fTrack->GetVolume()->GetLogicalVolume() ); 00327 } 00328 // Initial set up for attributes of 'G4SteppingManager' 00329 fCurrentVolume = fTouchableHandle->GetVolume(); 00330 00331 // If track is already outside the world boundary, kill it 00332 if( fCurrentVolume==0 ){ 00333 // If the track is a primary, stop processing 00334 if(fTrack->GetParentID()==0) 00335 { 00336 G4cerr << "ERROR - G4SteppingManager::SetInitialStep()" << G4endl 00337 << " Primary particle starting at - " 00338 << fTrack->GetPosition() 00339 << " - is outside of the world volume." << G4endl; 00340 G4Exception("G4SteppingManager::SetInitialStep()", "Tracking0010", 00341 FatalException, "Primary vertex outside of the world!"); 00342 } 00343 00344 fTrack->SetTrackStatus( fStopAndKill ); 00345 G4cout << "WARNING - G4SteppingManager::SetInitialStep()" << G4endl 00346 << " Initial track position is outside world! - " 00347 << fTrack->GetPosition() << G4endl; 00348 } 00349 else { 00350 // Initial set up for attribues of 'Step' 00351 fStep->InitializeStep( fTrack ); 00352 } 00353 #ifdef G4VERBOSE 00354 // !!!!! Verbose 00355 if(verboseLevel>0) fVerbose->TrackingStarted(); 00356 #endif 00357 }
void G4SteppingManager::SetNavigator | ( | G4Navigator * | value | ) | [inline] |
void G4SteppingManager::SetUserAction | ( | G4UserSteppingAction * | apAction | ) | [inline] |
Definition at line 467 of file G4SteppingManager.hh.
Referenced by G4TrackingManager::SetUserAction().
void G4SteppingManager::SetVerbose | ( | G4VSteppingVerbose * | ) | [inline] |
void G4SteppingManager::SetVerboseLevel | ( | G4int | vLevel | ) | [inline] |
Definition at line 478 of file G4SteppingManager.hh.
Referenced by G4ErrorPropagatorManager::SetSteppingManagerVerboseLevel().
G4StepStatus G4SteppingManager::Stepping | ( | ) |
Definition at line 116 of file G4SteppingManager.cc.
References G4Track::AddTrackLength(), G4VSteppingVerbose::AlongStepDoItAllDone(), G4VSteppingVerbose::AtRestDoItInvoked(), AvoidHitInvocation, G4Step::CopyPostToPreStepPoint(), fAtRestDoItProc, fStopAndKill, fStopButAlive, G4Step::GetControlFlag(), G4VPhysicalVolume::GetLogicalVolume(), G4Track::GetNextTouchableHandle(), G4StepPoint::GetPhysicalVolume(), G4StepPoint::GetPosition(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4LogicalVolume::GetRegion(), G4Region::GetRegionalSteppingAction(), G4Step::GetStepLength(), G4Track::GetTrackStatus(), G4VSensitiveDetector::Hit(), G4VSteppingVerbose::NewStep(), G4VSteppingVerbose::PostStepDoItAllDone(), G4Step::ResetTotalEnergyDeposit(), G4Step::SetPointerToVectorOfAuxiliaryPoints(), G4StepPoint::SetSafety(), G4VSteppingVerbose::SetSilent(), G4Track::SetStepLength(), G4Step::SetStepLength(), G4StepPoint::SetStepStatus(), G4Track::SetTouchableHandle(), G4Step::SetTrack(), G4Track::SetTrackStatus(), G4VSteppingVerbose::StepInfo(), G4Step::UpdateTrack(), and G4UserSteppingAction::UserSteppingAction().
Referenced by G4ErrorPropagator::MakeOneStep(), and G4TrackingManager::ProcessOneTrack().
00118 { 00119 00120 //-------- 00121 // Prelude 00122 //-------- 00123 #ifdef G4VERBOSE 00124 // !!!!! Verbose 00125 if(verboseLevel>0) fVerbose->NewStep(); 00126 else 00127 if(verboseLevel==-1) { 00128 G4VSteppingVerbose::SetSilent(1); 00129 } 00130 else 00131 G4VSteppingVerbose::SetSilent(0); 00132 #endif 00133 00134 // Store last PostStepPoint to PreStepPoint, and swap current and nex 00135 // volume information of G4Track. Reset total energy deposit in one Step. 00136 fStep->CopyPostToPreStepPoint(); 00137 fStep->ResetTotalEnergyDeposit(); 00138 00139 // Switch next touchable in track to current one 00140 fTrack->SetTouchableHandle(fTrack->GetNextTouchableHandle()); 00141 00142 // Reset the secondary particles 00143 fN2ndariesAtRestDoIt = 0; 00144 fN2ndariesAlongStepDoIt = 0; 00145 fN2ndariesPostStepDoIt = 0; 00146 00147 //JA Set the volume before it is used (in DefineStepLength() for User Limit) 00148 fCurrentVolume = fStep->GetPreStepPoint()->GetPhysicalVolume(); 00149 00150 // Reset the step's auxiliary points vector pointer 00151 fStep->SetPointerToVectorOfAuxiliaryPoints(0); 00152 00153 //----------------- 00154 // AtRest Processes 00155 //----------------- 00156 00157 if( fTrack->GetTrackStatus() == fStopButAlive ){ 00158 if( MAXofAtRestLoops>0 ){ 00159 InvokeAtRestDoItProcs(); 00160 fStepStatus = fAtRestDoItProc; 00161 fStep->GetPostStepPoint()->SetStepStatus( fStepStatus ); 00162 00163 #ifdef G4VERBOSE 00164 // !!!!! Verbose 00165 if(verboseLevel>0) fVerbose->AtRestDoItInvoked(); 00166 #endif 00167 00168 } 00169 // Make sure the track is killed 00170 fTrack->SetTrackStatus( fStopAndKill ); 00171 } 00172 00173 //--------------------------------- 00174 // AlongStep and PostStep Processes 00175 //--------------------------------- 00176 00177 00178 else{ 00179 // Find minimum Step length demanded by active disc./cont. processes 00180 DefinePhysicalStepLength(); 00181 00182 // Store the Step length (geometrical length) to G4Step and G4Track 00183 fStep->SetStepLength( PhysicalStep ); 00184 fTrack->SetStepLength( PhysicalStep ); 00185 G4double GeomStepLength = PhysicalStep; 00186 00187 // Store StepStatus to PostStepPoint 00188 fStep->GetPostStepPoint()->SetStepStatus( fStepStatus ); 00189 00190 // Invoke AlongStepDoIt 00191 InvokeAlongStepDoItProcs(); 00192 00193 // Update track by taking into account all changes by AlongStepDoIt 00194 fStep->UpdateTrack(); 00195 00196 // Update safety after invocation of all AlongStepDoIts 00197 endpointSafOrigin= fPostStepPoint->GetPosition(); 00198 // endpointSafety= std::max( proposedSafety - GeomStepLength, 0.); 00199 endpointSafety= std::max( proposedSafety - GeomStepLength, kCarTolerance); 00200 00201 fStep->GetPostStepPoint()->SetSafety( endpointSafety ); 00202 00203 #ifdef G4VERBOSE 00204 // !!!!! Verbose 00205 if(verboseLevel>0) fVerbose->AlongStepDoItAllDone(); 00206 #endif 00207 00208 // Invoke PostStepDoIt 00209 InvokePostStepDoItProcs(); 00210 00211 #ifdef G4VERBOSE 00212 // !!!!! Verbose 00213 if(verboseLevel>0) fVerbose->PostStepDoItAllDone(); 00214 #endif 00215 } 00216 00217 //------- 00218 // Finale 00219 //------- 00220 00221 // Update 'TrackLength' and remeber the Step length of the current Step 00222 fTrack->AddTrackLength(fStep->GetStepLength()); 00223 fPreviousStepSize = fStep->GetStepLength(); 00224 fStep->SetTrack(fTrack); 00225 #ifdef G4VERBOSE 00226 // !!!!! Verbose 00227 00228 if(verboseLevel>0) fVerbose->StepInfo(); 00229 #endif 00230 // Send G4Step information to Hit/Dig if the volume is sensitive 00231 fCurrentVolume = fStep->GetPreStepPoint()->GetPhysicalVolume(); 00232 StepControlFlag = fStep->GetControlFlag(); 00233 if( fCurrentVolume != 0 && StepControlFlag != AvoidHitInvocation) { 00234 fSensitive = fStep->GetPreStepPoint()-> 00235 GetSensitiveDetector(); 00236 if( fSensitive != 0 ) { 00237 fSensitive->Hit(fStep); 00238 } 00239 } 00240 00241 // User intervention process. 00242 if( fUserSteppingAction != 0 ) { 00243 fUserSteppingAction->UserSteppingAction(fStep); 00244 } 00245 G4UserSteppingAction* regionalAction 00246 = fStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetRegion() 00247 ->GetRegionalSteppingAction(); 00248 if( regionalAction ) regionalAction->UserSteppingAction(fStep); 00249 00250 // Stepping process finish. Return the value of the StepStatus. 00251 return fStepStatus; 00252 00253 }
Definition at line 186 of file G4SteppingManager.hh.
Referenced by G4SteppingManager(), and ~G4SteppingManager().