File indexing completed on 2023-03-17 11:23:06
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022 #include "RecoTracker/TrackProducer/plugins/ExtraFromSeeds.h"
0023
0024
0025
0026
0027 ExtraFromSeeds::ExtraFromSeeds(const edm::ParameterSet& iConfig)
0028 : tracks_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"))) {
0029 produces<ExtremeLight>();
0030 produces<TrackingRecHitCollection>();
0031 }
0032
0033 ExtraFromSeeds::~ExtraFromSeeds() {
0034
0035
0036 }
0037
0038
0039
0040
0041
0042
0043 void ExtraFromSeeds::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0044
0045 edm::Handle<reco::TrackCollection> tracks;
0046 iEvent.getByToken(tracks_, tracks);
0047
0048
0049 std::unique_ptr<ExtremeLight> exxtralOut(new ExtremeLight());
0050 exxtralOut->resize(tracks->size());
0051
0052 std::unique_ptr<TrackingRecHitCollection> hitOut(new TrackingRecHitCollection());
0053 TrackingRecHitRefProd rHits = iEvent.getRefBeforePut<TrackingRecHitCollection>();
0054 hitOut->reserve(3 * tracks->size());
0055
0056 for (unsigned int ie = 0; ie != tracks->size(); ++ie) {
0057 const reco::Track& track = (*tracks)[ie];
0058 const reco::TrackExtra& extra = *track.extra();
0059
0060 if (!track.quality(reco::TrackBase::highPurity))
0061 continue;
0062
0063 (*exxtralOut)[ie] = extra.seedRef()->nHits();
0064 for (auto const& seedHit : extra.seedRef()->recHits()) {
0065 hitOut->push_back(seedHit.clone());
0066 }
0067 }
0068
0069 iEvent.put(std::move(exxtralOut));
0070 iEvent.put(std::move(hitOut));
0071 }
0072
0073
0074 void ExtraFromSeeds::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0075
0076
0077 edm::ParameterSetDescription desc;
0078 desc.setUnknown();
0079 descriptions.addDefault(desc);
0080 }