Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "CalibTracker/SiStripESProducers/plugins/real/SiStripDelayESProducer.h"
00023
00024
00025
00026 SiStripDelayESProducer::SiStripDelayESProducer(const edm::ParameterSet& iConfig):
00027 pset_(iConfig),
00028 toGet(iConfig.getParameter<Parameters>("ListOfRecordToMerge"))
00029 {
00030 setWhatProduced(this);
00031
00032 edm::LogInfo("SiStripDelayESProducer") << "ctor" << std::endl;
00033
00034 delay.reset(new SiStripDelay());
00035 }
00036
00037
00038 boost::shared_ptr<SiStripDelay> SiStripDelayESProducer::produce(const SiStripDelayRcd& iRecord)
00039 {
00040 edm::LogInfo("SiStripDelayESProducer") << "produce called" << std::endl;
00041
00042 delay->clear();
00043
00044 edm::ESHandle<SiStripBaseDelay> baseDelay;
00045
00046 std::string label;
00047 std::string recordName;
00048 int sumSign = 0;
00049
00050 for( Parameters::iterator itToGet = toGet.begin(); itToGet != toGet.end(); ++itToGet ) {
00051 recordName = itToGet->getParameter<std::string>("Record");
00052 label = itToGet->getParameter<std::string>("Label");
00053 sumSign = itToGet->getParameter<int>("SumSign");
00054
00055 edm::LogInfo("SiStripDelayESProducer") << "[SiStripDelayESProducer::produce] Getting data from record " << recordName << " with label " << label << std::endl;
00056
00057 if( recordName=="SiStripBaseDelayRcd" ) {
00058 iRecord.getRecord<SiStripBaseDelayRcd>().get(label, baseDelay);
00059 delay->fillNewDelay( *(baseDelay.product()), sumSign, std::make_pair(recordName, label) );
00060 } else {
00061 edm::LogError("SiStripDelayESProducer") << "[SiStripDelayESProducer::produce] Skipping the requested data for unexisting record " << recordName << " with tag " << label << std::endl;
00062 continue;
00063 }
00064 }
00065
00066 delay->makeDelay();
00067
00068 return delay;
00069 }
00070