CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/MagneticField/ParametrizedEngine/plugins/OAEParametrizedMagneticField.cc

Go to the documentation of this file.
00001 
00006 #include "OAEParametrizedMagneticField.h"
00007 #include <FWCore/ParameterSet/interface/ParameterSet.h>
00008 #include <FWCore/MessageLogger/interface/MessageLogger.h>
00009 
00010 #include "TkBfield.h"
00011 
00012 using namespace std;
00013 using namespace magfieldparam;
00014 
00015 OAEParametrizedMagneticField::OAEParametrizedMagneticField(string T) : 
00016   theParam(T){}
00017 
00018 
00019 OAEParametrizedMagneticField::OAEParametrizedMagneticField(const edm::ParameterSet& parameters) : 
00020   theParam(parameters.getParameter<string>("BValue")) {}
00021 
00022 
00023 OAEParametrizedMagneticField::~OAEParametrizedMagneticField() {}
00024 
00025 
00026 GlobalVector
00027 OAEParametrizedMagneticField::inTesla(const GlobalPoint& gp) const {
00028   if (isDefined(gp)) {
00029     return inTeslaUnchecked(gp);
00030   } else {
00031     edm::LogWarning("MagneticField|FieldOutsideValidity") << " Point " << gp << " is outside the validity region of OAEParametrizedMagneticField";
00032     return GlobalVector();
00033   }
00034 }
00035 
00036 namespace {
00037   double ooh = 1./100;
00038 }
00039 
00040 GlobalVector
00041 OAEParametrizedMagneticField::inTeslaUnchecked(const GlobalPoint& gp) const {
00042   double x[3] = {gp.x()*ooh, gp.y()*ooh, gp.z()*ooh};
00043   double B[3];
00044   theParam.getBxyz(x,B);
00045   return GlobalVector(B[0], B[1], B[2]);
00046 }
00047 
00048 
00049 bool
00050 OAEParametrizedMagneticField::isDefined(const GlobalPoint& gp) const {
00051   return (gp.perp2()<(115.*115.) && fabs(gp.z())<280.);
00052 }