File indexing completed on 2024-04-06 12:28:44
0001
0002
0003
0004
0005
0006 #include <iostream>
0007 #include <memory>
0008 #include <string>
0009
0010 #include "RecoTracker/SpecialSeedGenerators/interface/CosmicSeedGenerator.h"
0011 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
0012 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0013 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0014 #include "FWCore/Utilities/interface/InputTag.h"
0015
0016 using namespace std;
0017 CosmicSeedGenerator::CosmicSeedGenerator(edm::ParameterSet const& conf)
0018 : cosmic_seed(conf, consumesCollector()),
0019 check(conf, consumesCollector())
0020
0021 {
0022 edm::LogInfo("CosmicSeedGenerator") << "Enter the CosmicSeedGenerator";
0023
0024 matchedrecHitsToken_ = consumes<SiStripMatchedRecHit2DCollection>(conf.getParameter<edm::InputTag>("matchedRecHits"));
0025 rphirecHitsToken_ = consumes<SiStripRecHit2DCollection>(conf.getParameter<edm::InputTag>("rphirecHits"));
0026 stereorecHitsToken_ = consumes<SiStripRecHit2DCollection>(conf.getParameter<edm::InputTag>("stereorecHits"));
0027
0028 produces<TrajectorySeedCollection>();
0029 }
0030
0031
0032 CosmicSeedGenerator::~CosmicSeedGenerator() {}
0033
0034
0035 void CosmicSeedGenerator::produce(edm::Event& ev, const edm::EventSetup& es) {
0036 edm::Handle<SiStripRecHit2DCollection> rphirecHits;
0037 ev.getByToken(rphirecHitsToken_, rphirecHits);
0038 edm::Handle<SiStripRecHit2DCollection> stereorecHits;
0039 ev.getByToken(stereorecHitsToken_, stereorecHits);
0040 edm::Handle<SiStripMatchedRecHit2DCollection> matchedrecHits;
0041 ev.getByToken(matchedrecHitsToken_, matchedrecHits);
0042
0043 auto output = std::make_unique<TrajectorySeedCollection>();
0044
0045
0046 size_t clustsOrZero = check.tooManyClusters(ev);
0047 if (!clustsOrZero) {
0048
0049 cosmic_seed.run(*stereorecHits, *rphirecHits, *matchedrecHits, es, *output);
0050 } else
0051 edm::LogError("TooManyClusters") << "Found too many clusters (" << clustsOrZero << "), bailing out.\n";
0052
0053
0054 LogDebug("CosmicSeedGenerator") << " number of seeds = " << output->size();
0055
0056 ev.put(std::move(output));
0057 }