![]() |
![]() |
00001 #ifndef PhysicsTools_HepMCCandAlgos_interface_FlavorHistoryFilter_h 00002 #define PhysicsTools_HepMCCandAlgos_interface_FlavorHistoryFilter_h 00003 00004 00005 // -*- C++ -*- 00006 // 00007 // Package: FlavorHistoryFilter 00008 // Class: FlavorHistoryFilter 00009 // 00046 // 00047 // Original Author: "Salvatore Rappoccio" 00048 // Created: Sat Jun 28 00:41:21 CDT 2008 00049 // $Id: FlavorHistoryFilter.h,v 1.9 2010/01/11 13:26:22 hegner Exp $ 00050 // 00051 // 00052 00053 00054 // system include files 00055 #include <memory> 00056 00057 // user include files 00058 #include "FWCore/Framework/interface/Frameworkfwd.h" 00059 #include "FWCore/Framework/interface/EDFilter.h" 00060 00061 #include "FWCore/Framework/interface/Event.h" 00062 #include "FWCore/Framework/interface/MakerMacros.h" 00063 00064 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00065 00066 00067 #include "DataFormats/HepMCCandidate/interface/FlavorHistoryEvent.h" 00068 #include "DataFormats/HepMCCandidate/interface/FlavorHistory.h" 00069 #include "DataFormats/Candidate/interface/CandidateFwd.h" 00070 00071 #include "PhysicsTools/HepMCCandAlgos/interface/FlavorHistorySelectorUtil.h" 00072 00073 // 00074 // class declaration 00075 // 00076 00077 class FlavorHistoryFilter : public edm::EDFilter { 00078 public: 00079 typedef reco::FlavorHistory::FLAVOR_T flavor_type; 00080 typedef std::vector<int> flavor_vector; 00081 00082 explicit FlavorHistoryFilter(const edm::ParameterSet&); 00083 ~FlavorHistoryFilter(); 00084 00085 private: 00086 virtual bool filter(edm::Event&, const edm::EventSetup&); 00087 virtual void endJob() ; 00088 00089 // ----------member data --------------------------- 00090 edm::InputTag bsrc_; // Input b flavor history collection name 00091 edm::InputTag csrc_; // Input c flavor history collection name 00092 int pathToSelect_; // Select any of the following paths: 00093 double dr_; // dr with which to cut off the events 00094 // Note! The "b" and "c" here refer to the number of matched b and c genjets, respectively 00095 reco::FlavorHistorySelectorUtil * bb_me_; // To select bb->2 events from matrix element... Path 1 00096 reco::FlavorHistorySelectorUtil * b_me_; // To select b->1 events from matrix element... Path 2 00097 reco::FlavorHistorySelectorUtil * cc_me_; // To select cc->2 events from matrix element... Path 3 00098 reco::FlavorHistorySelectorUtil * c_me_; // To select c->1 events from matrix element... Path 4 00099 reco::FlavorHistorySelectorUtil * b_ps_; // To select bb->2 events from parton shower ... Path 5 00100 reco::FlavorHistorySelectorUtil * c_ps_; // To select cc->2 events from parton shower ... Path 6 00101 reco::FlavorHistorySelectorUtil * bb_me_comp_; // To select bb->1 events from matrix element... Path 7 00102 reco::FlavorHistorySelectorUtil * cc_me_comp_; // To select cc->1 events from matrix element... Path 8 00103 reco::FlavorHistorySelectorUtil * b_ps_comp_; // To select bb->2 events from parton shower ... Path 9 00104 reco::FlavorHistorySelectorUtil * c_ps_comp_; // To select cc->1 events from parton shower ... Path 10 00105 // The veto of all of these is ... Path 11 00106 }; 00107 00108 00109 #endif