CMS 3D CMS Logo

PixelInactiveAreaTrackingRegionsSeedingLayersProducer.cc
Go to the documentation of this file.
6 
9 
12 
14 
15 #include "VertexBeamspotOrigins.h"
18 
19 #include <vector>
20 #include <utility>
21 #include <memory>
22 
24 public:
27 
28  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
29 
30  void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
31 
32 private:
37 };
38 
40  const edm::ParameterSet& iConfig)
41  : seedingLayerSetsBuilder_(iConfig, consumesCollector()),
42  origins_(iConfig.getParameter<edm::ParameterSet>("RegionPSet"), consumesCollector()),
43  inactiveAreaFinder_(iConfig,
44  seedingLayerSetsBuilder_.layers(),
45  seedingLayerSetsBuilder_.seedingLayerSetsLooper(),
46  consumesCollector()),
47  trackingRegionsBuilder_(iConfig.getParameter<edm::ParameterSet>("RegionPSet"), consumesCollector()) {
48  produces<SeedingLayerSetsHits>();
49  produces<TrackingRegionsSeedingLayerSets>();
50 }
51 
53  edm::ConfigurationDescriptions& descriptions) {
55 
59  desc.add<edm::ParameterSetDescription>("RegionPSet", descRegion);
60 
63 
64  descriptions.add("pixelInactiveAreaTrackingRegionsAndSeedingLayers", desc);
65 }
66 
68  auto orphanHandle = iEvent.put(seedingLayerSetsBuilder_.hits(iEvent, iSetup));
69  const SeedingLayerSetsHits* seedingLayers = orphanHandle.product();
70 
71  auto regions = std::make_unique<TrackingRegionsSeedingLayerSets>(seedingLayers);
72 
73  const auto origins = origins_.origins(iEvent);
74  const auto builder = trackingRegionsBuilder_.beginEvent(iEvent, iSetup);
75 
76  const auto allAreas = inactiveAreaFinder_.inactiveAreas(iEvent, iSetup);
77  for (const auto& origin : origins) {
78  auto areasLayerSets = allAreas.areasAndLayerSets(origin.first, origin.second); // point, half length in z
79  LogTrace("PixelInactiveAreaTrackingRegionsSeedingLayersProducer")
80  << "Origin " << origin.first.x() << "," << origin.first.y() << "," << origin.first.z() << " z half lengh "
81  << origin.second;
82  for (auto& areasLayerSet : areasLayerSets) {
83  auto region = builder.region(origin, areasLayerSet.first);
84  if (!region)
85  continue;
86 #ifdef EDM_ML_DEBUG
87  auto etaPhiRegion = dynamic_cast<const RectangularEtaPhiTrackingRegion*>(region.get());
88  std::stringstream ss;
89  for (const auto& ind : areasLayerSet.second) {
90  ss << ind << ",";
91  }
92  LogTrace("PixelInactiveAreaTrackingRegionsSeedingLayersProducer")
93  << " region eta,phi " << region->direction().eta() << "," << region->direction().phi() << " eta range "
94  << etaPhiRegion->etaRange().min() << "," << etaPhiRegion->etaRange().max() << " phi range "
95  << (region->direction().phi() - etaPhiRegion->phiMargin().left()) << ","
96  << (region->direction().phi() + etaPhiRegion->phiMargin().right()) << " layer sets " << ss.str();
97 #endif
98 
99  regions->emplace_back(std::move(region), std::move(areasLayerSet.second));
100  }
101  }
102 
103  iEvent.put(std::move(regions));
104 }
105 
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
static void fillDescriptions(edm::ParameterSetDescription &desc)
Builder beginEvent(const edm::Event &e, const edm::EventSetup &es) const
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
std::vector< std::pair< VecArray2< Area >, std::vector< LayerSetIndex > > > areasAndLayerSets(const GlobalPoint &point, float zwidth) const
static void fillDescriptions(edm::ParameterSetDescription &desc, const std::string &defaultBeamSpot="offlineBeamSpot", const std::string &defaultVertex="firstStepPrimaryVertices", int defaultMaxVertices=-1)
static void fillDescriptions(edm::ParameterSetDescription &desc)
#define LogTrace(id)
~PixelInactiveAreaTrackingRegionsSeedingLayersProducer() override=default
int iEvent
Definition: GenABIO.cc:224
std::unique_ptr< SeedingLayerSetsHits > hits(const edm::Event &ev, const edm::EventSetup &es)
InactiveAreas inactiveAreas(const edm::Event &iEvent, const edm::EventSetup &iSetup)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
HLT enums.
Origins origins(const edm::Event &iEvent) const
static void fillDescriptions(edm::ParameterSetDescription &desc)
def move(src, dest)
Definition: eostools.py:511