00001 #ifndef TrackAnalyzer_H 00002 #define TrackAnalyzer_H 00003 // -*- C++ -*- 00004 // 00005 // 00009 // Original Author: Suchandra Dutta, Giorgia Mila 00010 // Created: Thu 28 22:45:30 CEST 2008 00011 // $Id: TrackAnalyzer.h,v 1.1 2008/12/11 11:54:10 giorgia Exp $ 00012 00013 #include <memory> 00014 #include <fstream> 00015 #include "FWCore/Framework/interface/Frameworkfwd.h" 00016 #include "FWCore/Framework/interface/EDAnalyzer.h" 00017 #include "FWCore/Framework/interface/Event.h" 00018 #include "FWCore/Framework/interface/MakerMacros.h" 00019 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00020 #include "FWCore/ServiceRegistry/interface/Service.h" 00021 #include "DQMServices/Core/interface/MonitorElement.h" 00022 00023 class DQMStore; 00024 00025 class TrackAnalyzer { 00026 public: 00027 TrackAnalyzer(const edm::ParameterSet&); 00028 virtual ~TrackAnalyzer(); 00029 virtual void beginJob(edm::EventSetup const& iSetup,DQMStore * dqmStore_); 00030 00031 virtual void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup, const reco::Track& track); 00032 00033 private: 00034 00035 void fillHistosForState(const edm::EventSetup& iSetup, const reco::Track & track, std::string sname); 00036 void bookHistosForState(std::string sname, DQMStore * dqmStore_); 00037 void doTrackerSpecificInitialization(DQMStore * dqmStore_); 00038 void doTrackerSpecificFillHists(const reco::Track & track); 00039 00040 // ----------member data --------------------------- 00041 00042 // unsigned int minTracks_; 00043 00044 std::string histname; //for naming the histograms according to algorithm used 00045 00046 edm::ParameterSet conf_; 00047 00048 00049 MonitorElement * NumberOfRecHitsPerTrack; 00050 MonitorElement * NumberOfRecHitsFoundPerTrack; 00051 MonitorElement * NumberOfRecHitsLostPerTrack; 00052 MonitorElement * NumberOfTOBRecHitsPerTrack; 00053 MonitorElement * NumberOfTIBRecHitsPerTrack; 00054 MonitorElement * NumberOfTIDRecHitsPerTrack; 00055 MonitorElement * NumberOfTECRecHitsPerTrack; 00056 MonitorElement * NumberOfPixBarrelRecHitsPerTrack; 00057 MonitorElement * NumberOfPixEndcapRecHitsPerTrack; 00058 MonitorElement * NumberOfLayersPerTrack; 00059 MonitorElement * NumberOfTOBLayersPerTrack; 00060 MonitorElement * NumberOfTIBLayersPerTrack; 00061 MonitorElement * NumberOfTIDLayersPerTrack; 00062 MonitorElement * NumberOfTECLayersPerTrack; 00063 MonitorElement * NumberOfPixBarrelLayersPerTrack; 00064 MonitorElement * NumberOfPixEndcapLayersPerTrack; 00065 MonitorElement * Chi2; 00066 MonitorElement * Chi2overDoF; 00067 MonitorElement * DistanceOfClosestApproach; 00068 MonitorElement * DistanceOfClosestApproachVsTheta; 00069 MonitorElement * DistanceOfClosestApproachVsPhi; 00070 MonitorElement * DistanceOfClosestApproachVsEta; 00071 MonitorElement * xPointOfClosestApproach; 00072 MonitorElement * yPointOfClosestApproach; 00073 MonitorElement * zPointOfClosestApproach; 00074 00075 00076 struct TkParameterMEs { 00077 MonitorElement * TrackPx; 00078 MonitorElement * TrackPy; 00079 MonitorElement * TrackPz; 00080 MonitorElement * TrackPt; 00081 00082 MonitorElement * TrackPxErr; 00083 MonitorElement * TrackPyErr; 00084 MonitorElement * TrackPzErr; 00085 MonitorElement * TrackPtErr; 00086 MonitorElement * TrackPErr; 00087 00088 MonitorElement * TrackPhi; 00089 MonitorElement * TrackEta; 00090 MonitorElement * TrackTheta; 00091 00092 MonitorElement * TrackPhiErr; 00093 MonitorElement * TrackEtaErr; 00094 MonitorElement * TrackThetaErr; 00095 00096 MonitorElement * NumberOfRecHitsPerTrackVsPhi; 00097 MonitorElement * NumberOfRecHitsPerTrackVsTheta; 00098 MonitorElement * NumberOfRecHitsPerTrackVsEta; 00099 00100 MonitorElement * Chi2overDoFVsTheta; 00101 MonitorElement * Chi2overDoFVsPhi; 00102 MonitorElement * Chi2overDoFVsEta; 00103 00104 }; 00105 00106 std::map<std::string, TkParameterMEs> TkParameterMEMap; 00107 00108 bool createHistosForState_; 00109 bool doTrackerSpecific_; 00110 00111 }; 00112 #endif