00001 #ifndef PhotonPostprocessing_H 00002 #define PhotonPostprocessing_H 00003 00004 #include "FWCore/ServiceRegistry/interface/Service.h" 00005 #include "CommonTools/UtilAlgos/interface/TFileService.h" 00006 // 00007 #include "FWCore/Framework/interface/MakerMacros.h" 00008 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00009 #include "FWCore/Utilities/interface/Exception.h" 00010 00011 #include "TFile.h" 00012 #include "TH1.h" 00013 #include "TH2.h" 00014 #include "TTree.h" 00015 #include "TVector3.h" 00016 #include "TProfile.h" 00017 // 00018 00019 00020 #include "FWCore/Framework/interface/EDAnalyzer.h" 00021 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00022 #include "FWCore/Framework/interface/Event.h" 00023 #include "FWCore/Framework/interface/EventSetup.h" 00024 00025 //DQM services 00026 #include "DQMServices/Core/interface/DQMStore.h" 00027 #include "FWCore/ServiceRegistry/interface/Service.h" 00028 #include "DQMServices/Core/interface/MonitorElement.h" 00029 00030 // 00031 00032 #include <vector> 00033 00045 // forward declarations 00046 class TFile; 00047 class TH1F; 00048 class TH2F; 00049 class TProfile; 00050 class TTree; 00051 00052 00053 class PhotonPostprocessing : public edm::EDAnalyzer 00054 { 00055 00056 public: 00057 00058 // 00059 explicit PhotonPostprocessing( const edm::ParameterSet& pset ) ; 00060 virtual ~PhotonPostprocessing(); 00061 00062 00063 virtual void analyze(const edm::Event&, const edm::EventSetup& ) ; 00064 virtual void beginJob() ; 00065 virtual void endJob() ; 00066 virtual void endLuminosityBlock( const edm::LuminosityBlock& , const edm::EventSetup& ) ; 00067 virtual void endRun(const edm::Run& , const edm::EventSetup& ) ; 00068 00069 00070 private: 00071 // 00072 00073 00074 00075 void dividePlots(MonitorElement* dividend, MonitorElement* numerator, MonitorElement* denominator,std::string type); 00076 void dividePlots(MonitorElement* dividend, MonitorElement* numerator, double denominator); 00077 virtual void runPostprocessing(); 00078 00079 DQMStore *dbe_; 00080 int verbosity_; 00081 00082 edm::ParameterSet parameters_; 00083 00084 00085 bool standAlone_; 00086 bool batch_; 00087 std::string outputFileName_; 00088 std::string inputFileName_; 00089 00090 std::stringstream currentFolder_; 00091 00092 00093 double etMin; 00094 double etMax; 00095 int etBin; 00096 double etaMin; 00097 double etaMax; 00098 int etaBin; 00099 int etaBin2; 00100 double phiMin; 00101 double phiMax; 00102 int phiBin; 00103 double rMin; 00104 double rMax; 00105 int rBin; 00106 double zMin; 00107 double zMax; 00108 int zBin; 00109 00110 00111 00112 MonitorElement* phoRecoEffEta_; 00113 MonitorElement* phoRecoEffPhi_; 00114 MonitorElement* phoRecoEffEt_; 00115 00116 MonitorElement* phoDeadChEta_; 00117 MonitorElement* phoDeadChPhi_; 00118 MonitorElement* phoDeadChEt_; 00119 00120 00121 MonitorElement* convEffEtaTwoTracks_; 00122 MonitorElement* convEffPhiTwoTracks_; 00123 MonitorElement* convEffRTwoTracks_; 00124 MonitorElement* convEffZTwoTracks_; 00125 MonitorElement* convEffEtTwoTracks_; 00126 00127 MonitorElement* convEffEtaTwoTracksAndVtxProbGT0_; 00128 MonitorElement* convEffEtaTwoTracksAndVtxProbGT0005_; 00129 MonitorElement* convEffRTwoTracksAndVtxProbGT0_; 00130 MonitorElement* convEffRTwoTracksAndVtxProbGT0005_; 00131 00132 MonitorElement* convEffEtaOneTrack_; 00133 MonitorElement* convEffROneTrack_; 00134 MonitorElement* convEffEtOneTrack_; 00135 00136 MonitorElement* convFakeRateEtaTwoTracks_; 00137 MonitorElement* convFakeRatePhiTwoTracks_; 00138 MonitorElement* convFakeRateRTwoTracks_; 00139 MonitorElement* convFakeRateZTwoTracks_; 00140 MonitorElement* convFakeRateEtTwoTracks_; 00141 00142 MonitorElement* bkgRecoEffEta_; 00143 MonitorElement* bkgRecoEffPhi_; 00144 MonitorElement* bkgRecoEffEt_; 00145 00146 MonitorElement* bkgDeadChEta_; 00147 MonitorElement* bkgDeadChPhi_; 00148 MonitorElement* bkgDeadChEt_; 00149 00150 00151 00152 00153 }; 00154 00155 00156 00157 00158 00159 #endif