CMS 3D CMS Logo

AreaSeededTrackingRegionsProducer.h
Go to the documentation of this file.
1 #ifndef RecoTracker_TkTrackingRegions_AreaSeededTrackingRegionsProducer_h
2 #define RecoTracker_TkTrackingRegions_AreaSeededTrackingRegionsProducer_h
3 
4 
6 
17 
18 #include "VertexBeamspotOrigins.h"
20 
21 #include <array>
22 #include <limits>
23 
49 public:
50 
52 
54  m_origins(conf.getParameter<edm::ParameterSet>("RegionPSet"), iC),
55  m_builder(conf.getParameter<edm::ParameterSet>("RegionPSet"), iC)
56  {
57  edm::ParameterSet regPSet = conf.getParameter<edm::ParameterSet>("RegionPSet");
58  for(const auto& area: regPSet.getParameter<std::vector<edm::ParameterSet> >("areas")) {
59  m_areas.emplace_back(area.getParameter<double>("rmin"),
60  area.getParameter<double>("rmax"),
61  area.getParameter<double>("phimin"),
62  area.getParameter<double>("phimax"),
63  area.getParameter<double>("zmin"),
64  area.getParameter<double>("zmax"));
65  }
66  if(m_areas.empty())
67  throw cms::Exception("Configuration") << "Empty 'areas' parameter.";
68  }
69 
71 
72  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
74 
76  descAreas.add<double>("rmin", 0.0);
77  descAreas.add<double>("rmax", 0.0);
78  descAreas.add<double>("zmin", 0.0);
79  descAreas.add<double>("zmax", 0.0);
80  descAreas.add<double>("phimin", 0.0);
81  descAreas.add<double>("phimax", 0.0);
82  std::vector<edm::ParameterSet> vDefaults;
83  desc.addVPSet("areas", descAreas, vDefaults);
84 
87 
88  // Only for backwards-compatibility
90  descRegion.add<edm::ParameterSetDescription>("RegionPSet", desc);
91 
92  descriptions.add("areaSeededTrackingRegion", descRegion);
93  }
94 
95  std::vector<std::unique_ptr<TrackingRegion> > regions(const edm::Event& e, const edm::EventSetup& es) const
96  {
97  auto origins = m_origins.origins(e);
98  auto builder = m_builder.beginEvent(e);
99  return builder.regions(origins, m_areas);
100  }
101 
102 private:
105  std::vector<AreaSeededTrackingRegionsBuilder::Area> m_areas;
106 };
107 
108 #endif
Origins origins(const edm::Event &iEvent) const
static void fillDescriptions(edm::ParameterSetDescription &desc)
T getParameter(std::string const &) const
ParameterDescriptionBase * addVPSet(U const &iLabel, ParameterSetDescription const &validator, std::vector< ParameterSet > const &defaults)
static void fillDescriptions(edm::ParameterSetDescription &desc, const std::string &defaultBeamSpot="offlineBeamSpot", const std::string &defaultVertex="firstStepPrimaryVertices", int defaultMaxVertices=-1)
std::vector< std::unique_ptr< TrackingRegion > > regions(const edm::Event &e, const edm::EventSetup &es) const
std::vector< std::unique_ptr< TrackingRegion > > regions(const Origins &origins, const std::vector< Area > &areas) const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< AreaSeededTrackingRegionsBuilder::Area > m_areas
HLT enums.
AreaSeededTrackingRegionsProducer(const edm::ParameterSet &conf, edm::ConsumesCollector &&iC)
Builder beginEvent(const edm::Event &e) const