140 G4double geometryStepLength, newSafety ;
152 *selection = CandidateForSelection ;
170 currentSafety = 0.0 ;
192 G4bool fieldExertsForce = false ;
194 if( (particleMagneticCharge != 0.0) )
214 if( !fieldExertsForce )
221 geometryStepLength = currentMinimumStep ;
234 fPreviousSftOrigin = startPosition ;
240 currentSafety = newSafety ;
246 geometryStepLength = linearStepLength ;
251 geometryStepLength = currentMinimumStep ;
280 particleMagneticCharge );
284 ->GetEquationOfMotion();
294 track.GetMomentumDirection(),
296 track.GetKineticEnergy(),
299 track.GetGlobalTime(),
300 track.GetProperTime(),
302 if( currentMinimumStep > 0 )
309 track.GetVolume() ) ;
312 geometryStepLength = lengthAlongCurve ;
314 geometryStepLength = currentMinimumStep ;
319 geometryStepLength = lengthAlongCurve= 0.0 ;
325 fPreviousSftOrigin = startPosition ;
351 if( currentMinimumStep == 0.0 )
364 if( particleMagneticCharge != 0.0 ) {
368 currentSafety = endSafety ;
378 #ifdef G4DEBUG_TRANSPORT 380 G4cout <<
"***G4MonopoleTransportation::AlongStepGPIL ** " <<
G4endl ;
382 <<
" and it returned safety= " << endSafety <<
G4endl ;
384 <<
" to obtain pseudo-safety= " << currentSafety <<
G4endl ;
394 return geometryStepLength ;
const G4Monopole * fParticleDef
virtual void SetChargeMomentumMass(G4ChargeState particleCharge, G4double MomentumXc, G4double MassXc2)=0
G4bool IsParticleLooping() const
virtual G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
G4PropagatorInField * fFieldPropagator
G4double GetTotalMomentum() const
G4ThreeVector fPreviousSftOrigin
G4bool fGeometryLimitedStep
G4bool fShortStepOptimisation
G4double fTransportEndKineticEnergy
G4ParticleChangeForTransport fParticleChange
G4SafetyHelper * fpSafetyHelper
G4bool fParticleIsLooping
virtual void ConfigureForTrack(const G4Track *)
G4GLOB_DLL std::ostream G4cout
G4double GetPDGSpin() const
G4double MagneticCharge() const
const G4MagIntegratorStepper * GetStepper() const
G4ThreeVector fTransportEndSpin
G4FieldManager * FindAndSetFieldManager(G4VPhysicalVolume *pCurrentPhysVol)
G4ThreeVector fTransportEndPosition
G4Navigator * fLinearNavigator
G4double ComputeStep(G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4double &pNewSafety, G4VPhysicalVolume *pPhysVol=0)
G4double GetCharge() const
G4bool fEndGlobalTimeComputed
void SetStepperAndChordFinder(G4int val)
const G4ThreeVector & GetMomentumDirection() const
G4ChordFinder * GetChordFinder()
G4double GetLabTimeOfFlight() const
G4double GetPDGMass() const
const G4ThreeVector & GetMomentumDir() const
G4ThreeVector GetSpin() const
G4double fCandidateEndGlobalTime
G4ThreeVector fTransportEndMomentumDir
void SetCurrentSafety(G4double val, const G4ThreeVector &pos)
G4double GetKineticEnergy() const
G4ThreeVector GetPosition() const
G4double endpointDistance
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
G4MagInt_Driver * GetIntegrationDriver()
G4MonopoleFieldSetup * fMagSetup
const G4Field * GetDetectorField() const