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" |
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 |
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 |
|
|