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 }