00001 #include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" 00002 #include "MagneticField/Engine/interface/MagneticField.h" 00003 #include "MagneticField/VolumeGeometry/interface/MagVolume.h" 00004 00005 RKLocalFieldProvider::RKLocalFieldProvider( const MagVolume& vol) : 00006 theVolume( &vol), theFrame(vol), transform_(false) {} 00007 00008 RKLocalFieldProvider::RKLocalFieldProvider( const MagVolume& vol, const Frame& frame) : 00009 theVolume( &vol), theFrame(frame), transform_(true) {} 00010 00011 /* 00012 RKLocalFieldProvider::RKLocalFieldProvider() : 00013 theVolume(0), theFrame(globalFrame()), transform_(false) {} 00014 00015 RKLocalFieldProvider::RKLocalFieldProvider( const Frame& frame) : 00016 theVolume(0), theFrame(frame), transform_(true) {} 00017 */ 00018 00019 RKLocalFieldProvider::Vector RKLocalFieldProvider::inTesla( const LocalPoint& lp) const 00020 { 00021 if (theVolume != 0) { 00022 if (transform_) { 00023 LocalPoint vlp( theVolume->toLocal( theFrame.toGlobal( lp))); 00024 return theFrame.toLocal( theVolume->toGlobal( theVolume->fieldInTesla( vlp))).basicVector(); 00025 } 00026 else { 00027 return theVolume->fieldInTesla( lp).basicVector(); 00028 } 00029 } 00030 else { 00031 /* 00032 if (transform_) { 00033 GlobalVector gv( MagneticField::inTesla(theFrame.toGlobal(lp))); 00034 return theFrame.toLocal(gv).basicVector(); 00035 } 00036 else { 00037 // the "local" frame is actually global 00038 return MagneticField::inTesla( GlobalPoint( lp.basicVector())).basicVector(); 00039 } 00040 */ 00041 00042 return RKLocalFieldProvider::Vector(0,0,0); 00043 } 00044 } 00045