CMS 3D CMS Logo

StripCPEESProducer.cc
Go to the documentation of this file.
13 
15 {
16  std::string name = p.getParameter<std::string>("ComponentName");
18  if (!p.exists("ComponentType"))
19  edm::LogWarning("StripCPEESProducer")<<" the CPE producer should contain a ComponentType, probably identical to ComponentName in the first step of migration. Falling back to:"<<type;
20  else
21  type=p.getParameter<std::string>("ComponentType");
22 
23  enumMap[std::string("SimpleStripCPE")]=SIMPLE;
24  enumMap[std::string("StripCPEfromTrackAngle")]=TRACKANGLE;
25  enumMap[std::string("StripCPEgeometric")]=GEOMETRIC;
26  enumMap[std::string("StripCPEfromTemplate")]=TEMPLATE;
27  if(enumMap.find(type)==enumMap.end())
28  throw cms::Exception("Unknown StripCPE type") << type;
29 
30  cpeNum = enumMap[type];
31  parametersPSet = (p.exists("parameters") ? p.getParameter<edm::ParameterSet>("parameters") : p);
32  setWhatProduced(this,name);
33 }
34 
35 std::unique_ptr<StripClusterParameterEstimator> StripCPEESProducer::
36 produce(const TkStripCPERecord & iRecord)
37 {
39  edm::ESHandle<MagneticField> magfield; iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield );
40  edm::ESHandle<SiStripLorentzAngle> lorentzAngle; iRecord.getRecord<SiStripLorentzAngleDepRcd>().get(lorentzAngle);
41  edm::ESHandle<SiStripBackPlaneCorrection> backPlaneCorrection; iRecord.getRecord<SiStripBackPlaneCorrectionDepRcd>().get(backPlaneCorrection);
42  edm::ESHandle<SiStripConfObject> confObj; iRecord.getRecord<SiStripConfObjectRcd>().get(confObj);
44  edm::ESHandle<SiStripNoises> noise; iRecord.getRecord<SiStripNoisesRcd>().get(noise);
47 
48  std::unique_ptr<StripClusterParameterEstimator> cpe;
49 
50  switch(cpeNum) {
51 
52  case SIMPLE:
53  cpe = std::make_unique<StripCPE>( parametersPSet, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency );
54  break;
55 
56  case TRACKANGLE:
57  cpe = std::make_unique<StripCPEfromTrackAngle>( parametersPSet, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency );
58  break;
59 
60  case GEOMETRIC:
61  cpe = std::make_unique<StripCPEgeometric>(parametersPSet, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency );
62  break;
63 
64  case TEMPLATE:
65  cpe = std::make_unique<StripCPEfromTemplate>( parametersPSet, *magfield, *pDD, *lorentzAngle, *backPlaneCorrection, *confObj, *latency );
66  break;
67 
68  }
69 
70  return cpe;
71 }
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
edm::ParameterSet parametersPSet
std::unique_ptr< StripClusterParameterEstimator > produce(const TkStripCPERecord &)
bool exists(std::string const &parameterName) const
checks if a parameter exists
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
std::map< std::string, CPE_t > enumMap
latency
hardware algo
StripCPEESProducer(const edm::ParameterSet &)