ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/ElectronIDMod.cc
Revision: 1.80
Committed: Fri Mar 11 15:13:09 2011 UTC (14 years, 1 month ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_020pre1
Changes since 1.79: +29 -15 lines
Log Message:
new

File Contents

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