00001 #ifndef BDSTeleporterStepper_h 00002 #define BDSTeleporterStepper_h 1 00003 00004 #include "globals.hh" //G4 types and exceptions 00005 #include "G4MagIntegratorStepper.hh" 00006 #include "G4Mag_EqRhs.hh" 00007 #include "G4ThreeVector.hh" 00008 #include <vector> 00009 00010 class BDSTeleporterStepper : public G4MagIntegratorStepper 00011 { 00012 00013 public: // with description 00014 BDSTeleporterStepper(G4Mag_EqRhs *EqRhs); 00015 ~BDSTeleporterStepper(); 00016 00017 void Stepper( const G4double y[], 00018 const G4double dydx[], 00019 const G4double h, 00020 G4double yout[], 00021 G4double yerr[] ); 00022 G4int IntegratorOrder() const {return 2;} 00023 G4double DistChord() const {return 0;} 00024 void StepperName(); 00025 00026 protected: 00027 void AdvanceHelix(const G4double yIn[], 00028 G4ThreeVector Bfld, 00029 G4double h, 00030 G4double yDrift[]); 00031 00032 private: 00033 G4bool verboseStep; 00034 G4int verboseEventNumber; 00035 G4int nvar; 00036 // std::vector<G4int> turnnumberrecord; 00037 // G4int turnstaken; 00038 G4ThreeVector teleporterdelta; 00039 }; 00040 00041 inline void BDSTeleporterStepper::StepperName() 00042 {G4cout<<"BDSTeleporterStepper"<<G4endl;} 00043 00044 #endif