00001 // -*- C++ -*- 00002 // 00003 // Package: SiStripLorentzAngleDepESProducer 00004 // Class: SiStripLorentzAngleDepESProducer 00005 // 00013 // 00014 // Original Author: Michael Segala and Rebeca Gonzalez Suarez 00015 // Created: 15/02/2011 00016 // $Id: SiStripLorentzAngleDepESProducer.cc,v 1.2 2011/03/16 13:22:55 rebeca Exp $ 00017 // 00018 // 00019 00020 00021 00022 #include "CalibTracker/SiStripESProducers/plugins/real/SiStripLorentzAngleDepESProducer.h" 00023 00024 00025 SiStripLorentzAngleDepESProducer::SiStripLorentzAngleDepESProducer(const edm::ParameterSet& iConfig): 00026 pset_(iConfig), 00027 getLatency(iConfig.getParameter<edm::ParameterSet>("LatencyRecord")), 00028 getPeak(iConfig.getParameter<edm::ParameterSet>("LorentzAnglePeakMode")), 00029 getDeconv(iConfig.getParameter<edm::ParameterSet>("LorentzAngleDeconvMode")) 00030 { 00031 setWhatProduced(this); 00032 00033 edm::LogInfo("SiStripLorentzAngleDepESProducer") << "ctor" << std::endl; 00034 00035 } 00036 00037 00038 boost::shared_ptr<SiStripLorentzAngle> SiStripLorentzAngleDepESProducer::produce(const SiStripLorentzAngleDepRcd& iRecord) 00039 { 00040 00041 edm::LogInfo("SiStripLorentzAngleDepESProducer") << "Producer called" << std::endl; 00042 00043 std::string latencyRecordName = getLatency.getParameter<std::string>("record"); 00044 std::string latencyLabel = getLatency.getUntrackedParameter<std::string>("label"); 00045 bool peakMode = false; 00046 00047 if( latencyRecordName == "SiStripLatencyRcd" ) { 00048 edm::ESHandle<SiStripLatency> latency; 00049 iRecord.getRecord<SiStripLatencyRcd>().get( latencyLabel, latency); 00050 if(latency -> singleReadOutMode() == 1) peakMode = true; 00051 } else edm::LogError("SiStripLorentzAngleDepESProducer") << "[SiStripLorentzAngleDepESProducer::produce] No Latency Record found " << std::endl; 00052 00053 std::string lorentzAngleRecordName; 00054 std::string lorentzAngleLabel; 00055 00056 if (peakMode){ 00057 lorentzAngleRecordName = getPeak.getParameter<std::string>("record"); 00058 lorentzAngleLabel = getPeak.getUntrackedParameter<std::string>("label"); 00059 } else { 00060 lorentzAngleRecordName = getDeconv.getParameter<std::string>("record"); 00061 lorentzAngleLabel = getDeconv.getUntrackedParameter<std::string>("label"); 00062 } 00063 00064 if ( lorentzAngleRecordName == "SiStripLorentzAngleRcd"){ 00065 edm::ESHandle<SiStripLorentzAngle> siStripLorentzAngle; 00066 iRecord.getRecord<SiStripLorentzAngleRcd>().get(lorentzAngleLabel, siStripLorentzAngle); 00067 siStripLA_.reset(new SiStripLorentzAngle(*(siStripLorentzAngle.product()))); 00068 } else edm::LogError("SiStripLorentzAngleDepESProducer") << "[SiStripLorentzAngleDepESProducer::produce] No Lorentz Angle Record found " << std::endl; 00069 00070 00071 return siStripLA_; 00072 00073 00074 } 00075