12#ifndef XAOD_STANDALONE
96using namespace TrigConf;
708 m_jetCalibTool.declarePropertyFor(
this,
"JetCalibTool",
"The JetCalibTool" );
709 m_jetFatCalibTool.declarePropertyFor(
this,
"FatJetCalibTool",
"The JetCalibTool for large-R jets" );
712 m_fatjetUncertaintiesTool.declarePropertyFor(
this,
"FatJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R jets" );
714 m_fatjetFFSmearingTool.declarePropertyFor(
this,
"FatJetFFSmearingTool",
"The FFSmearingTool for large-R jets" );
715 m_WTagjetUncertaintiesTool.declarePropertyFor(
this,
"WJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R W-tagged jets" );
716 m_ZTagjetUncertaintiesTool.declarePropertyFor(
this,
"ZJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Z-tagged jets" );
717 m_TopTagjetUncertaintiesTool.declarePropertyFor(
this,
"TopJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Top-tagged jets" );
718 m_jetCleaningTool.declarePropertyFor(
this,
"JetCleaningTool",
"The JetCleaningTool" );
720 m_jetJvtMomentTool.declarePropertyFor(
this,
"JetJvtMomentTool",
"The JetJvtMomentTool" );
721 m_jetNNJvtMomentTool.declarePropertyFor(
this,
"JetNNJvtMomentTool",
"The JetNNJvtMomentTool" );
727 m_WTaggerTool.declarePropertyFor(
this,
"WTaggerTool",
"The SmoothedWZTaggerTool" );
728 m_ZTaggerTool.declarePropertyFor(
this,
"ZTaggerTool",
"The SmoothedWZTaggerTool" );
729 m_TopTaggerTool.declarePropertyFor(
this,
"TopTaggerTool",
"The DNNTopTaggerTool" );
732 m_muonSelectionTool.declarePropertyFor(
this,
"MuonSelectionTool",
"The MuonSelectionTool for signal muons" );
733 m_muonSelectionHighPtTool.declarePropertyFor(
this,
"MuonSelectionHighPtTool",
"The MuonSelectionTool for signal muons (HighPt WP)" );
735 m_muonCalibTool.declarePropertyFor(
this,
"MuonCalibTool",
"The MuonCalibTool" );
736 m_muonEfficiencySFTool.declarePropertyFor(
this,
"MuonEfficiencyScaleFactorsTool",
"The MuonEfficiencySFTool" );
739 m_muonIsolationSFTool.declarePropertyFor(
this,
"MuonIsolationScaleFactorsTool",
"The MuonIsolationSFTool" );
741 m_muonTriggerSFTool.declarePropertyFor(
this,
"MuonTriggerScaleFactorsTool",
"The MuonTriggerSFTool" );
742 m_muonLRTORTool.declarePropertyFor(
this,
"MuonLRTOverlapRemovalTool",
"Prompt/LRT muon OR Tool" );
744 m_elecEfficiencySFTool_reco.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_reco",
"The ElectronEfficiencyCorrectionTool for reconstruction SFs" );
746 m_elecEfficiencySFTool_id.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_id",
"The ElectronEfficiencyCorrectionTool for ID SFs" );
747 m_elecEfficiencySFTool_iso.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_iso" ,
"The ElectronEfficiencyCorrectionTool for iso SFs" );
748 m_elecEfficiencySFTool_isoHighPt.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_isoHigPt" ,
"The ElectronEfficiencyCorrectionTool for iso high-pt SFs" );
749 m_elecSelLikelihood.declarePropertyFor(
this,
"ElectronLikelihoodTool" ,
"The ElectronSelLikelihoodTool for signal electrons" );
750 m_elecSelLikelihoodBaseline.declarePropertyFor(
this,
"ElectronLikelihoodToolBaseline" ,
"The ElectronSelLikelihoodTool for baseline electrons" );
753 m_elecChargeEffCorrTool.declarePropertyFor(
this,
"ElectronChargeEffCorrectionTool",
"The ElectronChargeEffCorrectionTool" );
754 m_elecLRTORTool.declarePropertyFor(
this,
"ElectronLRTOverlapRemovalTool",
"Prompt/LRT electron OR Tool" );
756 m_photonSelIsEM.declarePropertyFor(
this,
"PhotonIsEMSelector" ,
"The PhotonIsEMSelectorTool for signal photons" );
757 m_photonSelIsEMBaseline.declarePropertyFor(
this,
"PhotonIsEMSelectorBaseline" ,
"The PhotonIsEMSelectorTool for baseline photons" );
758 m_photonEfficiencySFTool.declarePropertyFor(
this,
"PhotonEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for reco SFs" );
759 m_photonIsolationSFTool.declarePropertyFor(
this,
"PhotonIsolationCorrectionTool",
"The PhotonEfficiencyCorrectionTool for iso SFs" );
760 m_photonTriggerSFTool.declarePropertyFor(
this,
"PhotonTriggerEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for trigger SFs" );
762 m_egammaCalibTool.declarePropertyFor(
this,
"EgammaCalibrationAndSmearingTool",
"The EgammaCalibrationAndSmearingTool");
764 m_tauSelTool.declarePropertyFor(
this,
"TauSelectionTool",
"The TauSelectionTool for signal taus" );
765 m_tauSelToolBaseline.declarePropertyFor(
this,
"TauSelectionToolBaseline",
"The TauSelectionTool for baseline taus" );
766 m_tauSmearingTool.declarePropertyFor(
this,
"TauSmearingTool",
"The TauSmearingTool" );
767 m_tauTruthMatch.declarePropertyFor(
this,
"TauTruthMatch",
"The TTMT" );
768 m_tauEffTool.declarePropertyFor(
this,
"TauEfficiencyCorrectionsTool",
"The TauEfficiencyCorrectionsTool" );
770 m_btagEffTool.declarePropertyFor(
this,
"BTaggingEfficiencyTool",
"The BTaggingEfficiencyTool" );
771 m_btagSelTool.declarePropertyFor(
this,
"BTaggingSelectionTool",
"The main BTaggingSelectionTool" );
772 m_btagSelTool_OR.declarePropertyFor(
this,
"BTaggingSelectionTool_OR",
"The BTaggingSelectionTool used to select b-jets for overlap removal" );
773 m_btagEffTool_trkJet.declarePropertyFor(
this,
"BTaggingEfficiencyTool_trkJet",
"The BTaggingEfficiencyTool for track jets" );
774 m_btagSelTool_trkJet.declarePropertyFor(
this,
"BTaggingSelectionTool_trkJet",
"The main BTaggingSelectionTool for track jets" );
776 m_metMaker.declarePropertyFor(
this,
"METMaker",
"The METMaker instance");
777 m_metSystTool.declarePropertyFor(
this,
"METSystTool",
"The METSystematicsTool");
778 m_metSignif.declarePropertyFor(
this,
"METSignificance",
"The METSignifiance instance");
780 m_trigGlobalEffCorrTool_diLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diLep",
"The TrigGlobalEfficiencyCorrection tool for dilepton" );
781 m_trigGlobalEffCorrTool_multiLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_multiLep",
"The TrigGlobalEfficiencyCorrection tool for trilepton" );
782 m_trigGlobalEffCorrTool_diPhoton.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diPhoton",
"The TrigGlobalEfficiencyCorrection tool for asymmetric diphoton" );
783 m_trigConfTool.declarePropertyFor(
this,
"TrigConfigTool",
"The TrigConfigTool" );
784 m_trigDecTool.declarePropertyFor(
this,
"TrigDecisionTool",
"The TrigDecisionTool" );
785 m_trigMatchingTool.declarePropertyFor(
this,
"TrigMatchTool",
"The TrigMatchingTool" );
787 m_trigDRScoringTool.declarePropertyFor(
this,
"TrigDRScoringTool",
"The TrigDRScoringTool" );
789 m_isoCorrTool.declarePropertyFor(
this,
"IsolationCorrectionTool",
"The IsolationCorrectionTool" );
790 m_isoTool.declarePropertyFor(
this,
"IsolationSelectionTool",
"The IsolationSelectionTool");
792 m_isoBaselineTool.declarePropertyFor(
this,
"IsolationSelectionTool_Baseline",
"The IsolationSelectionTool for baseline objects");
793 m_isoHighPtTool.declarePropertyFor(
this,
"IsolationSelectionTool_HighPt",
"The IsolationSelectionTool for High Pt");
794 m_isoCloseByTool.declarePropertyFor(
this,
"IsolationCloseByCorrectionTool",
"The IsolationCloseByCorrectionTool");
796 m_prwTool.declarePropertyFor(
this,
"PileupReweightingTool",
"The PRW tool" );
798 m_LRTuncTool.declarePropertyFor(
this,
"InclusiveTrackFilterTool",
"The LRT uncertainty tool");
800 m_pmgSHnjetWeighter.declarePropertyFor(
this,
"PMGSHVjetReweightTool",
"The PMGSHVjetReweightTool (AntiKt4TruthJets)" );
801 m_pmgSHnjetWeighterWZ.declarePropertyFor(
this,
"PMGSHVjetReweightWZTool",
"The PMGSHVjetReweightTool (AntiKt4TruthWZJets)" );
803 m_tauJetORtool.declarePropertyFor(
this,
"TauJetOverlapTool",
"The TauJetOverlapTool");
841 "FCLoose",
"FCTight",
845 "TightTrackOnly_VarRad",
"TightTrackOnly_FixedRad",
846 "Tight_VarRad",
"Loose_VarRad",
847 "PLVLoose",
"PLVTight",
848 "PLImprovedTight",
"PLImprovedVeryTight"
853 "PflowLoose_FixedRad",
"PflowLoose_VarRad",
"PflowTight_FixedRad",
"PflowTight_VarRad",
854 "TightTrackOnly_FixedRad",
"TightTrackOnly_VarRad",
"HighPtTrackOnly",
855 "PLVLoose",
"PLVTight",
856 "Loose_VarRad",
"Loose_FixedRad",
"Tight_VarRad",
"Tight_FixedRad",
857 "PLImprovedTight",
"PLImprovedVeryTight"
885#define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
886 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
887 if( TOOLHANDLE.retrieve().isFailure()) { \
888 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
889 return StatusCode::FAILURE; \
892#define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
893 CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
895#define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
897 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
898 if(TOOLHANDLE.retrieve().isFailure()) { \
899 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
900 return StatusCode::FAILURE; \
914 ATH_MSG_ERROR(
"Initialising for a second time -- something is wrong!");
915 return StatusCode::FAILURE;
921 bool autoconf(
false);
922#ifndef XAOD_STANDALONE
925 ATH_MSG_INFO(
"Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
926 std::string projectName =
"";
928 if ( projectName ==
"IS_SIMULATION" ) {
929 std::string simFlavour =
"";
931 TString s(simFlavour); s.ToUpper();
933 }
else if (projectName.compare(0, 4,
"data") == 0 ) {
936 ATH_MSG_ERROR(
"Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
937 return StatusCode::FAILURE;
950 ATH_MSG_FATAL(
"You must set the DataSource property to Data, FullSim or AtlfastII !!");
951 if (autoconf)
ATH_MSG_FATAL(
"Autoconfiguration seems to have failed!");
954 return StatusCode::FAILURE;
966 return StatusCode::FAILURE;
977 std::string dataType;
980 if ( dataType.compare(
"StreamDAOD_PHYS")==0 || dataType.compare(
"StreamDAOD_PHYSLITE")==0 )
m_defaultTruthJets =
"AntiKt4TruthDressedWZJets";
981 if ( dataType.compare(
"StreamDAOD_PHYSLITE")==0)
m_isPHYSLITE =
true;
1001 m_eleIdDFName =
m_eleId.find(
"DNN") == std::string::npos ?
"DFCommonElectronsLH" :
"DFCommonElectronsDNN";
1002 m_eleIdDFName += TString(
m_eleId).ReplaceAll(
"LooseAndBLayer",
"LooseBL").ReplaceAll(
"LLH",
"").ReplaceAll(
"DNNnoCF",
"").ReplaceAll(
"DNN",
"").Data();
1003 if (
m_eleId.find(
"noCF") != std::string::npos)
1037 return StatusCode::SUCCESS;
1044 std::string prwConfigFile(
"");
1048 prwConfigFile = PRWfilesDir;
1051 std::string amiTag(
"");
1052 std::string mcCampaignMD(
"");
1053 std::string simFlavour(
"");
1054 std::string simType(
"");
1059 std::map<std::string,std::vector<std::string>> PRWRtags = {};
1060 std::string allcampaigns =
"mc20a.mc20d.mc20e.mc23a.mc23d.mc23e.mc23g";
1061 bool standard_like =
true;
1063 std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(
":"));
1064 std::vector<std::string> irtags =
split( campaign_rtags.substr(campaign_rtags.find(
":")+1),
"_" );
1065 PRWRtags[icampaign] = irtags;
1066 ATH_MSG_DEBUG(
"PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find(
"_")+1) <<
" for campaign " << icampaign );
1068 for (
const auto&
x : PRWRtags ) {
1069 if ( allcampaigns.find(
x.first)==string::npos ) {
1072 return StatusCode::FAILURE;
1082 if(simFlavour.starts_with(
"ATLFASTII")) simType =
"AFII";
1083 else if(simFlavour.starts_with(
"ATLFAST3")) simType =
"AF3";
1084 else simType =
"FS";
1087 while ( mcCampaignMD.empty() ) {
1088 for (
const auto& campaign_rtags : PRWRtags ) {
1089 for (
const auto& rtag: campaign_rtags.second ) {
1090 if (found)
continue;
1091 if (amiTag.find(rtag)!=string::npos) {
1092 mcCampaignMD = campaign_rtags.first.substr(0,5);
1093 standard_like = (campaign_rtags.first.find(
"ns")?
true:
false);
1100 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" << amiTag <<
"'. Please check your input sample.");
1101 return StatusCode::FAILURE;
1104 ATH_MSG_INFO(
"Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD <<
" (from amiTag " << amiTag <<
") (standard-like = " << (standard_like?
"true":
"false") <<
")." );
1105 if ( (!standard_like) && (!RPVLLmode) )
1106 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?");
1109#ifndef XAOD_STANDALONE
1110 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1111 return StatusCode::FAILURE;
1117 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1118 std::string NoMetadataButPropertyOK(
"");
1119 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1121 NoMetadataButPropertyOK +=
"'. 'mcChannel' is used and passed to SUSYTools as '";
1122 NoMetadataButPropertyOK += std::to_string(
m_mcChannel);
1123 NoMetadataButPropertyOK +=
"'. Autocongiguring PRW accordingly.";
1129 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1133 std::string NoMetadataButPropertyOK(
"");
1134 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1136 NoMetadataButPropertyOK +=
"'. Autoconfiguring PRW accordingly.";
1141 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1142 return StatusCode::FAILURE;
1149 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1158 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1159 return StatusCode::FAILURE;
1165 int DSID_INT =
static_cast<int>(dsid);
1166 prwConfigFile +=
"DSID" + std::to_string(DSID_INT/1000) +
"xxx/pileup_" + mcCampaignMD +
"_dsid" + std::to_string(DSID_INT) +
"_" + simType +
".root";
1168 if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(
".root",
"_rpvll.root").Data();
1172 if (!PRWfileName.empty()) {
1173 prwConfigFile = PRWfilesDir + PRWfileName;
1174 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1182 if (mcCampaignMD.find(
"mc20") == std::string::npos) {
1183 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1184 return StatusCode::FAILURE;
1194 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20a").
Data() );
1195 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20d").
Data() );
1196 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20e").
Data() );
1202 if ( mcCampaignMD ==
"mc20d") {
1204 }
else if (mcCampaignMD ==
"mc20e") {
1206 }
else if (mcCampaignMD ==
"mc23a") {
1208 }
else if (mcCampaignMD ==
"mc23d") {
1210 }
else if (mcCampaignMD ==
"mc23e") {
1212 }
else if (mcCampaignMD ==
"mc23g") {
1219 TFile testF(prwConfigFile.data(),
"read");
1220 if (testF.IsZombie()) {
1221 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() <<
" ! Impossible to autoconfigure PRW. Aborting." );
1222 if ( (!standard_like) && (!RPVLLmode) )
1223 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?");
1224 return StatusCode::FAILURE;
1227 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1230 return StatusCode::SUCCESS;
1237 else ATH_MSG_ERROR(
"Trying to set data source to unknown type (" << source <<
")");
1243 return (std::find(list.begin(), list.end(),wp) != list.end());
1249 return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1256 TString copy = TString(wp).Copy().ReplaceAll(
"AndBLayer",
"BL").ReplaceAll(
"LLH",
"LHElectron");
1258 if (wp.find(
"DNNnoCF") != std::string::npos)
1259 copy.ReplaceAll(
"DNNnoCF",
"DNNnoCFElectron");
1260 else if (wp.find(
"DNN") != std::string::npos)
1261 copy.ReplaceAll(
"DNN",
"DNNElectron");
1267 if( mapFile.empty() )
1270 std::vector<std::string> theKeys;
1273 std::ifstream input( filename );
1274 for( std::string line; getline( input, line ); ){
1275 std::vector<std::string> tokens =
split((
const std::string)line,
"=");
1277 theKeys.push_back(tokens.at(0));
1288 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1289 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1292 property = rEnv.GetValue(propname.c_str(),
static_cast<int>(defaultValue));
1293 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1295 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1300 double defaultValue)
1303 if (property > -90.) {
1304 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1305 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1308 property = rEnv.GetValue(propname.c_str(), defaultValue);
1309 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1311 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1319 if (property > -90){
1320 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1321 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1324 property = rEnv.GetValue(propname.c_str(), defaultValue);
1325 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1327 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1332 const std::string& defaultValue,
bool allowEmpty)
1335 if (!property.empty()){
1336 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1337 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1340 property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1341 if (property.empty() && !allowEmpty) {
1342 ATH_MSG_FATAL(
"Read empty string property from text file (property name: " << propname <<
")");
1346 std::string tmp_prop =
property.substr(0, property.find(
'#', 0));
1347 property = TString(tmp_prop).ReplaceAll(
" ",
"").Data();
1350 if (property==
"None" || property==
"NONE" || property==
"none") {
1351 ATH_MSG_VERBOSE(
"Property \"" << propname <<
"\" being set to empty string due to specification of \"" << property <<
"\"" );
1355 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1357 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1368 success = rEnv.ReadFile(
m_configFile.c_str(), kEnvAll);
1369 if (success != 0)
return StatusCode::FAILURE;
1378 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.InputType") );
1380 if (
m_muId ==
static_cast<int>(xAOD::Muon::Quality::VeryLoose)) {
1381 int muIdTmp = rEnv.GetValue(
"Muon.Id", 1);
1382 m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1385 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Muon.Id") );
1387 if (
m_muIdBaseline ==
static_cast<int>(xAOD::Muon::Quality::VeryLoose)) {
1388 int muIdTmp = rEnv.GetValue(
"MuonBaseline.Id", 1);
1389 m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1392 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"MuonBaseline.Id") );
1396 std::string prop = rEnv.GetValue(
"Jet.JVT_WP",
"");
1397 if ( !prop.empty() ) {
1398 ATH_MSG_WARNING(
"readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1399 rEnv.SetValue(
"Jet.JvtWP", prop.c_str());
1400 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.JVT_WP") );
1409 m_conf_to_prop[
"EleBaseline.CrackVeto"] =
"EleBaselineCrackVeto";
1411 m_conf_to_prop[
"Ele.AllowRun3TrigSFFallback"] =
"EleAllowRun3TrigSFFallback";
1415 m_conf_to_prop[
"PhotonBaseline.CrackVeto"] =
"PhotonBaselineCrackVeto";
1423 m_conf_to_prop[
"OR.DoMuonJetGhostAssociation"] =
"ORDoMuonJetGhostAssociation";
1438 m_conf_to_prop[
"Trigger.UpstreamMatching"] =
"TriggerUpstreamMatching";
1444 m_conf_to_prop[
"SigLepPh.IsoCloseByOR"] =
"SigLepPhIsoCloseByOR";
1445 m_conf_to_prop[
"MET.RemoveOverlappingCaloTaggedMuons"] =
"METRemoveORCaloTaggedMuons";
1446 m_conf_to_prop[
"MET.DoSetMuonJetEMScale"] =
"METDoSetMuonJetEMScale";
1498 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");
1511 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");
1512 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");
1513 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");
1514 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");
1517 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");
1518 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");
1519 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");
1520 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");
1608 configFromFile(
m_WtagConfig,
"Jet.WtaggerConfig", rEnv,
"SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1609 configFromFile(
m_ZtagConfig,
"Jet.ZtaggerConfig", rEnv,
"SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1621 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");
1622 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");
1623 configFromFile(
m_jesConfigJMS,
"Jet.JESConfigJMS", rEnv,
"JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1625 configFromFile(
m_jesConfigFat,
"Jet.JESConfigFat", rEnv,
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1733 configFromFile(
m_prwActualMu2017File,
"PRW.ActualMu2017File", rEnv,
"GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1734 configFromFile(
m_prwActualMu2018File,
"PRW.ActualMu2018File", rEnv,
"GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1747 configFromFile(
m_autoconfigPRWRtags,
"PRW.autoconfigPRWRtags", rEnv,
"mc20a:r13167_r14859,mc20d:r13144_r14860,mc20e:r13145_r14861,mc23a:r14622_r14932_r15540,mc23d:r15224_r15530,mc23e:r16083,mc23g:r17610");
1767 return StatusCode::FAILURE;
1770 std::transform(tauWPLC.begin(), tauWPLC.end(), tauWPLC.begin(), [](
unsigned char c) { return std::tolower(c); });
1788 return StatusCode::FAILURE;
1790 std::string tauWPLC =
m_tauId;
1791 std::transform(tauWPLC.begin(), tauWPLC.end(), tauWPLC.begin(), [](
unsigned char c) { return std::tolower(c); });
1803 if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1804 ATH_MSG_ERROR(
"Found " << rEnv.GetTable()->GetSize() <<
" unparsed environment options:");
1807 return StatusCode::FAILURE;
1812 if (
m_WtagConfig.find(
"Efficiency50") != std::string::npos){
1815 else if (
m_WtagConfig.find(
"Efficiency80") != std::string::npos){
1819 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");
1823 if (
m_ZtagConfig.find(
"Efficiency50") != std::string::npos){
1826 else if (
m_ZtagConfig.find(
"Efficiency80") != std::string::npos){
1830 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");
1833 std::string TopTagEff =
"";
1834 std::string TopTagType =
"";
1843 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");
1847 TopTagType =
"Inclusive";
1850 TopTagType =
"Contained";
1853 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");
1855 m_TopTagUncConfig =
"R10_SF_LCTopo_TopTag"+TopTagType+
"_SigEff"+TopTagEff+
".config";
1887 return StatusCode::SUCCESS;
1892 assert(delim.length() == 1);
1893 std::vector<std::string> retval;
1894 retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1896 if (s.find(delim)==std::string::npos) {
1897 retval.emplace_back(s);
1904 while ((next = s.find(delim, last)) != std::string::npos) {
1905 retval.emplace_back(s.substr(last, next - last));
1906 last = next + delim.length();
1910 retval.emplace_back(s.substr(last));
1917 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1919 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1922StatusCode
SUSYObjDef_xAOD::getTauConfig(
const std::string& tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window,
bool &eleOLR,
bool &muVeto,
bool &muOLR)
const {
1924 if(tauConfigPath.empty())
return StatusCode::FAILURE;
1928 if ( rEnv.ReadFile(filename.c_str(), kEnvAll) ) {
1929 ATH_MSG_ERROR(
"Error while reading tau config file : " << filename );
1930 ATH_MSG_ERROR(
"Find examples at: https://gitlab.cern.ch/atlas/athena/-/tree/main/PhysicsAnalysis/Algorithms/TauAnalysisAlgorithms/data");
1931 return StatusCode::FAILURE;
1933 ATH_MSG_DEBUG(
"Successfully read tau config file : " << filename );
1936 std::vector<std::string> cuts;
1937 if (rEnv.Defined(
"SelectionCuts")) {
1938 cuts =
split(rEnv.GetValue(
"SelectionCuts",
" "),
" ");
1940 auto *l = rEnv.GetTable();
1941 for( Int_t i = 0; i < l->GetEntries(); ++i ) {
1942 cuts.push_back( l->At(i)->GetName() );
1951 static const std::string trueBool =
"TRUE";
1954 std::vector<std::string> v_pT_window;
1955 std::vector<std::string> v_eta_window;
1958 float pT_min = -99.0;
1959 float pT_max = -99.0;
1960 float eta_min = -99.0;
1961 float eta_max = -99.0;
1962 for (
const auto& cut : cuts) {
1963 if(cut ==
"PtRegion") {
1964 v_pT_window =
split(rEnv.GetValue(
"PtRegion",
""),
";");
1965 std::transform(std::begin(v_pT_window),
1966 std::end(v_pT_window),
1967 std::back_inserter(pT_window),
1968 [](
const std::string& s) {
return std::stof(s); }
1970 }
else if (cut ==
"PtMin") {
1971 pT_min = rEnv.GetValue(
"PtMin", NAN);
1972 }
else if (cut ==
"PtMax") {
1973 pT_max = rEnv.GetValue(
"PtMax", NAN);
1974 }
else if (cut ==
"AbsEtaRegion") {
1975 v_eta_window =
split(rEnv.GetValue(
"AbsEtaRegion",
""),
";");
1976 std::transform(std::begin(v_eta_window),
1977 std::end(v_eta_window),
1978 std::back_inserter(eta_window),
1979 [](
const std::string& s) {
return std::stof(s); }
1981 }
else if (cut ==
"AbsEtaMin") {
1982 eta_min = rEnv.GetValue(
"AbsEtaMin", NAN);
1983 }
else if (cut ==
"AbsEtaMax") {
1984 eta_max = rEnv.GetValue(
"AbsEtaMax", NAN);
1988 else if (cut ==
"EleOLR"){
1989 eleOLR = (rEnv.GetValue(
"EleOLR",
"FALSE") == trueBool);
1991 else if (cut ==
"MuonVeto"){
1992 muVeto = (rEnv.GetValue(
"MuonVeto",
"FALSE") == trueBool);
1994 else if (cut ==
"MuonOLR"){
1995 muOLR = (rEnv.GetValue(
"MuonOLR",
"FALSE") == trueBool);
1999 if(pT_window.empty()) {
2000 if(pT_min == pT_min) {
2002 pT_window.push_back(pT_min);
2004 pT_window.push_back(-std::numeric_limits<float>::infinity());
2007 if(pT_max == pT_max) {
2009 pT_window.push_back(pT_max);
2011 pT_window.push_back(std::numeric_limits<float>::infinity());
2015 if(eta_window.empty()) {
2016 if(eta_min == eta_min) {
2018 eta_window.push_back(eta_min);
2020 eta_window.push_back(-std::numeric_limits<float>::infinity());
2023 if(eta_max == eta_max) {
2025 eta_window.push_back(eta_max);
2027 eta_window.push_back(std::numeric_limits<float>::infinity());
2031 return StatusCode::SUCCESS;
2041 if(strict)
return StatusCode::FAILURE;
2045 if(strict)
return StatusCode::FAILURE;
2050 if(strict)
return StatusCode::FAILURE;
2054 if(strict)
return StatusCode::FAILURE;
2060 if(strict)
return StatusCode::FAILURE;
2064 if(strict)
return StatusCode::FAILURE;
2068 if(strict)
return StatusCode::FAILURE;
2074 if(strict)
return StatusCode::FAILURE;
2078 if(strict)
return StatusCode::FAILURE;
2082 if(strict)
return StatusCode::FAILURE;
2086 if(strict)
return StatusCode::FAILURE;
2091 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!");
2101 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).");
2108 if(strict)
return StatusCode::FAILURE;
2113 if(strict)
return StatusCode::FAILURE;
2117 std::vector<float> pT_window;
2118 std::vector<float> eta_window;
2130 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] <<
"]");
2131 if(strict)
return StatusCode::FAILURE;
2134 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2135 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] <<
"]");
2136 if(strict)
return StatusCode::FAILURE;
2140 ATH_MSG_WARNING(
"Your baseline tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2141 if(strict)
return StatusCode::FAILURE;
2150 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] <<
"]");
2151 if(strict)
return StatusCode::FAILURE;
2154 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2155 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] <<
"]");
2156 if(strict)
return StatusCode::FAILURE;
2160 ATH_MSG_WARNING(
"Your tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2161 if(strict)
return StatusCode::FAILURE;
2166 return StatusCode::SUCCESS;
2182 return syst.
name().empty();
2187 bool affectsWeights =
false;
2188 for (
const auto& sys : systSet) {
2190 if(info.affectsKinematics) {
return false; }
2191 affectsWeights = affectsWeights or info.affectsWeights;
2193 return affectsWeights;
2198 for (
const auto& sys : systSet) {
2200 if(info.affectsKinematics) {
return true; }
2223 return StatusCode::FAILURE;
2226 ATH_MSG_DEBUG(
" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.
name() <<
"\" size " << systConfig.
size());
2233 if ( ret != StatusCode::SUCCESS) {
2234 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2236 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2241 if ( ret != StatusCode::SUCCESS) {
2242 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2244 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2249 if ( ret != StatusCode::SUCCESS) {
2250 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2252 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2257 if ( ret != StatusCode::SUCCESS) {
2258 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2260 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2266 if ( ret != StatusCode::SUCCESS) {
2267 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2269 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2274 if ( ret != StatusCode::SUCCESS) {
2275 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2277 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2282 if ( ret != StatusCode::SUCCESS) {
2283 ATH_MSG_VERBOSE(
"Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2285 ATH_MSG_VERBOSE(
"Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2290 if ( ret != StatusCode::SUCCESS) {
2291 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2293 ATH_MSG_VERBOSE(
"Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2298 if ( ret != StatusCode::SUCCESS) {
2299 ATH_MSG_VERBOSE(
"Cannot configure NNJvtEfficiency for systematic var. " << systConfig.
name() );
2306 if ( ret != StatusCode::SUCCESS) {
2307 ATH_MSG_VERBOSE(
"Cannot configure fJvtEfficiency for systematic var. " << systConfig.
name() );
2313 StatusCode ret =
m_muonCalibTool->applySystematicVariation(systConfig);
2314 if (ret != StatusCode::SUCCESS) {
2315 ATH_MSG_ERROR(
"Cannot configure MuonCalibTool for systematic var. " << systConfig.
name() );
2323 if ( ret != StatusCode::SUCCESS) {
2324 ATH_MSG_ERROR(
"Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2327 ATH_MSG_VERBOSE(
"MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2332 if ( ret != StatusCode::SUCCESS) {
2333 ATH_MSG_ERROR(
"Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.
name() );
2336 ATH_MSG_VERBOSE(
"MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.
name() );
2341 if ( ret != StatusCode::SUCCESS) {
2342 ATH_MSG_ERROR(
"Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2345 ATH_MSG_VERBOSE(
"MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2350 if ( ret != StatusCode::SUCCESS) {
2351 ATH_MSG_ERROR(
"Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.
name() );
2354 ATH_MSG_VERBOSE(
"MuonIsolationScaleFactors configured for systematic var. " << systConfig.
name() );
2359 if ( ret != StatusCode::SUCCESS) {
2360 ATH_MSG_ERROR(
"Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.
name() );
2363 ATH_MSG_VERBOSE(
"MuonTriggerScaleFactors configured for systematic var. " << systConfig.
name() );
2368 if (ret != StatusCode::SUCCESS) {
2369 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2372 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2377 if (ret != StatusCode::SUCCESS) {
2378 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.
name() );
2381 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.
name() );
2386 if (ret != StatusCode::SUCCESS) {
2387 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2390 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.
name() );
2395 if (ret != StatusCode::SUCCESS) {
2396 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.
name() );
2399 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.
name() );
2405 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2406 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2409 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2410 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2413 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2414 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2416 if (ret != StatusCode::SUCCESS) {
2417 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.
name() );
2420 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.
name() );
2426 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2427 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2430 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2431 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (multilep 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_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2437 if (ret != StatusCode::SUCCESS) {
2438 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.
name() );
2441 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.
name() );
2446 if (ret != StatusCode::SUCCESS) {
2447 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2450 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.
name() );
2455 if (ret != StatusCode::SUCCESS) {
2456 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.
name() );
2459 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.
name() );
2464 if (ret != StatusCode::SUCCESS) {
2465 ATH_MSG_ERROR(
"Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.
name() );
2468 ATH_MSG_VERBOSE(
"ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.
name() );
2473 if (ret != StatusCode::SUCCESS) {
2474 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2477 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2482 if (ret != StatusCode::SUCCESS) {
2483 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2486 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.
name() );
2491 if (ret != StatusCode::SUCCESS) {
2492 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2495 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.
name() );
2501 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2502 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2505 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2506 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2508 if (ret != StatusCode::SUCCESS) {
2509 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.
name() );
2512 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.
name() );
2517 if (ret != StatusCode::SUCCESS) {
2518 ATH_MSG_ERROR(
"Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.
name() );
2521 ATH_MSG_VERBOSE(
"EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.
name() );
2525 StatusCode ret =
m_isoCorrTool->applySystematicVariation(systConfig);
2526 if (ret != StatusCode::SUCCESS) {
2527 ATH_MSG_ERROR(
"Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.
name() );
2530 ATH_MSG_VERBOSE(
"IsolationCorrectionTool configured for systematic var. " << systConfig.
name() );
2535 StatusCode ret =
m_btagEffTool->applySystematicVariation(systConfig);
2536 if ( ret != StatusCode::SUCCESS) {
2537 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2540 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2546 if ( ret != StatusCode::SUCCESS) {
2547 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2550 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2555 if ( ret != StatusCode::SUCCESS) {
2556 ATH_MSG_ERROR(
"Cannot configure TauSmearingTool for systematic var. " << systConfig.
name() );
2563 StatusCode ret =
m_tauEffTool->applySystematicVariation(systConfig);
2564 if ( ret != StatusCode::SUCCESS) {
2565 ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2568 ATH_MSG_VERBOSE(
"Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2572 StatusCode ret = tool->applySystematicVariation(systConfig);
2573 if (ret != StatusCode::SUCCESS) {
2574 ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2577 ATH_MSG_VERBOSE(
"Configured " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2581 StatusCode ret =
m_metSystTool->applySystematicVariation(systConfig);
2582 if ( ret != StatusCode::SUCCESS) {
2583 ATH_MSG_ERROR(
"Cannot configure METSystematicsTool for systematic var. " << systConfig.
name() );
2586 ATH_MSG_VERBOSE(
"Configured METSystematicsTool for systematic var. " << systConfig.
name() );
2590 StatusCode ret =
m_prwTool->applySystematicVariation(systConfig);
2591 if ( ret != StatusCode::SUCCESS) {
2592 ATH_MSG_ERROR(
"Cannot configure PileupReweightingTool for systematic var. " << systConfig.
name() );
2595 ATH_MSG_VERBOSE(
"Configured PileupReweightingTool for systematic var. " << systConfig.
name() );
2600 StatusCode ret =
m_LRTuncTool->applySystematicVariation(systConfig);
2601 if ( ret != StatusCode::SUCCESS) {
2602 ATH_MSG_ERROR(
"Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2605 ATH_MSG_VERBOSE(
"Configured InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2609 return StatusCode::SUCCESS;
2615 return vector<ST::SystInfo>();
2622 const CP::SystematicSet& recommendedSystematics = registry.recommendedSystematics();
2624 vector<SystInfo> sysInfoList;
2625 sysInfoList.reserve(recommendedSystematics.
size() * 2);
2633 sysInfoList.push_back(infodef);
2638 for (
const auto& sys : systSet) {
2643 ATH_MSG_INFO(
"Returning list of " << sysInfoList.size() <<
" systematic variations");
2784 sysInfo.
affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2825 if (sys.basename().compare(0, 3,
"EG_") == 0) {
2827 }
else if (sys.basename().compare(0, 3,
"PH_") == 0) {
2829 }
else if (sys.basename().compare(0, 3,
"EL_") == 0) {
2897 if(tool->isAffectedBySystematic(sys)) {
2923 if (
m_prwTool->isAffectedBySystematic(sys) ) {
2936 std::string affectedType;
2938 case Unknown : affectedType =
"UNKNOWN";
break;
2939 case Jet : affectedType =
"JET";
break;
2940 case Egamma : affectedType =
"EGAMMA";
break;
2941 case Electron : affectedType =
"ELECTRON";
break;
2942 case Photon : affectedType =
"PHOTON";
break;
2943 case Muon : affectedType =
"MUON";
break;
2944 case Tau : affectedType =
"TAU";
break;
2945 case BTag : affectedType =
"BTAG";
break;
2946 case MET_TST : affectedType =
"MET_TST";
break;
2947 case MET_CST : affectedType =
"MET_CST";
break;
2948 case MET_Track : affectedType =
"MET_Track";
break;
2949 case EventWeight : affectedType =
"EVENT WEIGHT";
break;
2950 case LRT_Object : affectedType =
"LRT_OBJECT";
break;
2956 <<
"for " << affectedType );
2975 ATH_MSG_WARNING(
"No TruthJetContainer found! Dummy null weight retrieved.");
2982 if(jetContainer==
"AntiKt4TruthWZJets"){
2985 else if (jetContainer==
"AntiKt4TruthJets"){
2989 ATH_MSG_WARNING(jetContainer <<
" is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2998 if (
evtStore()->retrieve( vertices,
"PrimaryVertices" ).isSuccess() ) {
2999 for (
const auto vx : *vertices ) {
3006 ATH_MSG_WARNING(
"Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
3018 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!");
3021 ATH_CHECK(
m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
3043 return StatusCode::SUCCESS;
3051 return StatusCode::FAILURE;
3054 return StatusCode::SUCCESS;
3059 if (
evtStore()->retrieve( evtInfo,
"EventInfo" ).isFailure() ) {
3060 throw std::runtime_error(
"Unable to fetch EventInfo.");
3068 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo);
3070 if(!isfinite(pu_weight)) pu_weight = 1.;
3083 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3085 if(!isfinite(pu_weight)) pu_weight = 1.;
3092 return m_prwTool->getPRWHash( *evtInfo );
3097 return m_prwTool->getDataWeight( *evtInfo, trig );
3102 return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3107 return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3111 return m_prwTool->GetSumOfEventWeights(channel);
3120 else if (!muDependentRRN) {
3121 return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3123 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3133 return StatusCode::SUCCESS;
3145 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3156 throw std::runtime_error(
"Unable to fetch LargeD0 tracks.");
3168 throw std::runtime_error(
"Unable to fetch LargeD0 GSF tracks.");
3176 if (
isData())
return StatusCode::SUCCESS;
3178 const EventContext& ctx = Gaudi::Hive::currentContext();
3181 ATH_MSG_DEBUG (
"Applying LRT filter tool decorations for uncertainty");
3189 return StatusCode::SUCCESS;
3196 int theRunNumber = runNumber>0?runNumber:
GetRunNumber();
3197 if (theRunNumber<290000)
return 2015;
3198 else if (theRunNumber<320000)
return 2016;
3199 else if (theRunNumber<342000)
return 2017;
3200 else if (theRunNumber<400000)
return 2018;
3201 else if (theRunNumber<445000)
return 2022;
3202 else if (theRunNumber<465000)
return 2023;
3203 else if (theRunNumber<490000)
return 2024;
3204 else if (theRunNumber<510000)
return 2025;
3210#ifdef XAOD_STANDALONE
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(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.
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Class to wrap a set of SystematicVariations.
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
size_t size() const
returns: size of the set
const std::string & name() const
returns: the systematics joined into a single string.
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
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
std::string m_prwActualMu2025File
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_fatUngroomedTruthJets
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
std::string m_commonPRWFileMC23g
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diPhoton
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
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
bool m_BtagReadFromObject_trkJet
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
bool m_matchUngroomedParent
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
bool m_getTruthGroomedJetValues
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::map< int, int > m_tau_id_fallback
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
bool m_BtagReadFromObject
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
std::string m_tauInputFile
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
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
std::string m_fatTruthJets
bool m_useSigLepForIsoCloseByOR
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
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
StatusCode getTauConfig(const std::string &tauConfigPath, std::vector< float > &pT_window, std::vector< float > &eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const
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
std::string m_tauInputFileBaseline
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