#include <AutoMagneticFieldESProducer.h>
Public Member Functions | |
AutoMagneticFieldESProducer (const edm::ParameterSet &) | |
std::auto_ptr< MagneticField > | produce (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< int > | nominalCurrents |
Definition at line 24 of file AutoMagneticFieldESProducer.h.
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().
: pset(iConfig) { setWhatProduced(this, pset.getUntrackedParameter<std::string>("label","")); nominalCurrents = pset.getUntrackedParameter<vector<int> >("nominalCurrents"); maps = pset.getUntrackedParameter<vector<string> >("mapLabels"); if (maps.size()==0 || (maps.size() != nominalCurrents.size())) { throw cms::Exception("InvalidParameter") << "Invalid values for parameters \"nominalCurrents\" and \"maps\""; } }
AutoMagneticFieldESProducer::~AutoMagneticFieldESProducer | ( | ) |
Definition at line 49 of file AutoMagneticFieldESProducer.cc.
{ }
std::string AutoMagneticFieldESProducer::closerModel | ( | float | current | ) | [private] |
Definition at line 87 of file AutoMagneticFieldESProducer.cc.
References i, maps, and nominalCurrents.
Referenced by produce().
{ int i=0; for(;i<(int)maps.size()-1;i++) { if(2*current < nominalCurrents[i]+nominalCurrents[i+1] ) return maps[i]; } return maps[i]; }
std::auto_ptr< MagneticField > AutoMagneticFieldESProducer::produce | ( | const IdealMagneticFieldRecord & | iRecord | ) |
Definition at line 55 of file AutoMagneticFieldESProducer.cc.
References closerModel(), cond::rpcobimon::current, edm::eventsetup::EventSetupRecord::get(), edm::ParameterSet::getParameter(), edm::eventsetup::DependentRecordImplementation< RecordT, ListT >::getRecord(), python::multivaluedict::map(), argparse::message, edm::ESHandle< T >::product(), pset, query::result, and asciidump::s.
{ float current = pset.getParameter<int>("valueOverride"); string message; if (current < 0) { ESHandle<RunInfo> rInfo; iRecord.getRecord<RunInfoRcd>().get(rInfo); current = rInfo->m_avg_current; message = " (from RunInfo DB)"; } else { message = " (from valueOverride card)"; } string model = closerModel(current); edm::LogInfo("MagneticField|AutoMagneticField") << "Current: " << current << message << "; using map with label: " << model; edm::ESHandle<MagneticField> map; iRecord.get(model,map); MagneticField* result = map.product()->clone(); std::auto_ptr<MagneticField> s(result); return s; }
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().
Definition at line 31 of file AutoMagneticFieldESProducer.h.
Referenced by AutoMagneticFieldESProducer(), and produce().