Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-09 23:33:55

0001 #include "RecoMuon/MuonSeedGenerator/plugins/MuonSeedMerger.h"
0002 
0003 /** \class MuonSeedMerger
0004  *  Module to merge two or more muon seed collections.
0005  *  Currently it does not contain any seed cleaner, so the number of ghosts seed
0006  *  can be high.
0007  *  This is still a preliminary implementation.
0008  *
0009  *  \author R. Bellan - CERN <riccardo.bellan@cern.ch>
0010  */
0011 
0012 // Framework
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0017 
0018 using namespace std;
0019 using namespace edm;
0020 
0021 MuonSeedMerger::MuonSeedMerger(const ParameterSet& parameterSet) {
0022   const string metname = "Muon|RecoMuon|MuonSeedMerger";
0023 
0024   theSeedCollectionLabels = parameterSet.getParameter<vector<InputTag> >("SeedCollections");
0025 
0026   LogTrace(metname) << "MuonSeedMerger will Merge the following seed collections:";
0027   for (vector<InputTag>::const_iterator label = theSeedCollectionLabels.begin(); label != theSeedCollectionLabels.end();
0028        ++label)
0029     LogTrace(metname) << *label;
0030 
0031   for (vector<InputTag>::const_iterator label = theSeedCollectionLabels.begin(); label != theSeedCollectionLabels.end();
0032        ++label) {
0033     seedTokens.push_back(consumes<edm::View<TrajectorySeed> >(*label));
0034   }
0035 
0036   produces<TrajectorySeedCollection>();
0037 }
0038 
0039 MuonSeedMerger::~MuonSeedMerger() {}
0040 
0041 void MuonSeedMerger::produce(Event& event, const EventSetup& eventSetup) {
0042   const string metname = "Muon|RecoMuon|MuonSeedMerger";
0043 
0044   auto output = std::make_unique<TrajectorySeedCollection>();
0045 
0046   Handle<View<TrajectorySeed> > seeds;
0047 
0048   for (unsigned int i = 0; i < theSeedCollectionLabels.size(); ++i) {
0049     event.getByToken(seedTokens.at(i), seeds);
0050 
0051     LogTrace(metname) << theSeedCollectionLabels.at(i) << " has " << seeds->size() << " seeds";
0052     for (View<TrajectorySeed>::const_iterator seed = seeds->begin(); seed != seeds->end(); ++seed)
0053       output->push_back(*seed);
0054   }
0055 
0056   event.put(std::move(output));
0057 }
0058 
0059 #include "FWCore/Framework/interface/MakerMacros.h"
0060 DEFINE_FWK_MODULE(MuonSeedMerger);