CMS 3D CMS Logo

SiStripBackPlaneCorrectionDepESProducer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SiStripBackPlaneCorrectionDepESProducer
4 // Class: SiStripBackPlaneCorrectionDepESProducer
5 //
13 //
14 // Original Author: Loic Quertenmont inspired from the SiStripLorentzAngleDepESProducer
15 // Created: 07/03/2013
16 //
17 //
18 
20 
21 
23  pset_(iConfig),
24  getLatency(iConfig.getParameter<edm::ParameterSet>("LatencyRecord")),
25  getPeak(iConfig.getParameter<edm::ParameterSet>("BackPlaneCorrectionPeakMode")),
26  getDeconv(iConfig.getParameter<edm::ParameterSet>("BackPlaneCorrectionDeconvMode"))
27 {
28  setWhatProduced(this);
29 
30  edm::LogInfo("SiStripBackPlaneCorrectionDepESProducer") << "ctor" << std::endl;
31 
32 }
33 
34 
35 std::unique_ptr<SiStripBackPlaneCorrection> SiStripBackPlaneCorrectionDepESProducer::produce(const SiStripBackPlaneCorrectionDepRcd& iRecord)
36 {
37  std::unique_ptr<SiStripBackPlaneCorrection> siStripBPC;
38  edm::LogInfo("SiStripBackPlaneCorrectionDepESProducer") << "Producer called" << std::endl;
39 
40  std::string latencyRecordName = getLatency.getParameter<std::string>("record");
42  bool peakMode = false;
43 
44  if( latencyRecordName == "SiStripLatencyRcd" ) {
46  iRecord.getRecord<SiStripLatencyRcd>().get( latencyLabel, latency);
47  if(latency -> singleReadOutMode() == 1) peakMode = true;
48  } else edm::LogError("SiStripBackPlaneCorrectionDepESProducer") << "[SiStripBackPlaneCorrectionDepESProducer::produce] No Latency Record found " << std::endl;
49 
50  std::string backPlaneCorrectionRecordName;
51  std::string backPlaneCorrectionLabel;
52 
53  if (peakMode){
54  backPlaneCorrectionRecordName = getPeak.getParameter<std::string>("record");
55  backPlaneCorrectionLabel = getPeak.getUntrackedParameter<std::string>("label");
56  } else {
57  backPlaneCorrectionRecordName = getDeconv.getParameter<std::string>("record");
58  backPlaneCorrectionLabel = getDeconv.getUntrackedParameter<std::string>("label");
59  }
60 
61  if ( backPlaneCorrectionRecordName == "SiStripBackPlaneCorrectionRcd"){
62  edm::ESHandle<SiStripBackPlaneCorrection> siStripBackPlaneCorrection;
63  iRecord.getRecord<SiStripBackPlaneCorrectionRcd>().get(backPlaneCorrectionLabel, siStripBackPlaneCorrection);
64  siStripBPC = std::make_unique<SiStripBackPlaneCorrection>(*(siStripBackPlaneCorrection.product()));
65  } else edm::LogError("SiStripBackPlaneCorrectionDepESProducer") << "[SiStripBackPlaneCorrectionDepESProducer::produce] No Lorentz Angle Record found " << std::endl;
66 
67 
68  return siStripBPC;
69 
70 
71 }
72 
T getParameter(std::string const &) const
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:124
T getUntrackedParameter(std::string const &, T const &) const
std::unique_ptr< SiStripBackPlaneCorrection > produce(const SiStripBackPlaneCorrectionDepRcd &)
HLT enums.
latency
hardware algo
T const * product() const
Definition: ESHandle.h:86