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

Comparing UserCode/MitHzz4l/LeptonSelection/src/IsolationSelection.cc (file contents):
Revision 1.1 by khahn, Mon Feb 13 09:35:20 2012 UTC vs.
Revision 1.2 by khahn, Fri Feb 17 14:49:00 2012 UTC

# Line 3 | Line 3
3   #include "IsolationSelection.h"
4   #include "IsolationSelectionDefs.h"
5  
6 + bool pairwiseIsoSelection( ControlFlags &ctrl, vector<SimpleLepton> &lepvec, float rho ) {
7 +
8 +  bool passiso=true;
9 +
10 +  for( int i=0; i<lepvec.size(); i++ )
11 +    {
12 +      
13 +      if( !(lepvec[i].is4l) ) continue;
14 +      
15 +      float effArea_ecal_i, effArea_hcal_i;
16 +      if( lepvec[i].isEB ) {
17 +        if( lepvec[i].type == 11 ) {
18 +          effArea_ecal_i = 0.101;
19 +          effArea_hcal_i = 0.021;
20 +        } else {
21 +          effArea_ecal_i = 0.074;
22 +          effArea_hcal_i = 0.022;
23 +        }
24 +      } else {
25 +        if( lepvec[i].type == 11 ) {
26 +          effArea_ecal_i = 0.046;
27 +          effArea_hcal_i = 0.040;
28 +        } else {
29 +          effArea_ecal_i = 0.045;
30 +          effArea_hcal_i = 0.030;
31 +        }
32 +      }
33 +      
34 +      float isoEcal_corr_i = lepvec[i].isoEcal - (effArea_ecal_i*rho);
35 +      float isoHcal_corr_i = lepvec[i].isoHcal - (effArea_hcal_i*rho);
36 +
37 +      for( int j=i+1; j<lepvec.size(); j++ )
38 +        {
39 +
40 +          if( !(lepvec[j].is4l) ) continue;
41 +
42 +          float effArea_ecal_j, effArea_hcal_j;
43 +          if( lepvec[j].isEB ) {
44 +            if( lepvec[j].type == 11 ) {
45 +              effArea_ecal_j = 0.101;
46 +              effArea_hcal_j = 0.021;
47 +            } else {
48 +              effArea_ecal_j = 0.074;
49 +              effArea_hcal_j = 0.022;
50 +            }
51 +          } else {
52 +            if( lepvec[j].type == 11 ) {
53 +              effArea_ecal_j = 0.046;
54 +              effArea_hcal_j = 0.040;
55 +            } else {
56 +              effArea_ecal_j = 0.045;
57 +              effArea_hcal_j = 0.030;
58 +            }
59 +          }
60 +
61 +          float isoEcal_corr_j = lepvec[j].isoEcal - (effArea_ecal_j*rho);
62 +          float isoHcal_corr_j = lepvec[j].isoHcal - (effArea_hcal_j*rho);
63 +          float RIso_i = (lepvec[i].isoTrk+isoEcal_corr_i+isoHcal_corr_i)/lepvec[i].vec->Pt();
64 +          float RIso_j = (lepvec[j].isoTrk+isoEcal_corr_j+isoHcal_corr_j)/lepvec[j].vec->Pt();      
65 +          float comboIso = RIso_i + RIso_j;
66 +          
67 +          if( comboIso > 0.35 ) {
68 +            if( ctrl.debug ) cout << "combo failing for indices: " << i << "," << j << endl;
69 +            passiso = false;
70 +            return passiso;
71 +          }
72 +        }
73 +    }
74 +  
75 +  return passiso;
76 + }
77 +
78 +
79   SelectionStatus passMuonIsoSelection( ControlFlags &ctrl, const mithep::TMuon * mu ) {
80  
81    float reliso = mu->pfIso03/mu->pt;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines