ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/Mods/src/ElectronIDMod.cc
Revision: 1.82
Committed: Mon Apr 4 23:43:29 2011 UTC (14 years, 1 month ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.81: +3 -3 lines
Log Message:
make conversion rejection defaults agree with new smurf working point

File Contents

# User Rev Content
1 bendavid 1.82 // $Id: ElectronIDMod.cc,v 1.81 2011/03/15 12:02:20 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 sixie 1.56 case ElectronTools::kVBTFWorkingPoint95Id:
120     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint95Id);
121 ceballos 1.54 break;
122 sixie 1.56 case ElectronTools::kVBTFWorkingPoint90Id:
123     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint90Id);
124 ceballos 1.54 break;
125 ceballos 1.60 case ElectronTools::kVBTFWorkingPoint85Id:
126     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint85Id);
127     break;
128 sixie 1.56 case ElectronTools::kVBTFWorkingPoint80Id:
129     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint80Id);
130     break;
131 ceballos 1.81 case ElectronTools::kVBTFWorkingPoint80LowPtId:
132     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint80LowPtId);
133     break;
134 sixie 1.56 case ElectronTools::kVBTFWorkingPoint70Id:
135     idcut = ElectronTools::PassCustomID(ele, ElectronTools::kVBTFWorkingPoint70Id);
136 ceballos 1.54 break;
137 sixie 1.42 default:
138     break;
139     }
140    
141     return idcut;
142     }
143    
144     //--------------------------------------------------------------------------------------------------
145 ceballos 1.76 Bool_t ElectronIDMod::PassIsolationCut(const Electron *ele, ElectronTools::EElIsoType isoType,
146 ceballos 1.80 const TrackCol *tracks, const Vertex *vertex,
147     const Double_t rho) const
148 sixie 1.42 {
149    
150     Bool_t isocut = kFALSE;
151     switch (isoType) {
152 sixie 1.56 case ElectronTools::kTrackCalo:
153 sixie 1.42 isocut = (ele->TrackIsolationDr03() < fTrackIsolationCut) &&
154     (ele->CaloIsolation() < fCaloIsolationCut);
155     break;
156 sixie 1.56 case ElectronTools::kTrackJura:
157 sixie 1.42 isocut = (ele->TrackIsolationDr03() < fTrackIsolationCut) &&
158 ceballos 1.60 (ele->EcalRecHitIsoDr03() < fEcalJuraIsoCut) &&
159     (ele->HcalTowerSumEtDr03() < fHcalIsolationCut);
160 sixie 1.42 break;
161 sixie 1.56 case ElectronTools::kTrackJuraCombined:
162 ceballos 1.60 isocut = (ele->TrackIsolationDr03() + ele->EcalRecHitIsoDr03()
163 ceballos 1.49 - 1.5 < fCombIsolationCut);
164     break;
165 sixie 1.56 case ElectronTools::kTrackJuraSliding:
166 sixie 1.42 {
167 ceballos 1.80 //Double_t beta = IsolationTools::BetaE(tracks, ele, vertex, 0.0, 0.2, 0.3, 0.02);
168     //if(beta == 0) beta = 1.0;
169     //Double_t totalIso = ele->TrackIsolationDr03() + (ele->EcalRecHitIsoDr03() + ele->HcalTowerSumEtDr03())*beta;
170     //if(ele->SCluster()->AbsEta() < 1.479) totalIso = ele->TrackIsolationDr03() + (TMath::Max(ele->EcalRecHitIsoDr03() - 1.0, 0.0) + ele->HcalTowerSumEtDr03())*beta;
171     //if(beta == 0) beta = 1.0;
172     Double_t totalIso = ele->TrackIsolationDr03() + TMath::Max(ele->EcalRecHitIsoDr03() + ele->HcalTowerSumEtDr03() - rho * TMath::Pi() * 0.3 * 0.3, 0.0);
173     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);
174 ceballos 1.79 if (totalIso < (ele->Pt()*fCombIsolationCut) )
175     isocut = kTRUE;
176     }
177     break;
178 ceballos 1.80 case ElectronTools::kTrackJuraSlidingNoCorrection:
179 ceballos 1.79 {
180 ceballos 1.80 Double_t totalIso = ele->TrackIsolationDr03() + (ele->EcalRecHitIsoDr03() + ele->HcalTowerSumEtDr03());
181     if(ele->SCluster()->AbsEta() < 1.479) totalIso = ele->TrackIsolationDr03() + (TMath::Max(ele->EcalRecHitIsoDr03() - 1.0, 0.0) + ele->HcalTowerSumEtDr03());
182 ceballos 1.76 if (totalIso < (ele->Pt()*fCombIsolationCut) )
183     isocut = kTRUE;
184     }
185     break;
186     case ElectronTools::kPFIso:
187     {
188     Double_t beta = IsolationTools::BetaE(tracks, ele, vertex, 0.0, 0.2, 0.3, 0.02);
189 ceballos 1.79 if(beta == 0) beta = 1.0;
190 ceballos 1.78 Double_t totalIso = IsolationTools::PFElectronIsolation(ele, fPFCandidates, vertex, 0.2, 0.5, 0.3, 0.02, 0, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
191 ceballos 1.76 if (totalIso < (ele->Pt()*fCombIsolationCut) )
192     isocut = kTRUE;
193     }
194     break;
195     case ElectronTools::kPFIsoNoL:
196     {
197     Double_t beta = IsolationTools::BetaE(tracks, ele, vertex, 0.0, 0.2, 0.3, 0.02);
198 ceballos 1.79 if(beta == 0) beta = 1.0;
199 ceballos 1.78 Double_t totalIso = IsolationTools::PFElectronIsolation(ele, fPFCandidates, vertex, 0.2, 0.5, 0.3, 0.02, 3, beta, fNonIsolatedMuons, fNonIsolatedElectrons);
200 ceballos 1.74 if (totalIso < (ele->Pt()*fCombIsolationCut) )
201 sixie 1.42 isocut = kTRUE;
202     }
203     break;
204 sixie 1.56 case ElectronTools::kVBTFWorkingPoint95Iso:
205 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint95Iso, fApplyCombinedIso);
206 sixie 1.56 break;
207     case ElectronTools::kVBTFWorkingPoint90Iso:
208 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint90Iso, fApplyCombinedIso);
209 sixie 1.51 break;
210 ceballos 1.60 case ElectronTools::kVBTFWorkingPoint85Iso:
211 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint85Iso, fApplyCombinedIso);
212 ceballos 1.60 break;
213 sixie 1.56 case ElectronTools::kVBTFWorkingPoint80Iso:
214 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint80Iso, fApplyCombinedIso);
215 sixie 1.51 break;
216 sixie 1.56 case ElectronTools::kVBTFWorkingPoint70Iso:
217 bendavid 1.67 isocut = ElectronTools::PassCustomIso(ele, ElectronTools::kVBTFWorkingPoint70Iso, fApplyCombinedIso);
218 sixie 1.51 break;
219 sixie 1.56 case ElectronTools::kNoIso:
220 sixie 1.42 isocut = kTRUE;
221     break;
222 sixie 1.56 case ElectronTools::kCustomIso:
223 sixie 1.42 default:
224     break;
225     }
226    
227     return isocut;
228     }
229    
230    
231     //--------------------------------------------------------------------------------------------------
232 loizides 1.1 void ElectronIDMod::Process()
233     {
234     // Process entries of the tree.
235    
236 ceballos 1.76 if(fElIsoType != ElectronTools::kPFIsoNoL) {
237     LoadEventObject(fElectronBranchName, fElectrons);
238     }
239     else {
240     fElectrons = GetObjThisEvt<ElectronOArr>(fElectronBranchName);
241 ceballos 1.78 fNonIsolatedMuons = GetObjThisEvt<MuonCol>(fNonIsolatedMuonsName);
242     fNonIsolatedElectrons = GetObjThisEvt<ElectronCol>(fNonIsolatedElectronsName);
243 ceballos 1.76 }
244 bendavid 1.75 LoadEventObject(fBeamSpotName, fBeamSpot);
245 ceballos 1.76 LoadEventObject(fTrackName, fTracks);
246     LoadEventObject(fPFCandidatesName, fPFCandidates);
247 ceballos 1.80 if(fElIsoType == ElectronTools::kTrackJuraSliding) {
248     LoadEventObject(fPileupEnergyDensityName, fPileupEnergyDensity);
249     }
250 ceballos 1.76 fVertices = GetObjThisEvt<VertexOArr>(fVertexName);
251 loizides 1.1
252 bendavid 1.62 //get trigger object collection if trigger matching is enabled
253     const TriggerObjectCol *trigObjs = 0;
254     if (fApplyTriggerMatching) {
255     trigObjs = GetHLTObjects(fTrigObjectsName);
256     }
257    
258 loizides 1.6 ElectronOArr *GoodElectrons = new ElectronOArr;
259     GoodElectrons->SetName(fGoodElectronsName);
260 loizides 1.1
261 ceballos 1.18 for (UInt_t i=0; i<fElectrons->GetEntries(); ++i) {
262 loizides 1.5 const Electron *e = fElectrons->At(i);
263 loizides 1.1
264 ceballos 1.66 if (e->SCluster() == 0)
265     continue;
266    
267 ceballos 1.65 if (e->Pt() < fElectronPtMin)
268 loizides 1.5 continue;
269 loizides 1.1
270 dkralph 1.73 if (e->SCluster()->Et() < fElectronEtMin)
271 bendavid 1.67 continue;
272    
273 ceballos 1.65 if (e->AbsEta() > fElectronEtaMax)
274 ceballos 1.64 continue;
275    
276 bendavid 1.67 if (fApplyEcalFiducial && ( (e->SCluster()->AbsEta()>1.4442 && e->SCluster()->AbsEta()<1.5666) || e->SCluster()->AbsEta()>2.5 )) {
277     continue;
278     }
279    
280     if (fApplyEcalSeeded && !e->IsEcalDriven()) {
281     continue;
282     }
283    
284 bendavid 1.62 //apply trigger matching
285     Bool_t matchTrigger = fApplyTriggerMatching && ElectronTools::PassTriggerMatching(e,trigObjs);
286     if (fApplyTriggerMatching && !matchTrigger)
287     continue;
288    
289 sixie 1.55 //apply ECAL spike removal
290 sixie 1.56 Bool_t spikecut = ElectronTools::PassSpikeRemovalFilter(e);
291 sixie 1.57 if (fApplySpikeRemoval && !spikecut)
292 sixie 1.55 continue;
293    
294 sixie 1.42 //apply id cut
295     Bool_t idcut = PassIDCut(e, fElIdType);
296 loizides 1.5 if (!idcut)
297     continue;
298    
299 sixie 1.42 //apply Isolation Cut
300 ceballos 1.80 Double_t Rho = 0.0;
301     if(fElIsoType == ElectronTools::kTrackJuraSliding) {
302     Rho = fPileupEnergyDensity->At(0)->Rho();
303     }
304     Bool_t isocut = PassIsolationCut(e, fElIsoType, fTracks, fVertices->At(0), Rho);
305 sixie 1.42 if (!isocut)
306 loizides 1.5 continue;
307    
308 ceballos 1.60 // apply conversion filters
309     Bool_t passConvVetoType1 = kFALSE;
310     if (fApplyConvFilterType1) {
311 sixie 1.42 LoadEventObject(fConversionBranchName, fConversions);
312 ceballos 1.60 passConvVetoType1 = ElectronTools::PassConversionFilter(e, fConversions,
313 bendavid 1.82 fBeamSpot->At(0), 0, 1e-6, 2.0, kTRUE, kFALSE);
314 ceballos 1.12 }
315 ceballos 1.60 else {
316     passConvVetoType1 = kTRUE;
317     }
318    
319     if (passConvVetoType1 == kFALSE) continue;
320    
321     Bool_t passConvVetoType2 = kFALSE;
322     if (fApplyConvFilterType2) {
323     passConvVetoType2 = TMath::Abs(e->ConvPartnerDCotTheta()) >= 0.02 ||
324     TMath::Abs(e->ConvPartnerDist()) >= 0.02;
325     }
326     else {
327     passConvVetoType2 = kTRUE;
328     }
329 sixie 1.42
330 ceballos 1.60 if (passConvVetoType2 == kFALSE) continue;
331 ceballos 1.72
332 ceballos 1.60 // apply NExpectedHitsInner Cut
333     if(fNExpectedHitsInnerCut < 999 &&
334 ceballos 1.69 e->CorrectedNExpectedHitsInner() > fNExpectedHitsInnerCut) continue;
335 ceballos 1.60
336 sixie 1.42 // apply d0 cut
337 ceballos 1.15 if (fApplyD0Cut) {
338 ceballos 1.81 Bool_t passD0cut = kTRUE;
339     if(fWhichVertex >= -1) passD0cut = ElectronTools::PassD0Cut(e, fVertices, fD0Cut, fWhichVertex);
340     else passD0cut = ElectronTools::PassD0Cut(e, fBeamSpot, fD0Cut);
341 sixie 1.42 if (!passD0cut)
342 ceballos 1.24 continue;
343 ceballos 1.12 }
344    
345 ceballos 1.81 // apply dz cut
346     if (fApplyDZCut) {
347     Bool_t passDZcut = ElectronTools::PassDZCut(e, fVertices, fDZCut);
348     if (!passDZcut)
349     continue;
350     }
351    
352 ceballos 1.59 // apply charge filter
353 sixie 1.42 if(fChargeFilter == kTRUE) {
354 sixie 1.56 Bool_t passChargeFilter = ElectronTools::PassChargeFilter(e);
355 sixie 1.42 if (!passChargeFilter) continue;
356 ceballos 1.45 }
357    
358 ceballos 1.63 // apply full combined id, using Tight cuts
359 ceballos 1.59 if(fCombinedIdCut == kTRUE) {
360 ceballos 1.68 fVertices = GetObjThisEvt<VertexOArr>(fVertexName);
361 ceballos 1.59 LoadEventObject(fConversionBranchName, fConversions);
362 ceballos 1.63 Int_t result = ElectronTools::PassTightId(e, *&fVertices, fConversions, 2);
363 ceballos 1.59 if(result != 15) continue;
364     }
365    
366 loizides 1.5 // add good electron
367 ceballos 1.12 GoodElectrons->Add(e);
368 loizides 1.5 }
369 loizides 1.1
370 loizides 1.9 // sort according to pt
371     GoodElectrons->Sort();
372    
373 loizides 1.5 // add to event for other modules to use
374 loizides 1.6 AddObjThisEvt(GoodElectrons);
375 loizides 1.1 }
376    
377     //--------------------------------------------------------------------------------------------------
378     void ElectronIDMod::SlaveBegin()
379     {
380     // Run startup code on the computer (slave) doing the actual analysis. Here,
381 loizides 1.5 // we just request the electron collection branch.
382 loizides 1.1
383 ceballos 1.76 // In this case we cannot have a branch
384     if (fElectronIsoType.CompareTo("PFIsoNoL") != 0 ) {
385     ReqEventObject(fElectronBranchName, fElectrons,fElectronsFromBranch);
386     }
387     ReqEventObject(fBeamSpotName, fBeamSpot, kTRUE);
388     ReqEventObject(fTrackName, fTracks, kTRUE);
389     ReqEventObject(fPFCandidatesName, fPFCandidates, kTRUE);
390 ceballos 1.80 if (fElectronIsoType.CompareTo("TrackJuraSliding") == 0 ) {
391     ReqEventObject(fPileupEnergyDensityName, fPileupEnergyDensity, kTRUE);
392     }
393 loizides 1.17
394 ceballos 1.59 if(fCombinedIdCut == kTRUE) {
395 ceballos 1.60 fElectronIDType = "NoId";
396     fElectronIsoType = "NoIso";
397     fApplyConvFilterType1 = kFALSE;
398     fApplyConvFilterType2 = kFALSE;
399     fApplyD0Cut = kFALSE;
400 ceballos 1.81 fApplyDZCut = kFALSE;
401 ceballos 1.59 }
402    
403 ceballos 1.60 if (fApplyConvFilterType1 || fCombinedIdCut == kTRUE)
404 loizides 1.23 ReqEventObject(fConversionBranchName, fConversions, kTRUE);
405 loizides 1.17
406 sixie 1.42 Setup();
407     }
408    
409     //--------------------------------------------------------------------------------------------------
410     void ElectronIDMod::Setup()
411     {
412     // Set all options properly before execution.
413    
414 loizides 1.5 if (fElectronIDType.CompareTo("Tight") == 0)
415 sixie 1.56 fElIdType = ElectronTools::kTight;
416 loizides 1.5 else if (fElectronIDType.CompareTo("Loose") == 0)
417 sixie 1.56 fElIdType = ElectronTools::kLoose;
418 loizides 1.5 else if (fElectronIDType.CompareTo("Likelihood") == 0)
419 sixie 1.56 fElIdType = ElectronTools::kLikelihood;
420 loizides 1.10 else if (fElectronIDType.CompareTo("NoId") == 0)
421 sixie 1.56 fElIdType = ElectronTools::kNoId;
422 sixie 1.42 else if (fElectronIDType.CompareTo("ZeeId") == 0)
423 sixie 1.56 fElIdType = ElectronTools::kZeeId;
424 sixie 1.51 else if (fElectronIDType.CompareTo("CustomLoose") == 0)
425 sixie 1.56 fElIdType = ElectronTools::kCustomIdLoose;
426 sixie 1.51 else if (fElectronIDType.CompareTo("CustomTight") == 0)
427 sixie 1.56 fElIdType = ElectronTools::kCustomIdTight;
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.81 else if (fElectronIDType.CompareTo("VBTFWorkingPoint80LowPtId") == 0)
435     fElIdType = ElectronTools::kVBTFWorkingPoint80LowPtId;
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     }