Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:44

0001 //
0002 // Package:         RecoTracker/TkSeedGenerator
0003 // Class:           GlobalPixelLessSeedGenerator
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   // get Inputs
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 // Virtual destructor needed.
0032 CosmicSeedGenerator::~CosmicSeedGenerator() {}
0033 
0034 // Functions that gets called by framework every event
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   //check on the number of clusters
0046   size_t clustsOrZero = check.tooManyClusters(ev);
0047   if (!clustsOrZero) {
0048     // invoke the seed finding algorithm
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   // write output to file
0054   LogDebug("CosmicSeedGenerator") << " number of seeds = " << output->size();
0055 
0056   ev.put(std::move(output));
0057 }