39#ifndef G4PropagatorInField_hh
40#define G4PropagatorInField_hh 1
90 G4bool canRelaxDeltaChord =
false);
322 G4double stepRequest,
const char* methodName,
338 G4int fMax_loop_count = 1000;
340 G4int fIncreaseChordDistanceThreshold = 100;
341 G4bool fUseSafetyForOptimisation =
true;
346 G4int fActionThreshold_NoZeroSteps = 2;
347 G4int fSevereActionThreshold_NoZeroSteps = 10;
348 G4int fAbandonThreshold_NoZeroSteps = 50;
357 G4double fMaxStepSizeMultiplier = 3;
396 G4bool fSetFieldMgr =
false;
402 G4bool fParticleIsLooping =
false;
403 G4int fNoZeroStep = 0;
407 G4double fFull_CurveLen_of_LastAttempt = -1;
408 G4double fLast_ProposedStepLength = -1;
414 G4int fVerboseLevel = 0;
415 G4bool fVerbTracePiF =
false;
419 G4bool fFirstStepInVolume =
true;
420 G4bool fLastStepInVolume =
true;
426#include "G4PropagatorInField.icc"
CLHEP::Hep3Vector G4ThreeVector
G4ChordFinder is a class that provides Runge-Kutta integration of motion ODE and also has a method th...
G4EquationOfMotion is the abstract base class for the right hand size of the equation of motion of a ...
G4FieldManager is a manager (store) for a pointer to the Field subclass that describes the field of a...
G4FieldTrack defines a data structure bringing together a magnetic track's state (position,...
G4Navigator is a class for use by the tracking management, able to obtain/calculate dynamic tracking ...
void SetVerboseTrace(G4bool enable)
G4ThreeVector EndPosition() const
void SetThresholdNoZeroStep(G4int noAct, G4int noHarsh, G4int noAbandon)
G4int GetIterationsToIncreaseChordDistance() const
G4int GetThresholdNoZeroSteps(G4int i)
void printStatus(const G4FieldTrack &startFT, const G4FieldTrack ¤tFT, G4double requestStep, G4double safety, G4int step, G4VPhysicalVolume *startVolume)
G4FieldManager * FindAndSetFieldManager(G4VPhysicalVolume *pCurrentPhysVol)
G4double GetDeltaOneStep() const
G4FieldManager * GetCurrentFieldManager()
void CheckMode(G4bool mode)
G4int SetVerboseLevel(G4int verbose)
void ResetLargestAcceptableStep()
G4double GetMinBigDistance()
G4bool IsLastStepInVolume()
void PrintStepLengthDiagnostic(G4double currentProposedStepLength, G4double decreaseFactor, G4double stepTrial, const G4FieldTrack &aFieldTrack)
G4PropagatorInField(G4Navigator *theNavigator, G4FieldManager *detectorFieldMgr, G4VIntersectionLocator *vLocator=nullptr)
G4double GetZeroStepThreshold()
void SetMaxLoopCount(G4int new_max)
void SetNavigatorForPropagating(G4Navigator *SimpleOrMultiNavigator)
G4bool GetUseSafetyForOptimization()
G4bool IsParticleLooping() const
void ReportStuckParticle(G4int noZeroSteps, G4double proposedStep, G4double lastTriedStep, G4VPhysicalVolume *physVol)
G4double GetMaxStepSizeMultiplier()
void SetZeroStepThreshold(G4double newLength)
void SetDetectorFieldManager(G4FieldManager *newGlobalFieldManager)
G4double GetMaximumEpsilonStep() const
void SetMinBigDistance(G4double val)
G4ChordFinder * GetChordFinder()
void SetIterationsToIncreaseChordDistance(G4int numIters)
G4EquationOfMotion * GetCurrentEquationOfMotion()
void SetUseSafetyForOptimization(G4bool)
void ClearPropagatorState()
G4double GetDeltaIntersection() const
G4bool IsFirstStepInVolume()
G4double GetEpsilonStep() const
void SetMaximumEpsilonStep(G4double newEpsMax)
G4Navigator * GetNavigatorForPropagating()
void SetMaxStepSizeMultiplier(G4double vm)
G4FieldTrack GetEndState() const
void RefreshIntersectionLocator()
G4ThreeVector EndMomentumDir() const
G4bool IntersectChord(const G4ThreeVector &StartPointA, const G4ThreeVector &EndPointB, G4double &NewSafety, G4double &LinearStepLength, G4ThreeVector &IntersectionPoint)
G4VIntersectionLocator * GetIntersectionLocator()
G4int GetVerboseLevel() const
void SetMinimumEpsilonStep(G4double newEpsMin)
std::vector< G4ThreeVector > * GimmeTrajectoryVectorAndForgetIt() const
void ReportLoopingParticle(G4int count, G4double StepTaken, G4double stepRequest, const char *methodName, const G4ThreeVector &momentumVec, G4VPhysicalVolume *physVol)
G4int GetMaxLoopCount() const
void SetIntersectionLocator(G4VIntersectionLocator *pLocator)
G4double GetLargestAcceptableStep()
void SetTrajectoryFilter(G4VCurvedTrajectoryFilter *filter)
G4double GetMinimumEpsilonStep() const
G4double ComputeStep(G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4double &pNewSafety, G4VPhysicalVolume *pPhysVol=nullptr, G4bool canRelaxDeltaChord=false)
void SetLargestAcceptableStep(G4double newBigDist)
void SetEpsilonStep(G4double newEps)
G4VCurvedTrajectoryFilter defines a filter for deciding which intermediate points on a curved traject...
G4VIntersectionLocator is a base class for the calculation of the intersection point with a boundary ...
G4VPhysicalVolume is an abstract base class for the representation of a positioned volume....