/home/cern/BDSIM_new/include/BDSSolenoidStepper.hh

00001 //  
00002 //   BDSIM, (C) 2001-2007
00003 //   
00004 //   version 0.4
00005 //
00006 
00007 //
00008 // class BDSSolenoidStepper
00009 //
00010 // Class description:
00011 // stepper for solenoid magnetic field
00012 
00013 // History:
00014 //
00015 
00016 #ifndef BDSSOLENOIDSTEPPER_HH
00017 #define BDSSOLENOIDSTEPPER_HH
00018 #include "globals.hh"
00019 #include "G4MagIntegratorStepper.hh"
00020 #include "G4Mag_EqRhs.hh"
00021 #include "G4ThreeVector.hh"
00022 #include "G4Navigator.hh"
00023 
00024 class BDSSolenoidStepper : public G4MagIntegratorStepper
00025 {
00026 
00027 public:  // with description
00028 
00029   BDSSolenoidStepper(G4Mag_EqRhs *EqRhs);
00030 
00031   ~BDSSolenoidStepper();
00032 
00033   void Stepper( const G4double y[],
00034                 const G4double dydx[],
00035                 const G4double h,
00036                 G4double yout[],
00037                 G4double yerr[]  );
00038   // The stepper for the Runge Kutta integration.
00039   // The stepsize is fixed, equal to h.
00040   // Integrates ODE starting values y[0 to 6]
00041   // Outputs yout[] and its estimated error yerr[].
00042 
00043   G4double DistChord()   const;
00044   // Estimate maximum distance of curved solution and chord ... 
00045  
00046   void SetBField(G4double aBField);
00047   G4double GetBField();
00048 
00049   void StepperName();
00050 
00051 public: // without description
00052   
00053   G4int IntegratorOrder()const { return 2; }
00054 
00055 protected:
00056   //  --- Methods used to implement all the derived classes -----
00057 
00058   void AdvanceHelix( const G4double  yIn[],
00059                      G4ThreeVector Bfld,
00060                      G4double  h,
00061                      G4double  yOut[]);    // output 
00062   // A first order Step along a solenoid inside the field.
00063 
00064 private:
00065   
00066   G4Mag_EqRhs*  fPtrMagEqOfMot;
00067 
00068   G4double itsBField;
00069 
00070   G4double itsDist;
00071 
00072 };
00073 
00074 inline  void BDSSolenoidStepper::SetBField(G4double aBField)
00075 {itsBField=aBField;
00076 }
00077 
00078 inline G4double BDSSolenoidStepper::GetBField()
00079 {return itsBField;}
00080 
00081 inline void BDSSolenoidStepper::StepperName()
00082 {G4cout<<"BDSSolenoidStepper"<<G4endl;}
00083 
00084 #endif /* BDSSOLENOIDSTEPPER_HH */

Generated on Wed Mar 5 17:25:22 2008 for BDSIM by  doxygen 1.5.3