236 if (!
m_config->isMC())
return StatusCode::SUCCESS;
239 std::string electron_data_dir =
"ElectronEfficiencyCorrection/";
248 std::string electronID =
m_config->electronID();
249 if (electronID.find(
"LH") != std::string::npos) electronID.replace(electronID.find(
"LH"), 2,
"LLH");
250 std::string electronIDLoose =
m_config->electronIDLoose();
251 if (electronIDLoose.find(
"LH") != std::string::npos) electronIDLoose.replace(electronIDLoose.find(
"LH"), 2,
"LLH");
255 if(electronIsolation ==
"PLImprovedTight" || electronIsolation ==
"PLImprovedVeryTight"){
256 if(!(electronID ==
"TightLLH" || electronID ==
"MediumLLH")){
257 ATH_MSG_ERROR(
"Combination of electron PLIV WP and ID WP not available. Try MediumLH or TightLH.");
258 return StatusCode::FAILURE;
261 if(electronIsolationLoose ==
"PLImprovedTight" || electronIsolationLoose ==
"PLImprovedVeryTight"){
262 if(!(electronIDLoose ==
"TightLLH" || electronIDLoose ==
"MediumLLH")){
263 ATH_MSG_ERROR(
"Combination of loose electron PLIV WP and ID WP not available. Try MediumLH or TightLH.");
264 return StatusCode::FAILURE;
267 if(electronIsolation ==
"PLImprovedTight" || electronIsolation ==
"PLImprovedVeryTight" || electronIsolationLoose ==
"PLImprovedTight" || electronIsolationLoose ==
"PLImprovedVeryTight"){
269 ATH_MSG_ERROR(
"electron PLIV WPs are only available for FullSim.");
270 return StatusCode::FAILURE;
272 ATH_MSG_WARNING(
"Trigger SFs for PLIV isolation unavailable. Proceeding without online Isolation.");
279 std::vector<std::string> inExpID;
280 if(
m_config->electronIDSFFilePath() !=
"Default"){
281 m_config->setPrintEIDFileWarning(
true);
285 std::vector<std::string> inExpIDLoose;
286 if(
m_config->electronIDSFFileLoosePath() !=
"Default"){
287 m_config->setPrintEIDFileWarning(
true);
288 inExpIDLoose.push_back(
electronSFFilePath(
"EXPID_Loose", electronID, electronIsolation));
293 std::vector<std::string> inPLViso;
294 if (electronIsolation ==
"PLVTight" || electronIsolation ==
"PLVLoose") {
305 std::vector<std::string> inPLVisoLoose;
306 if (electronIsolationLoose ==
"PLVTight" || electronIsolationLoose ==
"PLVLoose") {
315 std::string trigger_string =
"";
317 if (
m_config->elTrigEffConfig() !=
" " ) {
318 trigger_string =
m_config->elTrigEffConfig();
321 ATH_MSG_ERROR(
"EgammaCPTools::setupScaleFactors, ElectronTriggerEfficiencyConfig not set, unable to retrieve SFs");
322 return StatusCode::FAILURE;
326 const std::string elSFPrefix =
"AsgElectronEfficiencyCorrectionTool_";
328 ATH_MSG_INFO(
"Setting up Electrons SF tool for TOTAL correlation model");
339 electronIDLoose,
"",
"",
dataType,
"TOTAL",
"",
"");
344 (!(electronIsolation ==
"PLImprovedTight" || electronIsolation ==
"PLImprovedVeryTight")) ? electronIsolation :
"",
349 (!(electronIsolationLoose ==
"PLImprovedTight" || electronIsolationLoose ==
"PLImprovedVeryTight")) ? electronIsolationLoose :
"",
354 (!(electronIsolation ==
"PLImprovedTight" || electronIsolation ==
"PLImprovedVeryTight")) ? electronIsolation :
"",
355 "Eff_" + trigger_string,
dataType,
"TOTAL",
"",
359 (!(electronIsolationLoose ==
"PLImprovedTight" || electronIsolationLoose ==
"PLImprovedVeryTight")) ? electronIsolationLoose :
"",
360 "Eff_" + trigger_string,
dataType,
"TOTAL",
"",
"");
362 if (electronIsolation ==
"PLVTight" || electronIsolation ==
"PLVLoose") {
365 else if(electronIsolation ==
"None" || electronIsolation ==
"")
m_electronEffSFIso =
nullptr;
368 electronIsolation,
"",
dataType,
"TOTAL",
"",
"");
370 if (electronIsolationLoose ==
"PLVTight" || electronIsolationLoose ==
"PLVLoose") {
376 electronIDLoose, electronIsolationLoose,
"",
dataType,
"TOTAL",
"",
381 "Requested Electrons SF tool for " <<
m_config->electronEfficiencySystematicModel() <<
" correlation model");
383 if (
m_config->electronEfficiencySystematicModel() !=
"TOTAL") {
385 "Setting up Electrons SF tool for " <<
m_config->electronEfficiencySystematicModel() <<
" correlation model");
387 const std::string elSFPrefixCorrModel = elSFPrefix +
"CorrModel_";
390 "Reconstruction",
"",
"",
"",
dataType,
391 m_config->electronEfficiencySystematicModelNToys(),
392 m_config->electronEfficiencySystematicModelToySeed(),
393 m_config->electronEfficiencySystematicModel(),
394 m_config->electronEfficiencySystematicModelEtaBinning(),
395 m_config->electronEfficiencySystematicModelEtBinning());
399 m_config->electronEfficiencySystematicModelNToys(),
400 m_config->electronEfficiencySystematicModelToySeed(),
401 m_config->electronEfficiencySystematicModel(),
402 m_config->electronEfficiencySystematicModelEtaBinning(),
403 m_config->electronEfficiencySystematicModelEtBinning());
405 m_config->electronEfficiencySystematicModel(),
406 m_config->electronEfficiencySystematicModelEtaBinning(),
407 m_config->electronEfficiencySystematicModelEtBinning());
413 m_config->electronEfficiencySystematicModelNToys(),
414 m_config->electronEfficiencySystematicModelToySeed(),
415 m_config->electronEfficiencySystematicModel(),
416 m_config->electronEfficiencySystematicModelEtaBinning(),
417 m_config->electronEfficiencySystematicModelEtBinning());
420 m_config->electronEfficiencySystematicModel(),
421 m_config->electronEfficiencySystematicModelEtaBinning(),
422 m_config->electronEfficiencySystematicModelEtBinning());
427 (!(electronIsolation ==
"PLImprovedTight" || electronIsolation ==
"PLImprovedVeryTight")) ? electronIsolation :
"",
429 m_config->electronEfficiencySystematicModelNToys(),
430 m_config->electronEfficiencySystematicModelToySeed(),
431 m_config->electronEfficiencySystematicModel(),
432 m_config->electronEfficiencySystematicModelEtaBinning(),
433 m_config->electronEfficiencySystematicModelEtBinning());
437 (!(electronIsolationLoose ==
"PLImprovedTight" || electronIsolationLoose ==
"PLImprovedVeryTight")) ? electronIsolationLoose :
"",
439 m_config->electronEfficiencySystematicModelNToys(),
440 m_config->electronEfficiencySystematicModelToySeed(),
441 m_config->electronEfficiencySystematicModel(),
442 m_config->electronEfficiencySystematicModelEtaBinning(),
443 m_config->electronEfficiencySystematicModelEtBinning());
447 (!(electronIsolation ==
"PLImprovedTight" || electronIsolation ==
"PLImprovedVeryTight")) ? electronIsolation :
"",
449 m_config->electronEfficiencySystematicModelNToys(),
450 m_config->electronEfficiencySystematicModelToySeed(),
451 m_config->electronEfficiencySystematicModel(),
452 m_config->electronEfficiencySystematicModelEtaBinning(),
453 m_config->electronEfficiencySystematicModelEtBinning());
457 (!(electronIsolationLoose ==
"PLImprovedTight" || electronIsolationLoose ==
"PLImprovedVeryTight")) ? electronIsolationLoose :
"",
459 m_config->electronEfficiencySystematicModelNToys(),
460 m_config->electronEfficiencySystematicModelToySeed(),
461 m_config->electronEfficiencySystematicModel(),
462 m_config->electronEfficiencySystematicModelEtaBinning(),
463 m_config->electronEfficiencySystematicModelEtBinning());
465 if (electronIsolation ==
"PLVTight" || electronIsolation ==
"PLVLoose") {
467 m_config->electronEfficiencySystematicModel(),
468 m_config->electronEfficiencySystematicModelEtaBinning(),
469 m_config->electronEfficiencySystematicModelEtBinning());
474 electronID, electronIsolation,
"",
dataType,
475 m_config->electronEfficiencySystematicModelNToys(),
476 m_config->electronEfficiencySystematicModelToySeed(),
477 m_config->electronEfficiencySystematicModel(),
478 m_config->electronEfficiencySystematicModelEtaBinning(),
479 m_config->electronEfficiencySystematicModelEtBinning());
481 if (electronIsolationLoose ==
"PLVTight" || electronIsolationLoose ==
"PLVLoose") {
483 m_config->electronEfficiencySystematicModel(),
484 m_config->electronEfficiencySystematicModelEtaBinning(),
485 m_config->electronEfficiencySystematicModelEtBinning());
492 electronIsolationLoose,
"",
dataType,
493 m_config->electronEfficiencySystematicModelNToys(),
494 m_config->electronEfficiencySystematicModelToySeed(),
495 m_config->electronEfficiencySystematicModel(),
496 m_config->electronEfficiencySystematicModelEtaBinning(),
497 m_config->electronEfficiencySystematicModelEtBinning());
515 ATH_MSG_INFO(
"Finished setting up forward Electrons SF tool");
520 if (
m_config->useElectronChargeIDSelection()
521 && electronIsolation !=
"PLVTight" && electronIsolation !=
"PLVLoose"
522 && electronIsolationLoose !=
"PLVTight" && electronIsolationLoose !=
"PLVLoose"
523 && electronIsolation !=
"PLImprovedTight" && electronIsolation !=
"PLImprovedVeryTight"
524 && electronIsolationLoose !=
"PLImprovedTight" && electronIsolationLoose !=
"PLImprovedVeryTight") {
529 if (
m_config->applyTightSFsInLooseTree())
533 std::vector<std::string> inChargeID {
536 std::vector<std::string> inChargeIDLoose {
557 return StatusCode::SUCCESS;