Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:05

0001 #include "RecoMuon/MuonIsolationProducers/plugins/MuIsoDepositCopyProducer.h"
0002 
0003 // Framework
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Framework/interface/EventSetup.h"
0006 #include "DataFormats/Common/interface/Handle.h"
0007 
0008 #include "FWCore/Utilities/interface/Exception.h"
0009 
0010 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0011 #include <string>
0012 
0013 using namespace edm;
0014 using namespace std;
0015 using namespace reco;
0016 
0017 //! constructor with config
0018 MuIsoDepositCopyProducer::MuIsoDepositCopyProducer(const ParameterSet& par)
0019     : theConfig(par),
0020       theInputTags(par.getParameter<std::vector<edm::InputTag> >("inputTags")),
0021       theDepositNames(par.getParameter<std::vector<std::string> >("depositNames"))
0022 
0023 {
0024   LogDebug("RecoMuon|MuonIsolation") << " MuIsoDepositCopyProducer CTOR";
0025   if (theInputTags.size() != theDepositNames.size()) {
0026     throw cms::Exception("MuIsoDepositCopyProducer constructor") << "the sizes of input/output vectors don't match";
0027   }
0028 
0029   for (unsigned int i = 0; i < theDepositNames.size(); ++i) {
0030     std::string alias = theConfig.getParameter<std::string>("@module_label");
0031     if (!theDepositNames[i].empty())
0032       alias += "_" + theDepositNames[i];
0033     produces<reco::IsoDepositMap>(theDepositNames[i]).setBranchAlias(alias);
0034   }
0035   for (unsigned int iDep = 0; iDep < theInputTags.size(); ++iDep)
0036     theInputTokens.push_back(consumes<reco::IsoDepositMap>(theInputTags.at(iDep)));
0037 }
0038 
0039 //! destructor
0040 MuIsoDepositCopyProducer::~MuIsoDepositCopyProducer() {
0041   LogDebug("RecoMuon/MuIsoDepositCopyProducer") << " MuIsoDepositCopyProducer DTOR";
0042 }
0043 
0044 //! build deposits
0045 void MuIsoDepositCopyProducer::produce(Event& event, const EventSetup& eventSetup) {
0046   std::string metname = "RecoMuon|MuonIsolationProducers|MuIsoDepositCopyProducer";
0047 
0048   LogDebug(metname) << " Muon Deposit producing..."
0049                     << " BEGINING OF EVENT "
0050                     << "================================";
0051 
0052   LogTrace(metname) << " Taking the inputs: ";
0053 
0054   for (unsigned int iDep = 0; iDep < theInputTokens.size(); ++iDep) {
0055     Handle<reco::IsoDepositMap> inDep;
0056     event.getByToken(theInputTokens[iDep], inDep);
0057 
0058     event.put(std::make_unique<reco::IsoDepositMap>(*inDep), theDepositNames[iDep]);
0059   }  //! end iDep
0060 
0061   LogTrace(metname) << " END OF EVENT "
0062                     << "================================";
0063 }
0064 
0065 #include "FWCore/PluginManager/interface/ModuleDef.h"
0066 #include "FWCore/Framework/interface/MakerMacros.h"
0067 DEFINE_FWK_MODULE(MuIsoDepositCopyProducer);