189 |
|
if(eSeedOverPin<fCuts[4][cat+4*eb]) |
190 |
|
return kFALSE; |
191 |
|
|
192 |
+ |
// Apply detector isolation at high pt only |
193 |
|
Bool_t isoCut = kTRUE; |
194 |
|
if(idType == kVBTFWorkingPointFakeableId){ |
195 |
|
double isoEcal = ele->EcalRecHitIsoDr03(); |
355 |
|
} |
356 |
|
|
357 |
|
//-------------------------------------------------------------------------------------------------- |
358 |
+ |
Bool_t ElectronTools::PassConversionFilterPFAOD(const Electron *ele, |
359 |
+ |
const DecayParticleCol *conversions, |
360 |
+ |
const BaseVertex *vtx, |
361 |
+ |
UInt_t nWrongHitsMax, |
362 |
+ |
Double_t probMin, |
363 |
+ |
Double_t lxyMin, |
364 |
+ |
Bool_t matchCkf, |
365 |
+ |
Bool_t requireArbitratedMerged, |
366 |
+ |
Double_t trkptMin) |
367 |
+ |
{ |
368 |
+ |
|
369 |
+ |
Bool_t isGoodConversion = false; |
370 |
+ |
for(unsigned int ifc=0; ifc<conversions->GetEntries(); ++ifc){ |
371 |
+ |
if(!(conversions->At(ifc)->Prob() > probMin) && (!requireArbitratedMerged || conversions->At(ifc)->Quality().Quality(ConversionQuality::arbitratedMerged)) && (conversions->At(ifc)->LxyCorrected((BaseVertex*)vtx) > lxyMin)) continue; |
372 |
+ |
bool conversionMatchFound = false; |
373 |
+ |
for(unsigned int d=0; d<conversions->At(ifc)->NDaughters(); ++d){ |
374 |
+ |
const ChargedParticle *pParticle = 0; |
375 |
+ |
pParticle = dynamic_cast<const ChargedParticle*>(conversions->At(ifc)->Daughter(d)); |
376 |
+ |
if(pParticle == 0) continue; |
377 |
+ |
const Track* trk = 0; |
378 |
+ |
trk = pParticle->Trk(); |
379 |
+ |
if(trk == 0) continue; |
380 |
+ |
if( ele->GsfTrk() == trk || (matchCkf && ele->TrackerTrk()==trk) ){ conversionMatchFound = true; break; } |
381 |
+ |
const StableData* sd = dynamic_cast<const StableData*> (conversions->At(ifc)->DaughterDat(d)); |
382 |
+ |
isGoodConversion = true; |
383 |
+ |
if( sd->NWrongHits() > nWrongHitsMax ){ isGoodConversion = false; } |
384 |
+ |
} |
385 |
+ |
if(isGoodConversion) break; |
386 |
+ |
} |
387 |
+ |
return !isGoodConversion; |
388 |
+ |
} |
389 |
+ |
|
390 |
+ |
//-------------------------------------------------------------------------------------------------- |
391 |
|
Bool_t ElectronTools::PassD0Cut(const Electron *ele, const VertexCol *vertices, Double_t fD0Cut, Int_t nVertex) |
392 |
|
{ |
393 |
|
Bool_t d0cut = kFALSE; |
394 |
|
|
395 |
|
Double_t d0_real = 1e30; |
396 |
+ |
|
397 |
+ |
if( nVertex >= (int) vertices->GetEntries() ) |
398 |
+ |
nVertex = vertices->GetEntries() - 1; |
399 |
+ |
|
400 |
|
if(nVertex >= 0) d0_real = TMath::Abs(ele->GsfTrk()->D0Corrected(*vertices->At(nVertex))); |
401 |
|
else { |
402 |
|
Double_t distVtx = 999.0; |
436 |
|
Bool_t dzcut = kFALSE; |
437 |
|
|
438 |
|
Double_t distVtx = 999.0; |
439 |
+ |
|
440 |
+ |
if( nVertex >= (int) vertices->GetEntries() ) |
441 |
+ |
nVertex = vertices->GetEntries()-1; |
442 |
+ |
|
443 |
|
if(nVertex >= 0) distVtx = TMath::Abs(ele->GsfTrk()->DzCorrected(*vertices->At(nVertex))); |
444 |
|
else { |
445 |
|
for(UInt_t nv=0; nv<vertices->GetEntries(); nv++){ |
449 |
|
} |
450 |
|
} |
451 |
|
} |
452 |
< |
|
452 |
> |
|
453 |
|
if(distVtx < fDZCut) dzcut = kTRUE; |
454 |
|
|
455 |
|
return dzcut; |
1115 |
|
|
1116 |
|
Double_t EffectiveArea = 0; |
1117 |
|
|
1118 |
+ |
if(type == ElectronTools::kEleNeutralIso04){ |
1119 |
+ |
if (fabs(SCEta) < 1.0 ) EffectiveArea = 0.19; |
1120 |
+ |
else if(fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.25; |
1121 |
+ |
else if(fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.000 ) EffectiveArea = 0.12; |
1122 |
+ |
else if(fabs(SCEta) >= 2.000 && fabs(SCEta) < 2.200 ) EffectiveArea = 0.21; |
1123 |
+ |
else if(fabs(SCEta) >= 2.200 && fabs(SCEta) < 2.300 ) EffectiveArea = 0.27; |
1124 |
+ |
else if(fabs(SCEta) >= 2.300 && fabs(SCEta) < 2.400 ) EffectiveArea = 0.44; |
1125 |
+ |
else EffectiveArea = 0.52; |
1126 |
+ |
return EffectiveArea; |
1127 |
+ |
} |
1128 |
+ |
|
1129 |
|
if (fabs(SCEta) < 1.0) { |
1130 |
|
if (type == ElectronTools::kEleChargedIso03) EffectiveArea = 0.000; |
1131 |
|
if (type == ElectronTools::kEleNeutralHadronIso03) EffectiveArea = 0.017; |
1197 |
|
if (EffectiveAreaTarget == kEleEANoCorr) { |
1198 |
|
return 0.0; |
1199 |
|
} |
1200 |
+ |
else if (EffectiveAreaTarget == kEleEAData2012) { |
1201 |
+ |
if (type == kEleGammaIso03) { |
1202 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.122; |
1203 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.147; |
1204 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.055; |
1205 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.106; |
1206 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.138; |
1207 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.221; |
1208 |
+ |
if (fabs(SCEta) >= 2.4 ) EffectiveArea = 0.211; |
1209 |
+ |
} |
1210 |
+ |
if (type == kEleGammaIso04) { |
1211 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.176; |
1212 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.206; |
1213 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.094; |
1214 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.172; |
1215 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.244; |
1216 |
+ |
if (fabs(SCEta) >= 2.4 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.333; |
1217 |
+ |
if (fabs(SCEta) >= 2.4 ) EffectiveArea = 0.348; |
1218 |
+ |
} |
1219 |
+ |
if (type == kEleNeutralHadronIso03) { |
1220 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.013; |
1221 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.021; |
1222 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.013; |
1223 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.010; |
1224 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.024; |
1225 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.020; |
1226 |
+ |
if (fabs(SCEta) >= 2.4 ) EffectiveArea = 0.019; |
1227 |
+ |
} |
1228 |
+ |
if (type == kEleNeutralHadronIso04) { |
1229 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.022; |
1230 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.036; |
1231 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.027; |
1232 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.028; |
1233 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.052; |
1234 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.063; |
1235 |
+ |
if (fabs(SCEta) >= 2.4 ) EffectiveArea = 0.028; |
1236 |
+ |
} |
1237 |
+ |
if (type == kEleGammaAndNeutralHadronIso04) { |
1238 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.19; |
1239 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.25; |
1240 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.12; |
1241 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.21; |
1242 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.27; |
1243 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.44; |
1244 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.52; |
1245 |
+ |
} |
1246 |
+ |
if (type == kEleGammaIsoDR0p0To0p1) { |
1247 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.051; |
1248 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.032; |
1249 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.006; |
1250 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.007; |
1251 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.024; |
1252 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.013; |
1253 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.013; |
1254 |
+ |
} |
1255 |
+ |
if (type == kEleGammaIsoDR0p1To0p2) { |
1256 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.013; |
1257 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.013; |
1258 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.021; |
1259 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.052; |
1260 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.066; |
1261 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.043; |
1262 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.102; |
1263 |
+ |
} |
1264 |
+ |
if (type == kEleGammaIsoDR0p2To0p3) { |
1265 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.026; |
1266 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.017; |
1267 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.012; |
1268 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.028; |
1269 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.041; |
1270 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.034; |
1271 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.042; |
1272 |
+ |
} |
1273 |
+ |
if (type == kEleGammaIsoDR0p3To0p4) { |
1274 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.039; |
1275 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.032; |
1276 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.017; |
1277 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.024; |
1278 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.053; |
1279 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.059; |
1280 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.069; |
1281 |
+ |
} |
1282 |
+ |
if (type == kEleGammaIsoDR0p4To0p5) { |
1283 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.059; |
1284 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.045; |
1285 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.033; |
1286 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.043; |
1287 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.056; |
1288 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.065; |
1289 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.074; |
1290 |
+ |
} |
1291 |
+ |
if (type == kEleNeutralHadronIsoDR0p0To0p1) { |
1292 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.001; |
1293 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.006; |
1294 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.001; |
1295 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.000; |
1296 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.001; |
1297 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.003; |
1298 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.008; |
1299 |
+ |
} |
1300 |
+ |
if (type == kEleNeutralHadronIsoDR0p1To0p2) { |
1301 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.002; |
1302 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.001; |
1303 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.004; |
1304 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.003; |
1305 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.005; |
1306 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.006; |
1307 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.010; |
1308 |
+ |
} |
1309 |
+ |
if (type == kEleNeutralHadronIsoDR0p2To0p3) { |
1310 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.007; |
1311 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.010; |
1312 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.009; |
1313 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.009; |
1314 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.007; |
1315 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.018; |
1316 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.028; |
1317 |
+ |
} |
1318 |
+ |
if (type == kEleNeutralHadronIsoDR0p3To0p4) { |
1319 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.010; |
1320 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.011; |
1321 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.012; |
1322 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.008; |
1323 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.018; |
1324 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.026; |
1325 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.063; |
1326 |
+ |
} |
1327 |
+ |
if (type == kEleNeutralHadronIsoDR0p4To0p5) { |
1328 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.011; |
1329 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.012; |
1330 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.016; |
1331 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.023; |
1332 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.038; |
1333 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.051; |
1334 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.143; |
1335 |
+ |
} |
1336 |
+ |
} |
1337 |
+ |
|
1338 |
|
//2011 Data Effective Areas |
1339 |
|
else if (EffectiveAreaTarget == kEleEAData2011) { |
1340 |
+ |
if (type == kEleGammaAndNeutralHadronIso03) { |
1341 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.100; |
1342 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.120; |
1343 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.085; |
1344 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.110; |
1345 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.120; |
1346 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.120; |
1347 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.130; |
1348 |
+ |
} |
1349 |
+ |
if (type == kEleGammaAndNeutralHadronIso04) { |
1350 |
+ |
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.180; |
1351 |
+ |
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.200; |
1352 |
+ |
if (fabs(SCEta) >= 1.479 && fabs(SCEta) < 2.0 ) EffectiveArea = 0.150; |
1353 |
+ |
if (fabs(SCEta) >= 2.0 && fabs(SCEta) < 2.2 ) EffectiveArea = 0.190; |
1354 |
+ |
if (fabs(SCEta) >= 2.2 && fabs(SCEta) < 2.3 ) EffectiveArea = 0.210; |
1355 |
+ |
if (fabs(SCEta) >= 2.3 && fabs(SCEta) < 2.4 ) EffectiveArea = 0.220; |
1356 |
+ |
if (fabs(SCEta) >= 2.4) EffectiveArea = 0.290; |
1357 |
+ |
} |
1358 |
|
if (type == kEleGammaIsoDR0p0To0p1) { |
1359 |
|
if (fabs(SCEta) >= 0.0 && fabs(SCEta) < 1.0 ) EffectiveArea = 0.017; |
1360 |
|
if (fabs(SCEta) >= 1.0 && fabs(SCEta) < 1.479 ) EffectiveArea = 0.033; |
1635 |
|
} |
1636 |
|
} |
1637 |
|
|
1638 |
+ |
return EffectiveArea; |
1639 |
+ |
} |
1640 |
|
|
1641 |
|
|
1642 |
< |
return EffectiveArea; |
1642 |
> |
Bool_t ElectronTools::PassHggLeptonTagID(const Electron* ele) { |
1643 |
> |
|
1644 |
> |
float dist = ( ele->ConvPartnerDist() == -9999.? 9999:TMath::Abs(ele->ConvPartnerDist())); |
1645 |
> |
float dcot = ( ele->ConvPartnerDCotTheta() == -9999.? 9999:TMath::Abs(ele->ConvPartnerDCotTheta())); |
1646 |
> |
|
1647 |
> |
if (dist < 0.02) return false; |
1648 |
> |
if (dcot < 0.02) return false; |
1649 |
> |
|
1650 |
> |
int numInnerHits = ele->Trk()->NExpectedHitsInner(); |
1651 |
> |
if( numInnerHits > 1 ) return false; |
1652 |
> |
|
1653 |
> |
float coviEtaiEta = ele->CoviEtaiEta(); |
1654 |
> |
if( ele->SCluster()->AbsEta() < 1.5 && coviEtaiEta > 0.01 ) return false; |
1655 |
> |
else if( ele->SCluster()->AbsEta() > 1.5 && coviEtaiEta > 0.031 ) return false; |
1656 |
> |
|
1657 |
> |
Double_t deltaPhiIn = TMath::Abs(ele->DeltaPhiSuperClusterTrackAtVtx()); |
1658 |
> |
Double_t deltaEtaIn = TMath::Abs(ele->DeltaEtaSuperClusterTrackAtVtx()); |
1659 |
> |
|
1660 |
> |
if( ele->SCluster()->AbsEta() < 1.5 && ( deltaPhiIn > 0.039 || deltaEtaIn > 0.005 ) ) return false; |
1661 |
> |
else if ( ele->SCluster()->AbsEta() > 1.5 && ( deltaPhiIn > 0.028 || deltaEtaIn > 0.007 ) ) return false; |
1662 |
> |
|
1663 |
> |
return true; |
1664 |
> |
} |
1665 |
> |
|
1666 |
> |
Bool_t ElectronTools::PassHggLeptonTagID2012(const Electron* ele) { |
1667 |
> |
|
1668 |
> |
if (TMath::Abs(1./ele->E()-1./ele->Pt())>0.05) return false; |
1669 |
> |
|
1670 |
> |
int numInnerHits = ele->Trk()->NExpectedHitsInner(); |
1671 |
> |
if( numInnerHits > 1 ) return false; |
1672 |
> |
|
1673 |
> |
float coviEtaiEta = ele->CoviEtaiEta(); |
1674 |
> |
if( ele->SCluster()->AbsEta() < 1.5 && coviEtaiEta > 0.01 ) return false; |
1675 |
> |
else if( ele->SCluster()->AbsEta() > 1.5 && coviEtaiEta > 0.03 ) return false; // h |
1676 |
> |
|
1677 |
> |
Double_t deltaPhiIn = TMath::Abs(ele->DeltaPhiSuperClusterTrackAtVtx()); |
1678 |
> |
Double_t deltaEtaIn = TMath::Abs(ele->DeltaEtaSuperClusterTrackAtVtx()); |
1679 |
> |
|
1680 |
> |
if( ele->SCluster()->AbsEta() < 1.5 && ( deltaPhiIn > 0.15 || deltaEtaIn > 0.007 || ele->HadronicOverEm()>0.12) ) return false; // h |
1681 |
> |
else if ( ele->SCluster()->AbsEta() > 1.5 && ( deltaPhiIn > 0.10 || deltaEtaIn > 0.009 || ele->HadronicOverEm()>0.10 ) ) return false; // h |
1682 |
> |
|
1683 |
> |
return true; |
1684 |
|
} |
1685 |
|
|
1686 |
+ |
std::pair<Double_t,Double_t> ElectronTools::ComputeEPCombination( const Electron * ele, const float regression_energy, |
1687 |
+ |
const float regression_energy_error) { |
1688 |
+ |
|
1689 |
+ |
enum Classification { GSF_ELECTRON_UNKNOWN=-1, |
1690 |
+ |
GSF_ELECTRON_GOLDEN=0, |
1691 |
+ |
GSF_ELECTRON_BIGBREM=1, |
1692 |
+ |
GSF_ELECTRON_BADTRACK=2, |
1693 |
+ |
GSF_ELECTRON_SHOWERING=3, |
1694 |
+ |
GSF_ELECTRON_GAP=4 } ; |
1695 |
|
|
1696 |
+ |
float newEnergyError_ = regression_energy_error; |
1697 |
+ |
float scEnergy = regression_energy; |
1698 |
+ |
|
1699 |
+ |
int elClass = ele->Classification(); |
1700 |
+ |
|
1701 |
+ |
float trackMomentum = ele->PIn() ; |
1702 |
+ |
float errorTrackMomentum_ = 999. ; |
1703 |
+ |
|
1704 |
+ |
// the electron's track momentum error was not available in bambu versions less than 029 |
1705 |
+ |
if(ele->TrackMomentumError() > 0) |
1706 |
+ |
errorTrackMomentum_ = ele->TrackMomentumError(); |
1707 |
+ |
else if ( ele->GsfTrk()->PtErr() > 0) |
1708 |
+ |
errorTrackMomentum_ = ele->GsfTrk()->PtErr()*cosh(ele->GsfTrk()->Eta()); |
1709 |
+ |
else |
1710 |
+ |
assert(0); |
1711 |
+ |
|
1712 |
+ |
float finalMomentum = ele->E(); // initial |
1713 |
+ |
float finalMomentumError = 999.; |
1714 |
+ |
|
1715 |
+ |
// first check for large errors |
1716 |
+ |
|
1717 |
+ |
if (errorTrackMomentum_/trackMomentum > 0.5 && regression_energy_error/regression_energy <= 0.5) { |
1718 |
+ |
finalMomentum = regression_energy; finalMomentumError = regression_energy_error; |
1719 |
+ |
} |
1720 |
+ |
else if (errorTrackMomentum_/trackMomentum <= 0.5 && regression_energy_error/regression_energy > 0.5){ |
1721 |
+ |
finalMomentum = trackMomentum; finalMomentumError = errorTrackMomentum_; |
1722 |
+ |
} |
1723 |
+ |
else if (errorTrackMomentum_/trackMomentum > 0.5 && regression_energy_error/regression_energy > 0.5){ |
1724 |
+ |
if (errorTrackMomentum_/trackMomentum < regression_energy_error/regression_energy) { |
1725 |
+ |
finalMomentum = trackMomentum; finalMomentumError = errorTrackMomentum_; |
1726 |
+ |
} |
1727 |
+ |
else{ |
1728 |
+ |
finalMomentum = regression_energy; finalMomentumError = regression_energy_error; |
1729 |
+ |
} |
1730 |
+ |
} |
1731 |
+ |
// then apply the combination algorithm |
1732 |
+ |
else { |
1733 |
+ |
// calculate E/p and corresponding error |
1734 |
+ |
float eOverP = regression_energy / trackMomentum; |
1735 |
+ |
float errorEOverP = sqrt( |
1736 |
+ |
(regression_energy_error/trackMomentum)*(regression_energy_error/trackMomentum) + |
1737 |
+ |
(regression_energy*errorTrackMomentum_/trackMomentum/trackMomentum)* |
1738 |
+ |
(regression_energy*errorTrackMomentum_/trackMomentum/trackMomentum)); |
1739 |
+ |
|
1740 |
+ |
|
1741 |
+ |
bool eleIsNotInCombination = false ; |
1742 |
+ |
if ( (eOverP > 1 + 2.5*errorEOverP) || (eOverP < 1 - 2.5*errorEOverP) || (eOverP < 0.8) || (eOverP > 1.3) ) |
1743 |
+ |
{ eleIsNotInCombination = true ; } |
1744 |
+ |
if (eleIsNotInCombination) |
1745 |
+ |
{ |
1746 |
+ |
if (eOverP > 1) |
1747 |
+ |
{ finalMomentum = regression_energy ; finalMomentumError = regression_energy_error ; } |
1748 |
+ |
else |
1749 |
+ |
{ |
1750 |
+ |
if (elClass == GSF_ELECTRON_GOLDEN) |
1751 |
+ |
{ finalMomentum = regression_energy; finalMomentumError = regression_energy_error; } |
1752 |
+ |
if (elClass == GSF_ELECTRON_BIGBREM) |
1753 |
+ |
{ |
1754 |
+ |
if (regression_energy<36) |
1755 |
+ |
{ finalMomentum = trackMomentum ; finalMomentumError = errorTrackMomentum_ ; } |
1756 |
+ |
else |
1757 |
+ |
{ finalMomentum = regression_energy ; finalMomentumError = regression_energy_error ; } |
1758 |
+ |
} |
1759 |
+ |
if (elClass == GSF_ELECTRON_BADTRACK) |
1760 |
+ |
{ finalMomentum = regression_energy; finalMomentumError = regression_energy_error ; } |
1761 |
+ |
if (elClass == GSF_ELECTRON_SHOWERING) |
1762 |
+ |
{ |
1763 |
+ |
if (regression_energy<30) |
1764 |
+ |
{ finalMomentum = trackMomentum ; finalMomentumError = errorTrackMomentum_; } |
1765 |
+ |
else |
1766 |
+ |
{ finalMomentum = regression_energy; finalMomentumError = regression_energy_error;} |
1767 |
+ |
} |
1768 |
+ |
if (elClass == GSF_ELECTRON_GAP) |
1769 |
+ |
{ |
1770 |
+ |
if (regression_energy<60) |
1771 |
+ |
{ finalMomentum = trackMomentum ; finalMomentumError = errorTrackMomentum_ ; } |
1772 |
+ |
else |
1773 |
+ |
{ finalMomentum = regression_energy; finalMomentumError = regression_energy_error ; } |
1774 |
+ |
} |
1775 |
+ |
} |
1776 |
+ |
} |
1777 |
+ |
else |
1778 |
+ |
{ |
1779 |
+ |
// combination |
1780 |
+ |
finalMomentum = (regression_energy/regression_energy_error/regression_energy_error + trackMomentum/errorTrackMomentum_/errorTrackMomentum_) / |
1781 |
+ |
(1/regression_energy_error/regression_energy_error + 1/errorTrackMomentum_/errorTrackMomentum_); |
1782 |
+ |
float finalMomentumVariance = 1 / (1/regression_energy_error/regression_energy_error + 1/errorTrackMomentum_/errorTrackMomentum_); |
1783 |
+ |
finalMomentumError = sqrt(finalMomentumVariance); |
1784 |
+ |
} |
1785 |
+ |
} |
1786 |
+ |
|
1787 |
+ |
std::pair<Double_t,Double_t> value; |
1788 |
+ |
value.first = finalMomentum; |
1789 |
+ |
value.second = finalMomentumError; |
1790 |
+ |
return value; |
1791 |
+ |
|
1792 |
+ |
} |