File indexing completed on 2023-03-17 10:38:58
0001
0002 #include "FWCore/Framework/interface/ConsumesCollector.h"
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "CommonTools/UtilAlgos/interface/ObjectSelector.h"
0005 #include "Alignment/CommonAlignmentProducer/interface/AlignmentCSCBeamHaloSelector.h"
0006
0007
0008
0009
0010
0011 #include "CommonTools/RecoAlgos/interface/TrackSelector.h"
0012
0013 struct CSCBeamHaloConfigSelector {
0014 typedef std::vector<const reco::Track *> container;
0015 typedef container::const_iterator const_iterator;
0016 typedef reco::TrackCollection collection;
0017
0018 CSCBeamHaloConfigSelector(const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
0019 : CSCBeamHaloConfigSelector(cfg, iC) {}
0020 CSCBeamHaloConfigSelector(const edm::ParameterSet &cfg, edm::ConsumesCollector &iC) : theSelector(cfg, iC) {}
0021
0022 const_iterator begin() const { return selected_.begin(); }
0023 const_iterator end() const { return selected_.end(); }
0024 size_t size() const { return selected_.size(); }
0025
0026 void select(const edm::Handle<reco::TrackCollection> &c, const edm::Event &evt, const edm::EventSetup & ) {
0027 all_.clear();
0028 selected_.clear();
0029 for (collection::const_iterator i = c.product()->begin(), iE = c.product()->end(); i != iE; ++i) {
0030 all_.push_back(&*i);
0031 }
0032 selected_ = theSelector.select(all_, evt);
0033 }
0034
0035 private:
0036 container all_, selected_;
0037 AlignmentCSCBeamHaloSelector theSelector;
0038 };
0039
0040 typedef ObjectSelector<CSCBeamHaloConfigSelector> AlignmentCSCBeamHaloSelectorModule;
0041
0042 DEFINE_FWK_MODULE(AlignmentCSCBeamHaloSelectorModule);