00001
00002
00003
00004
00005
00006 #include "BDSGlobalConstants.hh"
00007
00008 #include "BDSQuadMagField.hh"
00009
00010 #include "G4Navigator.hh"
00011 #include "G4TransportationManager.hh"
00012
00013 BDSQuadMagField::BDSQuadMagField(G4double aBGrad):itsBGrad(aBGrad){}
00014 BDSQuadMagField::~BDSQuadMagField(){}
00015
00016 void BDSQuadMagField::GetFieldValue( const G4double Point[4],
00017 G4double *Bfield ) const
00018 {
00019 G4Navigator* QuadNavigator=
00020 G4TransportationManager::GetTransportationManager()->
00021 GetNavigatorForTracking();
00022
00023
00024 G4ThreeVector LocalR, GlobalR;
00025
00026 GlobalR.setX(Point[0]);
00027 GlobalR.setY(Point[1]);
00028 GlobalR.setZ(Point[2]);
00029
00030 G4AffineTransform GlobalAffine=QuadNavigator->GetGlobalToLocalTransform();
00031 LocalR=GlobalAffine.TransformPoint(GlobalR);
00032
00033
00034
00035
00036
00037 Bfield[0]=LocalR.y()*itsBGrad;
00038 Bfield[1]=LocalR.x()*itsBGrad;
00039 Bfield[2]=0;
00040
00041
00042 }
00043
00044
00045