00001 00002 #ifndef HLTriggerOffline_TopValidation_H 00003 #define HLTriggerOffline_TopValidation_H 00004 00005 00006 // system include files 00007 #include <memory> 00008 #include <string> 00009 00010 // user include files 00011 #include "FWCore/Framework/interface/Frameworkfwd.h" 00012 #include "FWCore/Framework/interface/EDAnalyzer.h" 00013 #include "FWCore/Framework/interface/Event.h" 00014 #include "FWCore/Framework/interface/MakerMacros.h" 00015 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00016 00017 #include "DataFormats/Common/interface/Ref.h" 00018 #include "DataFormats/Common/interface/DetSetVector.h" 00019 #include "DataFormats/Candidate/interface/Candidate.h" 00020 #include "DataFormats/JetReco/interface/Jet.h" 00021 #include "DataFormats/JetReco/interface/CaloJetCollection.h" 00022 #include "DataFormats/TrackReco/interface/Track.h" 00023 #include "DataFormats/TrackReco/interface/TrackExtra.h" 00024 //#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" 00025 00026 #include "DataFormats/MuonReco/interface/MuonFwd.h" 00027 #include "DataFormats/MuonReco/interface/Muon.h" 00028 /*#include "DataFormats/METReco/interface/MET.h" 00029 #include "DataFormats/METReco/interface/CaloMETCollection.h" 00030 #include "DataFormats/METReco/interface/GenMET.h" 00031 #include "DataFormats/METReco/interface/GenMETCollection.h" */ 00032 00033 //#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" 00034 00035 #include <DataFormats/HepMCCandidate/interface/GenParticle.h> 00036 #include "DataFormats/Candidate/interface/Candidate.h" 00037 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h" 00038 00039 00040 00041 //#include "DataFormats/VertexReco/interface/Vertex.h" 00042 //#include "RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexSorter.h" 00043 #include "DataFormats/Common/interface/Handle.h" 00044 #include "DataFormats/Common/interface/TriggerResults.h" 00045 #include "DataFormats/Common/interface/RefToBase.h" 00046 #include "HLTrigger/HLTfilters/interface/HLTHighLevel.h" 00047 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h" 00048 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h" 00049 00050 #include "DataFormats/EgammaCandidates/interface/Electron.h" 00051 #include "DataFormats/EgammaCandidates/interface/ElectronFwd.h" 00052 #include "DataFormats/EgammaReco/interface/SuperCluster.h" 00053 #include "DataFormats/EgammaReco/interface/BasicCluster.h" 00054 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h" 00055 00056 #include "FWCore/ServiceRegistry/interface/Service.h" 00057 //#include "PhysicsTools/UtilAlgos/interface/TFileService.h" 00058 00059 00060 //Include DQM core 00061 #include "DQMServices/Core/interface/DQMStore.h" 00062 #include "DQMServices/Core/interface/MonitorElement.h" 00063 00064 00065 #include "TH1F.h" 00066 #include "TVector3.h" 00067 #include "TLorentzVector.h" 00068 #include <string> 00069 #include <sstream> 00070 #include <cstdlib> 00071 #include <cmath> 00072 #include <TMath.h> 00073 #include "TFile.h" 00074 00075 00076 00077 class TH1F; 00078 00079 // 00080 // class decleration 00081 // 00082 00083 class TopValidation : public edm::EDAnalyzer { 00084 public: 00085 explicit TopValidation(const edm::ParameterSet&); 00086 ~TopValidation(); 00087 00088 00089 private: 00090 virtual void beginJob() ; 00091 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00092 virtual void endJob() ; 00093 00094 // edm::Service<TFileService> fs; 00095 00096 00097 // ----------member data --------------------------- 00098 00099 std::string fOutputFileName ; 00100 00101 std::string outFile_, outputFileName; 00102 00103 bool outputMEsInRootFile; 00104 00105 00106 00107 edm::ParameterSet parameters; 00108 00109 DQMStore* dbe; 00110 00112 00113 // semimu events 00114 00115 MonitorElement* eta_off_mu; 00116 MonitorElement* pt_off_mu; 00117 00118 00119 // dimu events 00120 00121 MonitorElement* eta_off_dimu1; 00122 MonitorElement* pt_off_dimu1; 00123 MonitorElement* eta_off_dimu2; 00124 MonitorElement* pt_off_dimu2; 00125 00126 // semiel events 00127 00128 MonitorElement* eta_off_el; 00129 MonitorElement* pt_off_el; 00130 00131 00132 //diel events 00133 00134 MonitorElement* eta_off_diel1; 00135 MonitorElement* pt_off_diel1; 00136 MonitorElement* eta_off_diel2; 00137 MonitorElement* pt_off_diel2; 00138 00139 // emu events 00140 00141 MonitorElement* eta_off_emu_muon; 00142 MonitorElement* pt_off_emu_muon; 00143 MonitorElement* eta_off_emu_electron; 00144 MonitorElement* pt_off_emu_electron; 00145 00146 00148 MonitorElement* ptmuon_4jet1muSel; 00149 MonitorElement* etamuon_4jet1muSel; 00150 MonitorElement* Njets_4jet1muSel; 00151 MonitorElement* ptmuon_4jet1muSel_hltmu9; 00152 MonitorElement* etamuon_4jet1muSel_hltmu9; 00153 MonitorElement* Njets_4jet1muSel_hltmu9; 00154 00156 00157 MonitorElement* h_ptmu1_trig[100]; 00158 MonitorElement* h_etamu1_trig[100]; 00159 MonitorElement* h_ptel1_trig[100]; 00160 MonitorElement* h_etael1_trig[100]; 00161 00162 MonitorElement* h_ptmu1_trig_dimu[100]; 00163 MonitorElement* h_etamu1_trig_dimu[100]; 00164 MonitorElement* h_ptel1_trig_diel[100]; 00165 MonitorElement* h_etael1_trig_diel[100]; 00166 00167 MonitorElement* h_ptmu1_trig_em[100]; 00168 MonitorElement* h_etamu1_trig_em[100]; 00169 MonitorElement* h_ptel1_trig_em[100]; 00170 MonitorElement* h_etael1_trig_em[100]; 00171 00172 /***********/ 00173 00174 MonitorElement* hlt_bitmu_hist_reco ; 00175 MonitorElement* h_mu_reco; 00176 MonitorElement* hlt_bitmu_hist_gen ; 00177 MonitorElement* h_mu_gen; 00178 00179 MonitorElement* h_jet_reco; 00180 MonitorElement* hlt_bitjet_hist_reco; 00181 00182 MonitorElement* h_jet_reco_el; 00183 MonitorElement* hlt_bitjet_hist_reco_el; 00184 00185 MonitorElement* h_jet_gen; 00186 MonitorElement* hlt_bitjet_hist_gen; 00187 00188 MonitorElement* h_jet_gen_el; 00189 MonitorElement* hlt_bitjet_hist_gen_el; 00190 00191 MonitorElement* hlt_bitel_hist_reco; 00192 MonitorElement* h_el_reco; 00193 MonitorElement* hlt_bitel_hist_gen; 00194 MonitorElement* h_el_gen; 00195 00196 MonitorElement* et_off_jet_mu; 00197 MonitorElement* eta_off_jet_mu; 00198 MonitorElement* njets_off_mu; 00199 MonitorElement* et_off_jet_el; 00200 MonitorElement* eta_off_jet_el; 00201 MonitorElement* njets_off_el; 00202 MonitorElement* h_etjet1_trig_mu[100]; 00203 MonitorElement* h_etajet1_trig_mu[100]; 00204 MonitorElement* h_etjet1_trig_el[100]; 00205 MonitorElement* h_etajet1_trig_el[100]; 00206 00207 MonitorElement* events_acc_off_electron; 00208 MonitorElement* events_acc_off_muon; 00209 00210 00211 00212 00213 edm::InputTag inputTag_; 00214 std::vector<std::string> hlt_bitnames; 00215 std::vector<std::string> hlt_bitnamesMu; 00216 std::vector<std::string> hlt_bitnamesEg; 00217 std::vector<std::string> hlt_bitnamesJet; 00218 00219 00220 //Just a tag for better file organization 00221 std::string triggerTag_; 00222 00223 00224 // Top folder in root file 00225 std::string FolderName_; 00226 std::stringstream topFolder; 00227 00228 00229 00230 }; 00231 00232 00233 #endif