12#ifndef XAOD_STANDALONE
96using namespace TrigConf;
688 m_jetCalibTool.declarePropertyFor(
this,
"JetCalibTool",
"The JetCalibTool" );
689 m_jetFatCalibTool.declarePropertyFor(
this,
"FatJetCalibTool",
"The JetCalibTool for large-R jets" );
692 m_fatjetUncertaintiesTool.declarePropertyFor(
this,
"FatJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R jets" );
694 m_fatjetFFSmearingTool.declarePropertyFor(
this,
"FatJetFFSmearingTool",
"The FFSmearingTool for large-R jets" );
695 m_WTagjetUncertaintiesTool.declarePropertyFor(
this,
"WJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R W-tagged jets" );
696 m_ZTagjetUncertaintiesTool.declarePropertyFor(
this,
"ZJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Z-tagged jets" );
697 m_TopTagjetUncertaintiesTool.declarePropertyFor(
this,
"TopJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Top-tagged jets" );
698 m_jetCleaningTool.declarePropertyFor(
this,
"JetCleaningTool",
"The JetCleaningTool" );
700 m_jetJvtMomentTool.declarePropertyFor(
this,
"JetJvtMomentTool",
"The JetJvtMomentTool" );
701 m_jetNNJvtMomentTool.declarePropertyFor(
this,
"JetNNJvtMomentTool",
"The JetNNJvtMomentTool" );
707 m_WTaggerTool.declarePropertyFor(
this,
"WTaggerTool",
"The SmoothedWZTaggerTool" );
708 m_ZTaggerTool.declarePropertyFor(
this,
"ZTaggerTool",
"The SmoothedWZTaggerTool" );
709 m_TopTaggerTool.declarePropertyFor(
this,
"TopTaggerTool",
"The DNNTopTaggerTool" );
712 m_muonSelectionTool.declarePropertyFor(
this,
"MuonSelectionTool",
"The MuonSelectionTool for signal muons" );
713 m_muonSelectionHighPtTool.declarePropertyFor(
this,
"MuonSelectionHighPtTool",
"The MuonSelectionTool for signal muons (HighPt WP)" );
715 m_muonCalibTool.declarePropertyFor(
this,
"MuonCalibTool",
"The MuonCalibTool" );
716 m_muonEfficiencySFTool.declarePropertyFor(
this,
"MuonEfficiencyScaleFactorsTool",
"The MuonEfficiencySFTool" );
719 m_muonIsolationSFTool.declarePropertyFor(
this,
"MuonIsolationScaleFactorsTool",
"The MuonIsolationSFTool" );
721 m_muonTriggerSFTool.declarePropertyFor(
this,
"MuonTriggerScaleFactorsTool",
"The MuonTriggerSFTool" );
722 m_muonLRTORTool.declarePropertyFor(
this,
"MuonLRTOverlapRemovalTool",
"Prompt/LRT muon OR Tool" );
724 m_elecEfficiencySFTool_reco.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_reco",
"The ElectronEfficiencyCorrectionTool for reconstruction SFs" );
726 m_elecEfficiencySFTool_id.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_id",
"The ElectronEfficiencyCorrectionTool for ID SFs" );
727 m_elecEfficiencySFTool_iso.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_iso" ,
"The ElectronEfficiencyCorrectionTool for iso SFs" );
728 m_elecEfficiencySFTool_isoHighPt.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_isoHigPt" ,
"The ElectronEfficiencyCorrectionTool for iso high-pt SFs" );
729 m_elecSelLikelihood.declarePropertyFor(
this,
"ElectronLikelihoodTool" ,
"The ElectronSelLikelihoodTool for signal electrons" );
730 m_elecSelLikelihoodBaseline.declarePropertyFor(
this,
"ElectronLikelihoodToolBaseline" ,
"The ElectronSelLikelihoodTool for baseline electrons" );
733 m_elecChargeEffCorrTool.declarePropertyFor(
this,
"ElectronChargeEffCorrectionTool",
"The ElectronChargeEffCorrectionTool" );
734 m_elecLRTORTool.declarePropertyFor(
this,
"ElectronLRTOverlapRemovalTool",
"Prompt/LRT electron OR Tool" );
736 m_photonSelIsEM.declarePropertyFor(
this,
"PhotonIsEMSelector" ,
"The PhotonIsEMSelectorTool for signal photons" );
737 m_photonSelIsEMBaseline.declarePropertyFor(
this,
"PhotonIsEMSelectorBaseline" ,
"The PhotonIsEMSelectorTool for baseline photons" );
738 m_photonEfficiencySFTool.declarePropertyFor(
this,
"PhotonEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for reco SFs" );
739 m_photonIsolationSFTool.declarePropertyFor(
this,
"PhotonIsolationCorrectionTool",
"The PhotonEfficiencyCorrectionTool for iso SFs" );
740 m_photonTriggerSFTool.declarePropertyFor(
this,
"PhotonTriggerEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for trigger SFs" );
742 m_egammaCalibTool.declarePropertyFor(
this,
"EgammaCalibrationAndSmearingTool",
"The EgammaCalibrationAndSmearingTool");
744 m_tauSelTool.declarePropertyFor(
this,
"TauSelectionTool",
"The TauSelectionTool for signal taus" );
745 m_tauSelToolBaseline.declarePropertyFor(
this,
"TauSelectionToolBaseline",
"The TauSelectionTool for baseline taus" );
746 m_tauSmearingTool.declarePropertyFor(
this,
"TauSmearingTool",
"The TauSmearingTool" );
747 m_tauTruthMatch.declarePropertyFor(
this,
"TauTruthMatch",
"The TTMT" );
748 m_tauEffTool.declarePropertyFor(
this,
"TauEfficiencyCorrectionsTool",
"The TauEfficiencyCorrectionsTool" );
750 m_btagEffTool.declarePropertyFor(
this,
"BTaggingEfficiencyTool",
"The BTaggingEfficiencyTool" );
751 m_btagSelTool.declarePropertyFor(
this,
"BTaggingSelectionTool",
"The main BTaggingSelectionTool" );
752 m_btagSelTool_OR.declarePropertyFor(
this,
"BTaggingSelectionTool_OR",
"The BTaggingSelectionTool used to select b-jets for overlap removal" );
753 m_btagEffTool_trkJet.declarePropertyFor(
this,
"BTaggingEfficiencyTool_trkJet",
"The BTaggingEfficiencyTool for track jets" );
754 m_btagSelTool_trkJet.declarePropertyFor(
this,
"BTaggingSelectionTool_trkJet",
"The main BTaggingSelectionTool for track jets" );
756 m_metMaker.declarePropertyFor(
this,
"METMaker",
"The METMaker instance");
757 m_metSystTool.declarePropertyFor(
this,
"METSystTool",
"The METSystematicsTool");
758 m_metSignif.declarePropertyFor(
this,
"METSignificance",
"The METSignifiance instance");
760 m_trigGlobalEffCorrTool_diLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diLep",
"The TrigGlobalEfficiencyCorrection tool for dilepton" );
761 m_trigGlobalEffCorrTool_multiLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_multiLep",
"The TrigGlobalEfficiencyCorrection tool for trilepton" );
762 m_trigGlobalEffCorrTool_diPhoton.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diPhoton",
"The TrigGlobalEfficiencyCorrection tool for asymmetric diphoton" );
763 m_trigConfTool.declarePropertyFor(
this,
"TrigConfigTool",
"The TrigConfigTool" );
764 m_trigDecTool.declarePropertyFor(
this,
"TrigDecisionTool",
"The TrigDecisionTool" );
765 m_trigMatchingTool.declarePropertyFor(
this,
"TrigMatchTool",
"The TrigMatchingTool" );
767 m_trigDRScoringTool.declarePropertyFor(
this,
"TrigDRScoringTool",
"The TrigDRScoringTool" );
769 m_isoCorrTool.declarePropertyFor(
this,
"IsolationCorrectionTool",
"The IsolationCorrectionTool" );
770 m_isoTool.declarePropertyFor(
this,
"IsolationSelectionTool",
"The IsolationSelectionTool");
772 m_isoBaselineTool.declarePropertyFor(
this,
"IsolationSelectionTool_Baseline",
"The IsolationSelectionTool for baseline objects");
773 m_isoHighPtTool.declarePropertyFor(
this,
"IsolationSelectionTool_HighPt",
"The IsolationSelectionTool for High Pt");
774 m_isoCloseByTool.declarePropertyFor(
this,
"IsolationCloseByCorrectionTool",
"The IsolationCloseByCorrectionTool");
776 m_prwTool.declarePropertyFor(
this,
"PileupReweightingTool",
"The PRW tool" );
778 m_LRTuncTool.declarePropertyFor(
this,
"InclusiveTrackFilterTool",
"The LRT uncertainty tool");
780 m_pmgSHnjetWeighter.declarePropertyFor(
this,
"PMGSHVjetReweightTool",
"The PMGSHVjetReweightTool (AntiKt4TruthJets)" );
781 m_pmgSHnjetWeighterWZ.declarePropertyFor(
this,
"PMGSHVjetReweightWZTool",
"The PMGSHVjetReweightTool (AntiKt4TruthWZJets)" );
783 m_tauJetORtool.declarePropertyFor(
this,
"TauJetOverlapTool",
"The TauJetOverlapTool");
821 "FCLoose",
"FCTight",
825 "TightTrackOnly_VarRad",
"TightTrackOnly_FixedRad",
826 "Tight_VarRad",
"Loose_VarRad",
827 "PLVLoose",
"PLVTight",
828 "PLImprovedTight",
"PLImprovedVeryTight"
833 "PflowLoose_FixedRad",
"PflowLoose_VarRad",
"PflowTight_FixedRad",
"PflowTight_VarRad",
834 "TightTrackOnly_FixedRad",
"TightTrackOnly_VarRad",
"HighPtTrackOnly",
835 "PLVLoose",
"PLVTight",
836 "Loose_VarRad",
"Loose_FixedRad",
"Tight_VarRad",
"Tight_FixedRad",
837 "PLImprovedTight",
"PLImprovedVeryTight"
858#define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
859 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
860 if( TOOLHANDLE.retrieve().isFailure()) { \
861 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
862 return StatusCode::FAILURE; \
865#define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
866 CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
868#define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
870 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
871 if(TOOLHANDLE.retrieve().isFailure()) { \
872 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
873 return StatusCode::FAILURE; \
887 ATH_MSG_ERROR(
"Initialising for a second time -- something is wrong!");
888 return StatusCode::FAILURE;
894 bool autoconf(
false);
895#ifndef XAOD_STANDALONE
898 ATH_MSG_INFO(
"Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
899 std::string projectName =
"";
901 if ( projectName ==
"IS_SIMULATION" ) {
902 std::string simFlavour =
"";
904 TString s(simFlavour); s.ToUpper();
906 }
else if (projectName.compare(0, 4,
"data") == 0 ) {
909 ATH_MSG_ERROR(
"Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
910 return StatusCode::FAILURE;
923 ATH_MSG_FATAL(
"You must set the DataSource property to Data, FullSim or AtlfastII !!");
924 if (autoconf)
ATH_MSG_FATAL(
"Autoconfiguration seems to have failed!");
927 return StatusCode::FAILURE;
939 return StatusCode::FAILURE;
950 std::string dataType;
953 if ( dataType.compare(
"StreamDAOD_PHYS")==0 || dataType.compare(
"StreamDAOD_PHYSLITE")==0 )
m_defaultTruthJets =
"AntiKt4TruthDressedWZJets";
954 if ( dataType.compare(
"StreamDAOD_PHYSLITE")==0)
m_isPHYSLITE =
true;
974 m_eleIdDFName =
m_eleId.find(
"DNN") == std::string::npos ?
"DFCommonElectronsLH" :
"DFCommonElectronsDNN";
975 m_eleIdDFName += TString(
m_eleId).ReplaceAll(
"LooseAndBLayer",
"LooseBL").ReplaceAll(
"LLH",
"").ReplaceAll(
"DNNnoCF",
"").ReplaceAll(
"DNN",
"").Data();
976 if (
m_eleId.find(
"noCF") != std::string::npos)
1010 return StatusCode::SUCCESS;
1017 std::string prwConfigFile(
"");
1021 prwConfigFile = PRWfilesDir;
1024 std::string amiTag(
"");
1025 std::string mcCampaignMD(
"");
1026 std::string simFlavour(
"");
1027 std::string simType(
"");
1032 std::map<std::string,std::vector<std::string>> PRWRtags = {};
1033 std::string allcampaigns =
"mc20a.mc20d.mc20e.mc21a.mc23a.mc23c.mc23d.mc23e";
1034 bool standard_like =
true;
1036 std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(
":"));
1037 std::vector<std::string> irtags =
split( campaign_rtags.substr(campaign_rtags.find(
":")+1),
"_" );
1038 PRWRtags[icampaign] = irtags;
1039 ATH_MSG_DEBUG(
"PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find(
"_")+1) <<
" for campaign " << icampaign );
1041 for (
const auto&
x : PRWRtags ) {
1042 if ( allcampaigns.find(
x.first)==string::npos ) {
1045 return StatusCode::FAILURE;
1055 if(simFlavour.starts_with(
"ATLFASTII")) simType =
"AFII";
1056 else if(simFlavour.starts_with(
"ATLFAST3")) simType =
"AF3";
1057 else simType =
"FS";
1060 while ( mcCampaignMD.empty() ) {
1061 for (
const auto& campaign_rtags : PRWRtags ) {
1062 for (
const auto& rtag: campaign_rtags.second ) {
1063 if (found)
continue;
1064 if (amiTag.find(rtag)!=string::npos) {
1065 mcCampaignMD = campaign_rtags.first.substr(0,5);
1066 standard_like = (campaign_rtags.first.find(
"ns")?
true:
false);
1073 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" << amiTag <<
"'. Please check your input sample.");
1074 return StatusCode::FAILURE;
1077 ATH_MSG_INFO(
"Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD <<
" (from amiTag " << amiTag <<
") (standard-like = " << (standard_like?
"true":
"false") <<
")." );
1078 if ( (!standard_like) && (!RPVLLmode) )
1079 ATH_MSG_WARNING(
"Non-standard r-tag found (" << amiTag.data() <<
"), but RPVLLmode not set. Perhaps you want to set \"PRW.autoconfigPRWRPVmode: 1\" in the config?");
1082#ifndef XAOD_STANDALONE
1083 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1084 return StatusCode::FAILURE;
1090 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1091 std::string NoMetadataButPropertyOK(
"");
1092 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1094 NoMetadataButPropertyOK +=
"'. 'mcChannel' is used and passed to SUSYTools as '";
1095 NoMetadataButPropertyOK += std::to_string(
m_mcChannel);
1096 NoMetadataButPropertyOK +=
"'. Autocongiguring PRW accordingly.";
1102 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1106 std::string NoMetadataButPropertyOK(
"");
1107 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1109 NoMetadataButPropertyOK +=
"'. Autoconfiguring PRW accordingly.";
1114 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1115 return StatusCode::FAILURE;
1122 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1132 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1133 return StatusCode::FAILURE;
1139 int DSID_INT =
static_cast<int>(dsid);
1140 prwConfigFile +=
"DSID" + std::to_string(DSID_INT/1000) +
"xxx/pileup_" + mcCampaignMD +
"_dsid" + std::to_string(DSID_INT) +
"_" + simType +
".root";
1142 if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(
".root",
"_rpvll.root").Data();
1146 if (!PRWfileName.empty()) {
1147 prwConfigFile = PRWfilesDir + PRWfileName;
1148 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1156 if (mcCampaignMD.find(
"mc20") == std::string::npos) {
1157 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1158 return StatusCode::FAILURE;
1168 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20a").
Data() );
1169 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20d").
Data() );
1170 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20e").
Data() );
1176 if ( mcCampaignMD ==
"mc20d") {
1178 }
else if (mcCampaignMD ==
"mc20e") {
1180 }
else if (mcCampaignMD ==
"mc21a" || mcCampaignMD ==
"mc23a") {
1182 }
else if (mcCampaignMD ==
"mc23c" || mcCampaignMD ==
"mc23d") {
1184 }
else if (mcCampaignMD ==
"mc23e") {
1192 TFile testF(prwConfigFile.data(),
"read");
1193 if (testF.IsZombie()) {
1194 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() <<
" ! Impossible to autoconfigure PRW. Aborting." );
1195 if ( (!standard_like) && (!RPVLLmode) )
1196 ATH_MSG_WARNING(
"Running with non-standard r-tag (" << amiTag.data() <<
"), but RPVLLmode not set. Perhaps you want to set \"PRW.autoconfigPRWRPVmode: 1\" in the config?");
1197 return StatusCode::FAILURE;
1200 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1203 return StatusCode::SUCCESS;
1210 else ATH_MSG_ERROR(
"Trying to set data source to unknown type (" << source <<
")");
1216 return (std::find(list.begin(), list.end(),wp) != list.end());
1222 return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1229 TString copy = TString(wp).Copy().ReplaceAll(
"AndBLayer",
"BL").ReplaceAll(
"LLH",
"LHElectron");
1231 if (wp.find(
"DNNnoCF") != std::string::npos)
1232 copy.ReplaceAll(
"DNNnoCF",
"DNNnoCFElectron");
1233 else if (wp.find(
"DNN") != std::string::npos)
1234 copy.ReplaceAll(
"DNN",
"DNNElectron");
1240 if( mapFile.empty() )
1243 std::vector<std::string> theKeys;
1246 std::ifstream input( filename );
1247 for( std::string line; getline( input, line ); ){
1248 std::vector<std::string> tokens =
split((
const std::string)line,
"=");
1250 theKeys.push_back(tokens.at(0));
1261 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1262 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1265 property = rEnv.GetValue(propname.c_str(),
static_cast<int>(defaultValue));
1266 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1268 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1273 double defaultValue)
1276 if (property > -90.) {
1277 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1278 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1281 property = rEnv.GetValue(propname.c_str(), defaultValue);
1282 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1284 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1292 if (property > -90){
1293 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1294 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1297 property = rEnv.GetValue(propname.c_str(), defaultValue);
1298 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1300 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1305 const std::string& defaultValue,
bool allowEmpty)
1308 if (!property.empty()){
1309 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1310 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1313 property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1314 if (property.empty() && !allowEmpty) {
1315 ATH_MSG_FATAL(
"Read empty string property from text file (property name: " << propname <<
")");
1319 std::string tmp_prop =
property.substr(0, property.find(
'#', 0));
1320 property = TString(tmp_prop).ReplaceAll(
" ",
"").Data();
1323 if (property==
"None" || property==
"NONE" || property==
"none") {
1324 ATH_MSG_VERBOSE(
"Property \"" << propname <<
"\" being set to empty string due to specification of \"" << property <<
"\"" );
1328 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1330 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1341 success = rEnv.ReadFile(
m_configFile.c_str(), kEnvAll);
1342 if (success != 0)
return StatusCode::FAILURE;
1351 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.InputType") );
1353 if (
m_muId ==
static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1354 int muIdTmp = rEnv.GetValue(
"Muon.Id", 1);
1355 m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1358 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Muon.Id") );
1360 if (
m_muIdBaseline ==
static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1361 int muIdTmp = rEnv.GetValue(
"MuonBaseline.Id", 1);
1362 m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1365 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"MuonBaseline.Id") );
1369 std::string prop = rEnv.GetValue(
"Jet.JVT_WP",
"");
1370 if ( !prop.empty() ) {
1371 ATH_MSG_WARNING(
"readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1372 rEnv.SetValue(
"Jet.JvtWP", prop.c_str());
1373 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.JVT_WP") );
1382 m_conf_to_prop[
"EleBaseline.CrackVeto"] =
"EleBaselineCrackVeto";
1384 m_conf_to_prop[
"Ele.AllowRun3TrigSFFallback"] =
"EleAllowRun3TrigSFFallback";
1388 m_conf_to_prop[
"PhotonBaseline.CrackVeto"] =
"PhotonBaselineCrackVeto";
1396 m_conf_to_prop[
"OR.DoMuonJetGhostAssociation"] =
"ORDoMuonJetGhostAssociation";
1411 m_conf_to_prop[
"Trigger.UpstreamMatching"] =
"TriggerUpstreamMatching";
1417 m_conf_to_prop[
"SigLepPh.IsoCloseByOR"] =
"SigLepPhIsoCloseByOR";
1418 m_conf_to_prop[
"MET.RemoveOverlappingCaloTaggedMuons"] =
"METRemoveORCaloTaggedMuons";
1419 m_conf_to_prop[
"MET.DoSetMuonJetEMScale"] =
"METDoSetMuonJetEMScale";
1471 configFromFile(
m_electronTriggerSFStringSingle,
"Ele.TriggerSFStringSingle", rEnv,
"SINGLE_E_2015_e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose_2016_2018_e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0");
1472 configFromFile(
m_eleEffMapFilePath,
"Ele.EffMapFilePath", rEnv,
"ElectronEfficiencyCorrection/2015_2025/rel22.2/2025_Run3_Consolidated_Recommendation_v4/map2.txt");
1484 configFromFile(
m_trig2015combination_diLep,
"Trig.Dilep2015", rEnv,
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40 || 2e12_lhloose_L12EM10VH || e17_lhloose_mu14 || e7_lhmedium_mu24 || mu18_mu8noL1 || 2mu10");
1485 configFromFile(
m_trig2016combination_diLep,
"Trig.Dilep2016", rEnv,
"e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e17_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_L1EM22VHI_mu8noL1 || mu22_mu8noL1 || 2mu14");
1486 configFromFile(
m_trig2017combination_diLep,
"Trig.Dilep2017", rEnv,
"e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || mu22_mu8noL1 || 2mu14");
1487 configFromFile(
m_trig2018combination_diLep,
"Trig.Dilep2018", rEnv,
"e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || mu22_mu8noL1 || 2mu14");
1490 configFromFile(
m_trig2015combination_multiLep,
"Trig.Multi2015", rEnv,
"e24_lhmedium_L1EM20VH_OR_e60_lhmedium_OR_e120_lhloose || mu20_iloose_L1MU15_OR_mu40 || 2e12_lhloose_L12EM10VH || e17_lhloose_2e9_lhloose || 2e12_lhloose_mu10 || e12_lhloose_2mu10 || e17_lhloose_mu14 || e7_lhmedium_mu24 || mu18_mu8noL1 || 2mu10 || 3mu6");
1491 configFromFile(
m_trig2016combination_multiLep,
"Trig.Multi2016", rEnv,
"e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e17_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_L1EM22VHI_mu8noL1 || e17_lhloose_nod0_2e9_lhloose_nod0 || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1492 configFromFile(
m_trig2017combination_multiLep,
"Trig.Multi2017", rEnv,
"e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || e24_lhvloose_nod0_2e12_lhvloose_nod0_L1EM20VH_3EM10VH || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1493 configFromFile(
m_trig2018combination_multiLep,
"Trig.Multi2018", rEnv,
"e26_lhtight_nod0_ivarloose_OR_e60_lhmedium_nod0_OR_e140_lhloose_nod0 || mu26_ivarmedium_OR_mu50 || 2e24_lhvloose_nod0 || e17_lhloose_nod0_mu14 || e7_lhmedium_nod0_mu24 || e26_lhmedium_nod0_mu8noL1 || e24_lhvloose_nod0_2e12_lhvloose_nod0_L1EM20VH_3EM10VH || e12_lhloose_nod0_2mu10 || 2e12_lhloose_nod0_mu10 || mu22_mu8noL1 || 2mu14 || 3mu6");
1577 configFromFile(
m_WtagConfig,
"Jet.WtaggerConfig", rEnv,
"SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1578 configFromFile(
m_ZtagConfig,
"Jet.ZtaggerConfig", rEnv,
"SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1583 configFromFile(
m_jesConfig,
"Jet.JESConfig", rEnv,
m_isRun3 ?
"AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_241208_InSitu.config" :
"PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config");
1584 configFromFile(
m_jesConfigAFII,
"Jet.JESConfigAFII", rEnv,
m_isRun3 ?
"AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_241208_InSitu.config" :
"PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config");
1585 configFromFile(
m_jesConfigJMS,
"Jet.JESConfigJMS", rEnv,
"JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1587 configFromFile(
m_jesConfigFat,
"Jet.JESConfigFat", rEnv,
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1696 configFromFile(
m_prwActualMu2017File,
"PRW.ActualMu2017File", rEnv,
"GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1697 configFromFile(
m_prwActualMu2018File,
"PRW.ActualMu2018File", rEnv,
"GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1709 configFromFile(
m_autoconfigPRWRtags,
"PRW.autoconfigPRWRtags", rEnv,
"mc20a:r13167_r14859,mc20d:r13144_r14860,mc20e:r13145_r14861,mc21a:r13752_r13829,mc23a:r14622_r14932_r15540,mc23c:r14799_r14908,mc23d:r15224_r15530,mc23e:r16083");
1722 if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1723 ATH_MSG_ERROR(
"Found " << rEnv.GetTable()->GetSize() <<
" unparsed environment options:");
1726 return StatusCode::FAILURE;
1731 if (
m_WtagConfig.find(
"Efficiency50") != std::string::npos){
1734 else if (
m_WtagConfig.find(
"Efficiency80") != std::string::npos){
1738 ATH_MSG_ERROR(
"You have specified a large-R W-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1742 if (
m_ZtagConfig.find(
"Efficiency50") != std::string::npos){
1745 else if (
m_ZtagConfig.find(
"Efficiency80") != std::string::npos){
1749 ATH_MSG_ERROR(
"You have specified a large-R Z-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1752 std::string TopTagEff =
"";
1753 std::string TopTagType =
"";
1762 ATH_MSG_ERROR(
"You have specified a large-R Top-tag config without a matching uncertainties file. Please fix this. Currently the 50% and 80% WPs are supported");
1766 TopTagType =
"Inclusive";
1769 TopTagType =
"Contained";
1772 ATH_MSG_ERROR(
"You have specified a large-R Top-tag config without a matching uncertainties file. Please fix this. Currently the contained and inclusive WPs are supported");
1774 m_TopTagUncConfig =
"R10_SF_LCTopo_TopTag"+TopTagType+
"_SigEff"+TopTagEff+
".config";
1806 return StatusCode::SUCCESS;
1811 assert(delim.length() == 1);
1812 std::vector<std::string> retval;
1813 retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1815 if (s.find(delim)==std::string::npos) {
1816 retval.emplace_back(s);
1823 while ((next = s.find(delim, last)) != std::string::npos) {
1824 retval.emplace_back(s.substr(last, next - last));
1825 last = next + delim.length();
1829 retval.emplace_back(s.substr(last));
1836 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1838 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1841void SUSYObjDef_xAOD::getTauConfig(
const std::string& tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window,
bool &eleOLR,
bool &muVeto,
bool &muOLR)
const {
1843 if(tauConfigPath.empty())
return;
1847 rEnv.ReadFile(filename.c_str(), kEnvAll);
1849 std::vector<std::string> cuts;
1850 if (rEnv.Defined(
"SelectionCuts")) {
1851 cuts =
split(rEnv.GetValue(
"SelectionCuts",
" "),
" ");
1853 auto *l = rEnv.GetTable();
1854 for( Int_t i = 0; i < l->GetEntries(); ++i ) {
1855 cuts.push_back( l->At(i)->GetName() );
1864 static const std::string trueBool =
"TRUE";
1867 std::vector<std::string> v_pT_window;
1868 std::vector<std::string> v_eta_window;
1871 float pT_min = -99.0;
1872 float pT_max = -99.0;
1873 float eta_min = -99.0;
1874 float eta_max = -99.0;
1875 for (
const auto& cut : cuts) {
1876 if(cut ==
"PtRegion") {
1877 v_pT_window =
split(rEnv.GetValue(
"PtRegion",
""),
";");
1878 std::transform(std::begin(v_pT_window),
1879 std::end(v_pT_window),
1880 std::back_inserter(pT_window),
1881 [](
const std::string& s) {
return std::stof(s); }
1883 }
else if (cut ==
"PtMin") {
1884 pT_min = rEnv.GetValue(
"PtMin", NAN);
1885 }
else if (cut ==
"PtMax") {
1886 pT_max = rEnv.GetValue(
"PtMax", NAN);
1887 }
else if (cut ==
"AbsEtaRegion") {
1888 v_eta_window =
split(rEnv.GetValue(
"AbsEtaRegion",
""),
";");
1889 std::transform(std::begin(v_eta_window),
1890 std::end(v_eta_window),
1891 std::back_inserter(eta_window),
1892 [](
const std::string& s) {
return std::stof(s); }
1894 }
else if (cut ==
"AbsEtaMin") {
1895 eta_min = rEnv.GetValue(
"AbsEtaMin", NAN);
1896 }
else if (cut ==
"AbsEtaMax") {
1897 eta_max = rEnv.GetValue(
"AbsEtaMax", NAN);
1901 else if (cut ==
"EleOLR"){
1902 eleOLR = (rEnv.GetValue(
"EleOLR",
"FALSE") == trueBool);
1904 else if (cut ==
"MuonVeto"){
1905 muVeto = (rEnv.GetValue(
"MuonVeto",
"FALSE") == trueBool);
1907 else if (cut ==
"MuonOLR"){
1908 muOLR = (rEnv.GetValue(
"MuonOLR",
"FALSE") == trueBool);
1912 if(pT_window.empty()) {
1913 if(pT_min == pT_min) {
1915 pT_window.push_back(pT_min);
1917 pT_window.push_back(-std::numeric_limits<float>::infinity());
1920 if(pT_max == pT_max) {
1922 pT_window.push_back(pT_max);
1924 pT_window.push_back(std::numeric_limits<float>::infinity());
1928 if(eta_window.empty()) {
1929 if(eta_min == eta_min) {
1931 eta_window.push_back(eta_min);
1933 eta_window.push_back(-std::numeric_limits<float>::infinity());
1936 if(eta_max == eta_max) {
1938 eta_window.push_back(eta_max);
1940 eta_window.push_back(std::numeric_limits<float>::infinity());
1952 if(strict)
return StatusCode::FAILURE;
1956 if(strict)
return StatusCode::FAILURE;
1961 if(strict)
return StatusCode::FAILURE;
1965 if(strict)
return StatusCode::FAILURE;
1971 if(strict)
return StatusCode::FAILURE;
1975 if(strict)
return StatusCode::FAILURE;
1979 if(strict)
return StatusCode::FAILURE;
1985 if(strict)
return StatusCode::FAILURE;
1989 if(strict)
return StatusCode::FAILURE;
1993 if(strict)
return StatusCode::FAILURE;
1997 if(strict)
return StatusCode::FAILURE;
2002 ATH_MSG_WARNING(
"Your minimum signal jet pt is less than 20 GeV! Jet.Pt : " <<
m_jetPt <<
". This is NOT supported by the jet group!");
2012 ATH_MSG_WARNING(
"You btagging MinPt settings are inconsistent! EM(Topo|PFlow)Jets: not calibrated below 20 GeV (Btag.MinPt: " <<
m_BtagMinPt/1000. <<
" GeV set), VRTrackJets: not calibrated below 10 GeV (BtagTrkJet.MinPt: " <<
m_BtagMinPt_trkJet/1000. <<
" GeV set).");
2019 if(strict)
return StatusCode::FAILURE;
2024 if(strict)
return StatusCode::FAILURE;
2028 std::vector<float> pT_window;
2029 std::vector<float> eta_window;
2038 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2039 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2040 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2041 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2042 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2046 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2050 ATH_MSG_WARNING(
"Your baseline tau pt configuration is inconsistent! pre pT cut : " <<
m_tauPrePtCut <<
" / TauSelectionTool window (in MeV) : [" << 1000*pT_window[0] <<
", " << 1000*pT_window[1] <<
"]");
2051 if(strict)
return StatusCode::FAILURE;
2054 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2055 ATH_MSG_WARNING(
"Your baseline tau pt configuration is inconsistent! pT cut : " <<
m_tauPt <<
" / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] <<
", " << 1000*pT_window[1] <<
"]");
2056 if(strict)
return StatusCode::FAILURE;
2060 ATH_MSG_WARNING(
"Your baseline tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2061 if(strict)
return StatusCode::FAILURE;
2069 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2070 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2071 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2072 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2073 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2076 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2079 ATH_MSG_WARNING(
"Your tau pt configuration is inconsistent! pre pT cut : " <<
m_tauPrePtCut <<
" / TauSelectionTool window (in MeV) : [" << 1000*pT_window[0] <<
", " << 1000*pT_window[1] <<
"]");
2080 if(strict)
return StatusCode::FAILURE;
2083 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2084 ATH_MSG_WARNING(
"Your tau pt configuration is inconsistent! pT cut : " <<
m_tauPt <<
" / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] <<
", " << 1000*pT_window[1] <<
"]");
2085 if(strict)
return StatusCode::FAILURE;
2089 ATH_MSG_WARNING(
"Your tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2090 if(strict)
return StatusCode::FAILURE;
2095 return StatusCode::SUCCESS;
2111 return syst.
name().empty();
2116 bool affectsWeights =
false;
2117 for (
const auto& sys : systSet) {
2119 if(info.affectsKinematics) {
return false; }
2120 affectsWeights = affectsWeights or info.affectsWeights;
2122 return affectsWeights;
2127 for (
const auto& sys : systSet) {
2129 if(info.affectsKinematics) {
return true; }
2152 return StatusCode::FAILURE;
2155 ATH_MSG_DEBUG(
" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.
name() <<
"\" size " << systConfig.
size());
2162 if ( ret != StatusCode::SUCCESS) {
2163 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2165 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2170 if ( ret != StatusCode::SUCCESS) {
2171 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2173 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2178 if ( ret != StatusCode::SUCCESS) {
2179 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2181 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2186 if ( ret != StatusCode::SUCCESS) {
2187 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2189 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2195 if ( ret != StatusCode::SUCCESS) {
2196 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2198 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2203 if ( ret != StatusCode::SUCCESS) {
2204 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2206 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2211 if ( ret != StatusCode::SUCCESS) {
2212 ATH_MSG_VERBOSE(
"Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2214 ATH_MSG_VERBOSE(
"Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2219 if ( ret != StatusCode::SUCCESS) {
2220 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2222 ATH_MSG_VERBOSE(
"Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2227 if ( ret != StatusCode::SUCCESS) {
2228 ATH_MSG_VERBOSE(
"Cannot configure NNJvtEfficiency for systematic var. " << systConfig.
name() );
2235 if ( ret != StatusCode::SUCCESS) {
2236 ATH_MSG_VERBOSE(
"Cannot configure fJvtEfficiency for systematic var. " << systConfig.
name() );
2242 StatusCode ret =
m_muonCalibTool->applySystematicVariation(systConfig);
2243 if (ret != StatusCode::SUCCESS) {
2244 ATH_MSG_ERROR(
"Cannot configure MuonCalibTool for systematic var. " << systConfig.
name() );
2252 if ( ret != StatusCode::SUCCESS) {
2253 ATH_MSG_ERROR(
"Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2256 ATH_MSG_VERBOSE(
"MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2261 if ( ret != StatusCode::SUCCESS) {
2262 ATH_MSG_ERROR(
"Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.
name() );
2265 ATH_MSG_VERBOSE(
"MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.
name() );
2270 if ( ret != StatusCode::SUCCESS) {
2271 ATH_MSG_ERROR(
"Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2274 ATH_MSG_VERBOSE(
"MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2279 if ( ret != StatusCode::SUCCESS) {
2280 ATH_MSG_ERROR(
"Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.
name() );
2283 ATH_MSG_VERBOSE(
"MuonIsolationScaleFactors configured for systematic var. " << systConfig.
name() );
2288 if ( ret != StatusCode::SUCCESS) {
2289 ATH_MSG_ERROR(
"Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.
name() );
2292 ATH_MSG_VERBOSE(
"MuonTriggerScaleFactors configured for systematic var. " << systConfig.
name() );
2297 if (ret != StatusCode::SUCCESS) {
2298 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2301 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2306 if (ret != StatusCode::SUCCESS) {
2307 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.
name() );
2310 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.
name() );
2315 if (ret != StatusCode::SUCCESS) {
2316 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2319 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.
name() );
2324 if (ret != StatusCode::SUCCESS) {
2325 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.
name() );
2328 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.
name() );
2334 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2335 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2338 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2339 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2342 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2343 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2345 if (ret != StatusCode::SUCCESS) {
2346 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.
name() );
2349 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.
name() );
2355 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2356 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2359 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2360 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2363 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2364 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2366 if (ret != StatusCode::SUCCESS) {
2367 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.
name() );
2370 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.
name() );
2375 if (ret != StatusCode::SUCCESS) {
2376 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2379 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.
name() );
2384 if (ret != StatusCode::SUCCESS) {
2385 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.
name() );
2388 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.
name() );
2393 if (ret != StatusCode::SUCCESS) {
2394 ATH_MSG_ERROR(
"Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.
name() );
2397 ATH_MSG_VERBOSE(
"ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.
name() );
2402 if (ret != StatusCode::SUCCESS) {
2403 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2406 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2411 if (ret != StatusCode::SUCCESS) {
2412 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2415 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.
name() );
2420 if (ret != StatusCode::SUCCESS) {
2421 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2424 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.
name() );
2430 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2431 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2434 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2435 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2437 if (ret != StatusCode::SUCCESS) {
2438 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.
name() );
2441 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.
name() );
2446 if (ret != StatusCode::SUCCESS) {
2447 ATH_MSG_ERROR(
"Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.
name() );
2450 ATH_MSG_VERBOSE(
"EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.
name() );
2454 StatusCode ret =
m_isoCorrTool->applySystematicVariation(systConfig);
2455 if (ret != StatusCode::SUCCESS) {
2456 ATH_MSG_ERROR(
"Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.
name() );
2459 ATH_MSG_VERBOSE(
"IsolationCorrectionTool configured for systematic var. " << systConfig.
name() );
2464 StatusCode ret =
m_btagEffTool->applySystematicVariation(systConfig);
2465 if ( ret != StatusCode::SUCCESS) {
2466 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2469 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2475 if ( ret != StatusCode::SUCCESS) {
2476 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2479 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2484 if ( ret != StatusCode::SUCCESS) {
2485 ATH_MSG_ERROR(
"Cannot configure TauSmearingTool for systematic var. " << systConfig.
name() );
2492 StatusCode ret =
m_tauEffTool->applySystematicVariation(systConfig);
2493 if ( ret != StatusCode::SUCCESS) {
2494 ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2497 ATH_MSG_VERBOSE(
"Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2501 StatusCode ret = tool->applySystematicVariation(systConfig);
2502 if (ret != StatusCode::SUCCESS) {
2503 ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2506 ATH_MSG_VERBOSE(
"Configured " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2510 StatusCode ret =
m_metSystTool->applySystematicVariation(systConfig);
2511 if ( ret != StatusCode::SUCCESS) {
2512 ATH_MSG_ERROR(
"Cannot configure METSystematicsTool for systematic var. " << systConfig.
name() );
2515 ATH_MSG_VERBOSE(
"Configured METSystematicsTool for systematic var. " << systConfig.
name() );
2519 StatusCode ret =
m_prwTool->applySystematicVariation(systConfig);
2520 if ( ret != StatusCode::SUCCESS) {
2521 ATH_MSG_ERROR(
"Cannot configure PileupReweightingTool for systematic var. " << systConfig.
name() );
2524 ATH_MSG_VERBOSE(
"Configured PileupReweightingTool for systematic var. " << systConfig.
name() );
2529 StatusCode ret =
m_LRTuncTool->applySystematicVariation(systConfig);
2530 if ( ret != StatusCode::SUCCESS) {
2531 ATH_MSG_ERROR(
"Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2534 ATH_MSG_VERBOSE(
"Configured InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2538 return StatusCode::SUCCESS;
2544 return vector<ST::SystInfo>();
2553 vector<SystInfo> sysInfoList;
2554 sysInfoList.reserve(recommendedSystematics.
size() * 2);
2562 sysInfoList.push_back(infodef);
2567 for (
const auto& sys : systSet) {
2572 ATH_MSG_INFO(
"Returning list of " << sysInfoList.size() <<
" systematic variations");
2713 sysInfo.
affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2754 if (sys.basename().compare(0, 3,
"EG_") == 0) {
2756 }
else if (sys.basename().compare(0, 3,
"PH_") == 0) {
2758 }
else if (sys.basename().compare(0, 3,
"EL_") == 0) {
2826 if(tool->isAffectedBySystematic(sys)) {
2852 if (
m_prwTool->isAffectedBySystematic(sys) ) {
2865 std::string affectedType;
2867 case Unknown : affectedType =
"UNKNOWN";
break;
2868 case Jet : affectedType =
"JET";
break;
2869 case Egamma : affectedType =
"EGAMMA";
break;
2870 case Electron : affectedType =
"ELECTRON";
break;
2871 case Photon : affectedType =
"PHOTON";
break;
2872 case Muon : affectedType =
"MUON";
break;
2873 case Tau : affectedType =
"TAU";
break;
2874 case BTag : affectedType =
"BTAG";
break;
2875 case MET_TST : affectedType =
"MET_TST";
break;
2876 case MET_CST : affectedType =
"MET_CST";
break;
2877 case MET_Track : affectedType =
"MET_Track";
break;
2878 case EventWeight : affectedType =
"EVENT WEIGHT";
break;
2879 case LRT_Object : affectedType =
"LRT_OBJECT";
break;
2885 <<
"for " << affectedType );
2904 ATH_MSG_WARNING(
"No TruthJetContainer found! Dummy null weight retrieved.");
2911 if(jetContainer==
"AntiKt4TruthWZJets"){
2914 else if (jetContainer==
"AntiKt4TruthJets"){
2918 ATH_MSG_WARNING(jetContainer <<
" is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2927 if (
evtStore()->retrieve( vertices,
"PrimaryVertices" ).isSuccess() ) {
2928 for (
const auto vx : *vertices ) {
2935 ATH_MSG_WARNING(
"Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2947 ATH_MSG_WARNING(
"Will now call the OR tool on an event without a primary vertex, and it will likely crash. Please require a PV earlier in your analysis code!");
2950 ATH_CHECK(
m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
2972 return StatusCode::SUCCESS;
2980 return StatusCode::FAILURE;
2983 return StatusCode::SUCCESS;
2988 if (
evtStore()->retrieve( evtInfo,
"EventInfo" ).isFailure() ) {
2989 throw std::runtime_error(
"Unable to fetch EventInfo.");
2997 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo);
2999 if(!isfinite(pu_weight)) pu_weight = 1.;
3012 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3014 if(!isfinite(pu_weight)) pu_weight = 1.;
3021 return m_prwTool->getPRWHash( *evtInfo );
3026 return m_prwTool->getDataWeight( *evtInfo, trig );
3031 return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3036 return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3040 return m_prwTool->GetSumOfEventWeights(channel);
3049 else if (!muDependentRRN) {
3050 return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3052 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3062 return StatusCode::SUCCESS;
3074 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3085 throw std::runtime_error(
"Unable to fetch LargeD0 tracks.");
3097 throw std::runtime_error(
"Unable to fetch LargeD0 GSF tracks.");
3105 if (
isData())
return StatusCode::SUCCESS;
3107 const EventContext& ctx = Gaudi::Hive::currentContext();
3110 ATH_MSG_DEBUG (
"Applying LRT filter tool decorations for uncertainty");
3118 return StatusCode::SUCCESS;
3125 int theRunNumber = runNumber>0?runNumber:
GetRunNumber();
3126 if (theRunNumber<290000)
return 2015;
3127 else if (theRunNumber<320000)
return 2016;
3128 else if (theRunNumber<342000)
return 2017;
3129 else if (theRunNumber<400000)
return 2018;
3130 else if (theRunNumber<445000)
return 2022;
3131 else if (theRunNumber<465000)
return 2023;
3137#ifdef XAOD_STANDALONE
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
static std::string retrieveMetadata(const std::string &folder, const std::string &key, const ServiceHandle< StoreGateSvc > &inputMetaStore)
method that always returns as a string you can use from, e.g, pyROOT with evt = ROOT....
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
@ Ok
The correction was done successfully.
This module implements the central registry for handling systematic uncertainties with CP tools.
const SystematicSet & recommendedSystematics() const
returns: the recommended set of systematics
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Class to wrap a set of SystematicVariations.
std::string name() const
returns: the systematics joined into a single string.
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
size_t size() const
returns: size of the set
virtual bool isValid() override final
Can the handle be successfully dereferenced?
double m_photonBaselinePt
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelToolBaseline
std::vector< std::string > m_v_trigs24_cache_singleEle
std::string m_defaultTrackJets
double m_elebaselined0sig
std::vector< std::string > m_v_trigs23_cache_singleLep
std::vector< std::string > m_ph_id_support
bool m_metRemoveOverlappingCaloTaggedMuons
std::string m_BtagWP_trkJet
bool isAtlfast() const override final
std::string m_tauConfigPath
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighter
std::string m_JetTruthLabelName
void getTauConfig(const std::string &tauConfigPath, std::vector< float > &pT_window, std::vector< float > &eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const
std::map< std::string, std::string > m_conf_to_prop
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalTool > m_elecLRTORTool
std::vector< std::string > m_mu_iso_support
std::vector< std::string > m_el_id_support
asg::AnaToolHandle< Trig::TrigDecisionTool > m_trigDecTool
std::string m_EG_corrModel
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
std::string m_inputMETCore
std::string m_trig2017combination_singleLep
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighterWZ
std::string m_prwActualMu2018File
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_ZTagjetUncertaintiesTool
bool m_fatJetUncertaintiesPDsmearing
std::string m_autoconfigPRWPath
std::string m_trig2017combination_diPhoton
std::string m_trig2018combination_singleLep
StatusCode ApplyLRTUncertainty() override final
std::string m_trig2016combination_multiLep
std::string m_photonIdBaseline
std::string m_defaultJets
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
std::string m_trig2016combination_diPhoton
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_multiLep
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
std::vector< std::string > m_v_trigs18_cache_multiLep
double m_orMuJetTrkPtRatio
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_isoHighPt
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencySFTool
std::string m_prwActualMu2022File
asg::AnaToolHandle< CP::IPileupReweightingTool > m_prwTool
std::string m_EG_corrFNList
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
std::string m_autoconfigPRWRtags
std::string m_trig2024combination_singleLep
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihood
double m_orBoostedElectronMaxConeSize
ST::SystInfo getSystInfo(const CP::SystematicVariation &sys) const override final
std::vector< std::string > m_v_trigs15_cache_singleEle
ToolHandleArray< CP::IMuonTriggerScaleFactors > m_muonTrigSFTools
std::vector< std::string > m_prwLcalcFiles
std::string m_metsysConfigPrefix
StatusCode OverlapRemoval(const xAOD::ElectronContainer *electrons, const xAOD::MuonContainer *muons, const xAOD::JetContainer *jets, const xAOD::PhotonContainer *gamma=nullptr, const xAOD::TauJetContainer *taujet=nullptr, const xAOD::JetContainer *fatjets=nullptr) override final
bool check_isTighter(const std::string &wp1, const std::string &wp, const std::vector< std::string > &list) const
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
void setDataSource(int source)
bool m_jetUncertaintiesPDsmearing
std::string m_trig2016combination_singleLep
std::string m_trigMatchingPrefix
Use composite trigger matching tool if matching was done upstream.
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoHighPtTool
std::string m_commonPRWFileMC20d
std::map< std::string, bool > m_slices
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diPhoton
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
std::string m_commonPRWFileMC23c
bool isWeight(const CP::SystematicSet &systSet) const
bool isVariation(const CP::SystematicSet &syst) const
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
bool isData() const override final
SG::ConstAccessor< char > m_acc_photonId
double m_orBoostedElectronC2
double m_eleIsoHighPtThresh
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_id
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonTTVAEfficiencySFTool
std::string m_ZTagUncConfig
StatusCode NearbyLeptonCorrections(xAOD::ElectronContainer *electrons=nullptr, xAOD::MuonContainer *muons=nullptr) const override final
asg::AnaToolHandle< ICPJetCorrectionTool > m_fatjetFFSmearingTool
std::string m_eleEffMapFilePath
std::string m_WZTaggerCalibArea
unsigned int GetRunNumber() const override final
std::string m_jesCalibSeq
std::string m_trig2015combination_singleLep
std::string m_EigenvectorReductionB
asg::AnaToolHandle< IMETSignificance > m_metSignif
std::string m_jesConfigJMS
bool m_autoconfigPRWRPVmode
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
void GetTriggerTokens(std::string, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &) const
SG::ConstAccessor< char > m_acc_eleId
std::string m_prwActualMu2024File
std::vector< std::string > m_v_trigs22_cache_diLep
std::string m_metJetSelection
float GetPileupWeightPrescaledTrigger(const std::string &trigger_expr) override final
bool m_photonBaselineCrackVeto
SG::WriteHandleKey< xAOD::MuonContainer > m_outMuonLocation
std::vector< std::string > m_el_iso_support
std::string m_trig2017combination_multiLep
std::string m_jetUncertaintiesConfig
Prefix for trigger matchiing container name.
asg::AnaToolHandle< Trig::IMatchingTool > m_trigMatchingTool
std::string m_photonBaselineIso_WP
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecChargeIDSelectorTool
SG::WriteHandleKey< xAOD::ElectronContainer > m_outElectronLocation
StatusCode ApplyPRWTool(bool muDependentRRN=true) override final
double GetSumOfWeights(int channel) override final
std::string m_BtagSystStrategy
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigEffTools
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigSFTools
std::string EG_WP(const std::string &wp) const
bool m_orDoBoostedElectron
bool m_eleBaselineCrackVeto
StatusCode applySystematicVariation(const CP::SystematicSet &systConfig) override final
std::string m_defaultTruthJets
std::string m_commonPRWFileMC20e
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
std::string m_trig2023combination_singleLep
asg::AnaToolHandle< CP::IMuonLRTOverlapRemovalTool > m_muonLRTORTool
std::vector< std::string > m_v_trigs23_cache_singleEle
double m_photonBaselineEta
SUSYObjDef_xAOD(const std::string &name)
std::string m_eleIdDFName
bool m_upstreamTriggerMatching
SG::ConstAccessor< char > m_acc_photonIdBaseline
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
const CP::SystematicSet & currentSystematic() const
asg::AnaToolHandle< CP::IMuonTriggerScaleFactors > m_muonTriggerSFTool
std::string m_jetUncertaintiesCalibArea
float GetCorrectedActualInteractionsPerCrossing(bool includeDataSF=false) override final
std::vector< std::string > m_tau_id_support
bool m_orLinkOverlapObjects
std::string m_tauEffToolRecommendationTag
std::string m_muBaselineIso_WP
std::vector< std::string > m_v_trigs18_cache_singleEle
double m_orBoostedMuonMaxConeSize
int treatAsYear(const int runNumber=-1) const override final
std::vector< std::string > m_v_trigs17_cache_multiLep
unsigned int GetRandomRunNumber(bool muDependentRRN=true) override final
std::vector< std::string > m_v_trigs22_cache_singleLep
std::string m_TopTaggerCalibArea
std::vector< std::string > GetTriggerOR(const std::string &trigExpr) const
std::string m_trig2015combination_diLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trigEff_singleLep
std::string m_photonTriggerName
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
float GetPileupWeight() override final
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
bool m_metDoSetMuonJetEMScale
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
std::string m_fJvtConfigRun3
std::string m_orInputLabel
std::vector< std::string > m_v_trigs15_cache_multiLep
std::string m_eleIdBaseline
std::map< std::string, std::string > m_el_iso_fallback
CP::SystematicSet m_currentSyst
std::string m_photonIso_WP
StatusCode initialize() override final
Dummy implementation of the initialisation function.
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencyBMHighPtSFTool
asg::AnaToolHandle< ORUtils::IOverlapTool > m_tauJetORtool
std::vector< std::string > m_v_trigs17_cache_diLep
std::string m_jetCleanDFName
float GetCorrectedAverageInteractionsPerCrossing(bool includeDataSF=false) override final
std::string m_commonPRWFileMC23d
std::string m_muIsoHighPt_WP
std::vector< std::string > m_v_trigs18_cache_singleLep
CP::SystematicSet m_defaultSyst
std::string m_jesConfigJMSData
std::string m_ToptagConfig
double m_orBJetPtUpperThres
double m_muIsoHighPtThresh
std::string m_commonPRWFileMC23e
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibTool
std::string m_fJvtConfigRun2
std::vector< std::string > m_v_trigs15_cache_diLep
std::string m_photonIdBaselineDFName
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
ULong64_t GetPileupWeightHash() override final
std::string m_jesCalibArea
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
bool m_metDoRemoveMuonJets
std::string m_tauSmearingToolRecommendationTag
asg::AnaToolHandle< IEGammaAmbiguityTool > m_egammaAmbiguityTool
std::vector< std::string > m_v_trigs22_cache_multiLep
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecChargeEffCorrTool
StatusCode validConfig(bool strict=false) const
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
std::string m_WTagUncConfig
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionTool > m_isoCloseByTool
bool m_orDoMuonJetGhostAssociation
std::string m_jesCalibSeqJMS
std::string m_tauIdBaseline
std::string m_eleIsoHighPt_WP
bool check_isOption(const std::string &wp, const std::vector< std::string > &list) const
asg::AnaToolHandle< IMETMaker > m_metMaker
bool m_muHighPtExtraSmear
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigDRScoringTool
StatusCode resetSystematics() override final
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
std::string m_inputMETMap
bool m_orDoTau
Overlap removal options.
StatusCode readConfig() override final
std::string m_trig2016combination_diLep
std::vector< std::string > m_v_trigs24_cache_singleLep
std::string m_JvtConfigRun2
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
bool isNominal(const CP::SystematicSet &syst) const
std::vector< std::string > m_v_trigs18_cache_diLep
asg::AnaToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
double m_BtagMinPt_trkJet
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigSFTools
std::vector< ST::SystInfo > getSystInfoList() const override final
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_GSFLRTCollectionName
std::string m_eleConfigBaseline
std::string m_trig2022combination_singleLep
asg::AnaToolHandle< IMETSystematicsTool > m_metSystTool
bool m_useBtagging_trkJet
std::set< std::string > m_bool_prop_set
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionHighPtTool
std::string m_EigenvectorReductionLight
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
bool currentSystematicIsVariation() const
std::string m_trig2018combination_diPhoton
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
const xAOD::TrackParticleContainer & GetInDetLargeD0GSFTracks(const EventContext &ctx) const override final
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
asg::AnaToolHandle< InDet::IInclusiveTrackFilterTool > m_LRTuncTool
std::vector< std::string > getElSFkeys(const std::string &mapFile) const
std::vector< std::string > m_v_trigs16_cache_multiLep
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
float GetDataWeight(const std::string &) override final
std::string m_commonPRWFileMC20a
std::string m_trig2022combination_diLep
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonHighPtIsolationSFTool
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_LRTCollectionName
std::string m_tauSmearingToolGenerator
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
SG::ConstAccessor< char > m_acc_eleIdBaseline
std::string m_trig2018combination_diLep
std::string m_trig2017combination_diLep
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diLep
const std::vector< std::string > split(const std::string &s, const std::string &delim) const
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
std::string m_prwActualMu2017File
std::vector< std::string > m_v_trigs22_cache_singleEle
std::vector< std::string > m_prwConfFiles
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_reco
Combined muon collection.
std::string m_jesConfigAFII
const xAOD::Vertex * GetPrimVtx() const override final
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_TopTagjetUncertaintiesTool
bool m_autoconfigPRWCombinedmode
std::vector< CP::SystematicSet > m_fatjetFFSmearingSyst
std::vector< std::string > m_v_trigs17_cache_singleEle
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
StatusCode SUSYToolsInit()
float getSherpaVjetsNjetsWeight() const override final
std::vector< std::string > m_v_trigs16_cache_singleLep
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingTool > m_tauTruthMatch
std::vector< std::string > m_v_trigs16_cache_singleEle
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
bool m_useSigLepForIsoCloseByOR
std::string m_commonPRWFileMC21a
std::string m_muTriggerSFCalibRelease
std::string m_tauConfigPathBaseline
std::vector< std::string > m_v_trigs16_cache_diLep
std::map< std::string, std::string > m_mu_iso_fallback
std::string m_jetUncertaintiesAnalysisFile
std::string m_BtagKeyOverride
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMBaseline
bool currentSystematicIsNominal() const
bool m_murequirepassedHighPtCuts
std::string m_eleIdBaselineDFName
std::string m_jetUncertaintiesMCType
std::string m_inputMETSuffix
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
bool m_ApplyMVATESQualityCheck
SG::ConstAccessor< char > m_acc_jetClean
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigEffTools
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
std::string m_EigenvectorReductionC
std::string m_fatJetUncConfig
std::string m_jesConfigFat
ORUtils::ToolBox m_orToolbox
std::string m_TopTagUncConfig
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigMatchScoringTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionToolBaseline
std::string m_trig2022combination_multiLep
bool m_eleAllowRun3TrigSFFallback
std::string m_muTriggerSFCalibFilename
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
std::string m_IsoCloseByORpassLabel
const xAOD::TrackParticleContainer & GetInDetLargeD0Tracks(const EventContext &ctx) const override final
StatusCode autoconfigurePileupRWTool(const std::string &PRWfilesDir="dev/PileupReweighting/share/", const std::string &PRWfileName="", bool usePathResolver=true, bool RPVLLmode=false, bool Combinedmode=false, const std::string &HFFilter="")
std::string m_trig2015combination_multiLep
std::string m_trig2022combination_diPhoton
void configFromFile(bool &property, const std::string &propname, TEnv &rEnv, bool defaultValue)
std::string m_prwActualMu2023File
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trig_singleLep
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
std::string m_TopDecorName
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesPDSmearTool
std::string m_autoconfigPRWFile
StatusCode setBoolProperty(const std::string &name, const bool &property) override final
bool m_eleForceFullSimCalib
std::string m_bTaggingCalibrationFilePath
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_iso
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
std::string m_commonPRWFileMC23a
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
bool m_metVeryGreedyPhotons
std::string m_photonIdDFName
bool currentSystematicIsWeight() const
std::string m_eleBaselineIso_WP
std::vector< std::string > m_v_trigs15_cache_singleLep
std::string m_fatJetUncVars
std::string m_electronTriggerSFStringSingle
std::string getDefaultJetUncConfig()
bool m_runDepPrescaleWeightPRW
std::string m_trig2015combination_diPhoton
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonIsolationSFTool
const xAOD::EventInfo * GetEventInfo() const override final
std::vector< std::string > m_v_trigs17_cache_singleLep
std::string m_jesConfigFatData
double m_orBoostedElectronC1
std::string TrigSingleLep() const override final
std::string m_BtagTagger_trkJet
std::string m_trig2018combination_multiLep
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
std::string m_JvtConfigRun3
std::string m_jesCalibSeqFat
uint32_t runNumber() const
The current event's run number.
uint32_t mcChannelNumber() const
The MC generator's channel number.
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
static const unsigned int Reconstruction
static const unsigned int Trigger
static const SG::Decorator< char > dec_lrtFilter("passLRTFilter")
static const SG::ConstAccessor< unsigned int > randomrunnumber("RandomRunNumber")
SystType getSystType(const CP::SystematicVariation &systematic)
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Jet_v1 Jet
Definition of the current "jet version".
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
EventInfo_v1 EventInfo
Definition of the latest event info version.
@ Unknown
Track fitter not defined.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Photon_v1 Photon
Definition of the current "egamma version".
setBGCode setTAP setLVL2ErrorBits bool
FileMetaData_v1 FileMetaData
Declare the latest version of the class.
JetContainer_v1 JetContainer
Definition of the current "jet container version".
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
Electron_v1 Electron
Definition of the current "egamma version".
std::set< unsigned int > affectedWeights
CP::SystematicSet systset