00001 // -*- C++ -*- 00002 // 00003 // Package: Validation/MuonIdentification 00004 // Class: MuonIdVal 00005 // 00006 /* 00007 00008 Description: Makes and fills lots of histograms using the various reco::Muon 00009 methods. 00010 00011 00012 */ 00013 // 00014 // Original Author: Jacob Ribnik 00015 // Created: Wed Apr 18 13:48:08 CDT 2007 00016 // $Id: MuonIdVal.h,v 1.5 2008/10/30 19:17:43 jribnik Exp $ 00017 // 00018 // 00019 00020 #ifndef Validation_MuonIdentification_MuonIdVal_h 00021 #define Validation_MuonIdentification_MuonIdVal_h 00022 00023 // system include files 00024 #include <string> 00025 #include <vector> 00026 00027 // user include files 00028 #include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h" 00029 #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h" 00030 #include "DataFormats/MuonDetId/interface/CSCDetId.h" 00031 #include "DataFormats/MuonDetId/interface/DTChamberId.h" 00032 #include "DataFormats/MuonDetId/interface/MuonSubdetId.h" 00033 #include "DataFormats/MuonReco/interface/Muon.h" 00034 #include "DataFormats/MuonReco/interface/MuonFwd.h" 00035 #include "DataFormats/MuonReco/interface/MuonSelectors.h" 00036 00037 #include "DQMServices/Core/interface/DQMStore.h" 00038 #include "DQMServices/Core/interface/MonitorElement.h" 00039 00040 #include "FWCore/Framework/interface/EDAnalyzer.h" 00041 #include "FWCore/Framework/interface/ESHandle.h" 00042 #include "FWCore/Framework/interface/Event.h" 00043 #include "FWCore/Framework/interface/Frameworkfwd.h" 00044 #include "FWCore/Framework/interface/MakerMacros.h" 00045 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00046 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00047 #include "FWCore/ServiceRegistry/interface/Service.h" 00048 00049 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h" 00050 #include "Geometry/CSCGeometry/interface/CSCGeometry.h" 00051 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h" 00052 00053 class MuonIdVal : public edm::EDAnalyzer { 00054 public: 00055 explicit MuonIdVal(const edm::ParameterSet&); 00056 ~MuonIdVal(); 00057 00058 private: 00059 virtual void beginJob(const edm::EventSetup&); 00060 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00061 virtual void endJob() ; 00062 00063 DQMStore* dbe_; 00064 00065 // ----------member data --------------------------- 00066 edm::InputTag inputMuonCollection_; 00067 edm::InputTag inputDTRecSegment4DCollection_; 00068 edm::InputTag inputCSCSegmentCollection_; 00069 bool useTrackerMuons_; 00070 bool useGlobalMuons_; 00071 bool makeDQMPlots_; 00072 bool makeEnergyPlots_; 00073 bool makeIsoPlots_; 00074 bool make2DPlots_; 00075 bool makeAllChamberPlots_; 00076 std::string baseFolder_; 00077 00078 edm::Handle<reco::MuonCollection> muonCollectionH_; 00079 edm::Handle<DTRecSegment4DCollection> dtSegmentCollectionH_; 00080 edm::Handle<CSCSegmentCollection> cscSegmentCollectionH_; 00081 edm::ESHandle<GlobalTrackingGeometry> geometry_; 00082 00083 // trackerMuon == 0; globalMuon == 1 00084 MonitorElement* hNumChambers[2]; 00085 MonitorElement* hNumMatches[2]; 00086 MonitorElement* hCaloCompat[2]; 00087 MonitorElement* hSegmentCompat[2]; 00088 MonitorElement* hCaloSegmentCompat[2]; 00089 MonitorElement* hGlobalMuonPromptTightBool[2]; 00090 MonitorElement* hTMLastStationLooseBool[2]; 00091 MonitorElement* hTMLastStationTightBool[2]; 00092 MonitorElement* hTM2DCompatibilityLooseBool[2]; 00093 MonitorElement* hTM2DCompatibilityTightBool[2]; 00094 MonitorElement* hTMOneStationLooseBool[2]; 00095 MonitorElement* hTMOneStationTightBool[2]; 00096 MonitorElement* hTMLastStationOptimizedLowPtLooseBool[2]; 00097 MonitorElement* hTMLastStationOptimizedLowPtTightBool[2]; 00098 00099 MonitorElement* hEnergyEMBarrel[2]; 00100 MonitorElement* hEnergyHABarrel[2]; 00101 MonitorElement* hEnergyHO[2]; 00102 MonitorElement* hEnergyEMEndcap[2]; 00103 MonitorElement* hEnergyHAEndcap[2]; 00104 00105 MonitorElement* hIso03sumPt[2]; 00106 MonitorElement* hIso03emEt[2]; 00107 MonitorElement* hIso03hadEt[2]; 00108 MonitorElement* hIso03hoEt[2]; 00109 MonitorElement* hIso03nTracks[2]; 00110 MonitorElement* hIso03nJets[2]; 00111 MonitorElement* hIso05sumPt[2]; 00112 MonitorElement* hIso05emEt[2]; 00113 MonitorElement* hIso05hadEt[2]; 00114 MonitorElement* hIso05hoEt[2]; 00115 MonitorElement* hIso05nTracks[2]; 00116 MonitorElement* hIso05nJets[2]; 00117 00118 // by station, trackerMuons only 00119 MonitorElement* hDTNumSegments[4]; 00120 MonitorElement* hDTDx[4]; 00121 MonitorElement* hDTPullx[4]; 00122 MonitorElement* hDTPullxPropErr[4]; 00123 MonitorElement* hDTDdXdZ[4]; 00124 MonitorElement* hDTPulldXdZ[4]; 00125 MonitorElement* hDTPulldXdZPropErr[4]; 00126 MonitorElement* hDTDy[3]; 00127 MonitorElement* hDTPully[3]; 00128 MonitorElement* hDTPullyPropErr[3]; 00129 MonitorElement* hDTDdYdZ[3]; 00130 MonitorElement* hDTPulldYdZ[3]; 00131 MonitorElement* hDTPulldYdZPropErr[3]; 00132 MonitorElement* hDTDistWithSegment[4]; 00133 MonitorElement* hDTDistWithNoSegment[4]; 00134 MonitorElement* hDTPullDistWithSegment[4]; 00135 MonitorElement* hDTPullDistWithNoSegment[4]; 00136 MonitorElement* hCSCNumSegments[4]; 00137 MonitorElement* hCSCDx[4]; 00138 MonitorElement* hCSCPullx[4]; 00139 MonitorElement* hCSCPullxPropErr[4]; 00140 MonitorElement* hCSCDdXdZ[4]; 00141 MonitorElement* hCSCPulldXdZ[4]; 00142 MonitorElement* hCSCPulldXdZPropErr[4]; 00143 MonitorElement* hCSCDy[4]; 00144 MonitorElement* hCSCPully[4]; 00145 MonitorElement* hCSCPullyPropErr[4]; 00146 MonitorElement* hCSCDdYdZ[4]; 00147 MonitorElement* hCSCPulldYdZ[4]; 00148 MonitorElement* hCSCPulldYdZPropErr[4]; 00149 MonitorElement* hCSCDistWithSegment[4]; 00150 MonitorElement* hCSCDistWithNoSegment[4]; 00151 MonitorElement* hCSCPullDistWithSegment[4]; 00152 MonitorElement* hCSCPullDistWithNoSegment[4]; 00153 00154 MonitorElement* hSegmentIsAssociatedBool; 00155 MonitorElement* hSegmentIsAssociatedRZ; 00156 MonitorElement* hSegmentIsAssociatedXY; 00157 MonitorElement* hSegmentIsNotAssociatedRZ; 00158 MonitorElement* hSegmentIsNotAssociatedXY; 00159 MonitorElement* hSegmentIsBestDrAssociatedRZ; 00160 MonitorElement* hSegmentIsBestDrAssociatedXY; 00161 MonitorElement* hSegmentIsBestDrNotAssociatedRZ; 00162 MonitorElement* hSegmentIsBestDrNotAssociatedXY; 00163 00164 // by chamber, trackerMuons only 00165 // DT: [station][wheel][sector] 00166 // CSC: [endcap][station][ring][chamber] 00167 MonitorElement* hDTChamberDx[4][5][14]; 00168 MonitorElement* hDTChamberDy[3][5][14]; 00169 MonitorElement* hDTChamberEdgeXWithSegment[4][5][14]; 00170 MonitorElement* hDTChamberEdgeXWithNoSegment[4][5][14]; 00171 MonitorElement* hDTChamberEdgeYWithSegment[4][5][14]; 00172 MonitorElement* hDTChamberEdgeYWithNoSegment[4][5][14]; 00173 MonitorElement* hCSCChamberDx[2][4][4][36]; 00174 MonitorElement* hCSCChamberDy[2][4][4][36]; 00175 MonitorElement* hCSCChamberEdgeXWithSegment[2][4][4][36]; 00176 MonitorElement* hCSCChamberEdgeXWithNoSegment[2][4][4][36]; 00177 MonitorElement* hCSCChamberEdgeYWithSegment[2][4][4][36]; 00178 MonitorElement* hCSCChamberEdgeYWithNoSegment[2][4][4][36]; 00179 }; 00180 00181 #endif