CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/CalibTracker/SiStripESProducers/plugins/real/SiStripLorentzAngleDepESProducer.cc

Go to the documentation of this file.
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