12#ifndef XAOD_STANDALONE
97using namespace TrigConf;
697 m_jetCalibTool.declarePropertyFor(
this,
"JetCalibTool",
"The JetCalibTool" );
698 m_jetFatCalibTool.declarePropertyFor(
this,
"FatJetCalibTool",
"The JetCalibTool for large-R jets" );
701 m_fatjetUncertaintiesTool.declarePropertyFor(
this,
"FatJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R jets" );
703 m_fatjetFFSmearingTool.declarePropertyFor(
this,
"FatJetFFSmearingTool",
"The FFSmearingTool for large-R jets" );
704 m_WTagjetUncertaintiesTool.declarePropertyFor(
this,
"WJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R W-tagged jets" );
705 m_ZTagjetUncertaintiesTool.declarePropertyFor(
this,
"ZJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Z-tagged jets" );
706 m_TopTagjetUncertaintiesTool.declarePropertyFor(
this,
"TopJetUncertaintiesTool",
"The JetUncertaintiesTool for large-R Top-tagged jets" );
707 m_jetCleaningTool.declarePropertyFor(
this,
"JetCleaningTool",
"The JetCleaningTool" );
709 m_jetJvtMomentTool.declarePropertyFor(
this,
"JetJvtMomentTool",
"The JetJvtMomentTool" );
710 m_jetNNJvtMomentTool.declarePropertyFor(
this,
"JetNNJvtMomentTool",
"The JetNNJvtMomentTool" );
716 m_WTaggerTool.declarePropertyFor(
this,
"WTaggerTool",
"The SmoothedWZTaggerTool" );
717 m_ZTaggerTool.declarePropertyFor(
this,
"ZTaggerTool",
"The SmoothedWZTaggerTool" );
718 m_TopTaggerTool.declarePropertyFor(
this,
"TopTaggerTool",
"The DNNTopTaggerTool" );
721 m_muonSelectionTool.declarePropertyFor(
this,
"MuonSelectionTool",
"The MuonSelectionTool for signal muons" );
722 m_muonSelectionHighPtTool.declarePropertyFor(
this,
"MuonSelectionHighPtTool",
"The MuonSelectionTool for signal muons (HighPt WP)" );
724 m_muonCalibTool.declarePropertyFor(
this,
"MuonCalibTool",
"The MuonCalibTool" );
725 m_muonEfficiencySFTool.declarePropertyFor(
this,
"MuonEfficiencyScaleFactorsTool",
"The MuonEfficiencySFTool" );
728 m_muonIsolationSFTool.declarePropertyFor(
this,
"MuonIsolationScaleFactorsTool",
"The MuonIsolationSFTool" );
730 m_muonTriggerSFTool.declarePropertyFor(
this,
"MuonTriggerScaleFactorsTool",
"The MuonTriggerSFTool" );
731 m_muonLRTORTool.declarePropertyFor(
this,
"MuonLRTOverlapRemovalTool",
"Prompt/LRT muon OR Tool" );
733 m_elecEfficiencySFTool_reco.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_reco",
"The ElectronEfficiencyCorrectionTool for reconstruction SFs" );
735 m_elecEfficiencySFTool_id.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_id",
"The ElectronEfficiencyCorrectionTool for ID SFs" );
736 m_elecEfficiencySFTool_iso.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_iso" ,
"The ElectronEfficiencyCorrectionTool for iso SFs" );
737 m_elecEfficiencySFTool_isoHighPt.declarePropertyFor(
this,
"ElectronEfficiencyCorrectionTool_isoHigPt" ,
"The ElectronEfficiencyCorrectionTool for iso high-pt SFs" );
738 m_elecSelLikelihood.declarePropertyFor(
this,
"ElectronLikelihoodTool" ,
"The ElectronSelLikelihoodTool for signal electrons" );
739 m_elecSelLikelihoodBaseline.declarePropertyFor(
this,
"ElectronLikelihoodToolBaseline" ,
"The ElectronSelLikelihoodTool for baseline electrons" );
742 m_elecChargeEffCorrTool.declarePropertyFor(
this,
"ElectronChargeEffCorrectionTool",
"The ElectronChargeEffCorrectionTool" );
743 m_elecLRTORTool.declarePropertyFor(
this,
"ElectronLRTOverlapRemovalTool",
"Prompt/LRT electron OR Tool" );
745 m_photonSelIsEM.declarePropertyFor(
this,
"PhotonIsEMSelector" ,
"The PhotonIsEMSelectorTool for signal photons" );
746 m_photonSelIsEMBaseline.declarePropertyFor(
this,
"PhotonIsEMSelectorBaseline" ,
"The PhotonIsEMSelectorTool for baseline photons" );
747 m_photonEfficiencySFTool.declarePropertyFor(
this,
"PhotonEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for reco SFs" );
748 m_photonIsolationSFTool.declarePropertyFor(
this,
"PhotonIsolationCorrectionTool",
"The PhotonEfficiencyCorrectionTool for iso SFs" );
749 m_photonTriggerSFTool.declarePropertyFor(
this,
"PhotonTriggerEfficiencyCorrectionTool",
"The PhotonEfficiencyCorrectionTool for trigger SFs" );
751 m_egammaCalibTool.declarePropertyFor(
this,
"EgammaCalibrationAndSmearingTool",
"The EgammaCalibrationAndSmearingTool");
753 m_tauSelTool.declarePropertyFor(
this,
"TauSelectionTool",
"The TauSelectionTool for signal taus" );
754 m_tauSelToolBaseline.declarePropertyFor(
this,
"TauSelectionToolBaseline",
"The TauSelectionTool for baseline taus" );
755 m_tauSmearingTool.declarePropertyFor(
this,
"TauSmearingTool",
"The TauSmearingTool" );
756 m_tauTruthMatch.declarePropertyFor(
this,
"TauTruthMatch",
"The TTMT" );
757 m_tauEffTool.declarePropertyFor(
this,
"TauEfficiencyCorrectionsTool",
"The TauEfficiencyCorrectionsTool" );
759 m_btagEffTool.declarePropertyFor(
this,
"BTaggingEfficiencyTool",
"The BTaggingEfficiencyTool" );
760 m_btagSelTool.declarePropertyFor(
this,
"BTaggingSelectionTool",
"The main BTaggingSelectionTool" );
761 m_btagSelTool_OR.declarePropertyFor(
this,
"BTaggingSelectionTool_OR",
"The BTaggingSelectionTool used to select b-jets for overlap removal" );
762 m_btagEffTool_trkJet.declarePropertyFor(
this,
"BTaggingEfficiencyTool_trkJet",
"The BTaggingEfficiencyTool for track jets" );
763 m_btagSelTool_trkJet.declarePropertyFor(
this,
"BTaggingSelectionTool_trkJet",
"The main BTaggingSelectionTool for track jets" );
765 m_metMaker.declarePropertyFor(
this,
"METMaker",
"The METMaker instance");
766 m_metSystTool.declarePropertyFor(
this,
"METSystTool",
"The METSystematicsTool");
767 m_metSignif.declarePropertyFor(
this,
"METSignificance",
"The METSignifiance instance");
769 m_trigGlobalEffCorrTool_diLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diLep",
"The TrigGlobalEfficiencyCorrection tool for dilepton" );
770 m_trigGlobalEffCorrTool_multiLep.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_multiLep",
"The TrigGlobalEfficiencyCorrection tool for trilepton" );
771 m_trigGlobalEffCorrTool_diPhoton.declarePropertyFor(
this,
"TrigGlobalEfficiencyCorrection_diPhoton",
"The TrigGlobalEfficiencyCorrection tool for asymmetric diphoton" );
772 m_trigConfTool.declarePropertyFor(
this,
"TrigConfigTool",
"The TrigConfigTool" );
773 m_trigDecTool.declarePropertyFor(
this,
"TrigDecisionTool",
"The TrigDecisionTool" );
774 m_trigMatchingTool.declarePropertyFor(
this,
"TrigMatchTool",
"The TrigMatchingTool" );
776 m_trigDRScoringTool.declarePropertyFor(
this,
"TrigDRScoringTool",
"The TrigDRScoringTool" );
778 m_isoCorrTool.declarePropertyFor(
this,
"IsolationCorrectionTool",
"The IsolationCorrectionTool" );
779 m_isoTool.declarePropertyFor(
this,
"IsolationSelectionTool",
"The IsolationSelectionTool");
781 m_isoBaselineTool.declarePropertyFor(
this,
"IsolationSelectionTool_Baseline",
"The IsolationSelectionTool for baseline objects");
782 m_isoHighPtTool.declarePropertyFor(
this,
"IsolationSelectionTool_HighPt",
"The IsolationSelectionTool for High Pt");
783 m_isoCloseByTool.declarePropertyFor(
this,
"IsolationCloseByCorrectionTool",
"The IsolationCloseByCorrectionTool");
785 m_prwTool.declarePropertyFor(
this,
"PileupReweightingTool",
"The PRW tool" );
787 m_LRTuncTool.declarePropertyFor(
this,
"InclusiveTrackFilterTool",
"The LRT uncertainty tool");
789 m_pmgSHnjetWeighter.declarePropertyFor(
this,
"PMGSHVjetReweightTool",
"The PMGSHVjetReweightTool (AntiKt4TruthJets)" );
790 m_pmgSHnjetWeighterWZ.declarePropertyFor(
this,
"PMGSHVjetReweightWZTool",
"The PMGSHVjetReweightTool (AntiKt4TruthWZJets)" );
792 m_tauJetORtool.declarePropertyFor(
this,
"TauJetOverlapTool",
"The TauJetOverlapTool");
830 "FCLoose",
"FCTight",
834 "TightTrackOnly_VarRad",
"TightTrackOnly_FixedRad",
835 "Tight_VarRad",
"Loose_VarRad",
836 "PLVLoose",
"PLVTight",
837 "PLImprovedTight",
"PLImprovedVeryTight"
842 "PflowLoose_FixedRad",
"PflowLoose_VarRad",
"PflowTight_FixedRad",
"PflowTight_VarRad",
843 "TightTrackOnly_FixedRad",
"TightTrackOnly_VarRad",
"HighPtTrackOnly",
844 "PLVLoose",
"PLVTight",
845 "Loose_VarRad",
"Loose_FixedRad",
"Tight_VarRad",
"Tight_FixedRad",
846 "PLImprovedTight",
"PLImprovedVeryTight"
874#define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
875 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
876 if( TOOLHANDLE.retrieve().isFailure()) { \
877 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
878 return StatusCode::FAILURE; \
881#define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
882 CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
884#define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
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; \
903 ATH_MSG_ERROR(
"Initialising for a second time -- something is wrong!");
904 return StatusCode::FAILURE;
910 bool autoconf(
false);
911#ifndef XAOD_STANDALONE
914 ATH_MSG_INFO(
"Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
915 std::string projectName =
"";
917 if ( projectName ==
"IS_SIMULATION" ) {
918 std::string simFlavour =
"";
920 TString s(simFlavour); s.ToUpper();
922 }
else if (projectName.compare(0, 4,
"data") == 0 ) {
925 ATH_MSG_ERROR(
"Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
926 return StatusCode::FAILURE;
939 ATH_MSG_FATAL(
"You must set the DataSource property to Data, FullSim or AtlfastII !!");
940 if (autoconf)
ATH_MSG_FATAL(
"Autoconfiguration seems to have failed!");
943 return StatusCode::FAILURE;
955 return StatusCode::FAILURE;
966 std::string dataType;
969 if ( dataType.compare(
"StreamDAOD_PHYS")==0 || dataType.compare(
"StreamDAOD_PHYSLITE")==0 )
m_defaultTruthJets =
"AntiKt4TruthDressedWZJets";
970 if ( dataType.compare(
"StreamDAOD_PHYSLITE")==0)
m_isPHYSLITE =
true;
990 m_eleIdDFName =
m_eleId.find(
"DNN") == std::string::npos ?
"DFCommonElectronsLH" :
"DFCommonElectronsDNN";
991 m_eleIdDFName += TString(
m_eleId).ReplaceAll(
"LooseAndBLayer",
"LooseBL").ReplaceAll(
"LLH",
"").ReplaceAll(
"DNNnoCF",
"").ReplaceAll(
"DNN",
"").Data();
992 if (
m_eleId.find(
"noCF") != std::string::npos)
1026 return StatusCode::SUCCESS;
1033 std::string prwConfigFile(
"");
1037 prwConfigFile = PRWfilesDir;
1040 std::string amiTag(
"");
1041 std::string mcCampaignMD(
"");
1042 std::string simFlavour(
"");
1043 std::string simType(
"");
1048 std::map<std::string,std::vector<std::string>> PRWRtags = {};
1049 std::string allcampaigns =
"mc20a.mc20d.mc20e.mc23a.mc23d.mc23e.mc23g";
1050 bool standard_like =
true;
1052 std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(
":"));
1053 std::vector<std::string> irtags =
split( campaign_rtags.substr(campaign_rtags.find(
":")+1),
"_" );
1054 PRWRtags[icampaign] = irtags;
1055 ATH_MSG_DEBUG(
"PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find(
"_")+1) <<
" for campaign " << icampaign );
1057 for (
const auto&
x : PRWRtags ) {
1058 if ( allcampaigns.find(
x.first)==string::npos ) {
1061 return StatusCode::FAILURE;
1071 if(simFlavour.starts_with(
"ATLFASTII")) simType =
"AFII";
1072 else if(simFlavour.starts_with(
"ATLFAST3")) simType =
"AF3";
1073 else simType =
"FS";
1076 while ( mcCampaignMD.empty() ) {
1077 for (
const auto& campaign_rtags : PRWRtags ) {
1078 for (
const auto& rtag: campaign_rtags.second ) {
1079 if (found)
continue;
1080 if (amiTag.find(rtag)!=string::npos) {
1081 mcCampaignMD = campaign_rtags.first.substr(0,5);
1082 standard_like = (campaign_rtags.first.find(
"ns")?
true:
false);
1089 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" << amiTag <<
"'. Please check your input sample.");
1090 return StatusCode::FAILURE;
1093 ATH_MSG_INFO(
"Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD <<
" (from amiTag " << amiTag <<
") (standard-like = " << (standard_like?
"true":
"false") <<
")." );
1094 if ( (!standard_like) && (!RPVLLmode) )
1095 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?");
1098#ifndef XAOD_STANDALONE
1099 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1100 return StatusCode::FAILURE;
1106 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1107 std::string NoMetadataButPropertyOK(
"");
1108 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1110 NoMetadataButPropertyOK +=
"'. 'mcChannel' is used and passed to SUSYTools as '";
1111 NoMetadataButPropertyOK += std::to_string(
m_mcChannel);
1112 NoMetadataButPropertyOK +=
"'. Autocongiguring PRW accordingly.";
1118 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1122 std::string NoMetadataButPropertyOK(
"");
1123 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1125 NoMetadataButPropertyOK +=
"'. Autoconfiguring PRW accordingly.";
1130 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1131 return StatusCode::FAILURE;
1138 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1147 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1148 return StatusCode::FAILURE;
1154 int DSID_INT =
static_cast<int>(dsid);
1155 prwConfigFile +=
"DSID" + std::to_string(DSID_INT/1000) +
"xxx/pileup_" + mcCampaignMD +
"_dsid" + std::to_string(DSID_INT) +
"_" + simType +
".root";
1157 if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(
".root",
"_rpvll.root").Data();
1161 if (!PRWfileName.empty()) {
1162 prwConfigFile = PRWfilesDir + PRWfileName;
1163 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1171 if (mcCampaignMD.find(
"mc20") == std::string::npos) {
1172 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1173 return StatusCode::FAILURE;
1183 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20a").
Data() );
1184 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20d").
Data() );
1185 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20e").
Data() );
1191 if ( mcCampaignMD ==
"mc20d") {
1193 }
else if (mcCampaignMD ==
"mc20e") {
1195 }
else if (mcCampaignMD ==
"mc23a") {
1197 }
else if (mcCampaignMD ==
"mc23d") {
1199 }
else if (mcCampaignMD ==
"mc23e") {
1201 }
else if (mcCampaignMD ==
"mc23g") {
1208 TFile testF(prwConfigFile.data(),
"read");
1209 if (testF.IsZombie()) {
1210 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() <<
" ! Impossible to autoconfigure PRW. Aborting." );
1211 if ( (!standard_like) && (!RPVLLmode) )
1212 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?");
1213 return StatusCode::FAILURE;
1216 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1219 return StatusCode::SUCCESS;
1226 else ATH_MSG_ERROR(
"Trying to set data source to unknown type (" << source <<
")");
1232 return (std::find(list.begin(), list.end(),wp) != list.end());
1238 return (std::find(list.begin(),list.end(),wp1) > std::find(list.begin(), list.end(),wp2));
1245 TString copy = TString(wp).Copy().ReplaceAll(
"AndBLayer",
"BL").ReplaceAll(
"LLH",
"LHElectron");
1247 if (wp.find(
"DNNnoCF") != std::string::npos)
1248 copy.ReplaceAll(
"DNNnoCF",
"DNNnoCFElectron");
1249 else if (wp.find(
"DNN") != std::string::npos)
1250 copy.ReplaceAll(
"DNN",
"DNNElectron");
1256 if( mapFile.empty() )
1259 std::vector<std::string> theKeys;
1262 std::ifstream input( filename );
1263 for( std::string line; getline( input, line ); ){
1264 std::vector<std::string> tokens =
split((
const std::string)line,
"=");
1266 theKeys.push_back(tokens.at(0));
1277 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1278 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1281 property = rEnv.GetValue(propname.c_str(),
static_cast<int>(defaultValue));
1282 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1284 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1289 double defaultValue)
1292 if (property > -90.) {
1293 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1294 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1297 property = rEnv.GetValue(propname.c_str(), defaultValue);
1298 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1300 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1308 if (property > -90){
1309 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1310 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1313 property = rEnv.GetValue(propname.c_str(), defaultValue);
1314 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1316 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1321 const std::string& defaultValue,
bool allowEmpty)
1324 if (!property.empty()){
1325 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1326 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1329 property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1330 if (property.empty() && !allowEmpty) {
1331 ATH_MSG_FATAL(
"Read empty string property from text file (property name: " << propname <<
")");
1335 std::string tmp_prop =
property.substr(0, property.find(
'#', 0));
1336 property = TString(tmp_prop).ReplaceAll(
" ",
"").Data();
1339 if (property==
"None" || property==
"NONE" || property==
"none") {
1340 ATH_MSG_VERBOSE(
"Property \"" << propname <<
"\" being set to empty string due to specification of \"" << property <<
"\"" );
1344 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1346 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1357 success = rEnv.ReadFile(
m_configFile.c_str(), kEnvAll);
1358 if (success != 0)
return StatusCode::FAILURE;
1367 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.InputType") );
1369 if (
m_muId ==
static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1370 int muIdTmp = rEnv.GetValue(
"Muon.Id", 1);
1371 m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1374 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Muon.Id") );
1376 if (
m_muIdBaseline ==
static_cast<int>(xAOD::Muon::Quality(xAOD::Muon::VeryLoose))) {
1377 int muIdTmp = rEnv.GetValue(
"MuonBaseline.Id", 1);
1378 m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1381 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"MuonBaseline.Id") );
1385 std::string prop = rEnv.GetValue(
"Jet.JVT_WP",
"");
1386 if ( !prop.empty() ) {
1387 ATH_MSG_WARNING(
"readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1388 rEnv.SetValue(
"Jet.JvtWP", prop.c_str());
1389 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.JVT_WP") );
1398 m_conf_to_prop[
"EleBaseline.CrackVeto"] =
"EleBaselineCrackVeto";
1400 m_conf_to_prop[
"Ele.AllowRun3TrigSFFallback"] =
"EleAllowRun3TrigSFFallback";
1404 m_conf_to_prop[
"PhotonBaseline.CrackVeto"] =
"PhotonBaselineCrackVeto";
1412 m_conf_to_prop[
"OR.DoMuonJetGhostAssociation"] =
"ORDoMuonJetGhostAssociation";
1427 m_conf_to_prop[
"Trigger.UpstreamMatching"] =
"TriggerUpstreamMatching";
1433 m_conf_to_prop[
"SigLepPh.IsoCloseByOR"] =
"SigLepPhIsoCloseByOR";
1434 m_conf_to_prop[
"MET.RemoveOverlappingCaloTaggedMuons"] =
"METRemoveORCaloTaggedMuons";
1435 m_conf_to_prop[
"MET.DoSetMuonJetEMScale"] =
"METDoSetMuonJetEMScale";
1487 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");
1488 configFromFile(
m_eleEffMapFilePath,
"Ele.EffMapFilePath", rEnv,
"ElectronEfficiencyCorrection/2015_2025/rel22.2/2025_Run3_Consolidated_Recommendation_v4/map2.txt");
1500 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");
1501 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");
1502 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");
1503 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");
1506 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");
1507 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");
1508 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");
1509 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");
1597 configFromFile(
m_WtagConfig,
"Jet.WtaggerConfig", rEnv,
"SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1598 configFromFile(
m_ZtagConfig,
"Jet.ZtaggerConfig", rEnv,
"SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1603 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");
1604 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");
1605 configFromFile(
m_jesConfigJMS,
"Jet.JESConfigJMS", rEnv,
"JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1607 configFromFile(
m_jesConfigFat,
"Jet.JESConfigFat", rEnv,
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1715 configFromFile(
m_prwActualMu2017File,
"PRW.ActualMu2017File", rEnv,
"GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1716 configFromFile(
m_prwActualMu2018File,
"PRW.ActualMu2018File", rEnv,
"GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1729 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");
1749 return StatusCode::FAILURE;
1752 std::transform(tauWPLC.begin(), tauWPLC.end(), tauWPLC.begin(), [](
unsigned char c) { return std::tolower(c); });
1770 return StatusCode::FAILURE;
1772 std::string tauWPLC =
m_tauId;
1773 std::transform(tauWPLC.begin(), tauWPLC.end(), tauWPLC.begin(), [](
unsigned char c) { return std::tolower(c); });
1785 if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1786 ATH_MSG_ERROR(
"Found " << rEnv.GetTable()->GetSize() <<
" unparsed environment options:");
1789 return StatusCode::FAILURE;
1794 if (
m_WtagConfig.find(
"Efficiency50") != std::string::npos){
1797 else if (
m_WtagConfig.find(
"Efficiency80") != std::string::npos){
1801 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");
1805 if (
m_ZtagConfig.find(
"Efficiency50") != std::string::npos){
1808 else if (
m_ZtagConfig.find(
"Efficiency80") != std::string::npos){
1812 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");
1815 std::string TopTagEff =
"";
1816 std::string TopTagType =
"";
1825 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");
1829 TopTagType =
"Inclusive";
1832 TopTagType =
"Contained";
1835 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");
1837 m_TopTagUncConfig =
"R10_SF_LCTopo_TopTag"+TopTagType+
"_SigEff"+TopTagEff+
".config";
1869 return StatusCode::SUCCESS;
1874 assert(delim.length() == 1);
1875 std::vector<std::string> retval;
1876 retval.reserve(std::count(s.begin(), s.end(), delim[0]) + 1);
1878 if (s.find(delim)==std::string::npos) {
1879 retval.emplace_back(s);
1886 while ((next = s.find(delim, last)) != std::string::npos) {
1887 retval.emplace_back(s.substr(last, next - last));
1888 last = next + delim.length();
1892 retval.emplace_back(s.substr(last));
1899 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1901 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1904StatusCode
SUSYObjDef_xAOD::getTauConfig(
const std::string& tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window,
bool &eleOLR,
bool &muVeto,
bool &muOLR)
const {
1906 if(tauConfigPath.empty())
return StatusCode::FAILURE;
1910 if ( rEnv.ReadFile(filename.c_str(), kEnvAll) ) {
1911 ATH_MSG_ERROR(
"Error while reading tau config file : " << filename );
1912 ATH_MSG_ERROR(
"Find examples at: https://gitlab.cern.ch/atlas/athena/-/tree/main/PhysicsAnalysis/Algorithms/TauAnalysisAlgorithms/data");
1913 return StatusCode::FAILURE;
1915 ATH_MSG_DEBUG(
"Successfully read tau config file : " << filename );
1918 std::vector<std::string> cuts;
1919 if (rEnv.Defined(
"SelectionCuts")) {
1920 cuts =
split(rEnv.GetValue(
"SelectionCuts",
" "),
" ");
1922 auto *l = rEnv.GetTable();
1923 for( Int_t i = 0; i < l->GetEntries(); ++i ) {
1924 cuts.push_back( l->At(i)->GetName() );
1933 static const std::string trueBool =
"TRUE";
1936 std::vector<std::string> v_pT_window;
1937 std::vector<std::string> v_eta_window;
1940 float pT_min = -99.0;
1941 float pT_max = -99.0;
1942 float eta_min = -99.0;
1943 float eta_max = -99.0;
1944 for (
const auto& cut : cuts) {
1945 if(cut ==
"PtRegion") {
1946 v_pT_window =
split(rEnv.GetValue(
"PtRegion",
""),
";");
1947 std::transform(std::begin(v_pT_window),
1948 std::end(v_pT_window),
1949 std::back_inserter(pT_window),
1950 [](
const std::string& s) {
return std::stof(s); }
1952 }
else if (cut ==
"PtMin") {
1953 pT_min = rEnv.GetValue(
"PtMin", NAN);
1954 }
else if (cut ==
"PtMax") {
1955 pT_max = rEnv.GetValue(
"PtMax", NAN);
1956 }
else if (cut ==
"AbsEtaRegion") {
1957 v_eta_window =
split(rEnv.GetValue(
"AbsEtaRegion",
""),
";");
1958 std::transform(std::begin(v_eta_window),
1959 std::end(v_eta_window),
1960 std::back_inserter(eta_window),
1961 [](
const std::string& s) {
return std::stof(s); }
1963 }
else if (cut ==
"AbsEtaMin") {
1964 eta_min = rEnv.GetValue(
"AbsEtaMin", NAN);
1965 }
else if (cut ==
"AbsEtaMax") {
1966 eta_max = rEnv.GetValue(
"AbsEtaMax", NAN);
1970 else if (cut ==
"EleOLR"){
1971 eleOLR = (rEnv.GetValue(
"EleOLR",
"FALSE") == trueBool);
1973 else if (cut ==
"MuonVeto"){
1974 muVeto = (rEnv.GetValue(
"MuonVeto",
"FALSE") == trueBool);
1976 else if (cut ==
"MuonOLR"){
1977 muOLR = (rEnv.GetValue(
"MuonOLR",
"FALSE") == trueBool);
1981 if(pT_window.empty()) {
1982 if(pT_min == pT_min) {
1984 pT_window.push_back(pT_min);
1986 pT_window.push_back(-std::numeric_limits<float>::infinity());
1989 if(pT_max == pT_max) {
1991 pT_window.push_back(pT_max);
1993 pT_window.push_back(std::numeric_limits<float>::infinity());
1997 if(eta_window.empty()) {
1998 if(eta_min == eta_min) {
2000 eta_window.push_back(eta_min);
2002 eta_window.push_back(-std::numeric_limits<float>::infinity());
2005 if(eta_max == eta_max) {
2007 eta_window.push_back(eta_max);
2009 eta_window.push_back(std::numeric_limits<float>::infinity());
2013 return StatusCode::SUCCESS;
2023 if(strict)
return StatusCode::FAILURE;
2027 if(strict)
return StatusCode::FAILURE;
2032 if(strict)
return StatusCode::FAILURE;
2036 if(strict)
return StatusCode::FAILURE;
2042 if(strict)
return StatusCode::FAILURE;
2046 if(strict)
return StatusCode::FAILURE;
2050 if(strict)
return StatusCode::FAILURE;
2056 if(strict)
return StatusCode::FAILURE;
2060 if(strict)
return StatusCode::FAILURE;
2064 if(strict)
return StatusCode::FAILURE;
2068 if(strict)
return StatusCode::FAILURE;
2073 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!");
2083 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).");
2090 if(strict)
return StatusCode::FAILURE;
2095 if(strict)
return StatusCode::FAILURE;
2099 std::vector<float> pT_window;
2100 std::vector<float> eta_window;
2112 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] <<
"]");
2113 if(strict)
return StatusCode::FAILURE;
2116 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2117 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] <<
"]");
2118 if(strict)
return StatusCode::FAILURE;
2122 ATH_MSG_WARNING(
"Your baseline tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2123 if(strict)
return StatusCode::FAILURE;
2132 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] <<
"]");
2133 if(strict)
return StatusCode::FAILURE;
2136 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2137 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] <<
"]");
2138 if(strict)
return StatusCode::FAILURE;
2142 ATH_MSG_WARNING(
"Your tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2143 if(strict)
return StatusCode::FAILURE;
2148 return StatusCode::SUCCESS;
2164 return syst.
name().empty();
2169 bool affectsWeights =
false;
2170 for (
const auto& sys : systSet) {
2172 if(info.affectsKinematics) {
return false; }
2173 affectsWeights = affectsWeights or info.affectsWeights;
2175 return affectsWeights;
2180 for (
const auto& sys : systSet) {
2182 if(info.affectsKinematics) {
return true; }
2205 return StatusCode::FAILURE;
2208 ATH_MSG_DEBUG(
" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.
name() <<
"\" size " << systConfig.
size());
2215 if ( ret != StatusCode::SUCCESS) {
2216 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2218 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2223 if ( ret != StatusCode::SUCCESS) {
2224 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2226 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2231 if ( ret != StatusCode::SUCCESS) {
2232 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2234 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2239 if ( ret != StatusCode::SUCCESS) {
2240 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2242 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2248 if ( ret != StatusCode::SUCCESS) {
2249 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2251 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2256 if ( ret != StatusCode::SUCCESS) {
2257 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2259 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2264 if ( ret != StatusCode::SUCCESS) {
2265 ATH_MSG_VERBOSE(
"Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2267 ATH_MSG_VERBOSE(
"Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2272 if ( ret != StatusCode::SUCCESS) {
2273 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2275 ATH_MSG_VERBOSE(
"Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2280 if ( ret != StatusCode::SUCCESS) {
2281 ATH_MSG_VERBOSE(
"Cannot configure NNJvtEfficiency for systematic var. " << systConfig.
name() );
2288 if ( ret != StatusCode::SUCCESS) {
2289 ATH_MSG_VERBOSE(
"Cannot configure fJvtEfficiency for systematic var. " << systConfig.
name() );
2295 StatusCode ret =
m_muonCalibTool->applySystematicVariation(systConfig);
2296 if (ret != StatusCode::SUCCESS) {
2297 ATH_MSG_ERROR(
"Cannot configure MuonCalibTool for systematic var. " << systConfig.
name() );
2305 if ( ret != StatusCode::SUCCESS) {
2306 ATH_MSG_ERROR(
"Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2309 ATH_MSG_VERBOSE(
"MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2314 if ( ret != StatusCode::SUCCESS) {
2315 ATH_MSG_ERROR(
"Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.
name() );
2318 ATH_MSG_VERBOSE(
"MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.
name() );
2323 if ( ret != StatusCode::SUCCESS) {
2324 ATH_MSG_ERROR(
"Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2327 ATH_MSG_VERBOSE(
"MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2332 if ( ret != StatusCode::SUCCESS) {
2333 ATH_MSG_ERROR(
"Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.
name() );
2336 ATH_MSG_VERBOSE(
"MuonIsolationScaleFactors configured for systematic var. " << systConfig.
name() );
2341 if ( ret != StatusCode::SUCCESS) {
2342 ATH_MSG_ERROR(
"Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.
name() );
2345 ATH_MSG_VERBOSE(
"MuonTriggerScaleFactors configured for systematic var. " << systConfig.
name() );
2350 if (ret != StatusCode::SUCCESS) {
2351 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2354 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2359 if (ret != StatusCode::SUCCESS) {
2360 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.
name() );
2363 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.
name() );
2368 if (ret != StatusCode::SUCCESS) {
2369 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2372 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.
name() );
2377 if (ret != StatusCode::SUCCESS) {
2378 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.
name() );
2381 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.
name() );
2387 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2388 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2391 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2392 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2395 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2396 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2398 if (ret != StatusCode::SUCCESS) {
2399 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.
name() );
2402 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.
name() );
2408 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2409 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2412 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2413 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2416 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2417 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2419 if (ret != StatusCode::SUCCESS) {
2420 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.
name() );
2423 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.
name() );
2428 if (ret != StatusCode::SUCCESS) {
2429 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2432 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.
name() );
2437 if (ret != StatusCode::SUCCESS) {
2438 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.
name() );
2441 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.
name() );
2446 if (ret != StatusCode::SUCCESS) {
2447 ATH_MSG_ERROR(
"Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.
name() );
2450 ATH_MSG_VERBOSE(
"ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.
name() );
2455 if (ret != StatusCode::SUCCESS) {
2456 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2459 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2464 if (ret != StatusCode::SUCCESS) {
2465 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2468 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.
name() );
2473 if (ret != StatusCode::SUCCESS) {
2474 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2477 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.
name() );
2483 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2484 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2487 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2488 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2490 if (ret != StatusCode::SUCCESS) {
2491 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.
name() );
2494 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.
name() );
2499 if (ret != StatusCode::SUCCESS) {
2500 ATH_MSG_ERROR(
"Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.
name() );
2503 ATH_MSG_VERBOSE(
"EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.
name() );
2507 StatusCode ret =
m_isoCorrTool->applySystematicVariation(systConfig);
2508 if (ret != StatusCode::SUCCESS) {
2509 ATH_MSG_ERROR(
"Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.
name() );
2512 ATH_MSG_VERBOSE(
"IsolationCorrectionTool configured for systematic var. " << systConfig.
name() );
2517 StatusCode ret =
m_btagEffTool->applySystematicVariation(systConfig);
2518 if ( ret != StatusCode::SUCCESS) {
2519 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2522 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2528 if ( ret != StatusCode::SUCCESS) {
2529 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2532 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2537 if ( ret != StatusCode::SUCCESS) {
2538 ATH_MSG_ERROR(
"Cannot configure TauSmearingTool for systematic var. " << systConfig.
name() );
2545 StatusCode ret =
m_tauEffTool->applySystematicVariation(systConfig);
2546 if ( ret != StatusCode::SUCCESS) {
2547 ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2550 ATH_MSG_VERBOSE(
"Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2554 StatusCode ret = tool->applySystematicVariation(systConfig);
2555 if (ret != StatusCode::SUCCESS) {
2556 ATH_MSG_ERROR(
"Cannot configure " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2559 ATH_MSG_VERBOSE(
"Configured " << tool->name() <<
" for systematic var. " << systConfig.
name() );
2563 StatusCode ret =
m_metSystTool->applySystematicVariation(systConfig);
2564 if ( ret != StatusCode::SUCCESS) {
2565 ATH_MSG_ERROR(
"Cannot configure METSystematicsTool for systematic var. " << systConfig.
name() );
2568 ATH_MSG_VERBOSE(
"Configured METSystematicsTool for systematic var. " << systConfig.
name() );
2572 StatusCode ret =
m_prwTool->applySystematicVariation(systConfig);
2573 if ( ret != StatusCode::SUCCESS) {
2574 ATH_MSG_ERROR(
"Cannot configure PileupReweightingTool for systematic var. " << systConfig.
name() );
2577 ATH_MSG_VERBOSE(
"Configured PileupReweightingTool for systematic var. " << systConfig.
name() );
2582 StatusCode ret =
m_LRTuncTool->applySystematicVariation(systConfig);
2583 if ( ret != StatusCode::SUCCESS) {
2584 ATH_MSG_ERROR(
"Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2587 ATH_MSG_VERBOSE(
"Configured InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2591 return StatusCode::SUCCESS;
2597 return vector<ST::SystInfo>();
2606 vector<SystInfo> sysInfoList;
2607 sysInfoList.reserve(recommendedSystematics.
size() * 2);
2615 sysInfoList.push_back(infodef);
2620 for (
const auto& sys : systSet) {
2625 ATH_MSG_INFO(
"Returning list of " << sysInfoList.size() <<
" systematic variations");
2766 sysInfo.
affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2807 if (sys.basename().compare(0, 3,
"EG_") == 0) {
2809 }
else if (sys.basename().compare(0, 3,
"PH_") == 0) {
2811 }
else if (sys.basename().compare(0, 3,
"EL_") == 0) {
2879 if(tool->isAffectedBySystematic(sys)) {
2905 if (
m_prwTool->isAffectedBySystematic(sys) ) {
2918 std::string affectedType;
2920 case Unknown : affectedType =
"UNKNOWN";
break;
2921 case Jet : affectedType =
"JET";
break;
2922 case Egamma : affectedType =
"EGAMMA";
break;
2923 case Electron : affectedType =
"ELECTRON";
break;
2924 case Photon : affectedType =
"PHOTON";
break;
2925 case Muon : affectedType =
"MUON";
break;
2926 case Tau : affectedType =
"TAU";
break;
2927 case BTag : affectedType =
"BTAG";
break;
2928 case MET_TST : affectedType =
"MET_TST";
break;
2929 case MET_CST : affectedType =
"MET_CST";
break;
2930 case MET_Track : affectedType =
"MET_Track";
break;
2931 case EventWeight : affectedType =
"EVENT WEIGHT";
break;
2932 case LRT_Object : affectedType =
"LRT_OBJECT";
break;
2938 <<
"for " << affectedType );
2957 ATH_MSG_WARNING(
"No TruthJetContainer found! Dummy null weight retrieved.");
2964 if(jetContainer==
"AntiKt4TruthWZJets"){
2967 else if (jetContainer==
"AntiKt4TruthJets"){
2971 ATH_MSG_WARNING(jetContainer <<
" is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2980 if (
evtStore()->retrieve( vertices,
"PrimaryVertices" ).isSuccess() ) {
2981 for (
const auto vx : *vertices ) {
2988 ATH_MSG_WARNING(
"Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
3000 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!");
3003 ATH_CHECK(
m_orToolbox.masterTool->removeOverlaps(electrons, muons, jets, taujet, gamma, fatjets) );
3025 return StatusCode::SUCCESS;
3033 return StatusCode::FAILURE;
3036 return StatusCode::SUCCESS;
3041 if (
evtStore()->retrieve( evtInfo,
"EventInfo" ).isFailure() ) {
3042 throw std::runtime_error(
"Unable to fetch EventInfo.");
3050 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo);
3052 if(!isfinite(pu_weight)) pu_weight = 1.;
3065 float pu_weight =
m_prwTool->getCombinedWeight(*evtInfo,trigger_expr);
3067 if(!isfinite(pu_weight)) pu_weight = 1.;
3074 return m_prwTool->getPRWHash( *evtInfo );
3079 return m_prwTool->getDataWeight( *evtInfo, trig );
3084 return m_prwTool->getCorrectedAverageInteractionsPerCrossing( *evtInfo, includeDataSF );
3089 return m_prwTool->getCorrectedActualInteractionsPerCrossing( *evtInfo, includeDataSF );
3093 return m_prwTool->GetSumOfEventWeights(channel);
3102 else if (!muDependentRRN) {
3103 return m_prwTool->getRandomRunNumber( *evtInfo, muDependentRRN );
3105 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3115 return StatusCode::SUCCESS;
3127 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3138 throw std::runtime_error(
"Unable to fetch LargeD0 tracks.");
3150 throw std::runtime_error(
"Unable to fetch LargeD0 GSF tracks.");
3158 if (
isData())
return StatusCode::SUCCESS;
3160 const EventContext& ctx = Gaudi::Hive::currentContext();
3163 ATH_MSG_DEBUG (
"Applying LRT filter tool decorations for uncertainty");
3171 return StatusCode::SUCCESS;
3178 int theRunNumber = runNumber>0?runNumber:
GetRunNumber();
3179 if (theRunNumber<290000)
return 2015;
3180 else if (theRunNumber<320000)
return 2016;
3181 else if (theRunNumber<342000)
return 2017;
3182 else if (theRunNumber<400000)
return 2018;
3183 else if (theRunNumber<445000)
return 2022;
3184 else if (theRunNumber<465000)
return 2023;
3185 else if (theRunNumber<490000)
return 2024;
3186 else if (theRunNumber<510000)
return 2025;
3192#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
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_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
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::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
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