00001
00002
00003
00004 #include "BDSSolenoidMagField.hh"
00005
00006 #include "G4Navigator.hh"
00007 #include "G4TransportationManager.hh"
00008
00009 BDSSolenoidMagField::BDSSolenoidMagField(G4double aBField):itsBField(aBField){
00010 G4cout<<"Using Geant4 transportation"<<G4endl;
00011 }
00012 BDSSolenoidMagField::~BDSSolenoidMagField(){}
00013
00014 void BDSSolenoidMagField::GetFieldValue( const G4double Point[4],
00015 G4double *Bfield ) const
00016 {
00017 G4Navigator* Navigator=
00018 G4TransportationManager::GetTransportationManager()->
00019 GetNavigatorForTracking();
00020
00021 G4ThreeVector LocalR, GlobalR, LocalBField;
00022
00023
00024
00025
00026
00027
00028
00029
00030 LocalBField = G4ThreeVector(0.0, 0.0, itsBField);
00031
00032 G4AffineTransform LocalAffine = Navigator->GetLocalToGlobalTransform();
00033 G4ThreeVector GlobalBField = LocalAffine.TransformAxis(LocalBField);
00034
00035 Bfield[0]=GlobalBField.x();
00036 Bfield[1]=GlobalBField.y();
00037 Bfield[2]=GlobalBField.z();
00038 }