12#ifndef G4LongLivedNeutralTransportation_hh
13#define G4LongLivedNeutralTransportation_hh 1
15#include "G4VProcess.hh"
16#include "G4FieldManager.hh"
18#include "G4Navigator.hh"
19#include "G4TransportationManager.hh"
20#include "G4PropagatorInField.hh"
23#include "G4ParticleChangeForTransport.hh"
26class G4CoupledTransportation;
63 G4double previousStepSize,
64 G4double currentMinimumStep,
65 G4double& currentSafety,
66 G4GPILSelection* selection
77 const G4Step& stepData
88 const G4Step& stepData
102 const G4Track& track,
103 G4double previousStepSize,
104 G4ForceCondition* pForceCond
200 G4TransportationManager* transportMgr;
201 transportMgr = G4TransportationManager::GetTransportationManager();
205 return transportMgr->GetFieldManager()->DoesFieldExist();
265 friend class G4CoupledTransportation;
Concrete class that does the geometrical transport.
G4bool fFirstStepInVolume
Flag first step in a geom.
G4TouchableHandle fCurrentTouchableHandle
Current touchable handle.
G4int GetThresholdTrials() const
Access fThresholdTrials.
G4double GetThresholdImportantEnergy() const
Access fThreshold_Important_Energy.
void PrintStatistics(std::ostream &outStr) const
returns current logging info of the algorithm
G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &stepData)
G4VProcess::PostStepDoIt() implementation,.
G4bool fAnyFieldExists
Flag for existing fields.
G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *)
No operation in AtRestGPIL.
G4double fCandidateEndGlobalTime
The particle's state after this Step, Store for DoIt.
G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety, G4GPILSelection *selection)
G4VProcess::AlongStepGetPhysicalInteractionLength() implementation,.
G4int fThresholdTrials
Number of trials an important looper survives.
G4PropagatorInField * GetPropagatorInField()
Access fFieldPropagator, the assistant class that Propagate in a Field.
G4double GetMaxEnergyKilled() const
Print values of looper thresholds.
void SetThresholdWarningEnergy(G4double newEnWarn)
Set fThreshold_Warning_Energy.
void SetThresholdImportantEnergy(G4double newEnImp)
Set fThreshold_Important_Energy.
virtual void ProcessDescription(std::ostream &outStream) const
G4LongLivedNeutralTransportation::ProcessDescription()
G4bool fGeometryLimitedStep
Flag to determine whether a boundary was reached.
G4bool fFieldExertedForce
During current step.
G4ThreeVector fTransportEndMomentumDir
The particle's state after this Step, Store for DoIt.
void SetThresholdTrials(G4int newMaxTrials)
Set fThresholdTrials.
G4double fPreviousSafety
Remember last safety value.
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &stepData)
G4VProcess::AlongStepDoIt() implementation,.
G4double fEndPointDistance
Endpoint distance.
G4int fAbandonUnstableTrials
Number of trials after which to abandon.
G4bool fLastStepInVolume
Flag last step in a geom.
G4SafetyHelper * fpSafetyHelper
To pass it the safety value obtained.
void SetPropagatorInField(G4PropagatorInField *pFieldPropagator)
Access/set the assistant class that Propagate in a Field.
void SetHighLooperThresholds()
Get/Set parameters for killing loopers: Above 'important' energy a 'looping' particle in field will N...
G4double fSumEnergyKilled
Sum of abandoned looping tracks energies.
G4ThreeVector fPreviousSftOrigin
Remember last safety origin.
static G4bool fUseGravity
Flag take into account gravity.
void ReportLooperThresholds()
Set low thresholds - for low-E applications.
static void SetSilenceLooperWarnings(G4bool val)
Do not warn about 'looping' particles.
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *pForceCond)
G4VProcess::PostStepGetPhysicalInteractionLength() implementation.
G4ThreeVector fTransportEndSpin
The particle's state after this Step, Store for DoIt.
G4Navigator * fLinearNavigator
Propagator used to transport the particle.
static G4bool fSilenceLooperWarnings
Flag to Supress all 'looper' warnings.
G4double fThreshold_Important_Energy
Give a few trial above this E for looping particle.
G4ThreeVector fTransportEndPosition
The particle's state after this Step, Store for DoIt.
G4bool fEndGlobalTimeComputed
The particle's state after this Step, Store for DoIt.
G4bool fShortStepOptimisation
Whether to avoid calling G4Navigator for short step ( < safety) If using it, the safety estimate for ...
G4int fNoLooperTrials
Counter for steps in which particle reports 'looping', if it is above 'Important' Energy.
G4bool fMomentumChanged
The particle's state after this Step, Store for DoIt.
G4bool fNewTrack
Flag from StartTracking.
void StartTracking(G4Track *aTrack)
Reset state for new (potentially resumed) track.
static G4bool fUseMagneticMoment
Flag take into account magnetic moment.
G4ParticleChangeForTransport fParticleChange
New ParticleChange.
void SetLowLooperThresholds()
Shortcut method - old values (meant for HEP)
G4double fThreshold_Warning_Energy
Warn above this energy about looping particle.
void EnableShortStepOptimisation(G4bool optimise=true)
Whether short steps < safety will avoid to call Navigator (if field=0)
G4bool FieldExertedForce()
References fFieldExertedForce.
G4bool DoesGlobalFieldExist()
Checks whether a field exists for the "global" field manager.
G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
No operation in AtRestDoIt.
~G4LongLivedNeutralTransportation()
Destructor.
static G4bool GetSilenceLooperWarnings()
Do not throw exception about 'looping' particles.
G4double GetSumEnergyKilled() const
Access fSumEnergyKilled.
void ResetKilledStatistics(G4int report=1)
Statistics for tracks killed (currently due to looping in field)
G4double GetThresholdWarningEnergy() const
Access fThreshold_Warning_Energy.
G4PropagatorInField * fFieldPropagator
Propagator used to transport the particle.
G4double fTransportEndKineticEnergy
The particle's state after this Step, Store for DoIt.
Abstract base class for different kinds of events.