/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/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" 
00007 
00008 #include "BDSQuadMagField.hh"
00009 
00010 #include "G4Navigator.hh"
00011 #include "G4TransportationManager.hh"
00012 
00013 BDSQuadMagField::BDSQuadMagField(G4double aBGrad):itsBGrad(aBGrad){
00014   QuadNavigator=new G4Navigator();
00015 }
00016 BDSQuadMagField::~BDSQuadMagField(){
00017   delete QuadNavigator;
00018 }
00019 
00020 void BDSQuadMagField::GetFieldValue( const G4double Point[4],
00021                        G4double *Bfield ) const
00022 {
00023 
00024   // gab_dec03>>
00025   G4ThreeVector LocalR, GlobalR;
00026 
00027   GlobalR.setX(Point[0]);
00028   GlobalR.setY(Point[1]);
00029   GlobalR.setZ(Point[2]);
00030 
00031   QuadNavigator->SetWorldVolume(G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume()); 
00032   QuadNavigator->LocateGlobalPointAndSetup(GlobalR);
00033   G4AffineTransform GlobalAffine=QuadNavigator->GetGlobalToLocalTransform();
00034   LocalR=GlobalAffine.TransformPoint(GlobalR); 
00035   // gab_dec03<<
00036      
00037       
00038 
00039 
00040   Bfield[0]=LocalR.y()*itsBGrad;
00041   Bfield[1]=LocalR.x()*itsBGrad;
00042   Bfield[2]=0;
00043 
00044   // factor of 2 is actually 2-factorial.
00045 }
00046 
00047 
00048 

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7