ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/ElectronIDMod.cc
Revision: 1.87
Committed: Thu May 12 21:31:02 2011 UTC (13 years, 11 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.86: +17 -8 lines
Log Message:
update to pfIso

File Contents

# User Rev Content
1 sixie 1.87 // $Id: ElectronIDMod.cc,v 1.86 2011/05/02 16:54:58 ceballos Exp $
2 loizides 1.1
3     #include "MitPhysics/Mods/interface/ElectronIDMod.h"
4 loizides 1.26 #include "MitAna/DataTree/interface/StableData.h"
5 ceballos 1.76 #include "MitAna/DataTree/interface/ElectronFwd.h"
6     #include "MitAna/DataTree/interface/MuonFwd.h"
7 loizides 1.26 #include "MitAna/DataTree/interface/VertexCol.h"
8 bendavid 1.62 #include "MitAna/DataTree/interface/TriggerObjectCol.h"
9 loizides 1.26 #include "MitAna/DataTree/interface/DecayParticleCol.h"
10 loizides 1.5 #include "MitPhysics/Init/interface/ModNames.h"
11 loizides 1.1
12     using namespace mithep;
13    
14     ClassImp(mithep::ElectronIDMod)
15    
16     //--------------------------------------------------------------------------------------------------
17 loizides 1.5 ElectronIDMod::ElectronIDMod(const char *name, const char *title) :
18 loizides 1.1 BaseMod(name,title),
19 loizides 1.5 fElectronBranchName(Names::gkElectronBrn),
20 ceballos 1.12 fConversionBranchName(Names::gkMvfConversionBrn),
21 loizides 1.5 fGoodElectronsName(ModNames::gkGoodElectronsName),
22 ceballos 1.78 fNonIsolatedMuonsName("random"),
23     fNonIsolatedElectronsName("random"),
24 ceballos 1.68 fVertexName(ModNames::gkGoodVertexesName),
25 bendavid 1.75 fBeamSpotName(Names::gkBeamSpotBrn),
26 ceballos 1.76 fTrackName(Names::gkTrackBrn),
27     fPFCandidatesName(Names::gkPFCandidatesBrn),
28 ceballos 1.31 fElectronIDType("CustomTight"),
29 sixie 1.87 fElectronIsoType("PFIso"),
30 bendavid 1.62 fTrigObjectsName("HLTModTrigObjs"),
31 loizides 1.1 fElectronPtMin(10),
32 bendavid 1.67 fElectronEtMin(0.0),
33 ceballos 1.64 fElectronEtaMax(2.5),
34 ceballos 1.70 fIDLikelihoodCut(0.75),
35 loizides 1.1 fTrackIsolationCut(5.0),
36     fCaloIsolationCut(5.0),
37 loizides 1.5 fEcalJuraIsoCut(5.0),
38     fHcalIsolationCut(5.0),
39 ceballos 1.74 fCombIsolationCut(0.10),
40 ceballos 1.60 fApplyConvFilterType1(kTRUE),
41     fApplyConvFilterType2(kFALSE),
42 bendavid 1.82 fNWrongHitsMax(0),
43 ceballos 1.60 fNExpectedHitsInnerCut(999),
44 ceballos 1.59 fCombinedIdCut(kFALSE),
45 sixie 1.58 fApplySpikeRemoval(kTRUE),
46 ceballos 1.18 fApplyD0Cut(kTRUE),
47 ceballos 1.81 fApplyDZCut(kTRUE),
48 ceballos 1.45 fChargeFilter(kTRUE),
49 ceballos 1.60 fD0Cut(0.020),
50 ceballos 1.81 fDZCut(0.20),
51     fWhichVertex(-1),
52 bendavid 1.62 fApplyTriggerMatching(kFALSE),
53 bendavid 1.67 fApplyEcalSeeded(kFALSE),
54     fApplyCombinedIso(kTRUE),
55     fApplyEcalFiducial(kFALSE),
56 ceballos 1.76 fElectronsFromBranch(kTRUE),
57 sixie 1.56 fElIdType(ElectronTools::kIdUndef),
58     fElIsoType(ElectronTools::kIsoUndef),
59 loizides 1.14 fElectrons(0),
60     fConversions(0),
61 bendavid 1.75 fVertices(0),
62 ceballos 1.76 fBeamSpot(0),
63     fTracks(0),
64     fPFCandidates(0),
65 ceballos 1.78 fNonIsolatedMuons(0),
66     fNonIsolatedElectrons(0),
67 ceballos 1.80 fLH(0),
68     fPileupEnergyDensityName(Names::gkPileupEnergyDensityBrn),
69     fPileupEnergyDensity(0)
70 loizides 1.1 {
71     // Constructor.
72     }
73    
74     //--------------------------------------------------------------------------------------------------
75 ceballos 1.77 Bool_t ElectronIDMod::Likelihood(const Electron *ele) const
76     {
77     LikelihoodMeasurements measurements;
78     measurements.pt = ele->Pt();
79     measurements.subdet = (fabs(ele->Eta())<1.479) ? 0 : 1;
80     measurements.deltaPhi = TMath::Abs(ele->DeltaPhiSuperClusterTrackAtVtx());
81     measurements.deltaEta = TMath::Abs(ele->DeltaEtaSuperClusterTrackAtVtx());
82     measurements.eSeedClusterOverPout = ele->ESeedClusterOverPout();
83     measurements.eSuperClusterOverP = ele->ESuperClusterOverP();
84     measurements.hadronicOverEm = ele->HadronicOverEm();
85     measurements.sigmaIEtaIEta = ele->CoviEtaiEta();
86     measurements.sigmaIPhiIPhi = TMath::Sqrt(ele->SCluster()->Seed()->CoviPhiiPhi());
87     measurements.fBrem = ele->FBrem();
88     measurements.nBremClusters = ele->NumberOfClusters() - 1;
89     double likelihood = fLH->result(measurements);
90    
91     if(likelihood > fIDLikelihoodCut) return kTRUE;
92     return kFALSE;
93     }
94    
95     //--------------------------------------------------------------------------------------------------
96 sixie 1.56 Bool_t ElectronIDMod::PassIDCut(const Electron *ele, ElectronTools::EElIdType idType) const
97 sixie 1.42 {
98    
99     Bool_t idcut = kFALSE;
100     switch (idType) {
101 sixie 1.56 case ElectronTools::kTight:
102 sixie 1.42 idcut = ele->PassTightID();
103     break;
104 sixie 1.56 case ElectronTools::kLoose:
105 sixie 1.42 idcut = ele->PassLooseID();
106     break;
107 sixie 1.56 case ElectronTools::kLikelihood:
108 ceballos 1.77 idcut = Likelihood(ele);
109 sixie 1.42 break;
110 sixie 1.56 case ElectronTools::kNoId:
111 sixie 1.42 idcut = kTRUE;
112     break;
113 sixie 1.56 case ElectronTools::kCustomIdLoose:
114     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kCustomIdLoose);
115 sixie 1.42 break;
116 sixie 1.56 case ElectronTools::kCustomIdTight:
117     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kCustomIdTight);
118 sixie 1.42 break;
119 ceballos 1.86 case ElectronTools::kVBTFWorkingPointFakeableId:
120     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPointFakeableId);
121     break;
122 sixie 1.56 case ElectronTools::kVBTFWorkingPoint95Id:
123     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint95Id);
124 ceballos 1.54 break;
125 sixie 1.56 case ElectronTools::kVBTFWorkingPoint90Id:
126     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint90Id);
127 ceballos 1.54 break;
128 ceballos 1.60 case ElectronTools::kVBTFWorkingPoint85Id:
129     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint85Id);
130     break;
131 sixie 1.56 case ElectronTools::kVBTFWorkingPoint80Id:
132     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint80Id);
133     break;
134 ceballos 1.83 case ElectronTools::kVBTFWorkingPointLowPtId:
135     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPointLowPtId);
136 ceballos 1.81 break;
137 sixie 1.56 case ElectronTools::kVBTFWorkingPoint70Id:
138     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint70Id);
139 ceballos 1.54 break;
140 sixie 1.42 default:
141     break;
142     }
143    
144     return idcut;
145     }
146    
147     //--------------------------------------------------------------------------------------------------
148 ceballos 1.76 Bool_t ElectronIDMod::PassIsolationCut(const Electron *ele, ElectronTools::EElIsoType isoType,
149 ceballos 1.80 const TrackCol *tracks, const Vertex *vertex,
150     const Double_t rho) const
151 sixie 1.42 {
152    
153     Bool_t isocut = kFALSE;
154     switch (isoType) {
155 sixie 1.56 case ElectronTools::kTrackCalo:
156 sixie 1.42 isocut = (ele->TrackIsolationDr03() < fTrackIsolationCut) &&
157     (ele->CaloIsolation() < fCaloIsolationCut);
158     break;
159 sixie 1.56 case ElectronTools::kTrackJura:
160 ceballos 1.85 isocut = (ele->TrackIsolationDr03() < ele->Pt()*fTrackIsolationCut) &&
161     (ele->EcalRecHitIsoDr03() < ele->Pt()*fEcalJuraIsoCut) &&
162     (ele->HcalTowerSumEtDr03() < ele->Pt()*fHcalIsolationCut);
163 sixie 1.42 break;
164 sixie 1.56 case ElectronTools::kTrackJuraCombined:
165 ceballos 1.60 isocut = (ele->TrackIsolationDr03() + ele->EcalRecHitIsoDr03()
166 ceballos 1.49 - 1.5 < fCombIsolationCut);
167     break;
168 sixie 1.56 case ElectronTools::kTrackJuraSliding:
169 sixie 1.42 {
170 ceballos 1.80 Double_t totalIso = ele->TrackIsolationDr03() + TMath::Max(ele->EcalRecHitIsoDr03() + ele->HcalTowerSumEtDr03() - rho * TMath::Pi() * 0.3 * 0.3, 0.0);
171     if(ele->SCluster()->AbsEta() < 1.479) totalIso = ele->TrackIsolationDr03() + TMath::Max(TMath::Max(ele->EcalRecHitIsoDr03() - 1.0, 0.0) + ele->HcalTowerSumEtDr03() - rho * TMath::Pi() * 0.3 * 0.3, 0.0);
172 ceballos 1.79 if (totalIso < (ele->Pt()*fCombIsolationCut) )
173     isocut = kTRUE;
174     }
175     break;
176 ceballos 1.80 case ElectronTools::kTrackJuraSlidingNoCorrection:
177 ceballos 1.79 {
178 ceballos 1.80 Double_t totalIso = ele->TrackIsolationDr03() + (ele->EcalRecHitIsoDr03() + ele->HcalTowerSumEtDr03());
179     if(ele->SCluster()->AbsEta() < 1.479) totalIso = ele->TrackIsolationDr03() + (TMath::Max(ele->EcalRecHitIsoDr03() - 1.0, 0.0) + ele->HcalTowerSumEtDr03());
180 ceballos 1.76 if (totalIso < (ele->Pt()*fCombIsolationCut) )
181     isocut = kTRUE;
182     }
183     break;
184     case ElectronTools::kPFIso:
185     {
186 sixie 1.87 Double_t pfIsoCutValue = 9999;
187     if (fabs(ele->SCluster()->Eta()) < 1.479) {
188     if (ele->Pt() > 20) {
189     pfIsoCutValue = 0.18;
190     } else {
191     pfIsoCutValue = 0.14;
192     }
193     } else {
194     pfIsoCutValue = 0.10;
195     }
196    
197     Double_t totalIso = IsolationTools::PFElectronIsolation(ele, fPFCandidates, vertex, 0.1, 1.0, 0.4, 0.0);
198     if (totalIso < (ele->Pt()*pfIsoCutValue) )
199     isocut = kTRUE;
200 ceballos 1.76 }
201     break;
202     case ElectronTools::kPFIsoNoL:
203     {
204     Double_t beta = IsolationTools::BetaE(tracks, ele, vertex, 0.0, 0.2, 0.3, 0.02);
205 ceballos 1.79 if(beta == 0) beta = 1.0;
206 sixie 1.87 Double_t totalIso = IsolationTools::PFElectronIsolation(ele, fPFCandidates, vertex, fNonIsolatedMuons, fNonIsolatedElectrons, 0.1, 1.0, 0.4, 0.0, 3, beta);
207 ceballos 1.74 if (totalIso < (ele->Pt()*fCombIsolationCut) )
208 sixie 1.42 isocut = kTRUE;
209     }
210     break;
211 sixie 1.56 case ElectronTools::kVBTFWorkingPoint95Iso:
212 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint95Iso, fApplyCombinedIso);
213 sixie 1.56 break;
214     case ElectronTools::kVBTFWorkingPoint90Iso:
215 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint90Iso, fApplyCombinedIso);
216 sixie 1.51 break;
217 ceballos 1.60 case ElectronTools::kVBTFWorkingPoint85Iso:
218 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint85Iso, fApplyCombinedIso);
219 ceballos 1.60 break;
220 sixie 1.56 case ElectronTools::kVBTFWorkingPoint80Iso:
221 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint80Iso, fApplyCombinedIso);
222 sixie 1.51 break;
223 sixie 1.56 case ElectronTools::kVBTFWorkingPoint70Iso:
224 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint70Iso, fApplyCombinedIso);
225 sixie 1.51 break;
226 sixie 1.56 case ElectronTools::kNoIso:
227 sixie 1.42 isocut = kTRUE;
228     break;
229 sixie 1.56 case ElectronTools::kCustomIso:
230 sixie 1.42 default:
231     break;
232     }
233    
234     return isocut;
235     }
236    
237    
238     //--------------------------------------------------------------------------------------------------
239 loizides 1.1 void ElectronIDMod::Process()
240     {
241     // Process entries of the tree.
242    
243 ceballos 1.76 if(fElIsoType != ElectronTools::kPFIsoNoL) {
244     LoadEventObject(fElectronBranchName, fElectrons);
245     }
246     else {
247     fElectrons = GetObjThisEvt<ElectronOArr>(fElectronBranchName);
248 ceballos 1.78 fNonIsolatedMuons = GetObjThisEvt<MuonCol>(fNonIsolatedMuonsName);
249     fNonIsolatedElectrons = GetObjThisEvt<ElectronCol>(fNonIsolatedElectronsName);
250 ceballos 1.76 }
251 bendavid 1.75 LoadEventObject(fBeamSpotName, fBeamSpot);
252 ceballos 1.76 LoadEventObject(fTrackName, fTracks);
253     LoadEventObject(fPFCandidatesName, fPFCandidates);
254 ceballos 1.80 if(fElIsoType == ElectronTools::kTrackJuraSliding) {
255     LoadEventObject(fPileupEnergyDensityName, fPileupEnergyDensity);
256     }
257 ceballos 1.76 fVertices = GetObjThisEvt<VertexOArr>(fVertexName);
258 loizides 1.1
259 bendavid 1.62 //get trigger object collection if trigger matching is enabled
260     const TriggerObjectCol *trigObjs = 0;
261     if (fApplyTriggerMatching) {
262     trigObjs = GetHLTObjects(fTrigObjectsName);
263     }
264    
265 loizides 1.6 ElectronOArr *GoodElectrons = new ElectronOArr;
266     GoodElectrons->SetName(fGoodElectronsName);
267 loizides 1.1
268 ceballos 1.18 for (UInt_t i=0; i<fElectrons->GetEntries(); ++i) {
269 loizides 1.5 const Electron *e = fElectrons->At(i);
270 loizides 1.1
271 ceballos 1.66 if (e->SCluster() == 0)
272     continue;
273    
274 ceballos 1.65 if (e->Pt() < fElectronPtMin)
275 loizides 1.5 continue;
276 loizides 1.1
277 dkralph 1.73 if (e->SCluster()->Et() < fElectronEtMin)
278 bendavid 1.67 continue;
279    
280 ceballos 1.65 if (e->AbsEta() > fElectronEtaMax)
281 ceballos 1.64 continue;
282    
283 bendavid 1.67 if (fApplyEcalFiducial && ( (e->SCluster()->AbsEta()>1.4442 && e->SCluster()->AbsEta()<1.5666) || e->SCluster()->AbsEta()>2.5 )) {
284     continue;
285     }
286    
287     if (fApplyEcalSeeded && !e->IsEcalDriven()) {
288     continue;
289     }
290    
291 bendavid 1.62 //apply trigger matching
292     Bool_t matchTrigger = fApplyTriggerMatching && ElectronTools::PassTriggerMatching(e,trigObjs);
293     if (fApplyTriggerMatching && !matchTrigger)
294     continue;
295    
296 sixie 1.55 //apply ECAL spike removal
297 sixie 1.56 Bool_t spikecut = ElectronTools::PassSpikeRemovalFilter(e);
298 sixie 1.57 if (fApplySpikeRemoval && !spikecut)
299 sixie 1.55 continue;
300    
301 sixie 1.42 //apply id cut
302     Bool_t idcut = PassIDCut(e, fElIdType);
303 loizides 1.5 if (!idcut)
304     continue;
305    
306 sixie 1.42 //apply Isolation Cut
307 ceballos 1.80 Double_t Rho = 0.0;
308     if(fElIsoType == ElectronTools::kTrackJuraSliding) {
309     Rho = fPileupEnergyDensity->At(0)->Rho();
310     }
311     Bool_t isocut = PassIsolationCut(e, fElIsoType, fTracks, fVertices->At(0), Rho);
312 sixie 1.42 if (!isocut)
313 loizides 1.5 continue;
314    
315 ceballos 1.60 // apply conversion filters
316     Bool_t passConvVetoType1 = kFALSE;
317     if (fApplyConvFilterType1) {
318 sixie 1.42 LoadEventObject(fConversionBranchName, fConversions);
319 ceballos 1.60 passConvVetoType1 = ElectronTools::PassConversionFilter(e, fConversions,
320 bendavid 1.82 fBeamSpot->At(0), 0, 1e-6, 2.0, kTRUE, kFALSE);
321 ceballos 1.12 }
322 ceballos 1.60 else {
323     passConvVetoType1 = kTRUE;
324     }
325    
326     if (passConvVetoType1 == kFALSE) continue;
327    
328     Bool_t passConvVetoType2 = kFALSE;
329     if (fApplyConvFilterType2) {
330     passConvVetoType2 = TMath::Abs(e->ConvPartnerDCotTheta()) >= 0.02 ||
331     TMath::Abs(e->ConvPartnerDist()) >= 0.02;
332     }
333     else {
334     passConvVetoType2 = kTRUE;
335     }
336 sixie 1.42
337 ceballos 1.60 if (passConvVetoType2 == kFALSE) continue;
338 ceballos 1.72
339 ceballos 1.60 // apply NExpectedHitsInner Cut
340     if(fNExpectedHitsInnerCut < 999 &&
341 ceballos 1.69 e->CorrectedNExpectedHitsInner() > fNExpectedHitsInnerCut) continue;
342 ceballos 1.60
343 sixie 1.42 // apply d0 cut
344 ceballos 1.15 if (fApplyD0Cut) {
345 ceballos 1.81 Bool_t passD0cut = kTRUE;
346     if(fWhichVertex >= -1) passD0cut = ElectronTools::PassD0Cut(e, fVertices, fD0Cut, fWhichVertex);
347     else passD0cut = ElectronTools::PassD0Cut(e, fBeamSpot, fD0Cut);
348 sixie 1.42 if (!passD0cut)
349 ceballos 1.24 continue;
350 ceballos 1.12 }
351    
352 ceballos 1.81 // apply dz cut
353     if (fApplyDZCut) {
354 ceballos 1.83 Bool_t passDZcut = ElectronTools::PassDZCut(e, fVertices, fDZCut, fWhichVertex);
355 ceballos 1.81 if (!passDZcut)
356     continue;
357     }
358    
359 ceballos 1.59 // apply charge filter
360 sixie 1.42 if(fChargeFilter == kTRUE) {
361 sixie 1.56 Bool_t passChargeFilter = ElectronTools::PassChargeFilter(e);
362 sixie 1.42 if (!passChargeFilter) continue;
363 ceballos 1.45 }
364    
365 ceballos 1.63 // apply full combined id, using Tight cuts
366 ceballos 1.59 if(fCombinedIdCut == kTRUE) {
367 ceballos 1.68 fVertices = GetObjThisEvt<VertexOArr>(fVertexName);
368 ceballos 1.59 LoadEventObject(fConversionBranchName, fConversions);
369 ceballos 1.63 Int_t result = ElectronTools::PassTightId(e, *&fVertices, fConversions, 2);
370 ceballos 1.59 if(result != 15) continue;
371     }
372    
373 loizides 1.5 // add good electron
374 ceballos 1.12 GoodElectrons->Add(e);
375 loizides 1.5 }
376 loizides 1.1
377 loizides 1.9 // sort according to pt
378     GoodElectrons->Sort();
379    
380 loizides 1.5 // add to event for other modules to use
381 loizides 1.6 AddObjThisEvt(GoodElectrons);
382 loizides 1.1 }
383    
384     //--------------------------------------------------------------------------------------------------
385     void ElectronIDMod::SlaveBegin()
386     {
387     // Run startup code on the computer (slave) doing the actual analysis. Here,
388 loizides 1.5 // we just request the electron collection branch.
389 loizides 1.1
390 ceballos 1.76 // In this case we cannot have a branch
391     if (fElectronIsoType.CompareTo("PFIsoNoL") != 0 ) {
392     ReqEventObject(fElectronBranchName, fElectrons,fElectronsFromBranch);
393     }
394     ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE);
395     ReqEventObject(fTrackName, fTracks, kTRUE);
396     ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
397 ceballos 1.80 if (fElectronIsoType.CompareTo("TrackJuraSliding") == 0 ) {
398     ReqEventObject(fPileupEnergyDensityName, fPileupEnergyDensity, kTRUE);
399     }
400 loizides 1.17
401 ceballos 1.59 if(fCombinedIdCut == kTRUE) {
402 ceballos 1.60 fElectronIDType = "NoId";
403     fElectronIsoType = "NoIso";
404     fApplyConvFilterType1 = kFALSE;
405     fApplyConvFilterType2 = kFALSE;
406     fApplyD0Cut = kFALSE;
407 ceballos 1.81 fApplyDZCut = kFALSE;
408 ceballos 1.59 }
409    
410 ceballos 1.60 if (fApplyConvFilterType1 || fCombinedIdCut == kTRUE)
411 loizides 1.23 ReqEventObject(fConversionBranchName, fConversions, kTRUE);
412 loizides 1.17
413 sixie 1.42 Setup();
414     }
415    
416     //--------------------------------------------------------------------------------------------------
417     void ElectronIDMod::Setup()
418     {
419     // Set all options properly before execution.
420    
421 loizides 1.5 if (fElectronIDType.CompareTo("Tight") == 0)
422 sixie 1.56 fElIdType = ElectronTools::kTight;
423 loizides 1.5 else if (fElectronIDType.CompareTo("Loose") == 0)
424 sixie 1.56 fElIdType = ElectronTools::kLoose;
425 loizides 1.5 else if (fElectronIDType.CompareTo("Likelihood") == 0)
426 sixie 1.56 fElIdType = ElectronTools::kLikelihood;
427 loizides 1.10 else if (fElectronIDType.CompareTo("NoId") == 0)
428 sixie 1.56 fElIdType = ElectronTools::kNoId;
429 sixie 1.42 else if (fElectronIDType.CompareTo("ZeeId") == 0)
430 sixie 1.56 fElIdType = ElectronTools::kZeeId;
431 sixie 1.51 else if (fElectronIDType.CompareTo("CustomLoose") == 0)
432 sixie 1.56 fElIdType = ElectronTools::kCustomIdLoose;
433 sixie 1.51 else if (fElectronIDType.CompareTo("CustomTight") == 0)
434 sixie 1.56 fElIdType = ElectronTools::kCustomIdTight;
435 ceballos 1.86 else if (fElectronIDType.CompareTo("VBTFWorkingPointFakeableId") == 0)
436     fElIdType = ElectronTools::kVBTFWorkingPointFakeableId;
437 sixie 1.55 else if (fElectronIDType.CompareTo("VBTFWorkingPoint95Id") == 0)
438 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint95Id;
439 sixie 1.51 else if (fElectronIDType.CompareTo("VBTFWorkingPoint90Id") == 0)
440 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint90Id;
441 sixie 1.51 else if (fElectronIDType.CompareTo("VBTFWorkingPoint80Id") == 0)
442 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint80Id;
443 ceballos 1.83 else if (fElectronIDType.CompareTo("VBTFWorkingPointLowPtId") == 0)
444     fElIdType = ElectronTools::kVBTFWorkingPointLowPtId;
445 ceballos 1.60 else if (fElectronIDType.CompareTo("VBTFWorkingPoint85Id") == 0)
446     fElIdType = ElectronTools::kVBTFWorkingPoint85Id;
447 sixie 1.51 else if (fElectronIDType.CompareTo("VBTFWorkingPoint70Id") == 0)
448 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint70Id;
449 sixie 1.51
450 peveraer 1.29 else {
451 loizides 1.5 SendError(kAbortAnalysis, "SlaveBegin",
452     "The specified electron identification %s is not defined.",
453     fElectronIDType.Data());
454     return;
455     }
456 sixie 1.51
457 loizides 1.5 if (fElectronIsoType.CompareTo("TrackCalo") == 0 )
458 sixie 1.56 fElIsoType = ElectronTools::kTrackCalo;
459 loizides 1.5 else if (fElectronIsoType.CompareTo("TrackJura") == 0)
460 sixie 1.56 fElIsoType = ElectronTools::kTrackJura;
461 ceballos 1.49 else if(fElectronIsoType.CompareTo("TrackJuraCombined") == 0)
462 sixie 1.56 fElIsoType = ElectronTools::kTrackJuraCombined;
463 loizides 1.5 else if(fElectronIsoType.CompareTo("TrackJuraSliding") == 0)
464 sixie 1.56 fElIsoType = ElectronTools::kTrackJuraSliding;
465 ceballos 1.80 else if(fElectronIsoType.CompareTo("TrackJuraSlidingNoCorrection") == 0)
466     fElIsoType = ElectronTools::kTrackJuraSlidingNoCorrection;
467 ceballos 1.76 else if (fElectronIsoType.CompareTo("PFIso") == 0 )
468     fElIsoType = ElectronTools::kPFIso;
469     else if (fElectronIsoType.CompareTo("PFIsoNoL") == 0 )
470     fElIsoType = ElectronTools::kPFIsoNoL;
471 loizides 1.5 else if (fElectronIsoType.CompareTo("NoIso") == 0 )
472 sixie 1.56 fElIsoType = ElectronTools::kNoIso;
473 sixie 1.42 else if (fElectronIsoType.CompareTo("ZeeIso") == 0 )
474 sixie 1.56 fElIsoType = ElectronTools::kZeeIso;
475 sixie 1.55 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint95Iso") == 0 )
476 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint95Iso;
477 sixie 1.51 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint90Iso") == 0 )
478 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint90Iso;
479 ceballos 1.60 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint85Iso") == 0 )
480     fElIsoType = ElectronTools::kVBTFWorkingPoint85Iso;
481 sixie 1.51 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint80Iso") == 0 )
482 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint80Iso;
483 sixie 1.51 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint70Iso") == 0 )
484 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint70Iso;
485 loizides 1.5 else if (fElectronIsoType.CompareTo("Custom") == 0 ) {
486 sixie 1.56 fElIsoType = ElectronTools::kCustomIso;
487 loizides 1.5 SendError(kWarning, "SlaveBegin",
488     "Custom electron isolation is not yet implemented.");
489     } else {
490     SendError(kAbortAnalysis, "SlaveBegin",
491     "The specified electron isolation %s is not defined.",
492     fElectronIsoType.Data());
493     return;
494     }
495 sixie 1.42
496 loizides 1.30
497     }
498 ceballos 1.77
499     //--------------------------------------------------------------------------------------------------
500     void ElectronIDMod::Terminate()
501     {
502     // Run finishing code on the computer (slave) that did the analysis
503     }