25 #ifndef SimG4Core_PhysicsLists_MonopoleTransportation_h 26 #define SimG4Core_PhysicsLists_MonopoleTransportation_h 1 28 #include "G4VProcess.hh" 29 #include "G4FieldManager.hh" 31 #include "G4Navigator.hh" 32 #include "G4TransportationManager.hh" 33 #include "G4PropagatorInField.hh" 36 #include "G4ParticleChangeForTransport.hh" 37 #include "CLHEP/Units/SystemOfUnits.h" 44 class ChordFinderSetter;
57 G4double AlongStepGetPhysicalInteractionLength(
59 G4double previousStepSize,
60 G4double currentMinimumStep,
61 G4double& currentSafety,
65 G4VParticleChange* AlongStepDoIt(
67 const G4Step& stepData
70 G4VParticleChange* PostStepDoIt(
72 const G4Step& stepData
76 G4double PostStepGetPhysicalInteractionLength(
78 G4double previousStepSize,
79 G4ForceCondition* pForceCond
84 G4PropagatorInField* GetPropagatorInField();
85 void SetPropagatorInField( G4PropagatorInField* pFieldPropagator);
88 inline G4double GetThresholdWarningEnergy()
const;
89 inline G4double GetThresholdImportantEnergy()
const;
90 inline G4int GetThresholdTrials()
const;
92 inline void SetThresholdWarningEnergy( G4double newEnWarn );
93 inline void SetThresholdImportantEnergy( G4double newEnImp );
94 inline void SetThresholdTrials(G4int newMaxTrials );
101 inline G4double GetMaxEnergyKilled()
const;
102 inline G4double GetSumEnergyKilled()
const;
103 inline void ResetKilledStatistics( G4int
report = 1);
106 inline void EnableShortStepOptimisation(G4bool optimise=
true);
112 )
override {
return -1.0; };
118 )
override {
return nullptr;};
121 void StartTracking(G4Track* aTrack)
override;
126 G4bool DoesGlobalFieldExist();
192 fFieldPropagator= pFieldPropagator;
197 return fFieldPropagator;
202 G4TransportationManager* transportMgr;
203 transportMgr= G4TransportationManager::GetTransportationManager();
207 return transportMgr->GetFieldManager()->DoesFieldExist();
212 return fThreshold_Warning_Energy;
217 return fThreshold_Important_Energy;
222 return fThresholdTrials;
227 fThreshold_Warning_Energy= newEnWarn;
232 fThreshold_Important_Energy = newEnImp;
237 fThresholdTrials = newMaxTrials;
247 return fMaxEnergyKilled;
252 return fSumEnergyKilled;
258 G4cout <<
" MonopoleTransportation: Statistics for looping particles " << G4endl;
259 G4cout <<
" Sum of energy of loopers killed: " << fSumEnergyKilled << G4endl;
260 G4cout <<
" Max energy of loopers killed: " << fMaxEnergyKilled << G4endl;
271 fShortStepOptimisation=optimiseShortStep;
G4PropagatorInField * GetPropagatorInField()
G4double fThreshold_Warning_Energy
void SetThresholdTrials(G4int newMaxTrials)
G4bool DoesGlobalFieldExist()
G4int GetThresholdTrials() const
G4double fMaxEnergyKilled
G4double endpointDistance
G4bool fGeometryLimitedStep
const Monopole * fParticleDef
G4double GetThresholdWarningEnergy() const
G4double GetMaxEnergyKilled() const
void ResetKilledStatistics(G4int report=1)
G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *) override
G4double fCandidateEndGlobalTime
G4double fThreshold_Important_Energy
G4ThreeVector fTransportEndMomentumDir
G4ThreeVector fPreviousSftOrigin
G4bool fShortStepOptimisation
G4double GetSumEnergyKilled() const
G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &) override
void SetThresholdWarningEnergy(G4double newEnWarn)
G4double fSumEnergyKilled
G4bool fEndGlobalTimeComputed
G4double GetThresholdImportantEnergy() const
G4ThreeVector fTransportEndSpin
G4ParticleChangeForTransport fParticleChange
void SetThresholdImportantEnergy(G4double newEnImp)
G4Navigator * fLinearNavigator
G4PropagatorInField * fFieldPropagator
G4SafetyHelper * fpSafetyHelper
void SetPropagatorInField(G4PropagatorInField *pFieldPropagator)
G4TouchableHandle fCurrentTouchableHandle
G4double fTransportEndKineticEnergy
G4bool fParticleIsLooping
void EnableShortStepOptimisation(G4bool optimise=true)
CMSFieldManager * fieldMgrCMS
G4ThreeVector fTransportEndPosition