CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonProducer.cc
Go to the documentation of this file.
1 
10 
12 
17 
24 
27 
31 
32 #include <boost/foreach.hpp>
33 #define foreach BOOST_FOREACH
34 
35 #ifndef dout
36 #define dout if(debug_) std::cout
37 #endif
38 
39 using std::endl;
40 
41 typedef std::map<reco::MuonRef, reco::Candidate::LorentzVector> MuToPFMap;
42 
43 namespace reco {
45 }
46 
47 
49 MuonProducer::MuonProducer(const edm::ParameterSet& pSet):debug_(pSet.getUntrackedParameter<bool>("ActivateDebug",false)){
50 
51  setAlias(pSet.getParameter<std::string>("@module_label"));
52 
53  fastLabelling_ = pSet.getUntrackedParameter<bool>("FastLabelling",true);
54 
55 
57  thePFCandLabel = pSet.getParameter<edm::InputTag>("PFCandidates");
58 
59 
60  // Variables to switch on-off the differnt parts
61  fillSelectors_ = pSet.getParameter<bool>("FillSelectorMaps");
62  fillCosmicsIdMap_ = pSet.getParameter<bool>("FillCosmicsIdMap");
63  fillPFMomentum_ = pSet.getParameter<bool>("FillPFMomentumAndAssociation");
64  fillPFIsolation_ = pSet.getParameter<bool>("FillPFIsolation");
65  fillDetectorBasedIsolation_ = pSet.getParameter<bool>("FillDetectorBasedIsolation");
66  fillShoweringInfo_ = pSet.getParameter<bool>("FillShoweringInfo");
67  fillTimingInfo_ = pSet.getParameter<bool>("FillTimingInfo");
68 
69  produces<reco::MuonCollection>();
70 
71  if(fillTimingInfo_){
72  produces<reco::MuonTimeExtraMap>("combined");
73  produces<reco::MuonTimeExtraMap>("dt");
74  produces<reco::MuonTimeExtraMap>("csc");
75  }
76 
77  if (fillDetectorBasedIsolation_){
78  theTrackDepositName = pSet.getParameter<edm::InputTag>("TrackIsoDeposits");
79  produces<reco::IsoDepositMap>(labelOrInstance(theTrackDepositName));
80  theJetDepositName = pSet.getParameter<edm::InputTag>("JetIsoDeposits");
81  produces<reco::IsoDepositMap>(labelOrInstance(theJetDepositName));
82  theEcalDepositName = pSet.getParameter<edm::InputTag>("EcalIsoDeposits");
83  produces<reco::IsoDepositMap>(theEcalDepositName.instance());
84  theHcalDepositName = pSet.getParameter<edm::InputTag>("HcalIsoDeposits");
85  produces<reco::IsoDepositMap>(theHcalDepositName.instance());
86  theHoDepositName = pSet.getParameter<edm::InputTag>("HoIsoDeposits");
87  produces<reco::IsoDepositMap>(theHoDepositName.instance());
88  }
89 
90  if(fillSelectors_){
91  theSelectorMapNames = pSet.getParameter<InputTags>("SelectorMaps");
92 
93  for(InputTags::const_iterator tag = theSelectorMapNames.begin(); tag != theSelectorMapNames.end(); ++tag)
95  }
96 
97  if(fillShoweringInfo_){
98  theShowerMapName = pSet.getParameter<edm::InputTag>("ShowerInfoMap");
99  produces<edm::ValueMap<reco::MuonShower> >(labelOrInstance(theShowerMapName));
100  }
101 
102  if(fillCosmicsIdMap_){
103  theCosmicCompMapName = pSet.getParameter<edm::InputTag>("CosmicIdMap");
104  produces<edm::ValueMap<reco::MuonCosmicCompatibility> >(labelOrInstance(theCosmicCompMapName));
105  produces<edm::ValueMap<unsigned int> >(labelOrInstance(theCosmicCompMapName));
106  }
107 
108  theMuToMuMapName = theMuonsCollectionLabel.label()+"2"+theAlias+"sMap";
109  produces<edm::ValueMap<reco::MuonRef> >(theMuToMuMapName);
110 
111  if(fillPFIsolation_){
112  edm::ParameterSet pfIsoPSet = pSet.getParameter<edm::ParameterSet>("PFIsolation");
113  thePFIsoHelper = new MuPFIsoHelper(pfIsoPSet);
114  edm::ParameterSet isoCfg03 = pfIsoPSet.getParameter<edm::ParameterSet>("isolationR03");
115  edm::ParameterSet isoCfg04 = pfIsoPSet.getParameter<edm::ParameterSet>("isolationR04");
116 
117  theIsoPF03MapNames["chargedParticle"] = isoCfg03.getParameter<edm::InputTag>("chargedParticle");
118  theIsoPF03MapNames["chargedHadron"] = isoCfg03.getParameter<edm::InputTag>("chargedHadron");
119  theIsoPF03MapNames["neutralHadron"] = isoCfg03.getParameter<edm::InputTag>("neutralHadron");
120  theIsoPF03MapNames["photon"] = isoCfg03.getParameter<edm::InputTag>("photon");
121  theIsoPF03MapNames["pu"] = isoCfg03.getParameter<edm::InputTag>("pu");
122 
123  theIsoPF04MapNames["chargedParticle"] = isoCfg04.getParameter<edm::InputTag>("chargedParticle");
124  theIsoPF04MapNames["chargedHadron"] = isoCfg04.getParameter<edm::InputTag>("chargedHadron");
125  theIsoPF04MapNames["neutralHadron"] = isoCfg04.getParameter<edm::InputTag>("neutralHadron");
126  theIsoPF04MapNames["photon"] = isoCfg04.getParameter<edm::InputTag>("photon");
127  theIsoPF04MapNames["pu"] = isoCfg04.getParameter<edm::InputTag>("pu");
128 
129  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF03MapNames.begin(); map != theIsoPF03MapNames.end(); ++map)
131 
132  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF04MapNames.begin(); map != theIsoPF04MapNames.end(); ++map)
134  }
135 }
136 
140 }
141 
142 
145 
146  const std::string metname = "Muon|RecoMuon|MuonIdentification|MuonProducer";
147 
148  // the muon collection, it will be loaded in the event
149  std::auto_ptr<reco::MuonCollection> outputMuons(new reco::MuonCollection());
150  reco::MuonRefProd outputMuonsRefProd = event.getRefBeforePut<reco::MuonCollection>();
151 
153  event.getByLabel(theMuonsCollectionLabel, inputMuons);
154  edm::OrphanHandle<reco::MuonCollection> inputMuonsOH(inputMuons.product(), inputMuons.id());
155 
157  event.getByLabel(thePFCandLabel, pfCandidates);
158 
159 
160  // fetch collections for PFIso
162 
163 
164  // Fill timing information
168 
169  int nMuons=inputMuons->size();
170 
171  std::vector<reco::MuonTimeExtra> dtTimeColl(nMuons);
172  std::vector<reco::MuonTimeExtra> cscTimeColl(nMuons);
173  std::vector<reco::MuonTimeExtra> combinedTimeColl(nMuons);
174 
175  if(fillTimingInfo_){
176  event.getByLabel(theMuonsCollectionLabel.label(),"combined",timeMapCmb);
177  event.getByLabel(theMuonsCollectionLabel.label(),"dt",timeMapDT);
178  event.getByLabel(theMuonsCollectionLabel.label(),"csc",timeMapCSC);
179  }
180 
181  std::vector<reco::IsoDeposit> trackDepColl(nMuons);
182  std::vector<reco::IsoDeposit> ecalDepColl(nMuons);
183  std::vector<reco::IsoDeposit> hcalDepColl(nMuons);
184  std::vector<reco::IsoDeposit> hoDepColl(nMuons);
185  std::vector<reco::IsoDeposit> jetDepColl(nMuons);
186 
187 
188  edm::Handle<reco::IsoDepositMap> trackIsoDepMap;
189  edm::Handle<reco::IsoDepositMap> ecalIsoDepMap;
190  edm::Handle<reco::IsoDepositMap> hcalIsoDepMap;
193 
194 
196  event.getByLabel(theTrackDepositName,trackIsoDepMap);
197  event.getByLabel(theEcalDepositName,ecalIsoDepMap);
198  event.getByLabel(theHcalDepositName,hcalIsoDepMap);
199  event.getByLabel(theHoDepositName,hoIsoDepMap);
200  event.getByLabel(theJetDepositName,jetIsoDepMap);
201  }
202 
203  std::map<std::string,edm::Handle<edm::ValueMap<double> > > pfIso03Maps;
204  std::map<std::string,std::vector<double> > pfIso03MapVals;
205  std::map<std::string,edm::Handle<edm::ValueMap<double> > > pfIso04Maps;
206  std::map<std::string,std::vector<double> > pfIso04MapVals;
207 
208  if(fillPFIsolation_){
209  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF03MapNames.begin(); map != theIsoPF03MapNames.end(); ++map){
210  event.getByLabel(map->second,pfIso03Maps[map->first]);
211  pfIso03MapVals[map->first].resize(nMuons);
212  }
213  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF04MapNames.begin(); map != theIsoPF04MapNames.end(); ++map){
214  event.getByLabel(map->second,pfIso04Maps[map->first]);
215  pfIso04MapVals[map->first].resize(nMuons);
216  }
217  }
218 
219  std::vector<edm::Handle<edm::ValueMap<bool> > > selectorMaps(fillSelectors_ ? theSelectorMapNames.size() : 0);
220  std::vector<std::vector<bool> > selectorMapResults(fillSelectors_ ? theSelectorMapNames.size() : 0);
221  if(fillSelectors_){
222  unsigned int s=0;
223  for(InputTags::const_iterator tag = theSelectorMapNames.begin(); tag != theSelectorMapNames.end(); ++tag, ++s){
224  event.getByLabel(*tag,selectorMaps[s]);
225  selectorMapResults[s].resize(nMuons);
226  }
227  }
228 
229  edm::Handle<reco::MuonShowerMap> showerInfoMap;
230  if(fillShoweringInfo_) event.getByLabel(theShowerMapName,showerInfoMap);
231 
232  std::vector<reco::MuonShower> showerInfoColl(nMuons);
233 
235  if(fillCosmicsIdMap_) event.getByLabel(theCosmicCompMapName,cosmicIdMap);
236  std::vector<unsigned int> cosmicIdColl(fillCosmicsIdMap_ ? nMuons : 0);
237 
239  if(fillCosmicsIdMap_) event.getByLabel(theCosmicCompMapName,cosmicCompMap);
240  std::vector<reco::MuonCosmicCompatibility> cosmicCompColl(fillCosmicsIdMap_ ? nMuons : 0);
241 
242 
243  std::vector<reco::MuonRef> muonRefColl(nMuons);
244 
245 
246 
247  if(inputMuons->empty()) {
248  edm::OrphanHandle<reco::MuonCollection> muonHandle = event.put(outputMuons);
249 
250  if(fillTimingInfo_){
251  fillMuonMap<reco::MuonTimeExtra>(event, muonHandle, combinedTimeColl,"combined");
252  fillMuonMap<reco::MuonTimeExtra>(event, muonHandle, dtTimeColl,"dt");
253  fillMuonMap<reco::MuonTimeExtra>(event, muonHandle, cscTimeColl,"csc");
254  }
255 
257  fillMuonMap<reco::IsoDeposit>(event, muonHandle, trackDepColl, labelOrInstance(theTrackDepositName));
258  fillMuonMap<reco::IsoDeposit>(event, muonHandle, jetDepColl, labelOrInstance(theJetDepositName));
259  fillMuonMap<reco::IsoDeposit>(event, muonHandle, ecalDepColl, theEcalDepositName.instance());
260  fillMuonMap<reco::IsoDeposit>(event, muonHandle, hcalDepColl, theHcalDepositName.instance());
261  fillMuonMap<reco::IsoDeposit>(event, muonHandle, hoDepColl, theHoDepositName.instance());
262  }
263 
264  if(fillSelectors_){
265  unsigned int s = 0;
266  for(InputTags::const_iterator tag = theSelectorMapNames.begin();
267  tag != theSelectorMapNames.end(); ++tag, ++s){
268  fillMuonMap<bool>(event, muonHandle, selectorMapResults[s], labelOrInstance(*tag));
269  }
270  }
271 
272  if(fillShoweringInfo_) fillMuonMap<reco::MuonShower>(event, muonHandle, showerInfoColl, labelOrInstance(theShowerMapName));
273 
274  if(fillCosmicsIdMap_){
275  fillMuonMap<unsigned int>(event, muonHandle, cosmicIdColl, labelOrInstance(theCosmicCompMapName));
276  fillMuonMap<reco::MuonCosmicCompatibility>(event, muonHandle, cosmicCompColl, labelOrInstance(theCosmicCompMapName));
277  }
278 
279  fillMuonMap<reco::MuonRef>(event,inputMuonsOH, muonRefColl, theMuToMuMapName);
280 
281  if(fillPFIsolation_){
282  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF03MapNames.begin(); map != theIsoPF03MapNames.end(); ++map)
283  fillMuonMap<double>(event, muonHandle, pfIso03MapVals[map->first], labelOrInstance(map->second));
284  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF04MapNames.begin(); map != theIsoPF04MapNames.end(); ++map)
285  fillMuonMap<double>(event, muonHandle, pfIso04MapVals[map->first], labelOrInstance(map->second));
286  }
287 
288  return;
289  }
290 
291  // FIXME: add the option to swith off the Muon-PF "info association".
292 
293 
294  MuToPFMap muToPFMap;
295 
296  if(fillPFMomentum_){
297  dout << "Number of PFCandidates: " << pfCandidates->size() << endl;
298  foreach(const reco::PFCandidate &pfCand, *pfCandidates)
299  if(abs(pfCand.pdgId()) == 13){
300  muToPFMap[pfCand.muonRef()] = pfCand.p4();
301  dout << "MuonRef: " << pfCand.muonRef().id() << " " << pfCand.muonRef().key() << " PF p4: " << pfCand.p4() << endl;
302  }
303  dout << "Number of PFMuons: " << muToPFMap.size() << endl;
304  dout << "Number of Muons in the original collection: " << inputMuons->size() << endl;
305  }
306 
307  reco::MuonRef::key_type muIndex = 0;
308  unsigned int i = 0;
309  foreach(const reco::Muon &inMuon, *inputMuons){
310 
311  reco::MuonRef muRef(inputMuons, muIndex);
312  muonRefColl[i] = reco::MuonRef(outputMuonsRefProd, muIndex++);
313 
314  // Copy the muon
315  reco::Muon outMuon = inMuon;
316 
317  if(fillPFMomentum_){
318  // search for the corresponding pf candidate
319  MuToPFMap::iterator iter = muToPFMap.find(muRef);
320  if(iter != muToPFMap.end()){
321  outMuon.setPFP4(iter->second);
322  muToPFMap.erase(iter);
323  dout << "MuonRef: " << muRef.id() << " " << muRef.key()
324  << " Is it PF? " << outMuon.isPFMuon()
325  << " PF p4: " << outMuon.pfP4() << endl;
326  }
327 
328 
329  dout << "MuonRef: " << muRef.id() << " " << muRef.key()
330  << " Is it PF? " << outMuon.isPFMuon() << endl;
331 
332  dout << "GLB " << outMuon.isGlobalMuon()
333  << " TM " << outMuon.isTrackerMuon()
334  << " STA " << outMuon.isStandAloneMuon()
335  << " p4 " << outMuon.p4() << endl;
336  }
337 
338  // Add PF isolation info
339  if(fillPFIsolation_){
340  thePFIsoHelper->embedPFIsolation(outMuon,muRef);
341  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF03MapNames.begin(); map != theIsoPF03MapNames.end(); ++map)
342  pfIso03MapVals[map->first][i] = (*pfIso03Maps[map->first])[muRef];
343  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF04MapNames.begin(); map != theIsoPF04MapNames.end(); ++map)
344  pfIso04MapVals[map->first][i] = (*pfIso04Maps[map->first])[muRef];
345  }
346 
347 
348  // Fill timing information
349  if(fillTimingInfo_){
350  combinedTimeColl[i] = (*timeMapCmb)[muRef];
351  dtTimeColl[i] = (*timeMapDT)[muRef];
352  cscTimeColl[i] = (*timeMapCSC)[muRef];
353  }
354 
356  trackDepColl[i] = (*trackIsoDepMap)[muRef];
357  ecalDepColl[i] = (*ecalIsoDepMap)[muRef];
358  hcalDepColl[i] = (*hcalIsoDepMap)[muRef];
359  hoDepColl[i] = (*hoIsoDepMap)[muRef];
360  jetDepColl[i] = (*jetIsoDepMap)[muRef];;
361  }
362 
363  if(fillSelectors_){
364  unsigned int s = 0;
365  for(InputTags::const_iterator tag = theSelectorMapNames.begin();
366  tag != theSelectorMapNames.end(); ++tag, ++s)
367  selectorMapResults[s][i] = (*selectorMaps[s])[muRef];
368  }
369 
370  // Fill the Showering Info
371  if(fillShoweringInfo_) showerInfoColl[i] = (*showerInfoMap)[muRef];
372 
373  if(fillCosmicsIdMap_){
374  cosmicIdColl[i] = (*cosmicIdMap)[muRef];
375  cosmicCompColl[i] = (*cosmicCompMap)[muRef];
376  }
377 
378  outputMuons->push_back(outMuon);
379  ++i;
380  }
381 
382  dout << "Number of Muons in the new muon collection: " << outputMuons->size() << endl;
383  edm::OrphanHandle<reco::MuonCollection> muonHandle = event.put(outputMuons);
384 
385  if(fillTimingInfo_){
386  fillMuonMap<reco::MuonTimeExtra>(event, muonHandle, combinedTimeColl,"combined");
387  fillMuonMap<reco::MuonTimeExtra>(event, muonHandle, dtTimeColl,"dt");
388  fillMuonMap<reco::MuonTimeExtra>(event, muonHandle, cscTimeColl,"csc");
389  }
390 
392  fillMuonMap<reco::IsoDeposit>(event, muonHandle, trackDepColl, labelOrInstance(theTrackDepositName));
393  fillMuonMap<reco::IsoDeposit>(event, muonHandle, jetDepColl, labelOrInstance(theJetDepositName));
394  fillMuonMap<reco::IsoDeposit>(event, muonHandle, ecalDepColl, theEcalDepositName.instance());
395  fillMuonMap<reco::IsoDeposit>(event, muonHandle, hcalDepColl, theHcalDepositName.instance());
396  fillMuonMap<reco::IsoDeposit>(event, muonHandle, hoDepColl, theHoDepositName.instance());
397  }
398 
399  if(fillPFIsolation_){
400  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF03MapNames.begin(); map != theIsoPF03MapNames.end(); ++map)
401  fillMuonMap<double>(event, muonHandle, pfIso03MapVals[map->first], labelOrInstance(map->second));
402  for(std::map<std::string,edm::InputTag>::const_iterator map = theIsoPF04MapNames.begin(); map != theIsoPF04MapNames.end(); ++map)
403  fillMuonMap<double>(event, muonHandle, pfIso04MapVals[map->first], labelOrInstance(map->second));
404  }
405 
406  if(fillSelectors_){
407  unsigned int s = 0;
408  for(InputTags::const_iterator tag = theSelectorMapNames.begin();
409  tag != theSelectorMapNames.end(); ++tag, ++s)
410  fillMuonMap<bool>(event, muonHandle, selectorMapResults[s], labelOrInstance(*tag));
411  }
412 
413  if(fillShoweringInfo_) fillMuonMap<reco::MuonShower>(event, muonHandle, showerInfoColl, labelOrInstance(theShowerMapName));
414 
415  if(fillCosmicsIdMap_){
416  fillMuonMap<unsigned int>(event, muonHandle, cosmicIdColl, labelOrInstance(theCosmicCompMapName));
417  fillMuonMap<reco::MuonCosmicCompatibility>(event, muonHandle, cosmicCompColl, labelOrInstance(theCosmicCompMapName));
418  }
419 
420  fillMuonMap<reco::MuonRef>(event,inputMuonsOH, muonRefColl, theMuToMuMapName);
421 
422 
423 
424 }
425 
426 template<typename TYPE>
428  const edm::OrphanHandle<reco::MuonCollection>& muonHandle,
429  const std::vector<TYPE>& muonExtra,
430  const std::string& label){
431 
432  typedef typename edm::ValueMap<TYPE>::Filler FILLER;
433 
434  std::auto_ptr<edm::ValueMap<TYPE> > muonMap(new edm::ValueMap<TYPE>());
435  if(!muonExtra.empty()){
436  FILLER filler(*muonMap);
437  filler.insert(muonHandle, muonExtra.begin(), muonExtra.end());
438  filler.fill();
439  }
440  event.put(muonMap,label);
441 }
442 
443 
445  if(fastLabelling_) return input.label();
446 
447  return input.label() != theMuonsCollectionLabel.label() ? input.label() : input.instance();
448 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
virtual int pdgId() const
PDG identifier.
edm::InputTag theTrackDepositName
Definition: MuonProducer.h:79
std::map< reco::MuonRef, reco::Candidate::LorentzVector > MuToPFMap
Definition: MuonProducer.cc:41
const std::string metname
virtual ~MuonProducer()
Destructor.
bool isTrackerMuon() const
Definition: Muon.h:212
bool fillSelectors_
Definition: MuonProducer.h:71
#define dout
Definition: MuonProducer.cc:36
std::string theAlias
Definition: MuonProducer.h:53
#define abs(x)
Definition: mlp_lapack.h:159
bool isGlobalMuon() const
Definition: Muon.h:211
edm::InputTag theEcalDepositName
Definition: MuonProducer.h:80
bool isStandAloneMuon() const
Definition: Muon.h:213
reco::Candidate::LorentzVector pfP4() const
Definition: Muon.h:103
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
bool fillCosmicsIdMap_
Definition: MuonProducer.h:72
edm::ValueMap< reco::MuonShower > MuonShowerMap
Definition: MuonProducer.cc:44
dictionary map
Definition: Association.py:205
std::vector< PFCandidatePtr > pfCandidates(const PFJet &jet, int particleId, bool sort=true)
edm::InputTag thePFCandLabel
Definition: MuonProducer.h:67
std::map< std::string, edm::InputTag > theIsoPF03MapNames
Definition: MuonProducer.h:94
void fillMuonMap(edm::Event &event, const edm::OrphanHandle< reco::MuonCollection > &muonHandle, const std::vector< TYPE > &muonExtra, const std::string &label)
bool fillDetectorBasedIsolation_
Definition: MuonProducer.h:75
void setAlias(std::string alias)
Definition: MuonProducer.h:55
TypeLabelItem const & produces()
declare what type of product will make and with which optional label
edm::InputTag theMuonsCollectionLabel
Definition: MuonProducer.h:66
std::string labelOrInstance(const edm::InputTag &) const
edm::Ref< MuonCollection > MuonRef
presistent reference to a Muon
Definition: MuonFwd.h:13
edm::InputTag theShowerMapName
Definition: MuonProducer.h:87
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
edm::InputTag theHoDepositName
Definition: MuonProducer.h:82
bool fillTimingInfo_
Definition: MuonProducer.h:77
reco::MuonRef muonRef() const
Definition: PFCandidate.cc:355
std::vector< edm::InputTag > InputTags
Definition: MuonProducer.h:42
bool fillPFIsolation_
Definition: MuonProducer.h:74
InputTags theSelectorMapNames
Definition: MuonProducer.h:85
std::string theMuToMuMapName
Definition: MuonProducer.h:90
bool fillShoweringInfo_
Definition: MuonProducer.h:76
int embedPFIsolation(reco::Muon &, reco::MuonRef &)
std::map< std::string, edm::InputTag > theIsoPF04MapNames
Definition: MuonProducer.h:95
key_type key() const
Accessor for product key.
Definition: Ref.h:266
virtual void produce(edm::Event &, const edm::EventSetup &)
reconstruct muons
std::string const & label() const
Definition: InputTag.h:25
MuPFIsoHelper * thePFIsoHelper
Definition: MuonProducer.h:92
void beginEvent(const edm::Event &iEvent)
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:33
edm::InputTag theCosmicCompMapName
Definition: MuonProducer.h:88
MuonProducer(const edm::ParameterSet &)
Constructor.
Definition: MuonProducer.cc:49
bool fastLabelling_
Definition: MuonProducer.h:64
bool isPFMuon() const
Definition: Muon.h:215
edm::InputTag theHcalDepositName
Definition: MuonProducer.h:81
virtual void setPFP4(const reco::Candidate::LorentzVector &p4_)
Definition: Muon.cc:744
bool fillPFMomentum_
Definition: MuonProducer.h:73
ProductID id() const
Accessor for product ID.
Definition: Ref.h:256
boost::remove_cv< typename boost::remove_reference< argument_type >::type >::type key_type
Definition: Ref.h:170
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
std::string const & instance() const
Definition: InputTag.h:26
edm::InputTag theJetDepositName
Definition: MuonProducer.h:83