22 |
|
fBeamSpotName(Names::gkBeamSpotBrn), |
23 |
|
fTrackName(Names::gkTrackBrn), |
24 |
|
fPFCandidatesName(Names::gkPFCandidatesBrn), |
25 |
< |
fMuonIDType("WWMuId"), |
26 |
< |
fMuonIsoType("TrackCaloSliding"), |
25 |
> |
fMuonIDType("WWMuIdV1"), |
26 |
> |
fMuonIsoType("PFIso"), |
27 |
|
fMuonClassType("Global"), |
28 |
|
fTrackIsolationCut(3.0), |
29 |
|
fCaloIsolationCut(3.0), |
30 |
|
fCombIsolationCut(0.15), |
31 |
+ |
fCombRelativeIsolationCut(0.15), |
32 |
+ |
fPFIsolationCut(-1.0), |
33 |
|
fMuonPtMin(10), |
34 |
|
fApplyD0Cut(kTRUE), |
35 |
|
fApplyDZCut(kTRUE), |
36 |
|
fD0Cut(0.020), |
37 |
< |
fDZCut(0.20), |
37 |
> |
fDZCut(0.10), |
38 |
|
fWhichVertex(-1), |
39 |
|
fEtaCut(2.4), |
40 |
|
fMuIDType(kIdUndef), |
67 |
|
LoadEventObject(fBeamSpotName, fBeamSpot); |
68 |
|
LoadEventObject(fTrackName, fTracks); |
69 |
|
LoadEventObject(fPFCandidatesName, fPFCandidates); |
70 |
< |
if(fMuIsoType == kTrackCaloSliding) { |
70 |
> |
if(fMuIsoType == kTrackCaloSliding || fMuIsoType == kCombinedRelativeConeAreaCorrected) { |
71 |
|
LoadEventObject(fPileupEnergyDensityName, fPileupEnergyDensity); |
72 |
|
} |
73 |
|
MuonOArr *CleanMuons = new MuonOArr; |
100 |
|
eta = TMath::Abs(mu->Eta()); |
101 |
|
} |
102 |
|
break; |
103 |
+ |
case kGlobalTracker: |
104 |
+ |
pass = (mu->HasGlobalTrk() && mu->GlobalTrk()->Chi2()/mu->GlobalTrk()->Ndof() < 10 && |
105 |
+ |
(mu->NSegments() > 1 || mu->NMatches() > 1) && mu->NValidHits() > 0) || |
106 |
+ |
(mu->IsTrackerMuon() && |
107 |
+ |
mu->Quality().Quality(MuonQuality::TMLastStationTight)); |
108 |
+ |
if (pass) { |
109 |
+ |
pt = mu->TrackerTrk()->Pt(); |
110 |
+ |
eta = TMath::Abs(mu->TrackerTrk()->Eta()); |
111 |
+ |
} |
112 |
+ |
else { |
113 |
+ |
pt = mu->Pt(); |
114 |
+ |
eta = TMath::Abs(mu->Eta()); |
115 |
+ |
} |
116 |
+ |
break; |
117 |
|
case kSta: |
118 |
|
pass = mu->HasStandaloneTrk(); |
119 |
|
if (pass) { |
196 |
|
RChi2 < 10.0 && |
197 |
|
mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight); |
198 |
|
break; |
199 |
< |
case kWWMuId: |
199 |
> |
case kWWMuIdV1: |
200 |
|
idpass = mu->BestTrk() != 0 && |
201 |
|
mu->BestTrk()->NHits() > 10 && |
202 |
+ |
mu->BestTrk()->NPixelHits() > 0 && |
203 |
+ |
mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1 && |
204 |
|
RChi2 < 10.0 && |
205 |
|
(mu->NSegments() > 1 || mu->NMatches() > 1) && |
206 |
+ |
mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight); |
207 |
+ |
break; |
208 |
+ |
case kWWMuIdV2: |
209 |
+ |
idpass = mu->BestTrk() != 0 && |
210 |
+ |
mu->BestTrk()->NHits() > 10 && |
211 |
|
mu->BestTrk()->NPixelHits() > 0 && |
189 |
– |
mu->Quality().Quality(MuonQuality::GlobalMuonPromptTight) && |
212 |
|
mu->BestTrk()->PtErr()/mu->BestTrk()->Pt() < 0.1; |
213 |
|
break; |
214 |
+ |
|
215 |
|
case kNoId: |
216 |
|
idpass = kTRUE; |
217 |
|
break; |
236 |
|
case kTrackCaloSliding: |
237 |
|
{ |
238 |
|
const PileupEnergyDensity *rho = fPileupEnergyDensity->At(0); |
239 |
< |
Double_t totalIso = mu->IsoR03SumPt() + TMath::Max(mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3, 0.0); |
239 |
> |
Double_t totalIso = mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3 ; |
240 |
|
// trick to change the signal region cut |
241 |
|
double theIsoCut = fCombIsolationCut; |
242 |
|
if(theIsoCut < 0.20){ |
260 |
|
if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE; |
261 |
|
} |
262 |
|
break; |
263 |
+ |
case kCombinedRelativeConeAreaCorrected: |
264 |
+ |
{ |
265 |
+ |
const PileupEnergyDensity *rho = fPileupEnergyDensity->At(0); |
266 |
+ |
Double_t totalIso = mu->IsoR03SumPt() + mu->IsoR03EmEt() + mu->IsoR03HadEt() - rho->Rho() * TMath::Pi() * 0.3 * 0.3 ; |
267 |
+ |
double theIsoCut = fCombRelativeIsolationCut; |
268 |
+ |
if (totalIso < (mu->Pt()*theIsoCut)) isocut = kTRUE; |
269 |
+ |
} |
270 |
+ |
break; |
271 |
|
case kPFIso: |
272 |
< |
{ |
273 |
< |
Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02); |
274 |
< |
if(beta == 0) beta = 1.0; |
275 |
< |
Double_t totalIso = IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.2, 0.5, 0.3, 0.02, 0, beta, fNonIsolatedMuons, fNonIsolatedElectrons); |
276 |
< |
if (totalIso < (mu->Pt()*fCombIsolationCut) ) |
272 |
> |
{ |
273 |
> |
Double_t pfIsoCutValue = 9999; |
274 |
> |
if(fPFIsolationCut > 0){ |
275 |
> |
pfIsoCutValue = fPFIsolationCut; |
276 |
> |
} else { |
277 |
> |
if (mu->AbsEta() < 1.479) { |
278 |
> |
if (mu->Pt() > 20) { |
279 |
> |
pfIsoCutValue = 0.13; |
280 |
> |
} else { |
281 |
> |
pfIsoCutValue = 0.06; |
282 |
> |
} |
283 |
> |
} else { |
284 |
> |
if (mu->Pt() > 20) { |
285 |
> |
pfIsoCutValue = 0.09; |
286 |
> |
} else { |
287 |
> |
pfIsoCutValue = 0.05; |
288 |
> |
} |
289 |
> |
} |
290 |
> |
} |
291 |
> |
Double_t totalIso = IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.1, 1.0, 0.3, 0.0); |
292 |
> |
if (totalIso < (mu->Pt()*pfIsoCutValue) ) |
293 |
|
isocut = kTRUE; |
294 |
|
} |
295 |
|
break; |
300 |
|
|
301 |
|
Double_t beta = IsolationTools::BetaM(fTracks, mu, fVertices->At(0), 0.0, 0.2, 0.3, 0.02); |
302 |
|
if(beta == 0) beta = 1.0; |
303 |
< |
Double_t totalIso = IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), 0.2, 0.5, 0.3, 0.02, 3, beta, fNonIsolatedMuons, fNonIsolatedElectrons); |
304 |
< |
if (totalIso < (mu->Pt()*fCombIsolationCut) ) |
303 |
> |
Double_t totalIso = IsolationTools::PFMuonIsolation(mu, fPFCandidates, fVertices->At(0), fNonIsolatedMuons, fNonIsolatedElectrons, 0.2, 1.0, 0.4, 0.0, 3); |
304 |
> |
if (totalIso < (mu->Pt()*fPFIsolationCut) ) |
305 |
|
isocut = kTRUE; |
306 |
|
} |
307 |
|
break; |
360 |
|
ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE); |
361 |
|
ReqEventObject(fTrackName, fTracks, kTRUE); |
362 |
|
ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE); |
363 |
< |
if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0) { |
363 |
> |
if (fMuonIsoType.CompareTo("TrackCaloSliding") == 0 |
364 |
> |
|| fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0) { |
365 |
|
ReqEventObject(fPileupEnergyDensityName, fPileupEnergyDensity, kTRUE); |
366 |
|
} |
367 |
|
|
373 |
|
fMuIDType = kTight; |
374 |
|
else if (fMuonIDType.CompareTo("Loose") == 0) |
375 |
|
fMuIDType = kLoose; |
376 |
< |
else if (fMuonIDType.CompareTo("WWMuId") == 0) |
377 |
< |
fMuIDType = kWWMuId; |
376 |
> |
else if (fMuonIDType.CompareTo("WWMuIdV1") == 0) |
377 |
> |
fMuIDType = kWWMuIdV1; |
378 |
> |
else if (fMuonIDType.CompareTo("WWMuIdV2") == 0) |
379 |
> |
fMuIDType = kWWMuIdV2; |
380 |
|
else if (fMuonIDType.CompareTo("NoId") == 0) |
381 |
|
fMuIDType = kNoId; |
382 |
|
else if (fMuonIDType.CompareTo("Custom") == 0) { |
398 |
|
fMuIsoType = kTrackCaloSliding; |
399 |
|
else if (fMuonIsoType.CompareTo("TrackCaloSlidingNoCorrection") == 0) |
400 |
|
fMuIsoType = kTrackCaloSlidingNoCorrection; |
401 |
+ |
else if (fMuonIsoType.CompareTo("CombinedRelativeConeAreaCorrected") == 0) |
402 |
+ |
fMuIsoType = kCombinedRelativeConeAreaCorrected; |
403 |
|
else if (fMuonIsoType.CompareTo("PFIso") == 0) |
404 |
|
fMuIsoType = kPFIso; |
405 |
|
else if (fMuonIsoType.CompareTo("PFIsoNoL") == 0) |
421 |
|
fMuClassType = kAll; |
422 |
|
else if (fMuonClassType.CompareTo("Global") == 0) |
423 |
|
fMuClassType = kGlobal; |
424 |
+ |
else if (fMuonClassType.CompareTo("GlobalTracker") == 0) |
425 |
+ |
fMuClassType = kGlobalTracker; |
426 |
|
else if (fMuonClassType.CompareTo("Standalone") == 0) |
427 |
|
fMuClassType = kSta; |
428 |
|
else if (fMuonClassType.CompareTo("TrackerMuon") == 0) |