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

#include <HLTMuonIsoFilter.h>

Inheritance diagram for HLTMuonIsoFilter:
HLTFilter edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

virtual bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct)
 
 HLTMuonIsoFilter (const edm::ParameterSet &)
 
bool triggerdByPreviousLevel (const reco::RecoChargedCandidateRef &, const std::vector< reco::RecoChargedCandidateRef > &)
 
 ~HLTMuonIsoFilter ()
 
- Public Member Functions inherited from HLTFilter
 HLTFilter (const edm::ParameterSet &config)
 
int module () const
 
const std::string * moduleLabel () const
 
int path () const
 
const std::string * pathName () const
 
std::pair< int, int > pmid () const
 
bool saveTags () const
 
virtual ~HLTFilter ()
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
virtual ~EDFilter ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Attributes

edm::InputTag candTag_
 
std::vector< edm::InputTagdepTag_
 
int min_N_
 
edm::InputTag previousCandTag_
 
const
muonisolation::MuIsoBaseIsolator
theDepositIsolator
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter ModuleType
 
typedef WorkerT< EDFilterWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from HLTFilter
static void makeHLTFilterDescription (edm::ParameterSetDescription &desc)
 
- 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::EDFilter
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

This class is an HLTFilter (-> EDFilter) implementing the isolation filtering for HLT muons

Author
J. Alcaraz

See header file for documentation

Author
J. Alcaraz

Definition at line 18 of file HLTMuonIsoFilter.h.

Constructor & Destructor Documentation

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

Definition at line 29 of file HLTMuonIsoFilter.cc.

References candTag_, depTag_, edm::ParameterSet::empty(), edm::InputTag::encode(), alcaDQMUpload::encode(), reco::get(), edm::ParameterSet::getParameter(), i, LogDebug, min_N_, o2o::tags, and theDepositIsolator.

29  : HLTFilter(iConfig),
30  candTag_ (iConfig.getParameter< edm::InputTag > ("CandTag") ),
31  previousCandTag_ (iConfig.getParameter<edm::InputTag > ("PreviousCandTag")),
32  depTag_ (iConfig.getParameter< std::vector< edm::InputTag > >("DepTag" ) ),
34  min_N_ (iConfig.getParameter<int> ("MinN"))
35 {
36  std::stringstream tags;
37  for (unsigned int i=0;i!=depTag_.size();++i)
38  tags<<" IsoTag["<<i<<"] : "<<depTag_[i].encode()<<" \n";
39  LogDebug("HLTMuonIsoFilter") << " candTag : " << candTag_.encode()
40  << "\n" << tags
41  << " MinN : " << min_N_;
42 
43  edm::ParameterSet isolatorPSet = iConfig.getParameter<edm::ParameterSet>("IsolatorPSet");
44  if (isolatorPSet.empty()) {
46  }else{
47  std::string type = isolatorPSet.getParameter<std::string>("ComponentName");
48  theDepositIsolator = MuonIsolatorFactory::get()->create(type, isolatorPSet);
49  }
50 
51  if (theDepositIsolator) produces<edm::ValueMap<bool> >();
52 }
#define LogDebug(id)
type
Definition: HCALResponse.h:22
T getParameter(std::string const &) const
bool empty() const
Definition: ParameterSet.h:219
int i
Definition: DBlmapReader.cc:9
edm::InputTag candTag_
std::string encode() const
Definition: InputTag.cc:72
const muonisolation::MuIsoBaseIsolator * theDepositIsolator
tuple tags
Definition: o2o.py:248
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:18
std::vector< edm::InputTag > depTag_
edm::InputTag previousCandTag_
T get(const Candidate &c)
Definition: component.h:56
HLTMuonIsoFilter::~HLTMuonIsoFilter ( )

Definition at line 54 of file HLTMuonIsoFilter.cc.

55 {
56 }

Member Function Documentation

bool HLTMuonIsoFilter::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
)
virtual

Implements HLTFilter.

Definition at line 64 of file HLTMuonIsoFilter.cc.

