Back to home page

Project CMSSW displayed by LXR

 
 

    


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);