CMS 3D CMS Logo

SiStripLorentzAngleDepESProducer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SiStripLorentzAngleDepESProducer
4 // Class: SiStripLorentzAngleDepESProducer
5 //
13 //
14 // Original Author: Michael Segala and Rebeca Gonzalez Suarez
15 // Created: 15/02/2011
16 //
17 //
18 
19 
20 
22 
23 
25  pset_(iConfig),
26  getLatency(iConfig.getParameter<edm::ParameterSet>("LatencyRecord")),
27  getPeak(iConfig.getParameter<edm::ParameterSet>("LorentzAnglePeakMode")),
28  getDeconv(iConfig.getParameter<edm::ParameterSet>("LorentzAngleDeconvMode"))
29 {
30  setWhatProduced(this);
31 
32  edm::LogInfo("SiStripLorentzAngleDepESProducer") << "ctor" << std::endl;
33 
34 }
35 
36 
37 std::unique_ptr<SiStripLorentzAngle> SiStripLorentzAngleDepESProducer::produce(const SiStripLorentzAngleDepRcd& iRecord)
38 {
39  std::unique_ptr<SiStripLorentzAngle> siStripLA;
40  edm::LogInfo("SiStripLorentzAngleDepESProducer") << "Producer called" << std::endl;
41 
42  std::string latencyRecordName = getLatency.getParameter<std::string>("record");
44  bool peakMode = false;
45 
46  if( latencyRecordName == "SiStripLatencyRcd" ) {
48  iRecord.getRecord<SiStripLatencyRcd>().get( latencyLabel, latency);
49  if(latency -> singleReadOutMode() == 1) peakMode = true;
50  } else edm::LogError("SiStripLorentzAngleDepESProducer") << "[SiStripLorentzAngleDepESProducer::produce] No Latency Record found " << std::endl;
51 
52  std::string lorentzAngleRecordName;
53  std::string lorentzAngleLabel;
54 
55  if (peakMode){
56  lorentzAngleRecordName = getPeak.getParameter<std::string>("record");
57  lorentzAngleLabel = getPeak.getUntrackedParameter<std::string>("label");
58  } else {
59  lorentzAngleRecordName = getDeconv.getParameter<std::string>("record");
60  lorentzAngleLabel = getDeconv.getUntrackedParameter<std::string>("label");
61  }
62 
63  if ( lorentzAngleRecordName == "SiStripLorentzAngleRcd"){
64  edm::ESHandle<SiStripLorentzAngle> siStripLorentzAngle;
65  iRecord.getRecord<SiStripLorentzAngleRcd>().get(lorentzAngleLabel, siStripLorentzAngle);
66  siStripLA.reset(new SiStripLorentzAngle(*(siStripLorentzAngle.product())));
67  } else edm::LogError("SiStripLorentzAngleDepESProducer") << "[SiStripLorentzAngleDepESProducer::produce] No Lorentz Angle Record found " << std::endl;
68 
69 
70  return siStripLA;
71 
72 
73 }
74 
T getParameter(std::string const &) const
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:116
T getUntrackedParameter(std::string const &, T const &) const
SiStripLorentzAngleDepESProducer(const edm::ParameterSet &)
HLT enums.
latency
hardware algo
std::unique_ptr< SiStripLorentzAngle > produce(const SiStripLorentzAngleDepRcd &)
T const * product() const
Definition: ESHandle.h:84