CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
HFFilter Class Reference

#include <PhysicsTools/HFFilter/src/HFFilter.cc>

Inheritance diagram for HFFilter:
edm::EDFilter edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual void endJob ()
 
virtual bool filter (edm::Event &, const edm::EventSetup &) override
 
 HFFilter (const edm::ParameterSet &)
 
 ~HFFilter ()
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilter ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

double etaMax_
 
edm::EDGetTokenT< std::vector
< reco::GenJet > > 
genJetsCollToken_
 
double ptMin_
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDFilter
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: Filter to see if there are heavy flavor GenJets in this event

Implementation: The implementation is simple, it loops over the GenJets and checks if any constituents have a pdg ID that matches a list. It also has a switch to count objects from a gluon parent, so the user can turn off counting gluon splitting.

Definition at line 45 of file HFFilter.h.

Constructor & Destructor Documentation

HFFilter::HFFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 11 of file HFFilter.cc.

References edm::ParameterSet::getParameter().

12 {
13  genJetsCollToken_ = consumes<vector<reco::GenJet>>(iConfig.getParameter<edm::InputTag>("genJetsCollName"));
14  ptMin_ = iConfig.getParameter<double>("ptMin");
15  etaMax_ = iConfig.getParameter<double>("etaMax");
16 }
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< reco::GenJet > > genJetsCollToken_
Definition: HFFilter.h:55
double ptMin_
Definition: HFFilter.h:56
double etaMax_
Definition: HFFilter.h:57
HFFilter::~HFFilter ( )

Definition at line 19 of file HFFilter.cc.

20 {
21 }

Member Function Documentation

void HFFilter::endJob ( void  )
virtual

Reimplemented from edm::EDFilter.

Definition at line 71 of file HFFilter.cc.

71  {
72 }
bool HFFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::EDFilter.

Definition at line 31 of file HFFilter.cc.

References JetMCTagUtils::decayFromBHadron(), JetMCTagUtils::decayFromCHadron(), end, edm::Event::getByToken(), and dt_dqm_sourceclient_common_cff::reco.

32 {
33 
34  // Get the GenJetCollection
35  using namespace edm;
36  using namespace reco;
37  Handle<std::vector<GenJet> > hGenJets;
38  iEvent.getByToken(genJetsCollToken_,hGenJets);
39 
40  // Loop over the GenJetCollection
41  vector<GenJet>::const_iterator ijet = hGenJets->begin();
42  vector<GenJet>::const_iterator end = hGenJets->end();
43  for ( ; ijet != end; ++ijet ) {
44 
45  // Check to make sure the GenJet satisfies kinematic cuts. Ignore those that don't.
46  if ( ijet->pt() < ptMin_ || fabs(ijet->eta()) > etaMax_ ) continue;
47 
48  // Get the constituent particles
49  vector<const GenParticle*> particles = ijet->getGenConstituents ();
50 
51  // Loop over the constituent particles
52  vector<const GenParticle*>::const_iterator genit = particles.begin();
53  vector<const GenParticle*>::const_iterator genend = particles.end();
54  for ( ; genit != genend; ++genit ) {
55 
56  // See if any of them come from B or C hadrons
57  const GenParticle & genitref = **genit;
58  if ( JetMCTagUtils::decayFromBHadron( genitref ) ||
59  JetMCTagUtils::decayFromCHadron( genitref ) ) {
60  return true;
61  }
62  }// end loop over constituents
63  }// end loop over jets
64 
65 
66  return false;
67 }
edm::EDGetTokenT< std::vector< reco::GenJet > > genJetsCollToken_
Definition: HFFilter.h:55
double ptMin_
Definition: HFFilter.h:56
double etaMax_
Definition: HFFilter.h:57
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
#define end
Definition: vmac.h:37
bool decayFromCHadron(const reco::Candidate &c)
Definition: JetMCTag.cc:61
bool decayFromBHadron(const reco::Candidate &c)
Definition: JetMCTag.cc:40

Member Data Documentation

double HFFilter::etaMax_
private

Definition at line 57 of file HFFilter.h.

edm::EDGetTokenT<std::vector<reco::GenJet> > HFFilter::genJetsCollToken_
private

Definition at line 55 of file HFFilter.h.

double HFFilter::ptMin_
private

Definition at line 56 of file HFFilter.h.