21 |
|
fMuons(0), |
22 |
|
fTrackIsolationCut(3.0), |
23 |
|
fCaloIsolationCut(3.0), |
24 |
+ |
fMuonPtMin(10), |
25 |
|
fNEventsProcessed(0) |
26 |
|
{ |
27 |
|
// Constructor. |
62 |
|
else if (mu->TrackerTrk()) |
63 |
|
MuonClass = 2; |
64 |
|
|
65 |
< |
//These cuts are from the 1.6.X analysis. I'm waiting for Phil to finalize his Muon ID class |
66 |
< |
const int nCuts = 4; |
67 |
< |
double cutValue[nCuts] = {0.2, fTrackIsolationCut, fCaloIsolationCut, 1.5 }; |
68 |
< |
bool passCut[nCuts] = {false, false, false, false}; |
69 |
< |
double muonD0 = fabs(mu->BestTrk()->D0()); |
70 |
< |
if(muonD0 < cutValue[0] && MuonClass == 0 ) |
70 |
< |
passCut[0] = true; |
71 |
< |
if(mu->IsoR03SumPt() < cutValue[1]) passCut[1] = true; |
65 |
> |
bool allCuts = false; |
66 |
> |
|
67 |
> |
if(MuonClass == 0) allCuts = true; |
68 |
> |
|
69 |
> |
if(mu->IsoR03SumPt() >= fTrackIsolationCut) allCuts = false; |
70 |
> |
|
71 |
|
if(mu->IsoR03EmEt() + |
72 |
< |
mu->IsoR03HadEt() < cutValue[2]) passCut[2] = true; |
73 |
< |
if(mu->Pt() > 10) |
74 |
< |
passCut[3] = true; |
75 |
< |
|
76 |
< |
// Final decision |
78 |
< |
bool allCuts = true; |
79 |
< |
for(int c=0; c<nCuts; c++) { |
80 |
< |
allCuts = allCuts & passCut[c]; |
81 |
< |
} |
82 |
< |
|
83 |
< |
if ( allCuts |
84 |
< |
&& abs(mu->Eta()) < 2.5 |
85 |
< |
) { |
72 |
> |
mu->IsoR03HadEt() >= fCaloIsolationCut) allCuts = false; |
73 |
> |
|
74 |
> |
if(mu->Pt() <= fMuonPtMin) allCuts = false; |
75 |
> |
|
76 |
> |
if(allCuts) { |
77 |
|
CleanMuons->Add(mu); |
78 |
|
} |
79 |
|
} |