00001 #ifndef TtSemiLepSignalSelMVAComputer_h 00002 #define TtSemiLepSignalSelMVAComputer_h 00003 00004 #include "FWCore/Framework/interface/Event.h" 00005 #include "FWCore/Framework/interface/EventSetup.h" 00006 #include "FWCore/Framework/interface/EDProducer.h" 00007 #include "FWCore/Framework/interface/Frameworkfwd.h" 00008 #include "FWCore/Framework/interface/MakerMacros.h" 00009 #include "FWCore/Framework/interface/ESHandle.h" 00010 #include "FWCore/ServiceRegistry/interface/Service.h" 00011 #include "FWCore/ParameterSet/interface/InputTag.h" 00012 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00013 #include "PhysicsTools/UtilAlgos/interface/TFileService.h" 00014 00015 #include "PhysicsTools/MVAComputer/interface/HelperMacros.h" 00016 #include "PhysicsTools/MVAComputer/interface/MVAComputerCache.h" 00017 #include "DataFormats/PatCandidates/interface/Jet.h" 00018 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h" 00019 00020 #ifndef TtSemiLepSignalSelMVARcd_defined // to avoid conflicts with the TopSemiLepLepSignalSelMVATrainer 00021 #define TtSemiLepSignalSelMVARcd_defined 00022 MVA_COMPUTER_CONTAINER_DEFINE(TtSemiLepSignalSelMVA); // defines TopSemiLepLepSignalSelMVARcd 00023 #endif 00024 00025 class TtSemiLepSignalSelMVAComputer : public edm::EDProducer { 00026 00027 public: 00028 00029 explicit TtSemiLepSignalSelMVAComputer(const edm::ParameterSet&); 00030 ~TtSemiLepSignalSelMVAComputer(); 00031 00032 private: 00033 00034 virtual void beginJob(const edm::EventSetup&); 00035 virtual void produce(edm::Event& evt, const edm::EventSetup& setup); 00036 virtual void endJob(); 00037 00038 double DeltaPhi(math::XYZTLorentzVector v1, math::XYZTLorentzVector v2); 00039 double DeltaR(math::XYZTLorentzVector v1, math::XYZTLorentzVector v2); 00040 00041 edm::InputTag muons_; 00042 edm::InputTag jets_; 00043 edm::InputTag METs_; 00044 edm::InputTag electrons_; 00045 00046 PhysicsTools::MVAComputerCache mvaComputer; 00047 00048 double DiscSel; 00049 00050 }; 00051 00052 #endif