References accept(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), candTag_, depTag_, edm::helper::Filler< Map >::fill(), edm::Event::get(), edm::Ref< C, T, F >::get(), edm::Event::getByLabel(), i, edm::Ref< C, T, F >::id(), edm::helper::Filler< Map >::insert(), edm::Ref< C, T, F >::isNonnull(), LogDebug, min_N_, previousCandTag_, reco::IsoDeposit::print(), edm::Event::put(), dt_dqm_sourceclient_common_cff::reco, muonisolation::MuIsoBaseIsolator::result(), HLTFilter::saveTags(), corrVsCorr::selection, summarizeEdmComparisonLogfiles::success, theDepositIsolator, triggerdByPreviousLevel(), trigger::TriggerMuon, and muonisolation::MuIsoBaseIsolator::Result::valBool.

65 {
66  using namespace std;
67  using namespace edm;
68  using namespace trigger;
69  using namespace reco;
70 
71  // All HLT filters must create and fill an HLT filter object,
72  // recording any reconstructed physics objects satisfying (or not)
73  // this HLT filter, and place it in the Event.
74 
75  //the decision map
76  std::auto_ptr<edm::ValueMap<bool> >
77  isoMap( new edm::ValueMap<bool> ());
78 
79  // get hold of trks
81  if (saveTags()) filterproduct.addCollectionTag(candTag_);
82  iEvent.getByLabel (candTag_,mucands);
83  Handle<TriggerFilterObjectWithRefs> previousLevelCands;
84  iEvent.getByLabel (previousCandTag_,previousLevelCands);
85  vector<RecoChargedCandidateRef> vcands;
86  previousLevelCands->getObjects(TriggerMuon,vcands);
87 
88  //get hold of energy deposition
89  unsigned int nDep=depTag_.size();
90  std::vector< Handle<edm::ValueMap<reco::IsoDeposit> > > depMap(nDep);
91  Handle<edm::ValueMap<bool> > decisionMap;
93 
94  if (theDepositIsolator){
95  for (unsigned int i=0;i!=nDep;++i) iEvent.getByLabel (depTag_[i],depMap[i]);
96  }else{
97  bool success = iEvent.getByLabel(depTag_.front(), decisionMap);
98  LogDebug("HLTMuonIsoFilter")<<"get decisionMap " << success;
99  }
100 
101  // look at all mucands, check cuts and add to filter object
102  int nIsolatedMu = 0;
103  unsigned int nMu=mucands->size();
104  std::vector<bool> isos(nMu, false);
105  unsigned int iMu=0;
106  for (; iMu<nMu; iMu++) {
107  RecoChargedCandidateRef candref(mucands,iMu);
108  LogDebug("HLTMuonIsoFilter") << "candref isNonnull " << candref.isNonnull();
109 
110  //did this candidate triggered at previous stage.
111  if (!triggerdByPreviousLevel(candref,vcands)) continue;
112 
113  //reference to the track
114  TrackRef tk = candref->get<TrackRef>();
115  LogDebug("HLTMuonIsoFilter") << "tk isNonNull " << tk.isNonnull();
116  if (theDepositIsolator){
117 
118  //get the deposits
119  for(unsigned int iDep=0;iDep!=nDep;++iDep){
120 
121  const edm::ValueMap<reco::IsoDeposit> ::value_type & muonDeposit = (*(depMap[iDep]))[tk];
122  LogDebug("HLTMuonIsoFilter") << " Muon with q*pt= " << tk->charge()*tk->pt() << " (" << candref->charge()*candref->pt() << ") " << ", eta= " << tk->eta() << " (" << candref->eta() << ") " << "; has deposit["<<iDep<<"]: " << muonDeposit.print();
123  isoContainer[iDep] = muonisolation::MuIsoBaseIsolator::DepositAndVetos(&muonDeposit);
124 
125  }
126 
127  //get the selection
129  isos[iMu]=selection.valBool;
130 
131  }else{
132  //get the decision from the event
133  isos[iMu]=(*decisionMap)[tk];
134  }
135  LogDebug("HLTMuonIsoFilter") << " Muon with q*pt= " << tk->charge()*tk->pt() << ", eta= " << tk->eta() << "; "<<(isos[iMu]?"Is an isolated muon.":"Is NOT an isolated muon.");
136 
137  if (!isos[iMu]) continue;
138 
139  nIsolatedMu++;
140  filterproduct.addObject(TriggerMuon,candref);
141  }
142 
143  // filter decision
144  const bool accept (nIsolatedMu >= min_N_);
145 
146  if (theDepositIsolator){
147  //put the decision map
148  if (nMu!=0){
149  edm::ValueMap<bool> ::Filler isoFiller(*isoMap);
150  // get a track ref
151 
152  TrackRef aRef = mucands->front().get<TrackRef>();
153  // get the corresponding handle
154  edm::Handle<reco::TrackCollection> HandleToTrackRef;
155  iEvent.get(aRef.id(), HandleToTrackRef);
156  isoFiller.insert(HandleToTrackRef, isos.begin(), isos.end());
157  isoFiller.fill();
158  }
159  iEvent.put(isoMap);
160  }
161 
162  LogDebug("HLTMuonIsoFilter") << " >>>>> Result of HLTMuonIsoFilter is " << accept << ", number of muons passing isolation cuts= " << nIsolatedMu;
163 
164  return accept;
165 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
selection
main part
Definition: corrVsCorr.py:98
virtual Result result(const DepositContainer &deposits, const edm::Event *=0) const =0
Compute and return the isolation variable.
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:22
edm::InputTag candTag_
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref&lt;C&gt;)
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:250
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
bool triggerdByPreviousLevel(const reco::RecoChargedCandidateRef &, const std::vector< reco::RecoChargedCandidateRef > &)
const muonisolation::MuIsoBaseIsolator * theDepositIsolator
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:267
Container::value_type value_type
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
std::vector< DepositAndVetos > DepositContainer
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
bool saveTags() const
Definition: HLTFilter.h:45
std::string print() const
Definition: IsoDeposit.cc:181
ProductID id() const
Accessor for product ID.
Definition: Ref.h:256
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:242
std::vector< edm::InputTag > depTag_
edm::InputTag previousCandTag_
bool HLTMuonIsoFilter::triggerdByPreviousLevel ( const reco::RecoChargedCandidateRef candref,
const std::vector< reco::RecoChargedCandidateRef > &  vcands 
)

