67     fParticleIsLooping( false ),
 
   70     fThreshold_Warning_Energy( 100 * 
MeV ),  
 
   71     fThreshold_Important_Energy( 250 * 
MeV ), 
 
   72     fThresholdTrials( 10 ), 
 
   75     fSumEnergyKilled( 0.0 ), fMaxEnergyKilled( 0.0 ), 
 
   76     fShortStepOptimisation(false),    
 
  116     G4cout << 
" G4MonopoleTransportation: Statistics for looping particles "  
  140   G4double geometryStepLength, newSafety ; 
 
  167   G4double      MagSqShift  = OriginShift.mag2() ;
 
  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();
 
  302      if( currentMinimumStep > 0 ) 
 
  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 ;
 
  405   static G4int noCalls=0;
 
  444         deltaTime = stepLength/finalVelocity ;
 
  446      else if (finalVelocity > 0.0)
 
  450         meanInverseVelocity = 0.5
 
  451                             * ( 1.0 / initialVelocity + 1.0 / finalVelocity ) ;
 
  452         deltaTime = stepLength * meanInverseVelocity ;
 
  454      else if( initialVelocity > 0.0 )
 
  456         deltaTime = stepLength/initialVelocity ;
 
  496           G4cout << 
" G4MonopoleTransportation is killing track that is looping or stuck " 
  499                  << 
" MeV energy." << 
G4endl;
 
  501                  << 
"   No of calls to AlongStepDoIt = " << noCalls 
 
  511           G4cout << 
"   G4MonopoleTransportation::AlongStepDoIt(): Particle looping -  " 
  513                  << 
"   No of calls to  = " << noCalls 
 
  572     LocateGlobalPointAndUpdateTouchableHandle( track.
GetPosition(),
 
  625   if( pNewVol!=0 && pNewMaterialCutsCouple!=0 && 
 
  626       pNewMaterialCutsCouple->
GetMaterial()!=pNewMaterial )
 
  630     pNewMaterialCutsCouple =
 
void SetMaterialInTouchable(G4Material *fMaterial)
 
const G4Monopole * fParticleDef
 
void SetTouchableHandle(const G4TouchableHandle &fTouchable)
 
const G4ThreeVector & GetPolarization() const 
 
G4SafetyHelper * GetSafetyHelper() const 
 
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
 
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety, G4GPILSelection *selection)
 
void SetMaterialCutsCoupleInTouchable(const G4MaterialCutsCouple *fMaterialCutsCouple)
 
virtual void SetChargeMomentumMass(G4ChargeState particleCharge, G4double MomentumXc, G4double MassXc2)=0
 
G4double GetProperTime() const 
 
std::vector< G4ThreeVector > * GimmeTrajectoryVectorAndForgetIt() const 
 
CLHEP::Hep3Vector G4ThreeVector
 
G4double GetVelocity() const 
 
G4double GetKineticEnergy() const 
 
const G4DynamicParticle * GetDynamicParticle() const 
 
const G4MagIntegratorStepper * GetStepper() const 
 
void ClearAllChordFindersState()
 
G4Material * GetMaterial() const 
 
const G4ThreeVector & GetPosition() const 
 
const G4ThreeVector & GetMomentumDir() const 
 
G4TrackStatus GetTrackStatus() const 
 
G4ThreeVector GetSpin() const 
 
virtual G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety)
 
G4Navigator * GetNavigatorForTracking() const 
 
virtual void StartTracking(G4Track *aTrack)
 
virtual G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &stepData)
 
G4PropagatorInField * fFieldPropagator
 
G4ThreeVector fPreviousSftOrigin
 
void ProposePolarization(G4double Px, G4double Py, G4double Pz)
 
~G4MonopoleTransportation()
 
G4bool fGeometryLimitedStep
 
G4double fThreshold_Important_Energy
 
G4ParticleDefinition * GetDefinition() const 
 
G4bool fShortStepOptimisation
 
G4double GetVelocity() const 
 
G4double fThreshold_Warning_Energy
 
G4double fTransportEndKineticEnergy
 
G4ParticleChangeForTransport fParticleChange
 
Definition of the G4MonopoleTransportation class. 
 
