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
HLTElectronGenericFilter Class Reference

#include <HLTElectronGenericFilter.h>

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

Public Member Functions

 HLTElectronGenericFilter (const edm::ParameterSet &)
 
virtual bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
 
 ~HLTElectronGenericFilter ()
 
- 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

edm::InputTag candTag_
 
edm::EDGetTokenT
< trigger::TriggerFilterObjectWithRefs
candToken_
 
bool doIsolated_
 
edm::InputTag isoTag_
 
edm::EDGetTokenT
< reco::ElectronIsolationMap
isoToken_
 
edm::InputTag L1IsoCollTag_
 
edm::InputTag L1NonIsoCollTag_
 
bool lessThan_
 
int ncandcut_
 
edm::InputTag nonIsoTag_
 
edm::EDGetTokenT
< reco::ElectronIsolationMap
nonIsoToken_
 
double thrOverPtEB_
 
double thrOverPtEE_
 
double thrRegularEB_
 
double thrRegularEE_
 
double thrTimesPtEB_
 
double thrTimesPtEE_
 

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
Roberto Covarelli (CERN)

Definition at line 23 of file HLTElectronGenericFilter.h.

Constructor & Destructor Documentation

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

Definition at line 27 of file HLTElectronGenericFilter.cc.

References candTag_, candToken_, doIsolated_, edm::ParameterSet::getParameter(), isoTag_, isoToken_, L1IsoCollTag_, L1NonIsoCollTag_, lessThan_, ncandcut_, nonIsoTag_, nonIsoToken_, thrOverPtEB_, thrOverPtEE_, thrRegularEB_, thrRegularEE_, thrTimesPtEB_, and thrTimesPtEE_.

27  : HLTFilter(iConfig) {
28  candTag_ = iConfig.getParameter< edm::InputTag > ("candTag");
29  isoTag_ = iConfig.getParameter< edm::InputTag > ("isoTag");
30  nonIsoTag_ = iConfig.getParameter< edm::InputTag > ("nonIsoTag");
31  lessThan_ = iConfig.getParameter<bool> ("lessThan");
32  thrRegularEB_ = iConfig.getParameter<double> ("thrRegularEB");
33  thrRegularEE_ = iConfig.getParameter<double> ("thrRegularEE");
34  thrOverPtEB_ = iConfig.getParameter<double> ("thrOverPtEB");
35  thrOverPtEE_ = iConfig.getParameter<double> ("thrOverPtEE");
36  thrTimesPtEB_ = iConfig.getParameter<double> ("thrTimesPtEB");
37  thrTimesPtEE_ = iConfig.getParameter<double> ("thrTimesPtEE");
38  ncandcut_ = iConfig.getParameter<int> ("ncandcut");
39  doIsolated_ = iConfig.getParameter<bool> ("doIsolated");
40  L1IsoCollTag_= iConfig.getParameter< edm::InputTag > ("L1IsoCand");
41  L1NonIsoCollTag_= iConfig.getParameter< edm::InputTag > ("L1NonIsoCand");
42 
43  candToken_ = consumes<trigger::TriggerFilterObjectWithRefs>(candTag_);
44  isoToken_ = consumes<reco::ElectronIsolationMap>(isoTag_);
45  if(!doIsolated_) nonIsoToken_ = consumes<reco::ElectronIsolationMap>(nonIsoTag_);
46 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::ElectronIsolationMap > isoToken_
edm::EDGetTokenT< reco::ElectronIsolationMap > nonIsoToken_
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:20
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
HLTElectronGenericFilter::~HLTElectronGenericFilter ( )

Definition at line 48 of file HLTElectronGenericFilter.cc.

48 {}

Member Function Documentation

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

Definition at line 51 of file HLTElectronGenericFilter.cc.

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

51  {
54  desc.add<edm::InputTag>("candTag",edm::InputTag("hltSingleElectronOneOEMinusOneOPFilter"));
55  desc.add<edm::InputTag>("isoTag",edm::InputTag("hltSingleElectronTrackIsol"));
56  desc.add<edm::InputTag>("nonIsoTag",edm::InputTag("hltSingleElectronHcalTrackIsol"));
57  desc.add<bool>("lessThan",true);
58  desc.add<double>("thrRegularEB",0.0);
59  desc.add<double>("thrRegularEE",0.0);
60  desc.add<double>("thrOverPtEB",-1.0);
61  desc.add<double>("thrOverPtEE",-1.0);
62  desc.add<double>("thrTimesPtEB",-1.0);
63  desc.add<double>("thrTimesPtEE",-1.0);
64  desc.add<int>("ncandcut",1);
65  desc.add<bool>("doIsolated",true);
66  desc.add<edm::InputTag>("L1IsoCand",edm::InputTag("hltPixelMatchElectronsL1Iso"));
67  desc.add<edm::InputTag>("L1NonIsoCand",edm::InputTag("hltPixelMatchElectronsL1NonIso"));
68  descriptions.add("hltElectronGenericFilter",desc);
69 }
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 HLTElectronGenericFilter::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
) const
overridevirtual

Implements HLTFilter.

Definition at line 73 of file HLTElectronGenericFilter.cc.

References accept(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), candToken_, edm::AssociationMap< edm::OneToValue< std::vector< reco::Electron >, float > >::const_iterator, doIsolated_, reco::tau::disc::Eta(), edm::Event::getByToken(), i, isoToken_, L1IsoCollTag_, L1NonIsoCollTag_, lessThan_, gen::n, ncandcut_, nonIsoToken_, reco::tau::disc::Pt(), HLTFilter::saveTags(), thrOverPtEB_, thrOverPtEE_, thrRegularEB_, thrRegularEE_, thrTimesPtEB_, thrTimesPtEE_, and trigger::TriggerElectron.

