CMS 3D CMS Logo

magneticfield::AutoMagneticFieldESProducer Class Reference

#include <MagneticField/GeomBuilder/plugins/AutoMagneticFieldESProducer.h>

Inheritance diagram for magneticfield::AutoMagneticFieldESProducer:

edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

List of all members.

Public Member Functions

 AutoMagneticFieldESProducer (const edm::ParameterSet &)
std::auto_ptr< MagneticFieldproduce (const IdealMagneticFieldRecord &)
 ~AutoMagneticFieldESProducer ()

Public Attributes

edm::ParameterSet pset

Private Member Functions

std::string closerModel (float current)

Private Attributes

std::vector< std::string > maps
std::vector< intnominalCurrents


Detailed Description

Definition at line 24 of file AutoMagneticFieldESProducer.h.


Constructor & Destructor Documentation

AutoMagneticFieldESProducer::AutoMagneticFieldESProducer ( const edm::ParameterSet iConfig  ) 

Definition at line 38 of file AutoMagneticFieldESProducer.cc.

References Exception, edm::ParameterSet::getUntrackedParameter(), maps, nominalCurrents, pset, and edm::ESProducer::setWhatProduced().

00038                                                                                        : pset(iConfig) {
00039   setWhatProduced(this, pset.getUntrackedParameter<std::string>("label",""));
00040   nominalCurrents = pset.getUntrackedParameter<vector<int> >("nominalCurrents"); 
00041   maps = pset.getUntrackedParameter<vector<string> >("mapLabels");
00042 
00043   if (maps.size()==0 || (maps.size() != nominalCurrents.size())) {
00044     throw cms::Exception("InvalidParameter") << "Invalid values for parameters \"nominalCurrents\" and \"maps\"";
00045   }
00046 }

AutoMagneticFieldESProducer::~AutoMagneticFieldESProducer (  ) 

Definition at line 49 of file AutoMagneticFieldESProducer.cc.

00050 {
00051 }


Member Function Documentation

std::string AutoMagneticFieldESProducer::closerModel ( float  current  )  [private]

Definition at line 87 of file AutoMagneticFieldESProducer.cc.

References i, int, maps, and nominalCurrents.

Referenced by produce().

00087                                                                 {
00088   int i=0;
00089   for(;i<(int)maps.size()-1;i++) {
00090     if(2*current < nominalCurrents[i]+nominalCurrents[i+1] )
00091       return maps[i];
00092   }
00093   return  maps[i];
00094 }

std::auto_ptr< MagneticField > AutoMagneticFieldESProducer::produce ( const IdealMagneticFieldRecord iRecord  ) 

Definition at line 55 of file AutoMagneticFieldESProducer.cc.

References MagneticField::clone(), closerModel(), edm::eventsetup::EventSetupRecordImplementation< T >::get(), edm::ParameterSet::getParameter(), edm::eventsetup::DependentRecordImplementation< RecordT, ListT >::getRecord(), edm::ESHandle< T >::product(), pset, HLT_VtxMuL3::result, and s.

00056 {
00057   float current = pset.getParameter<int>("valueOverride");
00058 
00059   string message;
00060 
00061   if (current < 0) {
00062     ESHandle<RunInfo> rInfo;
00063     iRecord.getRecord<RunInfoRcd>().get(rInfo);
00064     current = rInfo->m_avg_current;
00065     message = " (from RunInfo DB)";
00066   } else {
00067     message = " (from valueOverride card)";
00068   }
00069 
00070   string model  = closerModel(current);
00071 
00072   edm::LogInfo("MagneticField|AutoMagneticField") << "Current: " << current << message << "; using map with label: " << model;
00073 
00074 
00075   edm::ESHandle<MagneticField> map;
00076   
00077   iRecord.get(model,map);
00078 
00079   MagneticField* result = map.product()->clone();
00080 
00081   std::auto_ptr<MagneticField> s(result);
00082   
00083   return s;
00084 }


Member Data Documentation

std::vector<std::string> magneticfield::AutoMagneticFieldESProducer::maps [private]

Definition at line 35 of file AutoMagneticFieldESProducer.h.

Referenced by AutoMagneticFieldESProducer(), and closerModel().

std::vector<int> magneticfield::AutoMagneticFieldESProducer::nominalCurrents [private]

Definition at line 34 of file AutoMagneticFieldESProducer.h.

Referenced by AutoMagneticFieldESProducer(), and closerModel().

edm::ParameterSet magneticfield::AutoMagneticFieldESProducer::pset

Definition at line 31 of file AutoMagneticFieldESProducer.h.

Referenced by AutoMagneticFieldESProducer(), and produce().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:48:54 2009 for CMSSW by  doxygen 1.5.4