/home/cern/BDSIM_new/src/BDSQuadMagField.cc

00001 /* BDSIM code.    Version 1.0
00002    Author: Grahame A. Blair, Royal Holloway, Univ. of London.
00003    Last modified 25.12.2003
00004    Copyright (c) 2003 by G.A.Blair.  ALL RIGHTS RESERVED. 
00005 */
00006 #include "BDSGlobalConstants.hh" // must be first in include list
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   // gab_dec03>>
00024   G4ThreeVector LocalR, GlobalR;
00025 
00026   GlobalR.setX(Point[0]);
00027   GlobalR.setY(Point[1]);
00028   GlobalR.setZ(Point[2]);
00029   //LocalR = QuadNavigator->GetCurrentLocalCoordinate();
00030   G4AffineTransform GlobalAffine=QuadNavigator->GetGlobalToLocalTransform();
00031   LocalR=GlobalAffine.TransformPoint(GlobalR); 
00032   // gab_dec03<<
00033      
00034       
00035 
00036 
00037   Bfield[0]=LocalR.y()*itsBGrad;
00038   Bfield[1]=LocalR.x()*itsBGrad;
00039   Bfield[2]=0;
00040 
00041   // factor of 2 is actually 2-factorial.
00042 }
00043 
00044 
00045 

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