00001 #ifndef VVVVALIDATION_H 00002 #define VVVVALIDATION_H 00003 00004 00005 // framework & common header files 00006 #include "TLorentzVector.h" 00007 #include "FWCore/Framework/interface/EDAnalyzer.h" 00008 #include "FWCore/Framework/interface/Event.h" 00009 #include "FWCore/Framework/interface/EventSetup.h" 00010 #include "FWCore/Framework/interface/Run.h" 00011 #include "DataFormats/Math/interface/deltaR.h" 00012 #include "DataFormats/Common/interface/Handle.h" 00013 #include "FWCore/Framework/interface/ESHandle.h" 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 #include "FWCore/Utilities/interface/InputTag.h" 00016 00017 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00018 00019 //DQM services 00020 #include "DQMServices/Core/interface/DQMStore.h" 00021 #include "FWCore/ServiceRegistry/interface/Service.h" 00022 #include "DQMServices/Core/interface/MonitorElement.h" 00023 00024 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" 00025 #include "HepMC/GenParticle.h" 00026 #include "DataFormats/HepMCCandidate/interface/GenParticle.h" 00027 #include "DataFormats/JetReco/interface/GenJetCollection.h" 00028 00029 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h" 00030 00031 #include "Validation/EventGenerator/interface/WeightManager.h" 00032 class VVVValidation : public edm::EDAnalyzer 00033 { 00034 public: 00035 explicit VVVValidation(const edm::ParameterSet&); 00036 virtual ~VVVValidation(); 00037 virtual void beginJob(); 00038 virtual void endJob(); 00039 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00040 virtual void beginRun(const edm::Run&, const edm::EventSetup&); 00041 virtual void endRun(const edm::Run&, const edm::EventSetup&); 00042 00043 bool matchParticles(const HepMC::GenParticle*&, const reco::GenParticle*&); 00044 int getParentBarcode(HepMC::GenParticle* it); 00045 00046 private: 00047 00048 WeightManager _wmanager; 00049 00050 edm::InputTag hepmcCollection_; 00051 edm::InputTag genparticleCollection_; 00052 edm::InputTag genjetCollection_; 00053 double matchPr_; 00054 double _lepStatus; 00055 double _motherStatus; 00056 00057 unsigned int verbosity_; 00058 00060 edm::ESHandle<HepPDT::ParticleDataTable> fPDGTable ; 00061 00063 DQMStore *dbe; 00064 00065 MonitorElement *nEvt; 00066 00067 // Basic reco::GenParticle test 00068 00069 // Basci GenJets analysis 00070 MonitorElement * mll; 00071 MonitorElement * ptll; 00072 MonitorElement * mlll; 00073 MonitorElement * ptlll; 00074 MonitorElement * mlllnununu; 00075 MonitorElement * mtlllnununu; 00076 MonitorElement * ptlllnununu; 00077 MonitorElement * leading_l_pt ; 00078 MonitorElement * subleading_l_pt ; 00079 MonitorElement * subsubleading_l_pt; 00080 MonitorElement * leading_l_eta ; 00081 MonitorElement * subleading_l_eta ; 00082 MonitorElement * subsubleading_l_eta; 00083 MonitorElement *genJetMult; 00084 MonitorElement *genJetEnergy; 00085 MonitorElement *genJetPt; 00086 MonitorElement *genJetEta; 00087 MonitorElement *genJetPhi; 00088 MonitorElement *genJetDeltaEtaMin; 00089 MonitorElement *h_dr; 00090 MonitorElement *genJetPto1; 00091 MonitorElement *genJetPto30; 00092 MonitorElement *genJetPto50; 00093 MonitorElement *genJetPto100; 00094 MonitorElement *genJetCentral; 00095 00096 MonitorElement *genJetTotPt; 00097 MonitorElement *WW_TwoJEt_JetsM; 00098 00099 MonitorElement *h_l_jet_eta; 00100 MonitorElement *h_l_jet_pt; 00101 MonitorElement *h_sl_jet_eta; 00102 MonitorElement *h_sl_jet_pt; 00103 MonitorElement *h_ssl_jet_eta; 00104 MonitorElement *h_ssl_jet_pt; 00105 00106 MonitorElement *h_mWplus ; 00107 MonitorElement *h_phiWplus; 00108 MonitorElement *h_ptWplus ; 00109 MonitorElement *h_yWplus; 00110 00111 MonitorElement *h_mWminus; 00112 MonitorElement *h_phiWminus; 00113 MonitorElement *h_ptWminus; 00114 MonitorElement *h_yWminus; 00115 00116 MonitorElement *h_mZ; 00117 MonitorElement *h_phiZ; 00118 MonitorElement *h_ptZ; 00119 MonitorElement *h_yZ; 00120 MonitorElement *h_mWplus_3b ; 00121 MonitorElement *h_phiWplus_3b; 00122 MonitorElement *h_ptWplus_3b ; 00123 MonitorElement *h_yWplus_3b; 00124 00125 MonitorElement *h_mWminus_3b; 00126 MonitorElement *h_phiWminus_3b; 00127 MonitorElement *h_ptWminus_3b; 00128 MonitorElement *h_yWminus_3b; 00129 00130 MonitorElement *h_mZ_3b; 00131 MonitorElement *h_phiZ_3b; 00132 MonitorElement *h_ptZ_3b; 00133 MonitorElement *h_yZ_3b; 00134 00135 MonitorElement *h_mWW; 00136 MonitorElement *h_phiWW; 00137 MonitorElement *h_ptWW; 00138 MonitorElement *h_yWW; 00139 00140 MonitorElement *h_mWZ; 00141 MonitorElement *h_phiWZ; 00142 MonitorElement *h_ptWZ; 00143 MonitorElement *h_yWZ; 00144 00145 MonitorElement *h_mZZ; 00146 MonitorElement *h_phiZZ; 00147 MonitorElement *h_ptZZ; 00148 MonitorElement *h_yZZ; 00149 00150 MonitorElement *h_mWWW; 00151 MonitorElement *h_phiWWW; 00152 MonitorElement *h_ptWWW; 00153 MonitorElement *h_yWWW; 00154 00155 MonitorElement *h_mWWZ; 00156 MonitorElement *h_phiWWZ; 00157 MonitorElement *h_ptWWZ; 00158 MonitorElement *h_yWWZ; 00159 00160 MonitorElement *h_mWZZ; 00161 MonitorElement *h_phiWZZ; 00162 MonitorElement *h_ptWZZ; 00163 MonitorElement *h_yWZZ; 00164 00165 MonitorElement *h_mZZZ; 00166 MonitorElement *h_phiZZZ; 00167 MonitorElement *h_ptZZZ; 00168 MonitorElement *h_yZZZ; 00169 00170 00171 }; 00172 00173 #endif