CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/DQMOffline/Muon/interface/MuonIdDQM.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    DQMOffline/Muon
00004 // Class:      MuonIdDQM
00005 // 
00006 /*
00007 
00008  Description:  Makes and fills lots of histograms using the various reco::Muon
00009                methods. All code is adapted from Validation/MuonIdentification
00010 
00011 
00012 */
00013 //
00014 // Original Author:  Jacob Ribnik
00015 //         Created:  Wed Apr 18 13:48:08 CDT 2007
00016 // $Id: MuonIdDQM.h,v 1.3 2010/01/21 21:44:25 jribnik Exp $
00017 //
00018 //
00019 
00020 #ifndef DQMOffline_Muon_MuonIdDQM_h
00021 #define DQMOffline_Muon_MuonIdDQM_h
00022 
00023 // system include files
00024 #include <string>
00025 
00026 // user include files
00027 #include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h"
00028 #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"
00029 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
00030 #include "DataFormats/MuonDetId/interface/DTChamberId.h"
00031 #include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
00032 #include "DataFormats/MuonReco/interface/Muon.h"
00033 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00034 
00035 #include "DQMServices/Core/interface/DQMStore.h"
00036 #include "DQMServices/Core/interface/MonitorElement.h"
00037 
00038 #include "FWCore/Framework/interface/EDAnalyzer.h"
00039 #include "FWCore/Framework/interface/ESHandle.h"
00040 #include "FWCore/Framework/interface/Event.h"
00041 #include "FWCore/Framework/interface/Frameworkfwd.h"
00042 #include "FWCore/Framework/interface/MakerMacros.h"
00043 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00044 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00045 #include "FWCore/ServiceRegistry/interface/Service.h"
00046 
00047 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
00048 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
00049 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
00050 
00051 class MuonIdDQM : public edm::EDAnalyzer {
00052    public:
00053       explicit MuonIdDQM(const edm::ParameterSet&);
00054       ~MuonIdDQM();
00055 
00056    private:
00057       virtual void beginJob();
00058       virtual void analyze(const edm::Event&, const edm::EventSetup&);
00059       virtual void endJob();
00060       virtual void Fill(MonitorElement*, float);
00061 
00062       DQMStore* dbe_;
00063 
00064       // ----------member data ---------------------------
00065       edm::InputTag inputMuonCollection_;
00066       edm::InputTag inputDTRecSegment4DCollection_;
00067       edm::InputTag inputCSCSegmentCollection_;
00068       bool useTrackerMuons_;
00069       bool useGlobalMuons_;
00070       bool useTrackerMuonsNotGlobalMuons_;
00071       bool useGlobalMuonsNotTrackerMuons_;
00072       std::string baseFolder_;
00073 
00074       edm::Handle<reco::MuonCollection> muonCollectionH_;
00075       edm::Handle<DTRecSegment4DCollection> dtSegmentCollectionH_;
00076       edm::Handle<CSCSegmentCollection> cscSegmentCollectionH_;
00077       edm::ESHandle<GlobalTrackingGeometry> geometry_;
00078 
00079       // trackerMuon == 0; globalMuon == 1
00080       MonitorElement* hNumChambers[4];
00081       MonitorElement* hNumMatches[4];
00082 
00083       // by station
00084       MonitorElement* hDTNumSegments[4][4];
00085       MonitorElement* hDTDx[4][4];
00086       MonitorElement* hDTPullx[4][4];
00087       MonitorElement* hDTDdXdZ[4][4];
00088       MonitorElement* hDTPulldXdZ[4][4];
00089       MonitorElement* hDTDy[4][3];
00090       MonitorElement* hDTPully[4][3];
00091       MonitorElement* hDTDdYdZ[4][3];
00092       MonitorElement* hDTPulldYdZ[4][3];
00093       MonitorElement* hCSCNumSegments[4][4];
00094       MonitorElement* hCSCDx[4][4];
00095       MonitorElement* hCSCPullx[4][4];
00096       MonitorElement* hCSCDdXdZ[4][4];
00097       MonitorElement* hCSCPulldXdZ[4][4];
00098       MonitorElement* hCSCDy[4][4];
00099       MonitorElement* hCSCPully[4][4];
00100       MonitorElement* hCSCDdYdZ[4][4];
00101       MonitorElement* hCSCPulldYdZ[4][4];
00102 
00103       // segment matching "efficiency"
00104       MonitorElement* hSegmentIsAssociatedBool;
00105 };
00106 
00107 #endif