12#ifndef XAOD_STANDALONE
96using namespace TrigConf;
686 m_jetCalibTool.declarePropertyFor(
this,
"JetCalibTool",
"The JetCalibTool" );
687 m_jetFatCalibTool.declarePropertyFor(
this,
"FatJetCalibTool",
"The JetCalibTool for large-R jets" );
690 m_fatjetUncertaintiesTool.declarePropertyFor(
this,
"FatJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R jets" );
692 m_fatjetFFSmearingTool.declarePropertyFor(
this,
"FatJetFFSmearingTool",
"The FFSmearingTool for large-R jets" );
693 m_WTagjetUncertaintiesTool.declarePropertyFor(
this,
"WJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R W-tagged jets" );
694 m_ZTagjetUncertaintiesTool.declarePropertyFor(
this,
"ZJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Z-tagged jets" );
695 m_TopTagjetUncertaintiesTool.declarePropertyFor(
this,
"TopJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Top-tagged jets" );
696 m_jetCleaningTool.declarePropertyFor(
this,
"JetCleaningTool",
"The JetCleaningTool" );
698 m_jetJvtMomentTool.declarePropertyFor(
this,
"JetJvtMomentTool",
"The JetJvtMomentTool" );
699 m_jetNNJvtMomentTool.declarePropertyFor(
this,
"JetNNJvtMomentTool",
"The JetNNJvtMomentTool" );
705 m_WTaggerTool.declarePropertyFor(
this,
"WTaggerTool",
"The SmoothedWZTaggerTool" );
706 m_ZTaggerTool.declarePropertyFor(
this,
"ZTaggerTool",
"The SmoothedWZTaggerTool" );
707 m_TopTaggerTool.declarePropertyFor(
this,
"TopTaggerTool",
"The DNNTopTaggerTool" );
710 m_muonSelectionTool.declarePropertyFor(
this,
"MuonSelectionTool",
"The MuonSelectionTool for signal muons" );
711 m_muonSelectionHighPtTool.declarePropertyFor(
this,
"MuonSelectionHighPtTool",
"The MuonSelectionTool for signal muons (HighPt WP)" );
713 m_muonCalibTool.declarePropertyFor(
this,
"MuonCalibTool",
"The MuonCalibTool" );
714 m_muonEfficiencySFTool.declarePropertyFor(
this,
"MuonEfficiencyScaleFactorsTool",
"The MuonEfficiencySFTool" );
717 m_muonIsolationSFTool.declarePropertyFor(
this,
"MuonIsolationScaleFactorsTool",
"The MuonIsolationSFTool" );
719 m_muonTriggerSFTool.declarePropertyFor(
this,
"MuonTriggerScaleFactorsTool",
"The MuonTriggerSFTool" );
720 m_muonLRTORTool.declarePropertyFor(
this,
"MuonLRTOverlapRemovalTool",
"Prompt/LRT muon OR Tool" );
722 m_elecEfficiencySFTool_reco.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_reco",
"The ElectronEfficiencyCorrectionTool for reconstruction SFs" );
724 m_elecEfficiencySFTool_id.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_id",
"The ElectronEfficiencyCorrectionTool for ID SFs" );
725 m_elecEfficiencySFTool_iso.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_iso" ,
"The ElectronEfficiencyCorrectionTool for iso SFs" );
726 m_elecEfficiencySFTool_isoHighPt.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_isoHigPt" ,
"The ElectronEfficiencyCorrectionTool for iso high-pt SFs" );
727 m_elecSelLikelihood.declarePropertyFor(
this,
"ElectronLikelihoodTool" ,
"The ElectronSelLikelihoodTool for signal electrons" );
728 m_elecSelLikelihoodBaseline.declarePropertyFor(
this,
"ElectronLikelihoodToolBaseline" ,
"The ElectronSelLikelihoodTool for baseline electrons" );
731 m_elecChargeEffCorrTool.declarePropertyFor(
this,
"ElectronChargeEffCorrectionTool",
"The ElectronChargeEffCorrectionTool" );
732 m_elecLRTORTool.declarePropertyFor(
this,
"ElectronLRTOverlapRemovalTool",
"Prompt/LRT electron OR Tool" );
734 m_photonSelIsEM.declarePropertyFor(
this,
"PhotonIsEMSelector" ,
"The PhotonIsEMSelectorTool for signal photons" );
735 m_photonSelIsEMBaseline.declarePropertyFor(
this,
"PhotonIsEMSelectorBaseline" ,
"The PhotonIsEMSelectorTool for baseline photons" );
736 m_photonEfficiencySFTool.declarePropertyFor(
this,
"PhotonEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for reco SFs" );
737 m_photonIsolationSFTool.declarePropertyFor(
this,
"PhotonIsolationCorrectionTool",
"The PhotonEfficiencyCorrectionTool for iso SFs" );
738 m_photonTriggerSFTool.declarePropertyFor(
this,
"PhotonTriggerEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for trigger SFs" );
740 m_egammaCalibTool.declarePropertyFor(
this,
"EgammaCalibrationAndSmearingTool",
"The EgammaCalibrationAndSmearingTool");
742 m_tauSelTool.declarePropertyFor(
this,
"TauSelectionTool",
"The TauSelectionTool for signal taus" );
743 m_tauSelToolBaseline.declarePropertyFor(
this,
"TauSelectionToolBaseline",
"The TauSelectionTool for baseline taus" );
744 m_tauSmearingTool.declarePropertyFor(
this,
"TauSmearingTool",
"The TauSmearingTool" );
745 m_tauTruthMatch.declarePropertyFor(
this,
"TauTruthMatch",
"The TTMT" );
746 m_tauEffTool.declarePropertyFor(
this,
"TauEfficiencyCorrectionsTool",
"The TauEfficiencyCorrectionsTool" );
748 m_btagEffTool.declarePropertyFor(
this,
"BTaggingEfficiencyTool",
"The BTaggingEfficiencyTool" );
749 m_btagSelTool.declarePropertyFor(
this,
"BTaggingSelectionTool",
"The main BTaggingSelectionTool" );
750 m_btagSelTool_OR.declarePropertyFor(
this,
"BTaggingSelectionTool_OR",
"The BTaggingSelectionTool used to select b-jets for overlap removal" );
751 m_btagEffTool_trkJet.declarePropertyFor(
this,
"BTaggingEfficiencyTool_trkJet",
"The BTaggingEfficiencyTool for track jets" );
752 m_btagSelTool_trkJet.declarePropertyFor(
this,
"BTaggingSelectionTool_trkJet",
"The main BTaggingSelectionTool for track jets" );
754 m_metMaker.declarePropertyFor(
this,
"METMaker",
"The METMaker instance");
755 m_metSystTool.declarePropertyFor(
this,
"METSystTool",
"The METSystematicsTool");
756 m_metSignif.declarePropertyFor(
this,
"METSignificance",
"The METSignifiance instance");
758 m_trigGlobalEffCorrTool_diLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diLep",
"The TrigGlobalEfficiencyCorrection tool for dilepton" );
759 m_trigGlobalEffCorrTool_multiLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_multiLep",
"The TrigGlobalEfficiencyCorrection tool for trilepton" );
760 m_trigGlobalEffCorrTool_diPhoton.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diPhoton",
"The TrigGlobalEfficiencyCorrection tool for asymmetric diphoton" );
761 m_trigConfTool.declarePropertyFor(
this,
"TrigConfigTool",
"The TrigConfigTool" );
762 m_trigDecTool.declarePropertyFor(
this,
"TrigDecisionTool",
"The TrigDecisionTool" );
763 m_trigMatchingTool.declarePropertyFor(
this,
"TrigMatchTool",
"The TrigMatchingTool" );
765 m_trigDRScoringTool.declarePropertyFor(
this,
"TrigDRScoringTool",
"The TrigDRScoringTool" );
767 m_isoCorrTool.declarePropertyFor(
this,
"IsolationCorrectionTool",
"The IsolationCorrectionTool" );
768 m_isoTool.declarePropertyFor(
this,
"IsolationSelectionTool",
"The IsolationSelectionTool");
770 m_isoBaselineTool.declarePropertyFor(
this,
"IsolationSelectionTool_Baseline",
"The IsolationSelectionTool for baseline objects");
771 m_isoHighPtTool.declarePropertyFor(
this,
"IsolationSelectionTool_HighPt",
"The IsolationSelectionTool for High Pt");
772 m_isoCloseByTool.declarePropertyFor(
this,
"IsolationCloseByCorrectionTool",
"The IsolationCloseByCorrectionTool");
774 m_prwTool.declarePropertyFor(
this,
"PileupReweightingTool",
"The PRW tool" );
776 m_LRTuncTool.declarePropertyFor(
this,
"InclusiveTrackFilterTool",
"The LRT uncertainty tool");
778 m_pmgSHnjetWeighter.declarePropertyFor(
this,
"PMGSHVjetReweightTool",
"The PMGSHVjetReweightTool (AntiKt4TruthJets)" );
779 m_pmgSHnjetWeighterWZ.declarePropertyFor(
this,
"PMGSHVjetReweightWZTool",
"The PMGSHVjetReweightTool (AntiKt4TruthWZJets)" );
781 m_tauJetORtool.declarePropertyFor(
this,
"TauJetOverlapTool",
"The TauJetOverlapTool");
819 "FCLoose",
"FCTight",
823 "TightTrackOnly_VarRad",
"TightTrackOnly_FixedRad",
824 "Tight_VarRad",
"Loose_VarRad",
825 "PLVLoose",
"PLVTight",
826 "PLImprovedTight",
"PLImprovedVeryTight"
831 "PflowLoose_FixedRad",
"PflowLoose_VarRad",
"PflowTight_FixedRad",
"PflowTight_VarRad",
832 "TightTrackOnly_FixedRad",
"TightTrackOnly_VarRad",
"HighPtTrackOnly",
833 "PLVLoose",
"PLVTight",
834 "Loose_VarRad",
"Loose_FixedRad",
"Tight_VarRad",
"Tight_FixedRad",
835 "PLImprovedTight",
"PLImprovedVeryTight"
856#define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
857 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
858 if( TOOLHANDLE.retrieve().isFailure()) { \
859 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
860 return StatusCode::FAILURE; \
863#define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
864 CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
866#define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
868 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
869 if(TOOLHANDLE.retrieve().isFailure()) { \
870 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
871 return StatusCode::FAILURE; \
885 ATH_MSG_ERROR(
"Initialising for a second time -- something is wrong!");
886 return StatusCode::FAILURE;
892 bool autoconf(
false);
893#ifndef XAOD_STANDALONE
896 ATH_MSG_INFO(
"Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
897 std::string projectName =
"";
899 if ( projectName ==
"IS_SIMULATION" ) {
900 std::string simFlavour =
"";
902 TString s(simFlavour); s.ToUpper();
904 }
else if (projectName.compare(0, 4,
"data") == 0 ) {
907 ATH_MSG_ERROR(
"Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
908 return StatusCode::FAILURE;
921 ATH_MSG_FATAL(
"You must set the DataSource property to Data, FullSim or AtlfastII !!");
922 if (autoconf)
ATH_MSG_FATAL(
"Autoconfiguration seems to have failed!");
925 return StatusCode::FAILURE;
937 return StatusCode::FAILURE;
948 std::string dataType;
951 if ( dataType.compare(
"StreamDAOD_PHYS")==0 || dataType.compare(
"StreamDAOD_PHYSLITE")==0 )
m_defaultTruthJets =
"AntiKt4TruthDressedWZJets";
952 if ( dataType.compare(
"StreamDAOD_PHYSLITE")==0)
m_isPHYSLITE =
true;
972 m_eleIdDFName =
m_eleId.find(
"DNN") == std::string::npos ?
"DFCommonElectronsLH" :
"DFCommonElectronsDNN";
973 m_eleIdDFName += TString(
m_eleId).ReplaceAll(
"LooseAndBLayer",
"LooseBL").ReplaceAll(
"LLH",
"").ReplaceAll(
"DNNnoCF",
"").ReplaceAll(
"DNN",
"").Data();
974 if (
m_eleId.find(
"noCF") != std::string::npos)
1008 return StatusCode::SUCCESS;
1015 std::string prwConfigFile(
"");
1019 prwConfigFile = PRWfilesDir;
1022 std::string amiTag(
"");
1023 std::string mcCampaignMD(
"");
1024 std::string simFlavour(
"");
1025 std::string simType(
"");
1030 std::map<std::string,std::vector<std::string>> PRWRtags = {};
1031 std::string allcampaigns =
"mc20a.mc20d.mc20e.mc21a.mc23a.mc23c.mc23d.mc23e";
1032 bool standard_like =
true;
1034 std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(
":"));
1035 std::vector<std::string> irtags =
split( campaign_rtags.substr(campaign_rtags.find(
":")+1),
"_" );
1036 PRWRtags[icampaign] = irtags;
1037 ATH_MSG_DEBUG(
"PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find(
"_")+1) <<
" for campaign " << icampaign );
1039 for (
const auto&
x : PRWRtags ) {
1040 if ( allcampaigns.find(
x.first)==string::npos ) {
1043 return StatusCode::FAILURE;
1053 if(simFlavour.starts_with(
"ATLFASTII")) simType =
"AFII";
1054 else if(simFlavour.starts_with(
"ATLFAST3")) simType =
"AF3";
1055 else simType =
"FS";
1058 while ( mcCampaignMD.empty() ) {
1059 for (
const auto& campaign_rtags : PRWRtags ) {
1060 for (
const auto& rtag: campaign_rtags.second ) {
1061 if (found)
continue;
1062 if (amiTag.find(rtag)!=string::npos) {
1063 mcCampaignMD = campaign_rtags.first.substr(0,5);
1064 standard_like = (campaign_rtags.first.find(
"ns")?
true:
false);
1071 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" << amiTag <<
"'. Please check your input sample.");
1072 return StatusCode::FAILURE;
1075 ATH_MSG_INFO(
"Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD <<
" (from amiTag " << amiTag <<
") (standard-like = " << (standard_like?
"true":
"false") <<
")." );
1076 if ( (!standard_like) && (!RPVLLmode) )
1077 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?");
1080#ifndef XAOD_STANDALONE
1081 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1082 return StatusCode::FAILURE;
1088 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1089 std::string NoMetadataButPropertyOK(
"");
1090 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1092 NoMetadataButPropertyOK +=
"'. 'mcChannel' is used and passed to SUSYTools as '";
1093 NoMetadataButPropertyOK += std::to_string(
m_mcChannel);
1094 NoMetadataButPropertyOK +=
"'. Autocongiguring PRW accordingly.";
1100 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1104 std::string NoMetadataButPropertyOK(
"");
1105 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1107 NoMetadataButPropertyOK +=
"'. Autoconfiguring PRW accordingly.";
1112 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1113 return StatusCode::FAILURE;
1120 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1130 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1131 return StatusCode::FAILURE;
1137 int DSID_INT =
static_cast<int>(dsid);
1138 prwConfigFile +=
"DSID" + std::to_string(DSID_INT/1000) +
"xxx/pileup_" + mcCampaignMD +
"_dsid" + std::to_string(DSID_INT) +
"_" + simType +
".root";
1140 if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(
".root",
"_rpvll.root").Data();
1144 if (!PRWfileName.empty()) {
1145 prwConfigFile = PRWfilesDir + PRWfileName;
1146 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1154 if (mcCampaignMD.find(
"mc20") == std::string::npos) {
1155 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1156 return StatusCode::FAILURE;
1166 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20a").
Data() );
1167 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20d").
Data() );
1168 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20e").
Data() );
1174 if ( mcCampaignMD ==
"mc20d") {
1176 }
else if (mcCampaignMD ==
"mc20e") {
1178 }
else if (mcCampaignMD ==
"mc21a" || mcCampaignMD ==
"mc23a") {
1180 }
else if (mcCampaignMD ==
"mc23c" || mcCampaignMD ==
"mc23d") {
1182 }
else if (mcCampaignMD ==
"mc23e") {
1190 TFile testF(prwConfigFile.data(),
"read");
1191 if (testF.IsZombie()) {
1192 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() <<
" ! Impossible to autoconfigure PRW. Aborting." );
1193 if ( (!standard_like) && (!RPVLLmode) )
1194 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?");
1195 return StatusCode::FAILURE;
1198 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1201 return StatusCode::SUCCESS;
1208 else ATH_MSG_ERROR(
"Trying to set data source to unknown type (" << source <<
")");
1214 return (std::find(list.begin(), list.end(),wp) != list.end());
1220 return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1227 TString copy = TString(wp).Copy().ReplaceAll(
"AndBLayer",
"BL").ReplaceAll(
"LLH",
"LHElectron");
1229 if (wp.find(
"DNNnoCF") != std::string::npos)
1230 copy.ReplaceAll(
"DNNnoCF",
"DNNnoCFElectron");
1231 else if (wp.find(
"DNN") != std::string::npos)
1232 copy.ReplaceAll(
"DNN",
"DNNElectron");
1238 if( mapFile.empty() )
1241 std::vector<std::string> theKeys;
1244 std::ifstream input( filename );
1245 for( std::string line; getline( input, line ); ){
1246 std::vector<std::string> tokens =
split((
const std::string)line,
"=");
1248 theKeys.push_back(tokens.at(0));
1259 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1260 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1263 property = rEnv.GetValue(propname.c_str(),
static_cast<int>(defaultValue));
1264 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1266 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1271 double defaultValue)
1274 if (property > -90.) {
1275 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1276 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1279 property = rEnv.GetValue(propname.c_str(), defaultValue);
1280 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1282 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1290 if (property > -90){
1291 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1292 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1295 property = rEnv.GetValue(propname.c_str(), defaultValue);
1296 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1298 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1303 const std::string& defaultValue,
bool allowEmpty)
1306 if (!property.empty()){
1307 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1308 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1311 property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1312 if (property.empty() && !allowEmpty) {
1313 ATH_MSG_FATAL(
"Read empty string property from text file (property name: " << propname <<
")");
1317 std::string tmp_prop =
property.substr(0, property.find(
'#', 0));
1318 property = TString(tmp_prop).ReplaceAll(
" ",
"").Data();
1321 if (property==
"None" || property==
"NONE" || property==
"none") {
1322 ATH_MSG_VERBOSE(
"Property \"" << propname <<
"\" being set to empty string due to specification of \"" << property <<
"\"" );
1326 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1328 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1339 success = rEnv.ReadFile(
m_configFile.c_str(), kEnvAll);
1340 if (success != 0)
return StatusCode::FAILURE;
1349 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.InputType") );
1351 if (
m_muId ==
static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1352 int muIdTmp = rEnv.GetValue(
"Muon.Id", 1);
1353 m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1356 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Muon.Id") );
1358 if (
m_muIdBaseline ==
static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1359 int muIdTmp = rEnv.GetValue(
"MuonBaseline.Id", 1);
1360 m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1363 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"MuonBaseline.Id") );
1367 std::string prop = rEnv.GetValue(
"Jet.JVT_WP",
"");
1368 if ( !prop.empty() ) {
1369 ATH_MSG_WARNING(
"readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1370 rEnv.SetValue(
"Jet.JvtWP", prop.c_str());
1371 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.JVT_WP") );
1380 m_conf_to_prop[
"EleBaseline.CrackVeto"] =
"EleBaselineCrackVeto";
1382 m_conf_to_prop[
"Ele.AllowRun3TrigSFFallback"] =
"EleAllowRun3TrigSFFallback";
1386 m_conf_to_prop[
"PhotonBaseline.CrackVeto"] =
"PhotonBaselineCrackVeto";
1394 m_conf_to_prop[
"OR.DoMuonJetGhostAssociation"] =
"ORDoMuonJetGhostAssociation";
1409 m_conf_to_prop[
"Trigger.UpstreamMatching"] =
"TriggerUpstreamMatching";
1415 m_conf_to_prop[
"SigLepPh.IsoCloseByOR"] =
"SigLepPhIsoCloseByOR";
1416 m_conf_to_prop[
"MET.RemoveOverlappingCaloTaggedMuons"] =
"METRemoveORCaloTaggedMuons";
1417 m_conf_to_prop[
"MET.DoSetMuonJetEMScale"] =
"METDoSetMuonJetEMScale";
1469 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");
1470 configFromFile(
m_eleEffMapFilePath,
"Ele.EffMapFilePath", rEnv,
"ElectronEfficiencyCorrection/2015_2025/rel22.2/2025_Run3_Consolidated_Recommendation_v4/map2.txt");
1482 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");
1483 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");
1484 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");
1485 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");
1488 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");
1489 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");
1490 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");
1491 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");
1574 configFromFile(
m_WtagConfig,
"Jet.WtaggerConfig", rEnv,
"SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1575 configFromFile(
m_ZtagConfig,
"Jet.ZtaggerConfig", rEnv,
"SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1580 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");
1581 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");
1582 configFromFile(
m_jesConfigJMS,
"Jet.JESConfigJMS", rEnv,
"JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1584 configFromFile(
m_jesConfigFat,
"Jet.JESConfigFat", rEnv,
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1693 configFromFile(
m_prwActualMu2017File,
"PRW.ActualMu2017File", rEnv,
"GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1694 configFromFile(
m_prwActualMu2018File,
"PRW.ActualMu2018File", rEnv,
"GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1706 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");
1719 if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1720 ATH_MSG_ERROR(
"Found " << rEnv.GetTable()->GetSize() <<
" unparsed environment options:");
1723 return StatusCode::FAILURE;
1728 if (
m_WtagConfig.find(
"Efficiency50") != std::string::npos){
1731 else if (
m_WtagConfig.find(
"Efficiency80") != std::string::npos){
1735 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");
1739 if (
m_ZtagConfig.find(
"Efficiency50") != std::string::npos){
1742 else if (
m_ZtagConfig.find(
"Efficiency80") != std::string::npos){
1746 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");
1749 std::string TopTagEff =
"";
1750 std::string TopTagType =
"";
1759 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");
1763 TopTagType =
"Inclusive";
1766 TopTagType =
"Contained";
1769 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");
1771 m_TopTagUncConfig =
"R10_SF_LCTopo_TopTag"+TopTagType+
"_SigEff"+TopTagEff+
".config";
1803 return StatusCode::SUCCESS;
1808 assert(delim.length() == 1);
1809 std::vector<std::string> retval;
1810 retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1812 if (s.find(delim)==std::string::npos) {
1813 retval.emplace_back(s);
1820 while ((next = s.find(delim, last)) != std::string::npos) {
1821 retval.emplace_back(s.substr(last, next - last));
1822 last = next + delim.length();
1826 retval.emplace_back(s.substr(last));
1833 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1835 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1838void SUSYObjDef_xAOD::getTauConfig(
const std::string& tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window,
bool &eleOLR,
bool &muVeto,
bool &muOLR)
const {
1840 if(tauConfigPath.empty())
return;
1844 rEnv.ReadFile(filename.c_str(), kEnvAll);
1846 std::vector<std::string> cuts;
1847 if (rEnv.Defined(
"SelectionCuts")) {
1848 cuts =
split(rEnv.GetValue(
"SelectionCuts",
" "),
" ");
1850 auto *l = rEnv.GetTable();
1851 for( Int_t i = 0; i < l->GetEntries(); ++i ) {
1852 cuts.push_back( l->At(i)->GetName() );
1861 static const std::string trueBool =
"TRUE";
1864 std::vector<std::string> v_pT_window;
1865 std::vector<std::string> v_eta_window;
1868 float pT_min = -99.0;
1869 float pT_max = -99.0;
1870 float eta_min = -99.0;
1871 float eta_max = -99.0;
1872 for (
const auto& cut : cuts) {
1873 if(cut ==
"PtRegion") {
1874 v_pT_window =
split(rEnv.GetValue(
"PtRegion",
""),
";");
1875 std::transform(std::begin(v_pT_window),
1876 std::end(v_pT_window),
1877 std::back_inserter(pT_window),
1878 [](
const std::string& s) {
return std::stof(s); }
1880 }
else if (cut ==
"PtMin") {
1881 pT_min = rEnv.GetValue(
"PtMin", NAN);
1882 }
else if (cut ==
"PtMax") {
1883 pT_max = rEnv.GetValue(
"PtMax", NAN);
1884 }
else if (cut ==
"AbsEtaRegion") {
1885 v_eta_window =
split(rEnv.GetValue(
"AbsEtaRegion",
""),
";");
1886 std::transform(std::begin(v_eta_window),
1887 std::end(v_eta_window),
1888 std::back_inserter(eta_window),
1889 [](
const std::string& s) {
return std::stof(s); }
1891 }
else if (cut ==
"AbsEtaMin") {
1892 eta_min = rEnv.GetValue(
"AbsEtaMin", NAN);
1893 }
else if (cut ==
"AbsEtaMax") {
1894 eta_max = rEnv.GetValue(
"AbsEtaMax", NAN);
1898 else if (cut ==
"EleOLR"){
1899 eleOLR = (rEnv.GetValue(
"EleOLR",
"FALSE") == trueBool);
1901 else if (cut ==
"MuonVeto"){
1902 muVeto = (rEnv.GetValue(
"MuonVeto",
"FALSE") == trueBool);
1904 else if (cut ==
"MuonOLR"){
1905 muOLR = (rEnv.GetValue(
"MuonOLR",
"FALSE") == trueBool);
1909 if(pT_window.empty()) {
1910 if(pT_min == pT_min) {
1912 pT_window.push_back(pT_min);
1914 pT_window.push_back(-std::numeric_limits<float>::infinity());
1917 if(pT_max == pT_max) {
1919 pT_window.push_back(pT_max);
1921 pT_window.push_back(std::numeric_limits<float>::infinity());
1925 if(eta_window.empty()) {
1926 if(eta_min == eta_min) {
1928 eta_window.push_back(eta_min);
1930 eta_window.push_back(-std::numeric_limits<float>::infinity());
1933 if(eta_max == eta_max) {
1935 eta_window.push_back(eta_max);
1937 eta_window.push_back(std::numeric_limits<float>::infinity());
1949 if(strict)
return StatusCode::FAILURE;
1953 if(strict)
return StatusCode::FAILURE;
1958 if(strict)
return StatusCode::FAILURE;
1962 if(strict)
return StatusCode::FAILURE;
1968 if(strict)
return StatusCode::FAILURE;
1972 if(strict)
return StatusCode::FAILURE;
1976 if(strict)
return StatusCode::FAILURE;
1982 if(strict)
return StatusCode::FAILURE;
1986 if(strict)
return StatusCode::FAILURE;
1990 if(strict)
return StatusCode::FAILURE;
1994 if(strict)
return StatusCode::FAILURE;
1999 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!");
2009 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).");
2016 if(strict)
return StatusCode::FAILURE;
2021 if(strict)
return StatusCode::FAILURE;
2025 std::vector<float> pT_window;
2026 std::vector<float> eta_window;
2035 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2036 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2037 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2038 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2039 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2043 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2047 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] <<
"]");
2048 if(strict)
return StatusCode::FAILURE;
2051 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2052 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] <<
"]");
2053 if(strict)
return StatusCode::FAILURE;
2057 ATH_MSG_WARNING(
"Your baseline tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2058 if(strict)
return StatusCode::FAILURE;
2066 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2067 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2068 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2069 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2070 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2073 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2076 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] <<
"]");
2077 if(strict)
return StatusCode::FAILURE;
2080 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2081 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] <<
"]");
2082 if(strict)
return StatusCode::FAILURE;
2086 ATH_MSG_WARNING(
"Your tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2087 if(strict)
return StatusCode::FAILURE;
2092 return StatusCode::SUCCESS;
2108 return syst.
name().empty();
2113 bool affectsWeights =
false;
2114 for (
const auto& sys : systSet) {
2116 if(info.affectsKinematics) {
return false; }
2117 affectsWeights = affectsWeights or info.affectsWeights;
2119 return affectsWeights;
2124 for (
const auto& sys : systSet) {
2126 if(info.affectsKinematics) {
return true; }
2149 return StatusCode::FAILURE;
2152 ATH_MSG_DEBUG(
" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.
name() <<
"\" size " << systConfig.
size());
2159 if ( ret != StatusCode::SUCCESS) {
2160 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2162 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2167 if ( ret != StatusCode::SUCCESS) {
2168 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2170 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2175 if ( ret != StatusCode::SUCCESS) {
2176 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2178 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2183 if ( ret != StatusCode::SUCCESS) {
2184 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2186 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2192 if ( ret != StatusCode::SUCCESS) {
2193 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2195 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2200 if ( ret != StatusCode::SUCCESS) {
2201 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2203 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2208 if ( ret != StatusCode::SUCCESS) {
2209 ATH_MSG_VERBOSE(
"Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2211 ATH_MSG_VERBOSE(
"Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2216 if ( ret != StatusCode::SUCCESS) {
2217 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2219 ATH_MSG_VERBOSE(
"Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2224 if ( ret != StatusCode::SUCCESS) {
2225 ATH_MSG_VERBOSE(
"Cannot configure NNJvtEfficiency for systematic var. " << systConfig.
name() );
2232 if ( ret != StatusCode::SUCCESS) {
2233 ATH_MSG_VERBOSE(
"Cannot configure fJvtEfficiency for systematic var. " << systConfig.
name() );
2239 StatusCode ret =
m_muonCalibTool->applySystematicVariation(systConfig);
2240 if (ret != StatusCode::SUCCESS) {
2241 ATH_MSG_ERROR(
"Cannot configure MuonCalibTool for systematic var. " << systConfig.
name() );
2249 if ( ret != StatusCode::SUCCESS) {
2250 ATH_MSG_ERROR(
"Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2253 ATH_MSG_VERBOSE(
"MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2258 if ( ret != StatusCode::SUCCESS) {
2259 ATH_MSG_ERROR(
"Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.
name() );
2262 ATH_MSG_VERBOSE(
"MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.
name() );
2267 if ( ret != StatusCode::SUCCESS) {
2268 ATH_MSG_ERROR(
"Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2271 ATH_MSG_VERBOSE(
"MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2276 if ( ret != StatusCode::SUCCESS) {
2277 ATH_MSG_ERROR(
"Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.
name() );
2280 ATH_MSG_VERBOSE(
"MuonIsolationScaleFactors configured for systematic var. " << systConfig.
name() );
2285 if ( ret != StatusCode::SUCCESS) {
2286 ATH_MSG_ERROR(
"Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.
name() );
2289 ATH_MSG_VERBOSE(
"MuonTriggerScaleFactors configured for systematic var. " << systConfig.
name() );
2294 if (ret != StatusCode::SUCCESS) {
2295 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2298 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2303 if (ret != StatusCode::SUCCESS) {
2304 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.
name() );
2307 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.
name() );
2312 if (ret != StatusCode::SUCCESS) {
2313 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2316 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.
name() );
2321 if (ret != StatusCode::SUCCESS) {
2322 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.
name() );
2325 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.
name() );
2331 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2332 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2335 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2336 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2339 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2340 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2342 if (ret != StatusCode::SUCCESS) {
2343 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.
name() );
2346 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.
name() );
2352 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2353 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2356 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2357 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2360 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2361 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2363 if (ret != StatusCode::SUCCESS) {
2364 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.
name() );
2367 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.
name() );
2372 if (ret != StatusCode::SUCCESS) {
2373 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2376 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.
name() );
2381 if (ret != StatusCode::SUCCESS) {
2382 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.
name() );
2385 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.
name() );
2390 if (ret != StatusCode::SUCCESS) {
2391 ATH_MSG_ERROR(
"Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.
name() );
2394 ATH_MSG_VERBOSE(
"ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.
name() );
2399 if (ret != StatusCode::SUCCESS) {
2400 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2403 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2408 if (ret != StatusCode::SUCCESS) {
2409 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2412 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.
name() );
2417 if (ret != StatusCode::SUCCESS) {
2418 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2421 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.
name() );
2427 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2428 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2431 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2432 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2434 if (ret != StatusCode::SUCCESS) {
2435 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.
name() );
2438 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.
name() );
2443 if (ret != StatusCode::SUCCESS) {
2444 ATH_MSG_ERROR(
"Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.
name() );
2447 ATH_MSG_VERBOSE(
"EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.
name() );
2451 StatusCode ret =
m_isoCorrTool->applySystematicVariation(systConfig);
2452 if (ret != StatusCode::SUCCESS) {
2453 ATH_MSG_ERROR(
"Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.
name() );
2456 ATH_MSG_VERBOSE(
"IsolationCorrectionTool configured for systematic var. " << systConfig.
name() );
2461 StatusCode ret =
m_btagEffTool->applySystematicVariation(systConfig);
2462 if ( ret != StatusCode::SUCCESS) {
2463 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2466 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2472 if ( ret != StatusCode::SUCCESS) {
2473 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2476 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2481 if ( ret != StatusCode::SUCCESS) {
2482 ATH_MSG_ERROR(
"Cannot configure TauSmearingTool for systematic var. " << systConfig.
name() );
2489 StatusCode ret =
m_tauEffTool->applySystematicVariation(systConfig);
2490 if ( ret != StatusCode::SUCCESS) {
2491 ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2494 ATH_MSG_VERBOSE(
"Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2498 StatusCode ret = tool->applySystematicVariation(systConfig);
2499 if (ret != StatusCode::SUCCESS) {
2500 ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2503 ATH_MSG_VERBOSE(
"Configured " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2507 StatusCode ret =
m_metSystTool->applySystematicVariation(systConfig);
2508 if ( ret != StatusCode::SUCCESS) {
2509 ATH_MSG_ERROR(
"Cannot configure METSystematicsTool for systematic var. " << systConfig.
name() );
2512 ATH_MSG_VERBOSE(
"Configured METSystematicsTool for systematic var. " << systConfig.
name() );
2516 StatusCode ret =
m_prwTool->applySystematicVariation(systConfig);
2517 if ( ret != StatusCode::SUCCESS) {
2518 ATH_MSG_ERROR(
"Cannot configure PileupReweightingTool for systematic var. " << systConfig.
name() );
2521 ATH_MSG_VERBOSE(
"Configured PileupReweightingTool for systematic var. " << systConfig.
name() );
2526 StatusCode ret =
m_LRTuncTool->applySystematicVariation(systConfig);
2527 if ( ret != StatusCode::SUCCESS) {
2528 ATH_MSG_ERROR(
"Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2531 ATH_MSG_VERBOSE(
"Configured InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2535 return StatusCode::SUCCESS;
2541 return vector<ST::SystInfo>();
2550 vector<SystInfo> sysInfoList;
2551 sysInfoList.reserve(recommendedSystematics.
size() * 2);
2559 sysInfoList.push_back(infodef);
2564 for (
const auto& sys : systSet) {
2569 ATH_MSG_INFO(
"Returning list of " << sysInfoList.size() <<
" systematic variations");
2710 sysInfo.
affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2751 if (sys.basename().compare(0, 3,
"EG_") == 0) {
2753 }
else if (sys.basename().compare(0, 3,
"PH_") == 0) {
2755 }
else if (sys.basename().compare(0, 3,
"EL_") == 0) {
2823 if(tool->isAffectedBySystematic(sys)) {
2849 if (
m_prwTool->isAffectedBySystematic(sys) ) {
2862 std::string affectedType;
2864 case Unknown : affectedType =
"UNKNOWN";
break;
2865 case Jet : affectedType =
"JET";
break;
2866 case Egamma : affectedType =
"EGAMMA";
break;
2867 case Electron : affectedType =
"ELECTRON";
break;
2868 case Photon : affectedType =
"PHOTON";
break;
2869 case Muon : affectedType =
"MUON";
break;
2870 case Tau : affectedType =
"TAU";
break;
2871 case BTag : affectedType =
"BTAG";
break;
2872 case MET_TST : affectedType =
"MET_TST";
break;
2873 case MET_CST : affectedType =
"MET_CST";
break;
2874 case MET_Track : affectedType =
"MET_Track";
break;
2875 case EventWeight : affectedType =
"EVENT WEIGHT";
break;
2876 case LRT_Object : affectedType =
"LRT_OBJECT";
break;
2882 <<
"for " << affectedType );
2901 ATH_MSG_WARNING(
"No TruthJetContainer found! Dummy null weight retrieved.");
2908 if(jetContainer==
"AntiKt4TruthWZJets"){
2911 else if (jetContainer==
"AntiKt4TruthJets"){
2915 ATH_MSG_WARNING(jetContainer <<
" is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2924 if (
evtStore()->retrieve( vertices,
"PrimaryVertices" ).isSuccess() ) {
2925 for (
const auto vx : *vertices ) {
2932 ATH_MSG_WARNING(
"Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2944 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!");
2947 ATH_CHECK(
m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
2969 return StatusCode::SUCCESS;
2977 return StatusCode::FAILURE;
2980 return StatusCode::SUCCESS;
2985 if (
evtStore()->retrieve( evtInfo,
"EventInfo" ).isFailure() ) {
2986 throw std::runtime_error(
"Unable to fetch EventInfo.");
2994 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo);
2996 if(!isfinite(pu_weight)) pu_weight = 1.;
3009 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3011 if(!isfinite(pu_weight)) pu_weight = 1.;
3018 return m_prwTool->getPRWHash( *evtInfo );
3023 return m_prwTool->getDataWeight( *evtInfo, trig );
3028 return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3033 return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3037 return m_prwTool->GetSumOfEventWeights(channel);
3046 else if (!muDependentRRN) {
3047 return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3049 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3059 return StatusCode::SUCCESS;
3071 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3082 throw std::runtime_error(
"Unable to fetch LargeD0 tracks.");
3094 throw std::runtime_error(
"Unable to fetch LargeD0 GSF tracks.");
3102 if (
isData())
return StatusCode::SUCCESS;
3104 const EventContext& ctx = Gaudi::Hive::currentContext();
3107 ATH_MSG_DEBUG (
"Applying LRT filter tool decorations for uncertainty");
3115 return StatusCode::SUCCESS;
3122 int theRunNumber = runNumber>0?runNumber:
GetRunNumber();
3123 if (theRunNumber<290000)
return 2015;
3124 else if (theRunNumber<320000)
return 2016;
3125 else if (theRunNumber<342000)
return 2017;
3126 else if (theRunNumber<400000)
return 2018;
3127 else if (theRunNumber<445000)
return 2022;
3128 else if (theRunNumber<465000)
return 2023;
3134#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
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