ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/BestMuonFinder.cc
(Generate patch)

Comparing UserCode/L1RpcTriggerAnalysis/src/BestMuonFinder.cc (file contents):
Revision 1.2 by konec, Sun Dec 4 15:36:14 2011 UTC vs.
Revision 1.5 by konec, Mon May 21 10:50:08 2012 UTC

# Line 13 | Line 13
13   #include "DataFormats/TrackReco/interface/Track.h"
14  
15   #include "UserCode/L1RpcTriggerAnalysis/interface/Utilities.h"
16 + #include "DataFormats/Math/interface/deltaR.h"
17 + #include "DataFormats/Math/interface/deltaPhi.h"
18   #include "TObjArray.h"
19   #include "TH1D.h"
20   #include "TH2D.h"
# Line 47 | Line 49 | bool BestMuonFinder::run(const edm::Even
49    
50    for (reco::MuonCollection::const_iterator im = muons->begin(); im != muons->end(); ++im) {
51  
50 //
51 // FIXME - UNCOMMENT SELECTED LINES
52 //
53
54
52      if (!im->isTrackerMuon() || !im->innerTrack().isNonnull()) continue;
53      if (hMuPtVsEta) hMuPtVsEta->Fill(im->innerTrack()->eta(), im->innerTrack()->pt());
54      if (im->innerTrack()->pt() < theConfig.getParameter<double>("minPt")) continue;
55      if (fabs(im->innerTrack()->eta()) >  theConfig.getParameter<double>("maxEta")) continue;
56 +    if (im->innerTrack()->dxy(reference) >  theConfig.getParameter<double>("maxTIP")) continue;
57      if (hMuChi2Tk) hMuChi2Tk->Fill(im->innerTrack()->normalizedChi2());
58      if (im->innerTrack()->normalizedChi2() >  theConfig.getParameter<double>("maxChi2Tk")) continue;
59      if (hMuChi2Gl && im->isGlobalMuon()) hMuChi2Gl->Fill(im->combinedMuon()->normalizedChi2());
62 /*
63    if (im->innerTrack()->dxy(reference) >  theConfig.getParameter<double>("maxTIP")) continue;
60      if (    theConfig.getParameter<bool>("requireOuterTrack")){
61 <          if(!im->isStandAloneMuon() || !im->outerTrack().isNonnull())continue;
61 >        if(!im->isStandAloneMuon() || !im->outerTrack().isNonnull())continue;
62            if(im->standAloneMuon()->normalizedChi2() >  theConfig.getParameter<double>("maxChi2Sa")) continue;
63      }
64      if ( theConfig.getParameter<bool>("requireGlobalTrack")) {
65            if(!im->isGlobalMuon() ||  !im->globalTrack().isNonnull()) continue;  
66            if(im->combinedMuon()->normalizedChi2() >  theConfig.getParameter<double>("maxChi2Mu")) continue;
67      }
68 < */
68 >
69 >    if (im->numberOfMatchedStations() <  theConfig.getParameter<int>("minNumberOfMatchedStations")) continue;
70 >    if (! (im->track()->hitPattern().numberOfValidPixelHits() > 0)) continue;
71 >
72   //
73   // TMP TIGHT SELECTION FOR IVAN
74 <  if (! im->isGlobalMuon()) continue;
75 <  if (! (im->globalTrack()->normalizedChi2() < 10)) continue;
76 <  if (! (im->globalTrack()->hitPattern().numberOfValidMuonHits() > 0)) continue;
77 <  if (! (im->numberOfMatchedStations() > 1)) continue;
78 <  if (! (fabs(im->innerTrack()->dxy(reference)) < 0.2)) continue;
79 <  if (! (im->track()->hitPattern().numberOfValidPixelHits() > 0)) continue;
80 <  if (! (im->track()->hitPattern().numberOfValidTrackerHits() > 10)) continue;
74 > //  if (! im->isGlobalMuon()) continue;
75 > //  if (! (im->globalTrack()->normalizedChi2() < 10)) continue;
76 > //  if (! (im->globalTrack()->hitPattern().numberOfValidMuonHits() > 0)) continue;
77 > //  if (! (im->numberOfMatchedStations() > 1)) continue;
78 > //  if (! (fabs(im->innerTrack()->dxy(reference)) < 0.2)) continue;
79 > //  if (! (im->track()->hitPattern().numberOfValidPixelHits() > 0)) continue;
80 > //  if (! (im->track()->hitPattern().numberOfValidTrackerHits() > 10)) continue;
81   // TMP END OF TIGHT MUON SELECTION FROM IVAN
82  
83      //remove muons without valid hits in tk and mu system
# Line 100 | Line 99 | bool BestMuonFinder::run(const edm::Even
99      if (nCSCHits==0 && hMuHitsRPCvsDT) hMuHitsRPCvsDT->Fill(nDTHits,nRPCHits);
100      }
101  
103 /*
102      if (nTrackerHits< theConfig.getParameter<int>("minNumberTrackerHits")) continue;
103      if ( nRPCHits < theConfig.getParameter<int>("minNumberRpcHits")) continue;
104      if ( nDTHits + nCSCHits < theConfig.getParameter<int>("minNumberDtCscHits")  ) continue;
107 */
105  
109    if (theMuon) theUnique = false;
106      if (!theMuon || (im->track()->pt() > theMuon->track()->pt()) ) theMuon = &(*im);
107    }
108 +
109 +  //
110 +  // check if muon is unigue
111 +  //
112 +  if (theMuon) {
113 +    double muonEta = theMuon->innerTrack()->eta();
114 +    double muonPhi = theMuon->innerTrack()->phi();
115 +    for (reco::MuonCollection::const_iterator im = muons->begin(); im != muons->end(); ++im) {
116 +      if (!im->isTrackerMuon() || !im->innerTrack().isNonnull()) continue;
117 +      if (&(*im) == theMuon) continue;
118 +      if ( fabs(reco::deltaPhi(muonPhi, im->innerTrack()->phi())) > theConfig.getParameter<double>("deltaPhiUnique")) continue;
119 +      if ( fabs(muonEta-im->innerTrack()->eta()) > theConfig.getParameter<double>("deltaEtaUnique")) continue;
120 +      theUnique = false;
121 +    }
122 +  }
123    return true;
124   }
125  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines