58 : theStepLength(0.), theInitialTrajState(0), theStepN(0), theG4Track(0)
62 if(verbose >= 5) {
G4cout <<
"G4ErrorPropagator " <<
this <<
G4endl; }
67 thePropIsInitialized =
false;
86 std::ostringstream message;
87 message <<
"Energy too low to be propagated: "
89 G4Exception(
"G4ErrorPropagator::Propagate()",
"GEANT4e-Notification",
99 G4cout <<
" =====> starting GEANT4E tracking for "
110 G4cout <<
" G4ErrorPropagator::Propagate initialTS ";
120 if( theG4Track != 0 ) {
delete theG4Track; }
129 ierr = MakeSteps( currentTS_FREE );
144 *currentTS = *currentTS_FREE;
147 std::ostringstream message;
148 message <<
"Particle does not reach target: " << *currentTS;
149 G4Exception(
"G4ErrorPropagator::Propagate()",
"GEANT4e-Notification",
161 G4cout <<
" G4ErrorPropagator: propagation ended " <<
G4endl;
191 std::ostringstream message;
192 message <<
"Called before initialization is done for this track!";
193 G4Exception(
"G4ErrorPropagator::PropagateOneStep()",
195 "Please call G4ErrorPropagatorManager::InitGeant4e().");
206 std::ostringstream message;
207 message <<
"Energy too low to be propagated: "
209 G4Exception(
"G4ErrorPropagator::PropagateOneStep()",
217 G4cout <<
" =====> starting GEANT4E tracking for "
223 G4cout <<
" G4ErrorPropagator::Propagate initialTS ";
232 if( theG4Track != 0 ) {
delete theG4Track; }
257 if( verbose >= 5 ) {
G4cout <<
"InitG4Track " <<
G4endl; }
266 std::ostringstream message;
267 message <<
"Particle type not defined: " << partType;
268 G4Exception(
"G4ErrorPropagator::InitG4Track()",
"InvalidSetup",
296 G4cout <<
" G4ErrorPropagator new track of energy: "
304 if( fpSteppingManager == 0 )
306 G4Exception(
"G4ErrorPropagator::InitG4Track()",
"InvalidSetup",
345 if( ierr != 0 ) {
break; }
370 <<
"@@@@@@@@@@@@@@@@@@@@@@@@@ NEW STEP " <<
G4endl;
394 G4cout <<
" transportation determined by geant4e " <<
G4endl;
403 if( static_cast<G4ErrorGeomVolumeTarget*>( target )
404 ->TargetReached( theG4Track->
GetStep() ) )
421 G4cout <<
" propagating error " << *currentTS_FREE <<
G4endl;
434 currentTS_FREE->
Update( cTrack );
440 std::ostringstream message;
441 message <<
"Error returned: " << ierr;
444 "Geant4 tracking will be stopped !");
471 std::ostringstream message;
472 message <<
"Wrong trajectory state: " << currentTS->
GetTSType();
473 G4Exception(
"G4ErrorPropagator::InitFreeTrajState()",
"InvalidState",
476 return currentTS_FREE;
491 G4cout <<
" G4ErrorPropagator::Propagate: final state "
500 currentTS = currentTS_FREE;
506 G4Exception(
"G4ErrorPropagator:GetFinalTrajState()",
508 "Using a G4ErrorSurfaceTrajState with wrong target");
513 *(static_cast<G4ErrorFreeTrajState*>(currentTS_FREE)),
518 G4cout << currentTS <<
" returning tssd " << *currentTS <<
G4endl;
521 delete currentTS_FREE;
530 G4bool lastG4eStep =
false;
537 G4cout <<
" G4ErrorPropagator::CheckIfLastStep G4ErrorState= "
551 G4cout <<
" G4ErrorPropagator::CheckIfLastStep " << lastG4eStep
564 std::ostringstream message;
565 message <<
"Track extrapolated until end of World" <<
G4endl
566 <<
"without finding the defined target!";
567 G4Exception(
"G4ErrorPropagator::CheckIfLastStep()",
574 std::ostringstream message;
575 message <<
"Track extrapolated until end of World" <<
G4endl
576 <<
"without finding the defined target.";
577 G4Exception(
"G4ErrorPropagator::CheckIfLastStep()",
586 std::ostringstream message;
587 message <<
"Track extrapolated until energy is exhausted" <<
G4endl
588 <<
"without finding the defined target!";
589 G4Exception(
"G4ErrorPropagator::CheckIfLastStep()",
596 std::ostringstream message;
597 message <<
"Track extrapolated until energy is exhausted" <<
G4endl
598 <<
"without finding the defined target.";
599 G4Exception(
"G4ErrorPropagator::CheckIfLastStep()",
609 G4cout <<
" return CheckIfLastStep " << lastG4eStep <<
G4endl;
622 if( fpUserTrackingAction != 0 )
625 ->PreUserTrackingAction((fpTrack) );
635 if( fpUserTrackingAction != 0 )
638 ->PostUserTrackingAction((fpTrack) );
G4ParticleDefinition * GetDefinition() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4SteppingManager * GetSteppingManager() const
G4int MakeOneStep(G4ErrorFreeTrajState *currentTS_FREE)
G4int Propagate(G4ErrorTrajState *currentTS, const G4ErrorTarget *target, G4ErrorMode mode=G4ErrorMode_PropForwards)
void InvokePostUserTrackingAction(G4Track *fpTrack)
void SetG4Track(G4Track *trk)
G4int PropagateOneStep(G4ErrorTrajState *currentTS)
G4TrackStatus GetTrackStatus() const
G4Point3D GetPosition() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
G4ErrorTargetType GetType() const
const G4Step * GetStep() const
G4VPhysicalVolume * GetNextVolume() const
virtual void Dump(const G4String &msg) const =0
void SetState(G4ErrorState sta)
static G4StateManager * GetStateManager()
G4double GetKineticEnergy() const
G4TrackingManager * GetTrackingManager() const
G4GLOB_DLL std::ostream G4cout
void SetMode(G4ErrorMode mode)
G4Vector3D GetMomentum() const
static constexpr double eplus
void GetFinalTrajState(G4ErrorTrajState *currentTS, G4ErrorFreeTrajState *currentTS_FREE, const G4ErrorTarget *target)
G4ErrorMode GetMode() const
void InvokePreUserTrackingAction(G4Track *fpTrack)
G4ApplicationState GetCurrentState() const
void SetPolarization(G4double polX, G4double polY, G4double polZ)
const G4String & GetProcessName() const
G4Track * InitG4Track(G4ErrorTrajState &initialTS)
void SetInitialStep(G4Track *valueTrack)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual G4Plane3D GetTangentPlane(const G4ThreeVector &point) const =0
void SetTarget(const G4ErrorTarget *target)
const G4VProcess * GetProcessDefinedStep() const
void IncrementCurrentStepNumber()
static G4ParticleTable * GetParticleTable()
void StartTracking(G4Track *aTrack=0)
const G4String & GetParticleType() const
G4ProcessManager * GetProcessManager() const
G4bool CheckIfLastStep(G4Track *aTrack)
G4UserTrackingAction * GetUserTrackingAction()
void SetParentID(const G4int aValue)
G4StepPoint * GetPostStepPoint() const
virtual G4eTSType GetTSType() const
static G4EventManager * GetEventManager()
const G4ErrorTarget * GetTarget(G4bool mustExist=0) const
virtual G4int Update(const G4Track *aTrack)
static constexpr double MeV
static G4ErrorPropagatorData * GetErrorPropagatorData()
virtual G4int PropagateError(const G4Track *aTrack)
void SetCharge(G4double charge)
G4double GetPDGCharge() const
G4ErrorFreeTrajState * InitFreeTrajState(G4ErrorTrajState *currentTS)
void SetStep(const G4Step *aValue)
G4ErrorState GetState() const
G4double GetStepLength() const