#include <MagneticField/GeomBuilder/plugins/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().
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 | ( | ) |
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 }
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().