00001
00002
00003
00004
00005 #include "G4MagneticField.hh"
00006 #include "G4CachedMagneticField.hh"
00007 #include "globals.hh"
00008 #include "G4RotationMatrix.hh"
00009 #include "G4VPhysicalVolume.hh"
00010
00011 #ifndef BDSMagField_h
00012 #define BDSMagField_h
00013
00014 class BDSMagField : public G4MagneticField
00015 {
00016 public:
00017
00018
00019
00020 BDSMagField();
00021
00022 ~BDSMagField();
00023
00024 virtual G4bool DoesFieldChangeEnergy() const;
00025
00026 virtual void GetFieldValue(const G4double Point[4],G4double *Bfield ) const;
00027
00028
00029 virtual void Prepare(G4VPhysicalVolume *referenceVolume);
00030
00031
00032
00033 void SetOriginRotation(G4RotationMatrix *rot);
00034 void SetOriginRotation(G4RotationMatrix rot);
00035 void SetOriginTranslation(G4ThreeVector trans);
00036
00037 public:
00038 virtual G4bool GetHasNPoleFields();
00039 virtual G4bool GetHasUniformField();
00040 virtual G4bool GetHasFieldMap();
00041
00042 G4RotationMatrix Rotation() const;
00043 G4ThreeVector translation;
00044
00045 private:
00046 G4RotationMatrix* rotation;
00047
00048
00049 };
00050
00051
00052 #endif