203{
205 const std::string flagQuiet("--quiet"), flagFast("--fast"), flagSkip("--skip-if-athena");
207 {
208 if(argv[i] == flagQuiet)
quiet =
true;
209 else if(argv[i] == flagFast)
fast =
true;
210 #ifndef XAOD_STANDALONE
211 else if(argv[i] == flagSkip)
skip =
true;
212 #endif
213 }
215
216#ifndef XAOD_STANDALONE
217 Warning(
MSGSOURCE,
"This test doesn't work with athena for the moment.");
218
219
220#endif
221
222#ifdef XAOD_STANDALONE
223 StatusCode::enableFailure();
225#endif
228
234 for(
int i=0;
i<10;++
i)
235 {
238 }
239
245 for(
int i=0;
i<10;++
i)
246 {
249 }
250
256 for(
int i=0;
i<10;++
i)
257 {
260 }
261
262 using VE = const std::vector<const xAOD::Electron*>&;
263 using VM = const std::vector<const xAOD::Muon*>&;
264 using VP = const std::vector<const xAOD::Photon*>&;
265
267 .setTriggers("e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu50")
268 .setLeptonPDF(1, 1, {30e3f})
269 .
setEfficiency(
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose", 0.60)
270 .setEfficiency("mu20_iloose_L1MU15_OR_mu50", 0.60)
271 .setExpectedEfficiency(0.60, 1e-6)
272 ));
273
275 .setTriggers("e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu50")
276 .setLeptonPDF(1, 1, {30e3f})
277 .
setUnavailable(
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose")
278 .setEfficiency("mu20_iloose_L1MU15_OR_mu50", 0.60)
279 .setExpectedEfficiency(0.806800, 1e-6)
280 ));
281
283 .setTriggers("e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu50")
284 .setLeptonPDF(1, 4, {30e3f})
285 .
setEfficiency(
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose", 0.40)
286 ));
287
289 .setTriggers("2e12_lhloose_L12EM10VH")
290 .setLeptonPDF(2, 2, {30e3f})
292 .setExpectedEfficiency(0.25, 1e-6)
293 ));
294
296 .setTriggers("2e12_lhloose_L12EM10VH")
297 .setLeptonPDF(2, 3, {30e3f})
299 ));
300
302 .setTriggers("e17_lhloose_mu14")
303 .setLeptonPDF(2, 2, {20e3f})
305 .setEfficiency("mu14", 0.60)
306 .setExpectedEfficiency(0.36, 1e-6)
307 .setEventSelection([](VE ve, VM vm, VP) {
return count(ve,18e3f)>0&&
count(vm,15e3f)>0; })
308 ));
309
311 .setTriggers("e17_lhloose_mu14")
312 .setLeptonPDF(2, 3, {16e3f, 20e3f})
314 .setEfficiency("mu14", 0.56)
315 .setEventSelection([](VE ve, VM vm, VP) {
return count(ve,18e3f)>0&&
count(vm,15e3f)>0; })
316 ));
317
319 .setTriggers("mu18_mu8noL1")
320 .setLeptonPDF(2, 2, {30e3f})
322 .setEfficiency("mu8noL1", 0.70)
323 .setExpectedEfficiency(0.49, 1e-6)
324 ));
325
327 .setTriggers("mu18_mu8noL1")
328 .setLeptonPDF(2, 3, {11e3f, 21e3f})
330 .setEfficiency("mu8noL1", 0.70)
331 .setEventSelection([](VE, VM vm, VP) {
return count(vm,19e3f)>0&&
count(vm,10e3f)>1; })
332 ));
333
335 .setTriggers("2e12_lhloose_L12EM10VH || e17_lhloose_mu14 || mu18_mu8noL1")
336 .setLeptonPDF(2, 4, {10e3f, 16e3f, 20e3f})
338 .setEfficiency("e17_lhloose", 0.60)
339 .setEfficiency("mu18", 0.60)
340 .setEfficiency("mu14", 0.60)
341 .setEfficiency("mu8noL1", 0.70)
342 .setEventSelection([](VE ve, VM vm, VP) {
return count(ve,13e3f)>1
344 ));
345
347 .setTriggers("2e12_lhloose_L12EM10VH || e17_lhloose_mu14 || mu18_mu8noL1 || e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu50")
348 .setLeptonPDF(1, 4, {10e3f, 16e3f, 20e3f, 30e3f})
349 .
setEfficiency(
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose", 0.40)
350 .setEfficiency("mu20_iloose_L1MU15_OR_mu50", 0.40)
351 .setEfficiency("e12_lhloose_L1EM10VH", 0.50)
352 .setEfficiency("e17_lhloose", 0.60)
353 .setEfficiency("mu18", 0.60)
354 .setEfficiency("mu14", 0.60)
355 .setEfficiency("mu8noL1", 0.70)
356 .setEventSelection([](VE ve, VM vm, VP) {
return count(ve,13e3f)>1
358 ||
count(ve,25e3f)>0 ||
count(vm,21.5e3f)>0; })
359 ));
360
362 .setTriggers("e17_lhloose_2e9_lhloose")
363 .setLeptonPDF(3, 3, {20e3f})
365 .setEfficiency("e9_lhloose", 0.90)
366 .setExpectedEfficiency(0.729, 1e-6)
367 ));
368
370 .setTriggers("e17_lhloose_2e9_lhloose")
371 .setLeptonPDF(3, 5, {12e3f, 20e3f})
373 .setEfficiency("e9_lhloose", 0.70)
374 .setEventSelection([](VE ve, VM, VP) {
return (
count(ve,18e3f)>0&&
count(ve,10e3f)>2); })
375 ));
376
378 .setTriggers("3mu6")
379 .setLeptonPDF(3, 3, {10e3f})
381 .setExpectedEfficiency(0.729, 1e-6)
382 ));
383
385 .setTriggers("3mu6")
386 .setLeptonPDF(3, 5, {10e3f})
388 .setEventSelection([](VE, VM vm, VP) {
return count(vm,7e3f)>2; })
389 ));
390
392 .setTriggers("e12_lhloose_2mu10 || 2e12_lhloose_mu10")
393 .setLeptonPDF(3, 5, {14e3f})
395 .setEfficiency("mu10", 0.60)
396 .setEventSelection([](VE ve, VM vm, VP) {
return (
count(ve,13e3f)>1&&
count(vm,11e3f)>0) || (
count(ve,13e3f)>0&&
count(vm,11e3f)>1); })
397 ));
398
399
401 .setTriggers("2mu10 || 2mu14 || mu24_iloose_L1MU15")
402 .setLeptonPDF(1, 4, {13e3f, 16e3f, 30e3f})
404 .setEfficiency("mu14", 0.60)
405 .setEfficiency("mu24_iloose_L1MU15", 0.30)
406 .setEventSelection([](VE, VM vm, VP) {
return (
count(vm,11e3f)>1) || (
count(vm,25.5e3f)>1) ; })
407 ));
408
410 .setTriggers("mu18_mu8noL1 || 2mu14 || mu24_iloose_L1MU15")
411 .setLeptonPDF(1, 4, {11e3f, 16e3f, 20e3f, 30e3f})
413 .setEfficiency("mu14", 0.70)
414 .setEfficiency("mu18", 0.60)
415 .setEfficiency("mu24_iloose_L1MU15", 0.30)
416 .setEventSelection([](VE, VM vm, VP) {
return (
count(vm,25.5e3f)>0) || (
count(vm,10e3f)>1&&
count(vm,19e3f)>0) || (
count(vm,15e3f)>1) ; })
417 ));
418
420 .setTriggers("2e12_lhloose_L12EM10VH || mu18_mu8noL1 || 2mu14 || e17_lhloose_mu14 || e7_lhmedium_mu24 || e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15")
421 .setLeptonPDF(2, 2, {11e3f, 13e3f, 16e3f, 20e3f, 30e3f})
423 .setEfficiency("mu14", 0.70)
424 .setEfficiency("mu18", 0.60)
425 .setEfficiency("mu20_iloose_L1MU15", 0.30)
426 .setEfficiency("mu24", 0.37)
427 .setEfficiency("e7_lhmedium", 0.53)
428 .setEfficiency("e12_lhloose_L1EM10VH", 0.73)
429 .setEfficiency("e17_lhloose", 0.67)
430 .setEfficiency("e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose", 0.42)
431 .setEventSelection([](VE ve, VM vm, VP) {
return (
count(vm,25.5e3f)>0) || (
count(ve,25e3f)>0) || (
count(ve,13e3f)>1) || (
count(vm,15e3f)>1)
433 ));
434
436 .setTriggers("2g22_tight_L12EM15VHI")
437 .setLeptonPDF(2, 3, {30e3f})
439 .setEventSelection([](VE, VM, VP vp) {
return count(vp,23e3f)>1; })
440 ));
441
443 .setTriggers("2g50_loose_L12EM20VH || 2g22_tight_L12EM15VHI || g120_loose")
444 .setLeptonPDF(2, 3, {25e3f, 60e3f, 150e3f})
446 .setEfficiency("g50_loose_L1EM20VH", 0.74)
447 .setEfficiency("g120_loose", 0.82)
448 .setEventSelection([](VE, VM, VP vp) {
return count(vp,23e3f)>1 ||
count(vp,121e3f)>0; })
449 ));
450
452 .setTriggers("2g22_tight_L12EM15VHI || g35_medium_g25_medium_L12EM20VH")
453 .setLeptonPDF(2, 4, {24e3f, 30e3f, 40e3f})
455 .setEfficiency("g35_medium_L1EM20VH", 0.74)
456 .setEfficiency("g25_medium_L1EM20VH", 0.82)
457 .setEventSelection([](VE, VM, VP vp) {
return count(vp,23e3f)>1; })
458 ));
459
461 .setTriggers("2g25_loose_g15_loose")
462 .setLeptonPDF(3, 3, {30e3f})
464 .setEfficiency("g15_loose", 0.9)
465 .setExpectedEfficiency(0.704, 1e-6)
466 ));
467
469 .setTriggers("2g25_loose_g15_loose")
470 .setLeptonPDF(3, 5, {20e3f, 30e3f})
472 .setEfficiency("g15_loose", 0.88)
473 .setEventSelection([](VE, VM, VP vp) {
return count(vp,26e3f)>1 &&
count(vp,16e3f)>2; })
474 ));
475
477 .setTriggers("e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu50 || g120_loose")
478 .setLeptonPDF(1, 2, {150e3f})
479 .
setEfficiency(
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose", 0.55)
480 .setEfficiency("mu20_iloose_L1MU15_OR_mu50", 0.66)
481 .setEfficiency("g120_loose", 0.77)
482 ));
483
485 .setTriggers("e17_lhloose_2e9_lhloose || 3mu6 || 3g20_loose")
486 .setLeptonPDF(4, 6, {30e3f})
488 .setEfficiency("e17_lhloose", 0.54)
489 .setEfficiency("mu6", 0.77)
490 .setEfficiency("g20_loose", 0.81)
491 .setEventSelection([](VE ve, VM vm, VP vp) {
return count(ve,18e3f)>2 ||
count(vm,10e3f)>2 ||
count(vp,21e3f)>2; })
492 ));
493
495 .setTriggers("g120_loose || 2e12_lhloose_mu10 || 2g22_tight_L12EM15VHI")
496 .setLeptonPDF(3, 6, {150e3f})
498 .setEfficiency("mu10", 0.62)
499 .setEfficiency("g22_tight_L1EM15VHI", 0.35)
500 .setEfficiency("g120_loose", 0.56)
501 .setEventSelection([](VE ve, VM vm, VP vp) {
return (
count(ve,13e3f)>1 &&
count(vm,11e3f)>0) ||
count(vp,21e3f)>0; })
502 ));
503
505 .setTriggers("4mu4_L14MU3V")
506 .setLeptonPDF(4, 6, {20e3f})
508 .setEventSelection([](VE, VM vm, VP) {
return count(vm,5e3f)>=4; })
509 ));
510 return 0;
511}
unsigned count(const std::vector< const Lepton * > &leptons, float ptmin, float ptmax=1e12f)
bool run_test(const Config &cfg, int toy_to_debug=-1)
xAOD::ElectronContainer * electronContainer
xAOD::MuonContainer * muonContainer
xAOD::PhotonContainer * photonContainer
static void enableFailure() noexcept
void record(const T *p, const std::string &key)
A relatively simple transient store for objects created in analysis.
PhotonAuxContainer_v3 PhotonAuxContainer
Definition of the current photon auxiliary container.
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
Muon_v1 Muon
Reference the current persistent version:
Photon_v1 Photon
Definition of the current "egamma version".
MuonAuxContainer_v5 MuonAuxContainer
Definition of the current Muon auxiliary container.
ElectronAuxContainer_v3 ElectronAuxContainer
Definition of the current electron auxiliary container.
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
Electron_v1 Electron
Definition of the current "egamma version".
Config & setEfficiency(const std::string &leg, double eff)
Config & setUnavailable(const std::string &leg)