File indexing completed on 2025-02-05 23:50:57
0001 #include "FWCore/Framework/interface/ConsumesCollector.h"
0002 #include "FWCore/Framework/interface/MakerMacros.h"
0003 #include "CommonTools/UtilAlgos/interface/ObjectSelector.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "Alignment/CommonAlignmentProducer/interface/AlignmentSeedSelector.h"
0006 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0007
0008 struct SeedConfigSelector {
0009 typedef std::vector<const TrajectorySeed *> container;
0010 typedef container::const_iterator const_iterator;
0011 typedef TrajectorySeedCollection collection;
0012
0013 SeedConfigSelector(const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC) : theSelector(cfg) {}
0014
0015 const_iterator begin() const { return selected_.begin(); }
0016 const_iterator end() const { return selected_.end(); }
0017 size_t size() const { return selected_.size(); }
0018
0019 void select(const edm::Handle<TrajectorySeedCollection> c, const edm::Event &evt, const edm::EventSetup & ) {
0020 all_.clear();
0021 selected_.clear();
0022 for (collection::const_iterator i = c.product()->begin(), iE = c.product()->end(); i != iE; ++i) {
0023 all_.push_back(&*i);
0024 }
0025 selected_ = theSelector.select(all_, evt);
0026 }
0027
0028 static void fillPSetDescription(edm::ParameterSetDescription &desc) {
0029 AlignmentSeedSelector::fillPSetDescription(desc);
0030 }
0031
0032 private:
0033 container all_, selected_;
0034 AlignmentSeedSelector theSelector;
0035 };
0036
0037 typedef ObjectSelector<SeedConfigSelector> AlignmentSeedSelectorModule;
0038
0039 DEFINE_FWK_MODULE(AlignmentSeedSelectorModule);