00001 #ifndef PartonQualifier_h 00002 #define PartonQualifier_h 00003 00004 #include <memory> 00005 #include <string> 00006 #include <vector> 00007 00008 #include "FWCore/Utilities/interface/InputTag.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 #include "DataFormats/HepMCCandidate/interface/GenParticle.h" 00011 00012 class PartonQualifier { 00013 00014 public: 00015 PartonQualifier(const edm::ParameterSet&); 00016 ~PartonQualifier(){}; 00017 bool operator()(const reco::GenParticle&); 00018 00019 private: 00020 00021 int status_; 00022 std::vector<int> partons_; 00023 }; 00024 00025 inline 00026 PartonQualifier::PartonQualifier(const edm::ParameterSet& cfg): 00027 status_ ( cfg.getParameter<int>( "status" ) ), 00028 partons_( cfg.getParameter<std::vector<int> >( "partons" ) ) 00029 { 00030 } 00031 00032 inline bool 00033 PartonQualifier::operator()(const reco::GenParticle& part) 00034 { 00035 if( part.status()!=status_) 00036 // does the particle have the correct status? 00037 return false; 00038 00039 if( !(std::count(partons_.begin(), partons_.end(), fabs(part.pdgId()))>0) ) 00040 // is the particle pdg contained in the list of partons? 00041 return false; 00042 00043 return true; 00044 } 00045 00046 #endif