CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/TrackPropagation/RungeKutta/src/RKLocalFieldProvider.cc

Go to the documentation of this file.
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