ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Utils/interface/ElectronTools.h
Revision: 1.33
Committed: Sun Jul 22 20:33:27 2012 UTC (12 years, 9 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.32: +4 -2 lines
Log Message:
add Post-ICHEP2012 ID+Iso Combined MVA

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id $
3 //
4 // ElectronTools
5 //
6 // Helper Class for electron Identification decisions.
7 //
8 // Authors: S.Xie
9 //--------------------------------------------------------------------------------------------------
10
11 #ifndef MITPHYSICS_UTILS_ELECTRONTOOLS_H
12 #define MITPHYSICS_UTILS_ELECTRONTOOLS_H
13
14 #include "MitAna/DataTree/interface/Electron.h"
15 #include "MitAna/DataTree/interface/DecayParticleCol.h"
16 #include "MitAna/DataTree/interface/VertexCol.h"
17 #include "MitAna/DataTree/interface/BeamSpotCol.h"
18 #include "MitAna/DataTree/interface/TriggerObjectCol.h"
19 #include "MitCommon/MathTools/interface/MathUtils.h"
20 #include "MitPhysics/ElectronLikelihood/interface/ElectronLikelihood.h"
21
22 namespace mithep {
23 class ElectronTools {
24 public:
25 ElectronTools();
26
27 enum EElIdType {
28 kIdUndef = 0, //not defined
29 kTight, //"Tight"
30 kLoose, //"Loose"
31 kLikelihood, //"Likelihood"
32 kNoId, //"NoId"
33 kZeeId, //"ZeeId"
34 kCustomIdLoose, //"CustomLoose"
35 kCustomIdTight, //"CustomTight"
36 kVBTFWorkingPointFakeableId,
37 kVBTFWorkingPoint95Id,
38 kVBTFWorkingPoint90Id,
39 kVBTFWorkingPoint85Id,
40 kVBTFWorkingPoint80Id,
41 kVBTFWorkingPointLowPtId,
42 kVBTFWorkingPoint70Id,
43 kMVAID_BDTG_NoIPInfo,
44 kMVAID_BDTG_WithIPInfo,
45 kMVAID_BDTG_IDIsoCombined,
46 kHggLeptonTagId,
47 kHggLeptonTagId2012,
48 kMVAID_BDTG_IDHWW2012TrigV0,
49 kMVAID_BDTG_IDIsoCombinedHWW2012TrigV4
50 };
51
52 enum EElIsoType {
53 kIsoUndef = 0, //"not defined"
54 kTrackCalo, //"TrackCalo"
55 kTrackJura, //"TrackJura"
56 kTrackJuraCombined, //"TrackJuraCombined"
57 kTrackJuraSliding, //"TrackJuraSliding"
58 kTrackJuraSlidingNoCorrection, //"TrackJuraSlidingNoCorrection"
59 kCombinedRelativeConeAreaCorrected, //"CombinedRelativeConeAreaCorrected"
60 kNoIso, //"NoIso"
61 kPFIso, //"PFIso"
62 kPFIsoNoL, //"PFIsoNoL"
63 kZeeIso, //"ZeeIso"
64 kCustomIso, //"Custom"
65 kVBTFWorkingPoint95Iso,
66 kVBTFWorkingPoint90Iso,
67 kVBTFWorkingPoint85Iso,
68 kVBTFWorkingPoint80Iso,
69 kVBTFWorkingPoint70Iso,
70 kMVAIso_BDTG_IDIsoCombined,
71 kPFIso_HWW2012TrigV0,
72 kPFIso_HggLeptonTag2012,
73 kMVAIso_BDTG_IDIsoCombinedHWW2012TrigV4
74 };
75
76 enum EElectronEffectiveAreaType {
77 kEleChargedIso03,
78 kEleNeutralHadronIso03,
79 kEleGammaAndNeutralHadronIso03,
80 kEleGammaIso03,
81 kEleGammaIsoVetoEtaStrip03,
82 kEleChargedIso04,
83 kEleNeutralHadronIso04,
84 kEleGammaAndNeutralHadronIso04,
85 kEleGammaIso04,
86 kEleGammaIsoVetoEtaStrip04,
87 kEleNeutralHadronIso007,
88 kEleNeutralIso04,
89 kEleHoverE,
90 kEleHcalDepth1OverEcal,
91 kEleHcalDepth2OverEcal,
92 kEleGammaIsoDR0p0To0p1,
93 kEleGammaIsoDR0p1To0p2,
94 kEleGammaIsoDR0p2To0p3,
95 kEleGammaIsoDR0p3To0p4,
96 kEleGammaIsoDR0p4To0p5,
97 kEleNeutralHadronIsoDR0p0To0p1,
98 kEleNeutralHadronIsoDR0p1To0p2,
99 kEleNeutralHadronIsoDR0p2To0p3,
100 kEleNeutralHadronIsoDR0p3To0p4,
101 kEleNeutralHadronIsoDR0p4To0p5
102 };
103
104 enum EElectronEffectiveAreaTarget {
105 kEleEANoCorr,
106 kEleEAData2011,
107 kEleEAData2012,
108 kEleEASummer11MC,
109 kEleEAFall11MC
110 };
111
112 static Bool_t PassChargeFilter(const Electron *el);
113 static Bool_t PassConversionFilter(const Electron *el, const DecayParticleCol *conversions,
114 const BaseVertex *vtx, UInt_t nWrongHitsMax=0, Double_t probMin=1e-6,
115 Double_t lxyMin = 2.0, Bool_t matchCkf = kTRUE, Bool_t requireArbitratedMerged = kFALSE, Double_t trkptMin = -99.);
116 static Bool_t PassCustomID(const Electron *el, EElIdType idType);
117 static Bool_t PassCustomIso(const Electron *el, EElIsoType isoType,
118 Bool_t useCombineIso = kTRUE);
119 static Bool_t PassD0Cut(const Electron *el, const VertexCol *vertices, Double_t fD0Cut, Int_t nVertex = 0);
120 static Bool_t PassD0Cut(const Electron *el, const BeamSpotCol *beamspots, Double_t fD0Cut);
121 static Bool_t PassDZCut(const Electron *el, const VertexCol *vertices, Double_t fDZCut, Int_t nVertex = 0);
122 static Bool_t PassSpikeRemovalFilter(const Electron *ele);
123 static Bool_t PassTriggerMatching(const Electron *ele, const TriggerObjectCol *trigobjs);
124 static Int_t Classify(const Electron *ele);
125 static Int_t PassTightId(const Electron *ele, const VertexCol *vertices,
126 const DecayParticleCol *conversions, const Int_t typeCuts,
127 Double_t beta = 1.0);
128 static bool compute_cut(double x, double et, double cut_min, double cut_max, bool gtn=false);
129 static Double_t Likelihood(ElectronLikelihood *LH, const Electron *ele);
130 static Double_t ElectronEffectiveArea(EElectronEffectiveAreaType type, Double_t Eta,
131 EElectronEffectiveAreaTarget EffectiveAreaTarget = kEleEAData2011);
132
133 static Bool_t PassHggLeptonTagID(const Electron *el);
134 static Bool_t PassHggLeptonTagID2012(const Electron *el);
135
136 ClassDef(ElectronTools, 0) // Muon tools
137 };
138 }
139
140 #endif