CMS 3D CMS Logo

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

#include <HLTElectronMissingHitsFilter.h>

Inheritance diagram for HLTElectronMissingHitsFilter:
HLTFilter edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HLTElectronMissingHitsFilter (const edm::ParameterSet &)
 
virtual bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
 
 ~HLTElectronMissingHitsFilter ()
 
- Public Member Functions inherited from HLTFilter
 HLTFilter (const edm::ParameterSet &config)
 
int module (edm::Event const &) const
 
const std::string * moduleLabel () const
 
int path (edm::Event const &) const
 
const std::string * pathName (edm::Event const &) const
 
std::pair< int, int > pmid (edm::Event const &) const
 
bool saveTags () const
 
virtual ~HLTFilter ()
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- 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 ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from HLTFilter
static void makeHLTFilterDescription (edm::ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::global::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Attributes

int barrelcut_
 
edm::InputTag candTag_
 
edm::EDGetTokenT
< trigger::TriggerFilterObjectWithRefs
candToken_
 
edm::InputTag electronTag_
 
edm::EDGetTokenT
< reco::ElectronCollection
electronToken_
 
int endcapcut_
 
int ncandcut_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDFilterBase
typedef EDFilterBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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

Author
Matteo Sani (UCSD)

Definition at line 17 of file HLTElectronMissingHitsFilter.h.

Constructor & Destructor Documentation

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

Definition at line 20 of file HLTElectronMissingHitsFilter.cc.

References barrelcut_, candTag_, candToken_, electronTag_, electronToken_, endcapcut_, edm::ParameterSet::getParameter(), and ncandcut_.

20  : HLTFilter(iConfig) {
21  candTag_ = iConfig.getParameter< edm::InputTag > ("candTag");
22  candToken_ = consumes<trigger::TriggerFilterObjectWithRefs>(candTag_);
23  electronTag_ = iConfig.getParameter< edm::InputTag >("electronProducer");
24  electronToken_ = consumes<reco::ElectronCollection>(electronTag_);
25  barrelcut_ = iConfig.getParameter<int> ("barrelcut");
26  endcapcut_ = iConfig.getParameter<int> ("endcapcut");
27  ncandcut_ = iConfig.getParameter<int> ("ncandcut");
28 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::ElectronCollection > electronToken_
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:20
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
HLTElectronMissingHitsFilter::~HLTElectronMissingHitsFilter ( )

Definition at line 30 of file HLTElectronMissingHitsFilter.cc.

31 {}

Member Function Documentation

void HLTElectronMissingHitsFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 33 of file HLTElectronMissingHitsFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), HLT_25ns14e33_v1_cff::InputTag, and HLTFilter::makeHLTFilterDescription().

33  {
36  desc.add<edm::InputTag>("candTag", edm::InputTag("hltSingleElectronOneOEMinusOneOPFilter"));
37  desc.add<edm::InputTag>("electronProducer", edm::InputTag("hltL1NonIsoHLTNonIsoSingleElectronEt15LTIPixelMatchFilte"));
38  desc.add<int>("barrelcut", 0);
39  desc.add<int>("endcapcut", 0);
40  desc.add<int>("ncandcut", 1);
41  descriptions.add("hltElectronMissingHitsFilter", desc);
42 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTElectronMissingHitsFilter::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
) const
overridevirtual

Implements HLTFilter.

Definition at line 44 of file HLTElectronMissingHitsFilter.cc.

References accept(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), barrelcut_, candToken_, ecal_dqm_sourceclient-live_cfg::cerr, electronTag_, electronToken_, endcapcut_, edm::Event::getByToken(), i, edm::Ref< C, T, F >::isNonnull(), reco::HitPattern::MISSING_INNER_HITS, gen::n, ncandcut_, HLTFilter::saveTags(), trigger::TriggerCluster, trigger::TriggerElectron, and trigger::TriggerPhoton.

44  {
45 
46  using namespace trigger;
47 
48  if (saveTags())
49  filterproduct.addCollectionTag(electronTag_);
50 
52  iEvent.getByToken(candToken_,PrevFilterOutput);
53 
54  std::vector<edm::Ref<reco::RecoEcalCandidateCollection> > recoecalcands;
55  PrevFilterOutput->getObjects(TriggerCluster, recoecalcands);
56  if(recoecalcands.empty())
57  PrevFilterOutput->getObjects(TriggerPhoton,recoecalcands);
58 
60  iEvent.getByToken(electronToken_,electronHandle);
61 
62  int n(0);
63 
65  for (unsigned int i=0; i<recoecalcands.size(); i++) {
66 
67  reco::SuperClusterRef scCand = recoecalcands[i]->superCluster();
68  for(reco::ElectronCollection::const_iterator iElectron = electronHandle->begin(); iElectron != electronHandle->end(); iElectron++) {
69  reco::ElectronRef electronref(reco::ElectronRef(electronHandle, iElectron - electronHandle->begin()));
70  const reco::SuperClusterRef scEle = electronref->superCluster();
71  if(scCand == scEle) {
72 
73  int missinghits = 0;
74  if (electronref->gsfTrack().isNonnull()){
75  missinghits = electronref->gsfTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
76  } else if (electronref->track().isNonnull()){
77  missinghits = electronref->track()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
78  }else{
79  std::cerr << "Electron without track..." << std::endl;
80  }
81 
82  if(fabs(electronref->eta()) < 1.479) {
83  if (missinghits < barrelcut_) {
84  n++;
85  filterproduct.addObject(TriggerElectron, electronref);
86  }
87  }
88 
89  if(fabs(electronref->eta()) > 1.479) {
90  if (missinghits < endcapcut_) {
91  n++;
92  filterproduct.addObject(TriggerElectron, electronref);
93  }
94  }
95  }
96  }
97  }
98 
99  bool accept(n >= ncandcut_);
100 
101  return accept;
102 }
int i
Definition: DBlmapReader.cc:9
edm::EDGetTokenT< reco::ElectronCollection > electronToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref&lt;C&gt;)
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
bool saveTags() const
Definition: HLTFilter.h:45

Member Data Documentation

int HLTElectronMissingHitsFilter::barrelcut_
private

Definition at line 32 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter(), and hltFilter().

edm::InputTag HLTElectronMissingHitsFilter::candTag_
private

Definition at line 26 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter().

edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> HLTElectronMissingHitsFilter::candToken_
private

Definition at line 27 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter(), and hltFilter().

edm::InputTag HLTElectronMissingHitsFilter::electronTag_
private

Definition at line 29 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter(), and hltFilter().

edm::EDGetTokenT<reco::ElectronCollection> HLTElectronMissingHitsFilter::electronToken_
private

Definition at line 30 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter(), and hltFilter().

int HLTElectronMissingHitsFilter::endcapcut_
private

Definition at line 33 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter(), and hltFilter().

int HLTElectronMissingHitsFilter::ncandcut_
private

Definition at line 34 of file HLTElectronMissingHitsFilter.h.

Referenced by HLTElectronMissingHitsFilter(), and hltFilter().