74 {
75  using namespace trigger;
76 
77  if (saveTags()) {
78  filterproduct.addCollectionTag(L1IsoCollTag_);
79  if (not doIsolated_) filterproduct.addCollectionTag(L1NonIsoCollTag_);
80  }
81 
82  // Ref to Candidate object to be recorded in filter object
84 
86  iEvent.getByToken (candToken_,PrevFilterOutput);
87 
88  std::vector<edm::Ref<reco::ElectronCollection> > elecands;
89  PrevFilterOutput->getObjects(TriggerElectron, elecands);
90 
91 
92  //get hold of isolated association map
94  iEvent.getByToken (isoToken_,depMap);
95 
96  //get hold of non-isolated association map
98  if(!doIsolated_) iEvent.getByToken (nonIsoToken_,depNonIsoMap);
99 
100  // look at all photons, check cuts and add to filter object
101  int n = 0;
102 
103  for (unsigned int i=0; i<elecands.size(); i++) {
104 
105  ref = elecands[i];
106  reco::ElectronIsolationMap::const_iterator mapi = (*depMap).find( ref );
107  if (mapi==(*depMap).end() && !doIsolated_) mapi = (*depNonIsoMap).find( ref );
108 
109  float vali = mapi->val;
110  float Pt = ref->pt();
111  float Eta = fabs(ref->eta());
112 
113  if ( lessThan_ ) {
114  if ( (Eta < 1.479 && vali <= thrRegularEB_) || (Eta >= 1.479 && vali <= thrRegularEE_) ) {
115  n++;
116  filterproduct.addObject(TriggerElectron, ref);
117  continue;
118  }
119  if (Pt > 0. && (thrOverPtEB_ > 0. || thrOverPtEE_ > 0. || thrTimesPtEB_ > 0. || thrTimesPtEE_ > 0.) ) {
120  if ((Eta < 1.479 && vali/Pt <= thrOverPtEB_) || (Eta >= 1.479 && vali/Pt <= thrOverPtEE_) ) {
121  n++;
122  filterproduct.addObject(TriggerElectron, ref);
123  continue;
124  }
125  if ((Eta < 1.479 && vali*Pt <= thrTimesPtEB_) || (Eta >= 1.479 && vali*Pt <= thrTimesPtEE_) ) {
126  n++;
127  filterproduct.addObject(TriggerElectron, ref);
128  }
129  }
130  } else {
131  if ( (Eta < 1.479 && vali >= thrRegularEB_) || (Eta >= 1.479 && vali >= thrRegularEE_) ) {
132  n++;
133  filterproduct.addObject(TriggerElectron, ref);
134  continue;
135  }
136  if (Pt > 0. && (thrOverPtEB_ > 0. || thrOverPtEE_ > 0. || thrTimesPtEB_ > 0. || thrTimesPtEE_ > 0.) ) {
137  if ((Eta < 1.479 && vali/Pt >= thrOverPtEB_) || (Eta >= 1.479 && vali/Pt >= thrOverPtEE_) ) {
138  n++;
139  filterproduct.addObject(TriggerElectron, ref);
140  continue;
141  }
142  if ((Eta < 1.479 && vali*Pt >= thrTimesPtEB_) || (Eta >= 1.479 && vali*Pt >= thrTimesPtEE_) ) {
143  n++;
144  filterproduct.addObject(TriggerElectron, ref);
145  }
146  }
147  }
148  }
149 
150  // filter decision
151  bool accept(n>=ncandcut_);
152 
153  return accept;
154 }
int i
Definition: DBlmapReader.cc:9
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< reco::ElectronIsolationMap > isoToken_
edm::EDGetTokenT< reco::ElectronIsolationMap > nonIsoToken_
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
bool saveTags() const
Definition: HLTFilter.h:45

Member Data Documentation

edm::InputTag HLTElectronGenericFilter::candTag_
private

Definition at line 32 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter().

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

Definition at line 35 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

bool HLTElectronGenericFilter::doIsolated_
private

Definition at line 46 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

edm::InputTag HLTElectronGenericFilter::isoTag_
private

Definition at line 33 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter().

edm::EDGetTokenT<reco::ElectronIsolationMap> HLTElectronGenericFilter::isoToken_
private

Definition at line 36 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

edm::InputTag HLTElectronGenericFilter::L1IsoCollTag_
private

Definition at line 48 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

edm::InputTag HLTElectronGenericFilter::L1NonIsoCollTag_
private

Definition at line 49 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

bool HLTElectronGenericFilter::lessThan_
private

Definition at line 38 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

int HLTElectronGenericFilter::ncandcut_
private

Definition at line 45 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

edm::InputTag HLTElectronGenericFilter::nonIsoTag_
private

Definition at line 34 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter().

edm::EDGetTokenT<reco::ElectronIsolationMap> HLTElectronGenericFilter::nonIsoToken_
private

Definition at line 37 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

double HLTElectronGenericFilter::thrOverPtEB_
private

Definition at line 41 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

double HLTElectronGenericFilter::thrOverPtEE_
private

Definition at line 42 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

double HLTElectronGenericFilter::thrRegularEB_
private

Definition at line 39 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

double HLTElectronGenericFilter::thrRegularEE_
private

Definition at line 40 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

double HLTElectronGenericFilter::thrTimesPtEB_
private

Definition at line 43 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().

double HLTElectronGenericFilter::thrTimesPtEE_
private

Definition at line 44 of file HLTElectronGenericFilter.h.

Referenced by HLTElectronGenericFilter(), and hltFilter().