-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMuon.h
67 lines (48 loc) · 2.05 KB
/
Muon.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "math.h"
#include "TMath.h"
#include <vector>
#include "../src/SusyEvent.h"
using namespace std;
bool isIsolatedMuon(susy::Muon mu) {
float mu_iso = max(0., (mu.sumNeutralHadronEt04 + mu.sumPhotonEt04 - 0.5*(mu.sumPUPt04)));
mu_iso += mu.sumChargedHadronPt04;
return (mu_iso / mu.momentum.Pt() < 0.12);
}
bool isAntiIsolatedMuon(susy::Muon mu) {
float mu_iso = max(0., (mu.sumNeutralHadronEt04 + mu.sumPhotonEt04 - 0.5*(mu.sumPUPt04)));
mu_iso += mu.sumChargedHadronPt04;
return (mu_iso / mu.momentum.Pt() > 0.25 * 0.9 && mu_iso / mu.momentum.Pt() < 1.0); // hard-cut on -10%, and require 0.25 in CreateHistograms.h
}
// This doesn't check for relIso! Muons passing this are either signal or QCD muon candidates
bool isTightMuon(susy::Muon mu, vector<susy::Track> tracks, double d0, double dz) {
float mu_iso = max(0., (mu.sumNeutralHadronEt04 + mu.sumPhotonEt04 - 0.5*(mu.sumPUPt04)));
mu_iso += mu.sumChargedHadronPt04;
bool hasTracks = (int)mu.trackIndex < (int)tracks.size() &&
(int)mu.standAloneTrackIndex < (int)tracks.size() &&
(int)mu.combinedTrackIndex < (int)tracks.size() &&
(int)mu.bestTrackIndex() < (int)tracks.size() &&
(int)mu.bestTrackIndex() >= 0;
if(!hasTracks) return false;
bool passes = mu.isGlobalMuon() &&
mu.isPFMuon() &&
tracks[mu.combinedTrackIndex].normChi2() < 10. &&
mu.nValidMuonHits > 0 &&
mu.nMatchedStations > 1 &&
fabs(d0) < 0.2 &&
fabs(dz) < 0.5 &&
tracks[mu.trackIndex].numberOfValidPixelHits > 0 &&
(mu.nPixelLayersWithMeasurement + mu.nStripLayersWithMeasurement) > 5 &&
mu.momentum.Pt() > 30. &&
fabs(mu.momentum.Eta()) < 2.1;
return passes;
}
bool isVetoMuon(susy::Muon mu) {
float mu_iso = max(0., (mu.sumNeutralHadronEt04 + mu.sumPhotonEt04 - 0.5*(mu.sumPUPt04)));
mu_iso += mu.sumChargedHadronPt04;
bool passes = (mu.isPFMuon() &&
(mu.isGlobalMuon() || mu.isTrackerMuon()) &&
mu.momentum.Pt() > 10. && // (ttH(bb) for now)
fabs(mu.momentum.Eta()) < 2.5 &&
mu_iso / mu.momentum.Pt() < 0.2);
return passes;
}