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