void ProposePosition(G4double x, G4double y, G4double z)
 
G4SafetyHelper * fpSafetyHelper
 
G4bool fParticleIsLooping
 
G4double GetTotalMomentum() const 
 
G4StepPoint * GetPreStepPoint() const 
 
virtual void Initialize(const G4Track &)
 
virtual void StartTracking(G4Track *)
 
virtual void ConfigureForTrack(const G4Track *)
 
Definition of the G4Monopole class. 
 
void SetGeometricallyLimitedStep()
 
G4double GetKineticEnergy() const 
 
G4ThreeVector GetPosition() const 
 
G4GLOB_DLL std::ostream G4cout
 
G4double MagneticCharge() const 
 
G4double fSumEnergyKilled
 
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &, G4double previousStepSize, G4ForceCondition *pForceCond)
 
const G4ThreeVector & GetMomentumDirection() const 
 
G4double GetCharge() const 
 
void ProposeTrueStepLength(G4double truePathLength)
 
void SetProcessSubType(G4int)
 
static G4MonopoleFieldSetup * GetMonopoleFieldSetup()
 
G4ThreeVector fTransportEndSpin
 
G4double GetGlobalTime() const 
 
G4double fMaxEnergyKilled
 
G4FieldManager * FindAndSetFieldManager(G4VPhysicalVolume *pCurrentPhysVol)
 
const G4TouchableHandle & GetTouchableHandle() const 
 
G4bool DoesGlobalFieldExist()
 
static G4TransportationManager * GetTransportationManager()
 
G4ThreeVector fTransportEndPosition
 
G4Navigator * fLinearNavigator
 
G4MonopoleTransportation(const G4Monopole *p, G4int verbosityLevel=1)
 
G4double ComputeStep(G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4double &pNewSafety, G4VPhysicalVolume *pPhysVol=0)
 
static G4ProductionCutsTable * GetProductionCutsTable()
 
G4bool fEndGlobalTimeComputed
 
const G4ThreeVector & GetMomentumDirection() const 
 
void SetStepperAndChordFinder(G4int val)
 
G4LogicalVolume * GetLogicalVolume() const 
 
void ProposeProperTime(G4double finalProperTime)
 
G4double GetPDGMass() const 
 
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const 
 
static G4FieldManagerStore * GetInstance()
 
void SetSensitiveDetectorInTouchable(G4VSensitiveDetector *fSensitiveDetector)
 
static G4ParticleTable * GetParticleTable()
 
#define fPreviousSftOrigin
 
G4TouchableHandle fCurrentTouchableHandle
 
G4bool IsParticleLooping() const 
 
G4double GetLabTimeOfFlight() const 
 
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const 
 
void SetPointerToVectorOfAuxiliaryPoints(std::vector< G4ThreeVector > *theNewVectorPointer)
 
void ProposeGlobalTime(G4double t)
 
G4ChordFinder * GetChordFinder()
 
virtual G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &stepData)
 
void ProposeEnergy(G4double finalEnergy)
 
G4VPhysicalVolume * GetVolume() const 
 
G4double fCandidateEndGlobalTime
 
G4ThreeVector fTransportEndMomentumDir
 
G4double GetTotalEnergy() const 
 
G4double GetPDGSpin() const 
 
void SetCurrentSafety(G4double val, const G4ThreeVector &pos)
 
void ClearPropagatorState()
 
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
 
const G4MaterialCutsCouple * GetMaterialCutsCouple() const 
 
G4double endpointDistance
 
void ProposeTrackStatus(G4TrackStatus status)
 
const G4Field * GetDetectorField() const 
 
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
 
G4MagInt_Driver * GetIntegrationDriver()
 
void SetMomentumChanged(G4bool b)
 
G4PropagatorInField * GetPropagatorInField() const 
 
G4ProductionCuts * GetProductionCuts() const 
 
G4VSensitiveDetector * GetSensitiveDetector() const 
 
G4double GetStepLength() const 
 
virtual void LocateGlobalPointWithinVolume(const G4ThreeVector &position)
 
G4MonopoleFieldSetup * fMagSetup
 
const G4Material * GetMaterial() const