File indexing completed on 2024-04-06 12:27:05
0001 #include "RecoMuon/MuonIsolationProducers/plugins/MuIsoDepositCopyProducer.h"
0002
0003
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
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
0040 MuIsoDepositCopyProducer::~MuIsoDepositCopyProducer() {
0041 LogDebug("RecoMuon/MuIsoDepositCopyProducer") << " MuIsoDepositCopyProducer DTOR";
0042 }
0043
0044
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 }
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);