File indexing completed on 2024-04-06 12:27:06
0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/Framework/interface/Event.h"
0003 #include "FWCore/Framework/interface/EventSetup.h"
0004 #include "DataFormats/Common/interface/Handle.h"
0005 #include "FWCore/Framework/interface/ESHandle.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0009
0010 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0011 #include "DataFormats/TrackReco/interface/Track.h"
0012
0013 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
0014 #include "DataFormats/RecoCandidate/interface/IsoDepositFwd.h"
0015
0016 using namespace std;
0017
0018 class MuIsoDepositAnalyzer : public edm::one::EDAnalyzer<> {
0019 public:
0020 MuIsoDepositAnalyzer(const edm::ParameterSet& conf);
0021 void analyze(const edm::Event&, const edm::EventSetup&) override;
0022
0023 private:
0024 edm::InputTag theMuonLabel;
0025 std::vector<edm::InputTag> theIsoDepositInputTags;
0026 unsigned long theEventCount;
0027 };
0028
0029 MuIsoDepositAnalyzer::MuIsoDepositAnalyzer(const edm::ParameterSet& conf)
0030 : theMuonLabel(conf.getUntrackedParameter<edm::InputTag>("MuonCollectionLabel")),
0031 theIsoDepositInputTags(conf.getUntrackedParameter<std::vector<edm::InputTag> >("DepositInputTags")),
0032 theEventCount(0) {
0033 LogDebug("MuIsoDepositAnalyzer") << " CTOR" << endl;
0034 }
0035
0036 void MuIsoDepositAnalyzer::analyze(const edm::Event& ev, const edm::EventSetup& es) {
0037 LogDebug("MuIsoDepositAnalyzer::analyze") << " ============== analysis of event: " << ++theEventCount;
0038 edm::Handle<reco::TrackCollection> trackCollection;
0039 ev.getByLabel(theMuonLabel, trackCollection);
0040
0041 unsigned int nDeps = theIsoDepositInputTags.size();
0042 std::vector<edm::Handle<reco::IsoDepositMap> > isoDeposits(nDeps);
0043 for (unsigned int iDep = 0; iDep < nDeps; ++iDep) {
0044 ev.getByLabel(theIsoDepositInputTags[iDep], isoDeposits[iDep]);
0045 }
0046
0047 const reco::TrackCollection& muons = *(trackCollection.product());
0048 typedef reco::TrackCollection::const_iterator IT;
0049 unsigned int iMu = 0;
0050 for (IT it = muons.begin(), itEnd = muons.end(); it < itEnd; ++it) {
0051 LogTrace("") << "muon pt=" << (*it).pt();
0052 reco::TrackRef muRef(trackCollection, iMu);
0053 ++iMu;
0054 for (unsigned int iDep = 0; iDep < isoDeposits.size(); ++iDep) {
0055 const reco::IsoDeposit& dep = (*isoDeposits[iDep])[muRef];
0056 LogTrace("") << theIsoDepositInputTags[iDep] << dep.print();
0057 }
0058 for (int i = 0; i < 10; ++i) {
0059 float coneSize = 0.1 * i;
0060 LogTrace("") << " dR cone: " << coneSize << " isolationvariables: ";
0061 for (unsigned int iDep = 0; iDep < isoDeposits.size(); ++iDep) {
0062 const reco::IsoDeposit& dep = (*isoDeposits[iDep])[muRef];
0063 LogTrace("") << theIsoDepositInputTags[iDep] << " (eta, phi)= (" << dep.eta() << ", " << dep.phi()
0064 << ") V(eta, phi)= (" << dep.veto().vetoDir.eta() << ", " << dep.veto().vetoDir.phi()
0065 << ") muE= " << dep.candEnergy() << " " << dep.depositWithin(coneSize);
0066 }
0067 }
0068 }
0069 }
0070
0071 DEFINE_FWK_MODULE(MuIsoDepositAnalyzer);