CMS 3D CMS Logo

GsfMaterialEffectsESProducer.cc
Go to the documentation of this file.
2 
9 
14 
15 #include <string>
16 #include <memory>
17 
18 using namespace edm;
19 
21 {
22  std::string myname = p.getParameter<std::string>("ComponentName");
23  pset_ = p;
24  setWhatProduced(this,myname);
25 }
26 
28 
29 std::unique_ptr<GsfMaterialEffectsUpdator>
31  double mass = pset_.getParameter<double>("Mass");
32  std::string msName = pset_.getParameter<std::string>("MultipleScatteringUpdator");
33  std::string elName = pset_.getParameter<std::string>("EnergyLossUpdator");
34 
35  std::unique_ptr<GsfMaterialEffectsUpdator> msUpdator;
36  if ( msName == "GsfMultipleScatteringUpdator" ) {
37  msUpdator.reset(new GsfMultipleScatteringUpdator(mass));
38  }
39  else {
40  msUpdator.reset(new GsfMaterialEffectsAdapter(MultipleScatteringUpdator(mass)));
41  }
42 
43  std::unique_ptr<GsfMaterialEffectsUpdator> elUpdator;
44  if ( elName == "GsfBetheHeitlerUpdator" ) {
45  std::string fileName = pset_.getParameter<std::string>("BetheHeitlerParametrization");
46  int correction = pset_.getParameter<int>("BetheHeitlerCorrection");
47  elUpdator.reset(new GsfBetheHeitlerUpdator(fileName,correction));
48  }
49  else {
50  elUpdator.reset(new GsfMaterialEffectsAdapter(EnergyLossUpdator(mass)));
51  }
52 
53  auto updator =
54  std::make_unique<GsfCombinedMaterialEffectsUpdator>(*msUpdator, *elUpdator);
55 
56  return updator;
57 }
58 
59 
T getParameter(std::string const &) const
std::unique_ptr< GsfMaterialEffectsUpdator > produce(const TrackingComponentsRecord &)
GsfMaterialEffectsESProducer(const edm::ParameterSet &p)
HLT enums.