ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/ElectronIDMod.cc
Revision: 1.86
Committed: Mon May 2 16:54:58 2011 UTC (14 years ago) by ceballos
Content type: text/plain
Branch: MAIN
Changes since 1.85: +6 -1 lines
Log Message:
added fakeable objects

File Contents

# User Rev Content
1 ceballos 1.86 // $Id: ElectronIDMod.cc,v 1.85 2011/05/02 16:02:33 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 ceballos 1.8 fElectronIsoType("TrackJuraSliding"),
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     Double_t beta = IsolationTools::BetaE(tracks, ele, vertex, 0.0, 0.2, 0.3, 0.02);
187 ceballos 1.79 if(beta == 0) beta = 1.0;
188 ceballos 1.78 Double_t totalIso = IsolationTools::PFElectronIsolation(ele, fPFCandidates, vertex, 0.2, 0.5, 0.3, 0.02, 0, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
189 ceballos 1.76 if (totalIso < (ele->Pt()*fCombIsolationCut) )
190     isocut = kTRUE;
191     }
192     break;
193     case ElectronTools::kPFIsoNoL:
194     {
195     Double_t beta = IsolationTools::BetaE(tracks, ele, vertex, 0.0, 0.2, 0.3, 0.02);
196 ceballos 1.79 if(beta == 0) beta = 1.0;
197 ceballos 1.78 Double_t totalIso = IsolationTools::PFElectronIsolation(ele, fPFCandidates, vertex, 0.2, 0.5, 0.3, 0.02, 3, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
198 ceballos 1.74 if (totalIso < (ele->Pt()*fCombIsolationCut) )
199 sixie 1.42 isocut = kTRUE;
200     }
201     break;
202 sixie 1.56 case ElectronTools::kVBTFWorkingPoint95Iso:
203 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint95Iso, fApplyCombinedIso);
204 sixie 1.56 break;
205     case ElectronTools::kVBTFWorkingPoint90Iso:
206 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint90Iso, fApplyCombinedIso);
207 sixie 1.51 break;
208 ceballos 1.60 case ElectronTools::kVBTFWorkingPoint85Iso:
209 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint85Iso, fApplyCombinedIso);
210 ceballos 1.60 break;
211 sixie 1.56 case ElectronTools::kVBTFWorkingPoint80Iso:
212 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint80Iso, fApplyCombinedIso);
213 sixie 1.51 break;
214 sixie 1.56 case ElectronTools::kVBTFWorkingPoint70Iso:
215 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint70Iso, fApplyCombinedIso);
216 sixie 1.51 break;
217 sixie 1.56 case ElectronTools::kNoIso:
218 sixie 1.42 isocut = kTRUE;
219     break;
220 sixie 1.56 case ElectronTools::kCustomIso:
221 sixie 1.42 default:
222     break;
223     }
224    
225     return isocut;
226     }
227    
228    
229     //--------------------------------------------------------------------------------------------------
230 loizides 1.1 void ElectronIDMod::Process()
231     {
232     // Process entries of the tree.
233    
234 ceballos 1.76 if(fElIsoType != ElectronTools::kPFIsoNoL) {
235     LoadEventObject(fElectronBranchName, fElectrons);
236     }
237     else {
238     fElectrons = GetObjThisEvt<ElectronOArr>(fElectronBranchName);
239 ceballos 1.78 fNonIsolatedMuons = GetObjThisEvt<MuonCol>(fNonIsolatedMuonsName);
240     fNonIsolatedElectrons = GetObjThisEvt<ElectronCol>(fNonIsolatedElectronsName);
241 ceballos 1.76 }
242 bendavid 1.75 LoadEventObject(fBeamSpotName, fBeamSpot);
243 ceballos 1.76 LoadEventObject(fTrackName, fTracks);
244     LoadEventObject(fPFCandidatesName, fPFCandidates);
245 ceballos 1.80 if(fElIsoType == ElectronTools::kTrackJuraSliding) {
246     LoadEventObject(fPileupEnergyDensityName, fPileupEnergyDensity);
247     }
248 ceballos 1.76 fVertices = GetObjThisEvt<VertexOArr>(fVertexName);
249 loizides 1.1
250 bendavid 1.62 //get trigger object collection if trigger matching is enabled
251     const TriggerObjectCol *trigObjs = 0;
252     if (fApplyTriggerMatching) {
253     trigObjs = GetHLTObjects(fTrigObjectsName);
254     }
255    
256 loizides 1.6 ElectronOArr *GoodElectrons = new ElectronOArr;
257     GoodElectrons->SetName(fGoodElectronsName);
258 loizides 1.1
259 ceballos 1.18 for (UInt_t i=0; i<fElectrons->GetEntries(); ++i) {
260 loizides 1.5 const Electron *e = fElectrons->At(i);
261 loizides 1.1
262 ceballos 1.66 if (e->SCluster() == 0)
263     continue;
264    
265 ceballos 1.65 if (e->Pt() < fElectronPtMin)
266 loizides 1.5 continue;
267 loizides 1.1
268 dkralph 1.73 if (e->SCluster()->Et() < fElectronEtMin)
269 bendavid 1.67 continue;
270    
271 ceballos 1.65 if (e->AbsEta() > fElectronEtaMax)
272 ceballos 1.64 continue;
273    
274 bendavid 1.67 if (fApplyEcalFiducial && ( (e->SCluster()->AbsEta()>1.4442 && e->SCluster()->AbsEta()<1.5666) || e->SCluster()->AbsEta()>2.5 )) {
275     continue;
276     }
277    
278     if (fApplyEcalSeeded && !e->IsEcalDriven()) {
279     continue;
280     }
281    
282 bendavid 1.62 //apply trigger matching
283     Bool_t matchTrigger = fApplyTriggerMatching && ElectronTools::PassTriggerMatching(e,trigObjs);
284     if (fApplyTriggerMatching && !matchTrigger)
285     continue;
286    
287 sixie 1.55 //apply ECAL spike removal
288 sixie 1.56 Bool_t spikecut = ElectronTools::PassSpikeRemovalFilter(e);
289 sixie 1.57 if (fApplySpikeRemoval && !spikecut)
290 sixie 1.55 continue;
291    
292 sixie 1.42 //apply id cut
293     Bool_t idcut = PassIDCut(e, fElIdType);
294 loizides 1.5 if (!idcut)
295     continue;
296    
297 sixie 1.42 //apply Isolation Cut
298 ceballos 1.80 Double_t Rho = 0.0;
299     if(fElIsoType == ElectronTools::kTrackJuraSliding) {
300     Rho = fPileupEnergyDensity->At(0)->Rho();
301     }
302     Bool_t isocut = PassIsolationCut(e, fElIsoType, fTracks, fVertices->At(0), Rho);
303 sixie 1.42 if (!isocut)
304 loizides 1.5 continue;
305    
306 ceballos 1.60 // apply conversion filters
307     Bool_t passConvVetoType1 = kFALSE;
308     if (fApplyConvFilterType1) {
309 sixie 1.42 LoadEventObject(fConversionBranchName, fConversions);
310 ceballos 1.60 passConvVetoType1 = ElectronTools::PassConversionFilter(e, fConversions,
311 bendavid 1.82 fBeamSpot->At(0), 0, 1e-6, 2.0, kTRUE, kFALSE);
312 ceballos 1.12 }
313 ceballos 1.60 else {
314     passConvVetoType1 = kTRUE;
315     }
316    
317     if (passConvVetoType1 == kFALSE) continue;
318    
319     Bool_t passConvVetoType2 = kFALSE;
320     if (fApplyConvFilterType2) {
321     passConvVetoType2 = TMath::Abs(e->ConvPartnerDCotTheta()) >= 0.02 ||
322     TMath::Abs(e->ConvPartnerDist()) >= 0.02;
323     }
324     else {
325     passConvVetoType2 = kTRUE;
326     }
327 sixie 1.42
328 ceballos 1.60 if (passConvVetoType2 == kFALSE) continue;
329 ceballos 1.72
330 ceballos 1.60 // apply NExpectedHitsInner Cut
331     if(fNExpectedHitsInnerCut < 999 &&
332 ceballos 1.69 e->CorrectedNExpectedHitsInner() > fNExpectedHitsInnerCut) continue;
333 ceballos 1.60
334 sixie 1.42 // apply d0 cut
335 ceballos 1.15 if (fApplyD0Cut) {
336 ceballos 1.81 Bool_t passD0cut = kTRUE;
337     if(fWhichVertex >= -1) passD0cut = ElectronTools::PassD0Cut(e, fVertices, fD0Cut, fWhichVertex);
338     else passD0cut = ElectronTools::PassD0Cut(e, fBeamSpot, fD0Cut);
339 sixie 1.42 if (!passD0cut)
340 ceballos 1.24 continue;
341 ceballos 1.12 }
342    
343 ceballos 1.81 // apply dz cut
344     if (fApplyDZCut) {
345 ceballos 1.83 Bool_t passDZcut = ElectronTools::PassDZCut(e, fVertices, fDZCut, fWhichVertex);
346 ceballos 1.81 if (!passDZcut)
347     continue;
348     }
349    
350 ceballos 1.59 // apply charge filter
351 sixie 1.42 if(fChargeFilter == kTRUE) {
352 sixie 1.56 Bool_t passChargeFilter = ElectronTools::PassChargeFilter(e);
353 sixie 1.42 if (!passChargeFilter) continue;
354 ceballos 1.45 }
355    
356 ceballos 1.63 // apply full combined id, using Tight cuts
357 ceballos 1.59 if(fCombinedIdCut == kTRUE) {
358 ceballos 1.68 fVertices = GetObjThisEvt<VertexOArr>(fVertexName);
359 ceballos 1.59 LoadEventObject(fConversionBranchName, fConversions);
360 ceballos 1.63 Int_t result = ElectronTools::PassTightId(e, *&fVertices, fConversions, 2);
361 ceballos 1.59 if(result != 15) continue;
362     }
363    
364 loizides 1.5 // add good electron
365 ceballos 1.12 GoodElectrons->Add(e);
366 loizides 1.5 }
367 loizides 1.1
368 loizides 1.9 // sort according to pt
369     GoodElectrons->Sort();
370    
371 loizides 1.5 // add to event for other modules to use
372 loizides 1.6 AddObjThisEvt(GoodElectrons);
373 loizides 1.1 }
374    
375     //--------------------------------------------------------------------------------------------------
376     void ElectronIDMod::SlaveBegin()
377     {
378     // Run startup code on the computer (slave) doing the actual analysis. Here,
379 loizides 1.5 // we just request the electron collection branch.
380 loizides 1.1
381 ceballos 1.76 // In this case we cannot have a branch
382     if (fElectronIsoType.CompareTo("PFIsoNoL") != 0 ) {
383     ReqEventObject(fElectronBranchName, fElectrons,fElectronsFromBranch);
384     }
385     ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE);
386     ReqEventObject(fTrackName, fTracks, kTRUE);
387     ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
388 ceballos 1.80 if (fElectronIsoType.CompareTo("TrackJuraSliding") == 0 ) {
389     ReqEventObject(fPileupEnergyDensityName, fPileupEnergyDensity, kTRUE);
390     }
391 loizides 1.17
392 ceballos 1.59 if(fCombinedIdCut == kTRUE) {
393 ceballos 1.60 fElectronIDType = "NoId";
394     fElectronIsoType = "NoIso";
395     fApplyConvFilterType1 = kFALSE;
396     fApplyConvFilterType2 = kFALSE;
397     fApplyD0Cut = kFALSE;
398 ceballos 1.81 fApplyDZCut = kFALSE;
399 ceballos 1.59 }
400    
401 ceballos 1.60 if (fApplyConvFilterType1 || fCombinedIdCut == kTRUE)
402 loizides 1.23 ReqEventObject(fConversionBranchName, fConversions, kTRUE);
403 loizides 1.17
404 sixie 1.42 Setup();
405     }
406    
407     //--------------------------------------------------------------------------------------------------
408     void ElectronIDMod::Setup()
409     {
410     // Set all options properly before execution.
411    
412 loizides 1.5 if (fElectronIDType.CompareTo("Tight") == 0)
413 sixie 1.56 fElIdType = ElectronTools::kTight;
414 loizides 1.5 else if (fElectronIDType.CompareTo("Loose") == 0)
415 sixie 1.56 fElIdType = ElectronTools::kLoose;
416 loizides 1.5 else if (fElectronIDType.CompareTo("Likelihood") == 0)
417 sixie 1.56 fElIdType = ElectronTools::kLikelihood;
418 loizides 1.10 else if (fElectronIDType.CompareTo("NoId") == 0)
419 sixie 1.56 fElIdType = ElectronTools::kNoId;
420 sixie 1.42 else if (fElectronIDType.CompareTo("ZeeId") == 0)
421 sixie 1.56 fElIdType = ElectronTools::kZeeId;
422 sixie 1.51 else if (fElectronIDType.CompareTo("CustomLoose") == 0)
423 sixie 1.56 fElIdType = ElectronTools::kCustomIdLoose;
424 sixie 1.51 else if (fElectronIDType.CompareTo("CustomTight") == 0)
425 sixie 1.56 fElIdType = ElectronTools::kCustomIdTight;
426 ceballos 1.86 else if (fElectronIDType.CompareTo("VBTFWorkingPointFakeableId") == 0)
427     fElIdType = ElectronTools::kVBTFWorkingPointFakeableId;
428 sixie 1.55 else if (fElectronIDType.CompareTo("VBTFWorkingPoint95Id") == 0)
429 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint95Id;
430 sixie 1.51 else if (fElectronIDType.CompareTo("VBTFWorkingPoint90Id") == 0)
431 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint90Id;
432 sixie 1.51 else if (fElectronIDType.CompareTo("VBTFWorkingPoint80Id") == 0)
433 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint80Id;
434 ceballos 1.83 else if (fElectronIDType.CompareTo("VBTFWorkingPointLowPtId") == 0)
435     fElIdType = ElectronTools::kVBTFWorkingPointLowPtId;
436 ceballos 1.60 else if (fElectronIDType.CompareTo("VBTFWorkingPoint85Id") == 0)
437     fElIdType = ElectronTools::kVBTFWorkingPoint85Id;
438 sixie 1.51 else if (fElectronIDType.CompareTo("VBTFWorkingPoint70Id") == 0)
439 sixie 1.56 fElIdType = ElectronTools::kVBTFWorkingPoint70Id;
440 sixie 1.51
441 peveraer 1.29 else {
442 loizides 1.5 SendError(kAbortAnalysis, "SlaveBegin",
443     "The specified electron identification %s is not defined.",
444     fElectronIDType.Data());
445     return;
446     }
447 sixie 1.51
448 loizides 1.5 if (fElectronIsoType.CompareTo("TrackCalo") == 0 )
449 sixie 1.56 fElIsoType = ElectronTools::kTrackCalo;
450 loizides 1.5 else if (fElectronIsoType.CompareTo("TrackJura") == 0)
451 sixie 1.56 fElIsoType = ElectronTools::kTrackJura;
452 ceballos 1.49 else if(fElectronIsoType.CompareTo("TrackJuraCombined") == 0)
453 sixie 1.56 fElIsoType = ElectronTools::kTrackJuraCombined;
454 loizides 1.5 else if(fElectronIsoType.CompareTo("TrackJuraSliding") == 0)
455 sixie 1.56 fElIsoType = ElectronTools::kTrackJuraSliding;
456 ceballos 1.80 else if(fElectronIsoType.CompareTo("TrackJuraSlidingNoCorrection") == 0)
457     fElIsoType = ElectronTools::kTrackJuraSlidingNoCorrection;
458 ceballos 1.76 else if (fElectronIsoType.CompareTo("PFIso") == 0 )
459     fElIsoType = ElectronTools::kPFIso;
460     else if (fElectronIsoType.CompareTo("PFIsoNoL") == 0 )
461     fElIsoType = ElectronTools::kPFIsoNoL;
462 loizides 1.5 else if (fElectronIsoType.CompareTo("NoIso") == 0 )
463 sixie 1.56 fElIsoType = ElectronTools::kNoIso;
464 sixie 1.42 else if (fElectronIsoType.CompareTo("ZeeIso") == 0 )
465 sixie 1.56 fElIsoType = ElectronTools::kZeeIso;
466 sixie 1.55 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint95Iso") == 0 )
467 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint95Iso;
468 sixie 1.51 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint90Iso") == 0 )
469 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint90Iso;
470 ceballos 1.60 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint85Iso") == 0 )
471     fElIsoType = ElectronTools::kVBTFWorkingPoint85Iso;
472 sixie 1.51 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint80Iso") == 0 )
473 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint80Iso;
474 sixie 1.51 else if (fElectronIsoType.CompareTo("VBTFWorkingPoint70Iso") == 0 )
475 sixie 1.56 fElIsoType = ElectronTools::kVBTFWorkingPoint70Iso;
476 loizides 1.5 else if (fElectronIsoType.CompareTo("Custom") == 0 ) {
477 sixie 1.56 fElIsoType = ElectronTools::kCustomIso;
478 loizides 1.5 SendError(kWarning, "SlaveBegin",
479     "Custom electron isolation is not yet implemented.");
480     } else {
481     SendError(kAbortAnalysis, "SlaveBegin",
482     "The specified electron isolation %s is not defined.",
483     fElectronIsoType.Data());
484     return;
485     }
486 sixie 1.42
487 loizides 1.30
488     }
489 ceballos 1.77
490     //--------------------------------------------------------------------------------------------------
491     void ElectronIDMod::Terminate()
492     {
493     // Run finishing code on the computer (slave) that did the analysis
494     }