CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/DQMOffline/EGamma/plugins/ElectronGeneralAnalyzer.cc

Go to the documentation of this file.
00001 
00002 #include "DQMOffline/EGamma/plugins/ElectronGeneralAnalyzer.h"
00003 
00004 #include "DQMServices/Core/interface/MonitorElement.h"
00005 
00006 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
00007 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
00008 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
00009 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00010 #include "DataFormats/VertexReco/interface/Vertex.h"
00011 #include "DataFormats/Common/interface/Handle.h"
00012 #include "DataFormats/Common/interface/EDProduct.h"
00013 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00014 #include "DataFormats/Common/interface/TriggerResults.h"
00015 
00016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00017 #include "FWCore/Framework/interface/EDAnalyzer.h"
00018 #include "FWCore/Framework/interface/Event.h"
00019 #include "FWCore/Framework/interface/MakerMacros.h"
00020 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00021 #include "FWCore/ServiceRegistry/interface/Service.h"
00022 
00023 //#include "CLHEP/Units/GlobalPhysicalConstants.h"
00024 //#include "TMath.h"
00025 
00026 #include <iostream>
00027 
00028 using namespace reco ;
00029 
00030 ElectronGeneralAnalyzer::ElectronGeneralAnalyzer( const edm::ParameterSet & conf )
00031  : ElectronDqmAnalyzerBase(conf)
00032  {
00033   // collection input tags
00034   electronCollection_ = conf.getParameter<edm::InputTag>("ElectronCollection");
00035   matchingObjectCollection_ = conf.getParameter<edm::InputTag>("MatchingObjectCollection");
00036   trackCollection_ = conf.getParameter<edm::InputTag>("TrackCollection");
00037   vertexCollection_ = conf.getParameter<edm::InputTag>("VertexCollection");
00038   gsftrackCollection_ = conf.getParameter<edm::InputTag>("GsfTrackCollection");
00039   beamSpotTag_ = conf.getParameter<edm::InputTag>("BeamSpot");
00040   triggerResults_ = conf.getParameter<edm::InputTag>("TriggerResults");
00041 
00042 //  // for trigger
00043 //  HLTPathsByName_= conf.getParameter<std::vector<std::string > >("HltPaths");
00044 //  HLTPathsByIndex_.resize(HLTPathsByName_.size());
00045  }
00046 
00047 ElectronGeneralAnalyzer::~ElectronGeneralAnalyzer()
00048  {}
00049 
00050 void ElectronGeneralAnalyzer::book()
00051  {
00052   h2_ele_beamSpotXvsY = bookH2("beamSpotXvsY","beam spot x vs y",100,-0.2,0.2,100,-0.2,0.2,"x (cm)","y (cm)") ;
00053   py_ele_nElectronsVsLs = bookP1("nElectronsVsLs","# gsf electrons vs LS",150,0.,1500.,0.,20.,"LS","<N_{ele}>") ;
00054   py_ele_nClustersVsLs = bookP1("nClustersVsLs","# clusters vs LS",150,0.,1500.,0.,100.,"LS","<N_{SC}>") ;
00055   py_ele_nGsfTracksVsLs = bookP1("nGsfTracksVsLs","# gsf tracks vs LS",150,0.,1500.,0.,20.,"LS","<N_{GSF tk}>") ;
00056   py_ele_nTracksVsLs = bookP1("nTracksVsLs","# tracks vs LS",150,0.,1500.,0.,100.,"LS","<N_{gen tk}>") ;
00057   py_ele_nVerticesVsLs = bookP1("nVerticesVsLs","# vertices vs LS",150,0.,1500.,0.,10.,"LS","<N_{vert}>") ;
00058   h1_ele_triggers = bookH1("triggers","hlt triggers",256,0.,256.,"HLT bit") ;
00059  }
00060 
00061 void ElectronGeneralAnalyzer::analyze( const edm::Event& iEvent, const edm::EventSetup & iSetup )
00062  {
00063   edm::Handle<GsfElectronCollection> gsfElectrons ;
00064   iEvent.getByLabel(electronCollection_,gsfElectrons) ;
00065   edm::Handle<reco::SuperClusterCollection> recoClusters ;
00066   iEvent.getByLabel(matchingObjectCollection_,recoClusters) ;
00067   edm::Handle<reco::TrackCollection> tracks;
00068   iEvent.getByLabel(trackCollection_,tracks);
00069   edm::Handle<reco::GsfTrackCollection> gsfTracks;
00070   iEvent.getByLabel(gsftrackCollection_,gsfTracks);
00071   edm::Handle<reco::VertexCollection> vertices;
00072   iEvent.getByLabel(vertexCollection_,vertices);
00073   edm::Handle<reco::BeamSpot> recoBeamSpotHandle ;
00074   iEvent.getByLabel(beamSpotTag_,recoBeamSpotHandle) ;
00075   const BeamSpot bs = *recoBeamSpotHandle ;
00076 
00077   int ievt = iEvent.id().event();
00078   int irun = iEvent.id().run();
00079   int ils = iEvent.luminosityBlock();
00080 
00081   edm::LogInfo("ElectronGeneralAnalyzer::analyze")
00082     <<"Treating "<<gsfElectrons.product()->size()<<" electrons"
00083     <<" from event "<<ievt<<" in run "<<irun<<" and lumiblock "<<ils ;
00084 
00085   h2_ele_beamSpotXvsY->Fill(bs.position().x(),bs.position().y());
00086   py_ele_nElectronsVsLs->Fill(float(ils),(*gsfElectrons).size());
00087   py_ele_nClustersVsLs->Fill(float(ils),(*recoClusters).size());
00088   py_ele_nGsfTracksVsLs->Fill(float(ils),(*gsfTracks).size());
00089   py_ele_nTracksVsLs->Fill(float(ils),(*tracks).size());
00090   py_ele_nVerticesVsLs->Fill(float(ils),(*vertices).size());
00091 
00092   // trigger
00093   edm::Handle<edm::TriggerResults> triggerResults ;
00094   iEvent.getByLabel(triggerResults_,triggerResults) ;
00095   if (triggerResults.isValid())
00096    {
00097     unsigned int i, n = triggerResults->size() ;
00098     for ( i=0 ; i!=n ; ++i )
00099      {
00100       if (triggerResults->accept(i))
00101        { h1_ele_triggers->Fill(float(i)) ; }
00102      }
00103    }
00104  }
00105