Definition at line 167 of file HLTMuonIsoFilter.cc.

References i, and convertSQLiteXML::ok.

Referenced by hltFilter().

167  {
168  bool ok=false;
169  unsigned int i=0;
170  unsigned int i_max=vcands.size();
171  for (;i!=i_max;++i){
172  if (candref == vcands[i]) { ok=true; break;}
173  }
174 
175  return ok;
176 }
int i
Definition: DBlmapReader.cc:9

Member Data Documentation

edm::InputTag HLTMuonIsoFilter::candTag_
private

Definition at line 26 of file HLTMuonIsoFilter.h.

Referenced by hltFilter(), and HLTMuonIsoFilter().

std::vector<edm::InputTag> HLTMuonIsoFilter::depTag_
private

Definition at line 28 of file HLTMuonIsoFilter.h.

Referenced by hltFilter(), and HLTMuonIsoFilter().

int HLTMuonIsoFilter::min_N_
private

Definition at line 32 of file HLTMuonIsoFilter.h.

Referenced by hltFilter(), and HLTMuonIsoFilter().

edm::InputTag HLTMuonIsoFilter::previousCandTag_
private

Definition at line 27 of file HLTMuonIsoFilter.h.

Referenced by hltFilter().

const muonisolation::MuIsoBaseIsolator* HLTMuonIsoFilter::theDepositIsolator
private

Definition at line 30 of file HLTMuonIsoFilter.h.

Referenced by hltFilter(), and HLTMuonIsoFilter().