CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SeedCreatorFromRegionHitsEDProducerT.h
Go to the documentation of this file.
1 #ifndef RecoTracker_TkSeedGenerator_SeedCreatorFromRegionHitsEDProducerT_H
2 #define RecoTracker_TkSeedGenerator_SeedCreatorFromRegionHitsEDProducerT_H
3 
13 
17 
19 
20 template <typename T_SeedCreator>
22 public:
24  ~SeedCreatorFromRegionHitsEDProducerT() override = default;
25 
26  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
27 
28  void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
29 
30 private:
32  T_SeedCreator seedCreator_;
33  std::unique_ptr<SeedComparitor> comparitor_;
34 };
35 
36 template <typename T_SeedCreator>
39  : seedingHitSetsToken_(consumes<RegionsSeedingHitSets>(iConfig.getParameter<edm::InputTag>("seedingHitSets"))),
40  seedCreator_(iConfig, consumesCollector()) {
41  edm::ConsumesCollector iC = consumesCollector();
42  edm::ParameterSet comparitorPSet = iConfig.getParameter<edm::ParameterSet>("SeedComparitorPSet");
43  std::string comparitorName = comparitorPSet.getParameter<std::string>("ComponentName");
44  if (comparitorName != "none") {
45  comparitor_ = SeedComparitorFactory::get()->create(comparitorName, comparitorPSet, iC);
46  }
47 
48  produces<TrajectorySeedCollection>();
49 }
50 
51 template <typename T_SeedCreator>
53  edm::ConfigurationDescriptions& descriptions) {
55 
56  desc.add<edm::InputTag>("seedingHitSets", edm::InputTag("hitPairEDProducer"));
58 
59  edm::ParameterSetDescription descComparitor;
60  descComparitor.add<std::string>("ComponentName", "none");
61  descComparitor.setAllowAnything(); // until we have moved SeedComparitor too to EDProducers
62  desc.add<edm::ParameterSetDescription>("SeedComparitorPSet", descComparitor);
63 
64  auto label = std::string("seedCreatorFromRegion") + T_SeedCreator::fillDescriptionsLabel() + "EDProducer";
65  descriptions.add(label, desc);
66 }
67 
68 template <typename T_SeedCreator>
70  edm::Handle<RegionsSeedingHitSets> hseedingHitSets;
71  iEvent.getByToken(seedingHitSetsToken_, hseedingHitSets);
72  const auto& seedingHitSets = *hseedingHitSets;
73 
74  auto seeds = std::make_unique<TrajectorySeedCollection>();
75  seeds->reserve(seedingHitSets.size());
76 
77  if (comparitor_)
78  comparitor_->init(iEvent, iSetup);
79 
80  for (const auto& regionSeedingHitSets : seedingHitSets) {
81  const TrackingRegion& region = regionSeedingHitSets.region();
82  seedCreator_.init(region, iSetup, comparitor_.get());
83 
84  for (const SeedingHitSet& hits : regionSeedingHitSets) {
85  // TODO: do we really need a comparitor at this point? It is
86  // used in triplet and quadruplet generators, as well as inside
87  // seedCreator.
88  if (!comparitor_ || comparitor_->compatible(hits)) {
89  seedCreator_.makeSeed(*seeds, hits);
90  }
91  }
92  }
93 
94  seeds->shrink_to_fit();
95  iEvent.put(std::move(seeds));
96 }
97 
98 #endif
tuple seedingHitSets
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
void setAllowAnything()
allow any parameter label/value pairs
char const * label
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< RegionsSeedingHitSets > seedingHitSetsToken_
def move
Definition: eostools.py:511
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void add(std::string const &label, ParameterSetDescription const &psetDescription)
SeedCreatorFromRegionHitsEDProducerT(const edm::ParameterSet &iConfig)
T get() const
Definition: EventSetup.h:88
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
#define get
~SeedCreatorFromRegionHitsEDProducerT() override=default