00001 #ifndef TrackSplittingMonitor_H 00002 #define TrackSplittingMonitor_H 00003 // -*- C++ -*- 00004 // 00005 // Package: TrackSplittingMonitor 00006 // Class: TrackSplittingMonitor 00007 // 00011 // Original Author: Nhan Tran 00012 // Created: Thu 28 22:45:30 CEST 2008 00013 // $Id: TrackSplittingMonitor.h,v 1.2 2009/11/05 17:07:51 boudoul Exp $ 00014 00015 #include <memory> 00016 #include <fstream> 00017 #include "FWCore/Framework/interface/Frameworkfwd.h" 00018 #include "FWCore/Framework/interface/EDAnalyzer.h" 00019 #include "FWCore/Framework/interface/Event.h" 00020 #include "FWCore/Framework/interface/MakerMacros.h" 00021 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00022 #include "FWCore/ServiceRegistry/interface/Service.h" 00023 #include "DQMServices/Core/interface/MonitorElement.h" 00024 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h" 00025 00026 #include "Geometry/DTGeometry/interface/DTGeometry.h" 00027 #include "Geometry/CSCGeometry/interface/CSCGeometry.h" 00028 #include "Geometry/RPCGeometry/interface/RPCGeometry.h" 00029 #include "Geometry/Records/interface/MuonGeometryRecord.h" 00030 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00031 00032 class DQMStore; 00033 class TrackAnalyzer; 00034 class TProfile; 00035 00036 class TrackSplittingMonitor : public edm::EDAnalyzer { 00037 public: 00038 explicit TrackSplittingMonitor(const edm::ParameterSet&); 00039 ~TrackSplittingMonitor(); 00040 virtual void beginJob(void); 00041 virtual void endJob(void); 00042 00043 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00044 00045 private: 00046 void doProfileX(TH2 * th2, MonitorElement* me); 00047 void doProfileX(MonitorElement * th2m, MonitorElement* me); 00048 00049 00050 // ----------member data --------------------------- 00051 00052 // unsigned int minTracks_; 00053 00054 std::string histname; //for naming the histograms according to algorithm used 00055 00056 DQMStore * dqmStore_; 00057 edm::ParameterSet conf_; 00058 00059 edm::ESHandle<TrackerGeometry> theGeometry; 00060 edm::ESHandle<MagneticField> theMagField; 00061 edm::ESHandle<DTGeometry> dtGeometry; 00062 edm::ESHandle<CSCGeometry> cscGeometry; 00063 edm::ESHandle<RPCGeometry> rpcGeometry; 00064 00065 edm::InputTag splitTracks_; 00066 edm::InputTag splitMuons_; 00067 00068 00069 bool plotMuons_; 00070 int pixelHitsPerLeg_; 00071 int totalHitsPerLeg_; 00072 double d0Cut_; 00073 double dzCut_; 00074 double ptCut_; 00075 double norchiCut_; 00076 00077 00078 // histograms 00079 MonitorElement* ddxyAbsoluteResiduals_tracker_; 00080 MonitorElement* ddzAbsoluteResiduals_tracker_; 00081 MonitorElement* dphiAbsoluteResiduals_tracker_; 00082 MonitorElement* dthetaAbsoluteResiduals_tracker_; 00083 MonitorElement* dptAbsoluteResiduals_tracker_; 00084 MonitorElement* dcurvAbsoluteResiduals_tracker_; 00085 00086 MonitorElement* ddxyNormalizedResiduals_tracker_; 00087 MonitorElement* ddzNormalizedResiduals_tracker_; 00088 MonitorElement* dphiNormalizedResiduals_tracker_; 00089 MonitorElement* dthetaNormalizedResiduals_tracker_; 00090 MonitorElement* dptNormalizedResiduals_tracker_; 00091 MonitorElement* dcurvNormalizedResiduals_tracker_; 00092 00093 MonitorElement* ddxyAbsoluteResiduals_global_; 00094 MonitorElement* ddzAbsoluteResiduals_global_; 00095 MonitorElement* dphiAbsoluteResiduals_global_; 00096 MonitorElement* dthetaAbsoluteResiduals_global_; 00097 MonitorElement* dptAbsoluteResiduals_global_; 00098 MonitorElement* dcurvAbsoluteResiduals_global_; 00099 00100 MonitorElement* ddxyNormalizedResiduals_global_; 00101 MonitorElement* ddzNormalizedResiduals_global_; 00102 MonitorElement* dphiNormalizedResiduals_global_; 00103 MonitorElement* dthetaNormalizedResiduals_global_; 00104 MonitorElement* dptNormalizedResiduals_global_; 00105 MonitorElement* dcurvNormalizedResiduals_global_; 00106 00107 00108 }; 00109 #endif