|
ATLAS Offline Software
|
Go to the documentation of this file.
12 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
86 #include "THashList.h"
102 :
asg::AsgMetadataTool(
name ),
105 m_force_noElId(false),
106 m_force_noMuId(false),
108 m_upstreamTriggerMatching(false),
109 m_trigMatchingPrefix(
""),
110 m_useBtagging(false),
111 m_useBtagging_trkJet(false),
113 m_strictConfigCheck(false),
115 m_fatJetUncConfig(
""),
123 m_WZTaggerCalibArea(
""),
124 m_TopTaggerCalibArea(
""),
127 m_TopTagUncConfig(
""),
128 m_JetTruthLabelName(
""),
130 m_subtool_init(false),
137 m_inputMETSuffix(
""),
139 m_metRemoveOverlappingCaloTaggedMuons(true),
140 m_metDoSetMuonJetEMScale(true),
141 m_metDoRemoveMuonJets(true),
142 m_metUseGhostMuons(false),
143 m_metDoMuonEloss(false),
144 m_metGreedyPhotons(false),
145 m_metVeryGreedyPhotons(false),
146 m_metsysConfigPrefix(
""),
148 m_caloMETsyst(false),
149 m_softTermParam(-99),
152 m_autoconfigPRW(false),
153 m_autoconfigPRWPath(
""),
154 m_autoconfigPRWFile(
""),
155 m_autoconfigPRWCombinedmode(false),
156 m_autoconfigPRWRPVmode(false),
157 m_autoconfigPRWRtags(
""),
160 m_useCommonPRWFiles(false),
161 m_commonPRWFileMC20a(
""),
162 m_commonPRWFileMC20d(
""),
163 m_commonPRWFileMC20e(
""),
164 m_commonPRWFileMC21a(
""),
165 m_commonPRWFileMC23a(
""),
166 m_commonPRWFileMC23c(
""),
167 m_commonPRWFileMC23d(
""),
168 m_commonPRWFileMC23e(
""),
170 m_prwDataSF_UP(-99.),
171 m_prwDataSF_DW(-99.),
172 m_runDepPrescaleWeightPRW(false),
173 m_electronTriggerSFStringSingle(
""),
177 m_eleConfigBaseline(
""),
178 m_eleBaselineIso_WP(
""),
179 m_eleIdExpert(false),
183 m_photonIdBaseline(
""),
187 m_eleIsoHighPt_WP(
""),
188 m_eleIsoHighPtThresh(-99.),
192 m_eleChID_signal(false),
194 m_photonBaselineIso_WP(
""),
196 m_photonTriggerName(
""),
197 m_muBaselineIso_WP(
""),
199 m_muIsoHighPt_WP(
""),
200 m_muIsoHighPtThresh(-99.),
201 m_muHighPtExtraSmear(false),
202 m_muEffCorrForce1D(false),
206 m_BtagKeyOverride(
""),
207 m_BtagSystStrategy(
""),
208 m_EigenvectorReductionB(
""),
209 m_EigenvectorReductionC(
""),
210 m_EigenvectorReductionLight(
""),
212 m_BtagTagger_trkJet(
""),
213 m_BtagMinPt_trkJet(-99.),
215 m_eleBaselinePt(-99.),
216 m_eleBaselineEta(-99.),
217 m_eleBaselineCrackVeto(false),
220 m_eleCrackVeto(false),
223 m_elebaselined0sig(-99.),
224 m_elebaselinez0(-99),
225 m_eleAllowRun3TrigSFFallback(false),
226 m_eleForceFullSimCalib(false),
228 m_muBaselinePt(-99.),
229 m_muBaselineEta(-99.),
234 m_mubaselined0sig(-99.),
235 m_mubaselinez0(-99.),
236 m_murequirepassedHighPtCuts(false),
240 m_muCalibrationMode(-99.),
242 m_photonBaselinePt(-99.),
243 m_photonBaselineEta(-99.),
246 m_photonBaselineCrackVeto(true),
247 m_photonCrackVeto(true),
248 m_photonAllowLate(false),
254 m_tauConfigPathBaseline(
""),
256 m_tauSmearingToolRecommendationTag(
""),
257 m_tauSmearingToolGenerator(
""),
272 m_fJvtConfigRun2(
""),
273 m_fJvtConfigRun3(
""),
286 m_orDoBoostedElectron(false),
287 m_orBoostedElectronC1(-999.),
288 m_orBoostedElectronC2(-999.),
289 m_orBoostedElectronMaxConeSize(-999.),
290 m_orDoBoostedMuon(true),
291 m_orBoostedMuonC1(-999.),
292 m_orBoostedMuonC2(-999.),
293 m_orBoostedMuonMaxConeSize(-999.),
294 m_orApplyRelPt(false),
295 m_orMuJetPtRatio(-999.),
296 m_orMuJetTrkPtRatio(-999.),
297 m_orMuJetInnerDR(-999),
298 m_orDoMuonJetGhostAssociation(true),
299 m_orRemoveCaloMuons(true),
302 m_orPhotonFavoured(false),
303 m_orBJetPtUpperThres(-999.),
304 m_orLinkOverlapObjects(false),
305 m_orDoFatjets(false),
306 m_EleFatJetDR(-999.),
307 m_JetFatJetDR(-999.),
309 m_doElIsoSignal(true),
310 m_doPhIsoSignal(true),
311 m_doMuIsoSignal(true),
313 m_useSigLepForIsoCloseByOR(false),
314 m_IsoCloseByORpassLabel(
""),
318 m_slices(std::map<std::string,
bool>()),
322 m_metJetSelection(
""),
332 m_jetFatCalibTool(
""),
333 m_jetUncertaintiesTool(
""),
334 m_jetUncertaintiesPDSmearTool(
""),
335 m_fatjetUncertaintiesTool(
""),
336 m_jetCleaningTool(
""),
337 m_jetPileupLabelingTool(
""),
338 m_jetJvtMomentTool(
""),
339 m_jetNNJvtMomentTool(
""),
340 m_jetNNJvtSelectionTool(
""),
341 m_jetNNJvtEfficiencyTool(
""),
342 m_jetfJvtSelectionTool(
""),
343 m_jetfJvtEfficiencyTool(
""),
348 m_jetTruthLabelingTool(
""),
349 m_WTagjetUncertaintiesTool(
""),
350 m_ZTagjetUncertaintiesTool(
""),
351 m_TopTagjetUncertaintiesTool(
""),
353 m_muonSelectionTool(
""),
354 m_muonSelectionHighPtTool(
""),
355 m_muonSelectionToolBaseline(
""),
357 m_muonEfficiencySFTool(
""),
358 m_muonEfficiencyBMHighPtSFTool(
""),
359 m_muonTTVAEfficiencySFTool(
""),
360 m_muonIsolationSFTool(
""),
361 m_muonHighPtIsolationSFTool(
""),
362 m_muonTriggerSFTool(
""),
364 m_elecEfficiencySFTool_reco(
""),
365 m_elecEfficiencySFTool_id(
""),
366 m_elecEfficiencySFTool_trig_singleLep(
""),
367 m_elecEfficiencySFTool_trigEff_singleLep(
""),
368 m_elecEfficiencySFTool_iso(
""),
369 m_elecEfficiencySFTool_isoHighPt(
""),
371 m_egammaCalibTool(
""),
372 m_elecSelLikelihood(
""),
373 m_elecSelLikelihoodBaseline(
""),
375 m_photonSelIsEMBaseline(
""),
376 m_photonEfficiencySFTool(
""),
377 m_photonIsolationSFTool(
""),
378 m_photonTriggerSFTool(
""),
379 m_egammaAmbiguityTool(
""),
380 m_elecChargeIDSelectorTool(
""),
381 m_elecChargeEffCorrTool(
""),
384 m_tauSelToolBaseline(
""),
385 m_tauSmearingTool(
""),
391 m_btagSelTool_OR(
""),
392 m_btagEffTool_trkJet(
""),
393 m_btagSelTool_trkJet(
""),
399 m_trig2015combination_singleLep(
""),
400 m_trig2016combination_singleLep(
""),
401 m_trig2017combination_singleLep(
""),
402 m_trig2018combination_singleLep(
""),
403 m_trig2022combination_singleLep(
""),
404 m_trigNToys_diLep(-99),
405 m_trig2015combination_diLep(
""),
406 m_trig2016combination_diLep(
""),
407 m_trig2017combination_diLep(
""),
408 m_trig2018combination_diLep(
""),
409 m_trig2022combination_diLep(
""),
410 m_trigGlobalEffCorrTool_diLep(
""),
411 m_trigNToys_multiLep(-99),
412 m_trig2015combination_multiLep(
""),
413 m_trig2016combination_multiLep(
""),
414 m_trig2017combination_multiLep(
""),
415 m_trig2018combination_multiLep(
""),
416 m_trig2022combination_multiLep(
""),
417 m_trigGlobalEffCorrTool_multiLep(
""),
418 m_trigNToys_diPhoton(-99),
419 m_trig2015combination_diPhoton(
""),
420 m_trig2016combination_diPhoton(
""),
421 m_trig2017combination_diPhoton(
""),
422 m_trig2018combination_diPhoton(
""),
423 m_trig2022combination_diPhoton(
""),
424 m_trigGlobalEffCorrTool_diPhoton(
""),
427 m_trigMatchingTool(
""),
428 m_trigMatchScoringTool(
""),
429 m_trigDRScoringTool(
""),
434 m_isoBaselineTool(
""),
441 m_orToolbox(
"ORToolbox",this),
443 m_pmgSHnjetWeighter(
""),
444 m_pmgSHnjetWeighterWZ(
""),
446 m_acc_eleIdBaseline(
"DFCommonElectronsLHLooseBL"),
447 m_acc_eleId(
"DFCommonElectronsLHTight"),
448 m_acc_photonIdBaseline(
"DFCommonPhotonsIsEMTight"),
449 m_acc_photonId(
"DFCommonPhotonsIsEMTight"),
451 m_acc_jetClean(
"DFCommonJets_jetClean_LooseBad")
809 "FCLoose",
"FCTight",
813 "TightTrackOnly_VarRad",
"TightTrackOnly_FixedRad",
814 "Tight_VarRad",
"Loose_VarRad",
815 "PLVLoose",
"PLVTight",
816 "PLImprovedTight",
"PLImprovedVeryTight"
821 "PflowLoose_FixedRad",
"PflowLoose_VarRad",
"PflowTight_FixedRad",
"PflowTight_VarRad",
822 "TightTrackOnly_FixedRad",
"TightTrackOnly_VarRad",
"HighPtTrackOnly",
823 "PLVLoose",
"PLVTight",
824 "Loose_VarRad",
"Loose_FixedRad",
"Tight_VarRad",
"Tight_FixedRad",
825 "PLImprovedTight",
"PLImprovedVeryTight"
846 #define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
847 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
848 if( TOOLHANDLE.retrieve().isFailure()) { \
849 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
850 return StatusCode::FAILURE; \
853 #define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
854 CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
856 #define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
858 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
859 if(TOOLHANDLE.retrieve().isFailure()) { \
860 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
861 return StatusCode::FAILURE; \
868 return this->setProperty(
name, property);
875 ATH_MSG_ERROR(
"Initialising for a second time -- something is wrong!");
876 return StatusCode::FAILURE;
882 bool autoconf(
false);
883 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
886 ATH_MSG_INFO(
"Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
887 std::string projectName =
"";
889 if ( projectName ==
"IS_SIMULATION" ) {
890 std::string simFlavour =
"";
892 TString
s(simFlavour);
s.ToUpper();
894 }
else if (projectName.compare(0, 4,
"data") == 0 ) {
897 ATH_MSG_ERROR(
"Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
898 return StatusCode::FAILURE;
911 ATH_MSG_FATAL(
"You must set the DataSource property to Data, FullSim or AtlfastII !!");
912 if (autoconf)
ATH_MSG_FATAL(
"Autoconfiguration seems to have failed!");
915 return StatusCode::FAILURE;
927 return StatusCode::FAILURE;
962 m_eleIdDFName =
m_eleId.find(
"DNN") == std::string::npos ?
"DFCommonElectronsLH" :
"DFCommonElectronsDNN";
963 m_eleIdDFName += TString(
m_eleId).ReplaceAll(
"LooseAndBLayer",
"LooseBL").ReplaceAll(
"LLH",
"").ReplaceAll(
"DNNnoCF",
"").ReplaceAll(
"DNN",
"").Data();
964 if (
m_eleId.find(
"noCF") != std::string::npos)
998 return StatusCode::SUCCESS;
1005 std::string prwConfigFile(
"");
1009 prwConfigFile = PRWfilesDir;
1013 std::string mcCampaignMD(
"");
1014 std::string simFlavour(
"");
1015 std::string simType(
"");
1020 std::map<std::string,std::vector<std::string>> PRWRtags = {};
1021 std::string allcampaigns =
"mc20a.mc20d.mc20e.mc21a.mc23a.mc23c.mc23d.mc23e";
1022 bool standard_like =
true;
1024 std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(
":"));
1025 std::vector<std::string> irtags =
split( campaign_rtags.substr(campaign_rtags.find(
":")+1),
"_" );
1026 PRWRtags[icampaign] = irtags;
1027 ATH_MSG_DEBUG(
"PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find(
"_")+1) <<
" for campaign " << icampaign );
1029 for (
const auto&
x : PRWRtags ) {
1030 if ( allcampaigns.find(
x.first)==string::npos ) {
1033 return StatusCode::FAILURE;
1043 if(simFlavour.starts_with(
"ATLFASTII")) simType =
"AFII";
1044 else if(simFlavour.starts_with(
"ATLFAST3")) simType =
"AF3";
1045 else simType =
"FS";
1048 while ( mcCampaignMD.empty() ) {
1049 for (
const auto& campaign_rtags : PRWRtags ) {
1050 for (
const auto& rtag: campaign_rtags.second ) {
1051 if (
found)
continue;
1052 if (
amiTag.find(rtag)!=string::npos) {
1053 mcCampaignMD = campaign_rtags.first.substr(0,5);
1054 standard_like = (campaign_rtags.first.find(
"ns")?
true:
false);
1061 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" <<
amiTag <<
"'. Please check your input sample.");
1062 return StatusCode::FAILURE;
1065 ATH_MSG_INFO(
"Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD <<
" (from amiTag " <<
amiTag <<
") (standard-like = " << (standard_like?
"true":
"false") <<
")." );
1066 if ( (!standard_like) && (!RPVLLmode) )
1067 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?");
1070 #ifndef XAOD_STANDALONE
1071 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1072 return StatusCode::FAILURE;
1078 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1079 std::string NoMetadataButPropertyOK(
"");
1080 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1082 NoMetadataButPropertyOK +=
"'. 'mcChannel' is used and passed to SUSYTools as '";
1084 NoMetadataButPropertyOK +=
"'. Autocongiguring PRW accordingly.";
1090 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1094 std::string NoMetadataButPropertyOK(
"");
1095 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1097 NoMetadataButPropertyOK +=
"'. Autoconfiguring PRW accordingly.";
1102 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1103 return StatusCode::FAILURE;
1110 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1120 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1121 return StatusCode::FAILURE;
1127 int DSID_INT =
static_cast<int>(
dsid);
1128 prwConfigFile +=
"DSID" +
std::to_string(DSID_INT/1000) +
"xxx/pileup_" + mcCampaignMD +
"_dsid" +
std::to_string(DSID_INT) +
"_" + simType +
".root";
1130 if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(
".root",
"_rpvll.root").Data();
1134 if (!PRWfileName.empty()) {
1135 prwConfigFile = PRWfilesDir + PRWfileName;
1136 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1144 if (mcCampaignMD.find(
"mc20") == std::string::npos) {
1145 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1146 return StatusCode::FAILURE;
1156 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20a").
Data() );
1157 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20d").
Data() );
1158 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20e").
Data() );
1164 if ( mcCampaignMD ==
"mc20d") {
1166 }
else if (mcCampaignMD ==
"mc20e") {
1168 }
else if (mcCampaignMD ==
"mc21a" || mcCampaignMD ==
"mc23a") {
1170 }
else if (mcCampaignMD ==
"mc23c" || mcCampaignMD ==
"mc23d") {
1172 }
else if (mcCampaignMD ==
"mc23e") {
1180 TFile testF(prwConfigFile.data(),
"read");
1181 if (testF.IsZombie()) {
1182 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() <<
" ! Impossible to autoconfigure PRW. Aborting." );
1183 if ( (!standard_like) && (!RPVLLmode) )
1184 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?");
1185 return StatusCode::FAILURE;
1188 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1191 return StatusCode::SUCCESS;
1217 TString
copy = TString(
wp).Copy().ReplaceAll(
"AndBLayer",
"BL").ReplaceAll(
"LLH",
"LHElectron");
1219 if (
wp.find(
"DNNnoCF") != std::string::npos)
1220 copy.ReplaceAll(
"DNNnoCF",
"DNNnoCFElectron");
1221 else if (
wp.find(
"DNN") != std::string::npos)
1222 copy.ReplaceAll(
"DNN",
"DNNElectron");
1228 if( mapFile.empty() )
1231 std::vector<std::string> theKeys;
1238 theKeys.push_back(
tokens.at(0));
1249 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1250 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1253 property = rEnv.GetValue(propname.c_str(),
static_cast<int>(defaultValue));
1254 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1256 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1261 double defaultValue)
1264 if (property > -90.) {
1265 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1266 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1269 property = rEnv.GetValue(propname.c_str(), defaultValue);
1270 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1272 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1280 if (property > -90){
1281 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1282 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1285 property = rEnv.GetValue(propname.c_str(), defaultValue);
1286 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1288 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1293 const std::string& defaultValue,
bool allowEmpty)
1296 if (!property.empty()){
1297 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1298 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1301 property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1302 if (property.empty() && !allowEmpty) {
1303 ATH_MSG_FATAL(
"Read empty string property from text file (property name: " << propname <<
")");
1307 std::string tmp_prop =
property.substr(0, property.find(
'#', 0));
1308 property = TString(tmp_prop).ReplaceAll(
" ",
"").Data();
1311 if (property==
"None" || property==
"NONE" || property==
"none") {
1312 ATH_MSG_VERBOSE(
"Property \"" << propname <<
"\" being set to empty string due to specification of \"" << property <<
"\"" );
1316 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1318 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1329 success = rEnv.ReadFile(
m_configFile.c_str(), kEnvAll);
1330 if (success != 0)
return StatusCode::FAILURE;
1339 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.InputType") );
1342 int muIdTmp = rEnv.GetValue(
"Muon.Id", 1);
1343 m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1346 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Muon.Id") );
1349 int muIdTmp = rEnv.GetValue(
"MuonBaseline.Id", 1);
1350 m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1353 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"MuonBaseline.Id") );
1357 std::string prop = rEnv.GetValue(
"Jet.JVT_WP",
"");
1358 if ( !prop.empty() ) {
1359 ATH_MSG_WARNING(
"readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1360 rEnv.SetValue(
"Jet.JvtWP", prop.c_str());
1361 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.JVT_WP") );
1370 m_conf_to_prop[
"EleBaseline.CrackVeto"] =
"EleBaselineCrackVeto";
1372 m_conf_to_prop[
"Ele.AllowRun3TrigSFFallback"] =
"EleAllowRun3TrigSFFallback";
1376 m_conf_to_prop[
"PhotonBaseline.CrackVeto"] =
"PhotonBaselineCrackVeto";
1384 m_conf_to_prop[
"OR.DoMuonJetGhostAssociation"] =
"ORDoMuonJetGhostAssociation";
1399 m_conf_to_prop[
"Trigger.UpstreamMatching"] =
"TriggerUpstreamMatching";
1405 m_conf_to_prop[
"SigLepPh.IsoCloseByOR"] =
"SigLepPhIsoCloseByOR";
1406 m_conf_to_prop[
"MET.RemoveOverlappingCaloTaggedMuons"] =
"METRemoveORCaloTaggedMuons";
1407 m_conf_to_prop[
"MET.DoSetMuonJetEMScale"] =
"METDoSetMuonJetEMScale";
1459 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_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");
1471 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");
1472 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");
1473 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");
1476 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");
1477 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");
1478 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");
1479 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");
1557 configFromFile(
m_WtagConfig,
"Jet.WtaggerConfig", rEnv,
"SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1558 configFromFile(
m_ZtagConfig,
"Jet.ZtaggerConfig", rEnv,
"SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1563 configFromFile(
m_jesConfig,
"Jet.JESConfig", rEnv,
m_isRun3 ?
"AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_240306_InSitu.config" :
"PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config");
1564 configFromFile(
m_jesConfigAFII,
"Jet.JESConfigAFII", rEnv,
m_isRun3 ?
"AntiKt4EMPFlow_MC23a_PreRecR22_Phase2_CalibConfig_ResPU_EtaJES_GSC_240306_InSitu.config" :
"PreRec_R22_PFlow_ResPU_EtaJES_GSC_February23_230215.config");
1565 configFromFile(
m_jesConfigJMS,
"Jet.JESConfigJMS", rEnv,
"JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1567 configFromFile(
m_jesConfigFat,
"Jet.JESConfigFat", rEnv,
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_10Mar2023.config");
1676 configFromFile(
m_prwActualMu2017File,
"PRW.ActualMu2017File", rEnv,
"GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1677 configFromFile(
m_prwActualMu2018File,
"PRW.ActualMu2018File", rEnv,
"GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1689 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");
1702 if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1703 ATH_MSG_ERROR(
"Found " << rEnv.GetTable()->GetSize() <<
" unparsed environment options:");
1706 return StatusCode::FAILURE;
1711 if (
m_WtagConfig.find(
"Efficiency50") != std::string::npos){
1714 else if (
m_WtagConfig.find(
"Efficiency80") != std::string::npos){
1718 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");
1722 if (
m_ZtagConfig.find(
"Efficiency50") != std::string::npos){
1725 else if (
m_ZtagConfig.find(
"Efficiency80") != std::string::npos){
1729 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");
1732 std::string TopTagEff =
"";
1733 std::string TopTagType =
"";
1742 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");
1746 TopTagType =
"Inclusive";
1749 TopTagType =
"Contained";
1752 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");
1754 m_TopTagUncConfig =
"R10_SF_LCTopo_TopTag"+TopTagType+
"_SigEff"+TopTagEff+
".config";
1784 return StatusCode::SUCCESS;
1789 assert(delim.length() == 1);
1790 std::vector<std::string>
retval;
1793 if (
s.find(delim)==std::string::npos) {
1801 while ((
next =
s.find(delim, last)) != std::string::npos) {
1803 last =
next + delim.length();
1807 retval.emplace_back(
s.substr(last));
1812 void SUSYObjDef_xAOD::getTauConfig(
const std::string& tauConfigPath, std::vector<float>& pT_window, std::vector<float>& eta_window,
bool &eleOLR,
bool &muVeto,
bool &muOLR)
const {
1814 if(tauConfigPath.empty())
return;
1818 rEnv.ReadFile(
filename.c_str(), kEnvAll);
1820 std::vector<std::string>
cuts;
1821 if (rEnv.Defined(
"SelectionCuts")) {
1822 cuts =
split(rEnv.GetValue(
"SelectionCuts",
" "),
" ");
1824 auto *
l = rEnv.GetTable();
1825 for( Int_t
i = 0;
i <
l->GetEntries(); ++
i ) {
1826 cuts.push_back(
l->At(
i)->GetName() );
1835 static const std::string trueBool =
"TRUE";
1838 std::vector<std::string> v_pT_window;
1839 std::vector<std::string> v_eta_window;
1842 float pT_min = -99.0;
1843 float pT_max = -99.0;
1844 float eta_min = -99.0;
1845 float eta_max = -99.0;
1846 for (
const auto&
cut :
cuts) {
1847 if(
cut ==
"PtRegion") {
1848 v_pT_window =
split(rEnv.GetValue(
"PtRegion",
""),
";");
1851 std::back_inserter(pT_window),
1852 [](
const std::string&
s) {
return std::stof(
s); }
1854 }
else if (
cut ==
"PtMin") {
1855 pT_min = rEnv.GetValue(
"PtMin", NAN);
1856 }
else if (
cut ==
"PtMax") {
1857 pT_max = rEnv.GetValue(
"PtMax", NAN);
1858 }
else if (
cut ==
"AbsEtaRegion") {
1859 v_eta_window =
split(rEnv.GetValue(
"AbsEtaRegion",
""),
";");
1862 std::back_inserter(eta_window),
1863 [](
const std::string&
s) {
return std::stof(
s); }
1865 }
else if (
cut ==
"AbsEtaMin") {
1866 eta_min = rEnv.GetValue(
"AbsEtaMin", NAN);
1867 }
else if (
cut ==
"AbsEtaMax") {
1868 eta_max = rEnv.GetValue(
"AbsEtaMax", NAN);
1872 else if (
cut ==
"EleOLR"){
1873 eleOLR = (rEnv.GetValue(
"EleOLR",
"FALSE") == trueBool);
1875 else if (
cut ==
"MuonVeto"){
1876 muVeto = (rEnv.GetValue(
"MuonVeto",
"FALSE") == trueBool);
1878 else if (
cut ==
"MuonOLR"){
1879 muOLR = (rEnv.GetValue(
"MuonOLR",
"FALSE") == trueBool);
1883 if(pT_window.empty()) {
1884 if(pT_min == pT_min) {
1886 pT_window.push_back(pT_min);
1888 pT_window.push_back(-std::numeric_limits<float>::infinity());
1891 if(pT_max == pT_max) {
1893 pT_window.push_back(pT_max);
1895 pT_window.push_back(std::numeric_limits<float>::infinity());
1899 if(eta_window.empty()) {
1900 if(eta_min == eta_min) {
1902 eta_window.push_back(eta_min);
1904 eta_window.push_back(-std::numeric_limits<float>::infinity());
1907 if(eta_max == eta_max) {
1909 eta_window.push_back(eta_max);
1911 eta_window.push_back(std::numeric_limits<float>::infinity());
1923 if(
strict)
return StatusCode::FAILURE;
1927 if(
strict)
return StatusCode::FAILURE;
1932 if(
strict)
return StatusCode::FAILURE;
1936 if(
strict)
return StatusCode::FAILURE;
1942 if(
strict)
return StatusCode::FAILURE;
1946 if(
strict)
return StatusCode::FAILURE;
1950 if(
strict)
return StatusCode::FAILURE;
1956 if(
strict)
return StatusCode::FAILURE;
1960 if(
strict)
return StatusCode::FAILURE;
1964 if(
strict)
return StatusCode::FAILURE;
1968 if(
strict)
return StatusCode::FAILURE;
1973 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!");
1983 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).");
1990 if(
strict)
return StatusCode::FAILURE;
1995 if(
strict)
return StatusCode::FAILURE;
1999 std::vector<float> pT_window;
2000 std::vector<float> eta_window;
2009 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2010 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2011 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2012 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2013 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2017 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2021 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] <<
"]");
2022 if(
strict)
return StatusCode::FAILURE;
2025 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2026 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] <<
"]");
2027 if(
strict)
return StatusCode::FAILURE;
2031 ATH_MSG_WARNING(
"Your baseline tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2032 if(
strict)
return StatusCode::FAILURE;
2040 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2041 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2042 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2043 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2044 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2047 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2050 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] <<
"]");
2051 if(
strict)
return StatusCode::FAILURE;
2054 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2055 ATH_MSG_WARNING(
"Your tau pt configuration is inconsistent! pT cut : " <<
m_tauPt <<
" / TauSelectionTool window (in Mev) : [" << 1000*pT_window[0] <<
", " << 1000*pT_window[1] <<
"]");
2056 if(
strict)
return StatusCode::FAILURE;
2060 ATH_MSG_WARNING(
"Your tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2061 if(
strict)
return StatusCode::FAILURE;
2066 return StatusCode::SUCCESS;
2082 return syst.
name().empty();
2087 bool affectsWeights =
false;
2088 for (
const auto&
sys : systSet) {
2090 if(
info.affectsKinematics) {
return false; }
2091 affectsWeights = affectsWeights or
info.affectsWeights;
2093 return affectsWeights;
2098 for (
const auto&
sys : systSet) {
2100 if(
info.affectsKinematics) {
return true; }
2123 return StatusCode::FAILURE;
2126 ATH_MSG_DEBUG(
" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.
name() <<
"\" size " << systConfig.
size());
2134 if ( ret != StatusCode::SUCCESS) {
2135 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2137 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2142 if ( ret != StatusCode::SUCCESS) {
2143 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2145 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2150 if ( ret != StatusCode::SUCCESS) {
2151 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2153 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2158 if ( ret != StatusCode::SUCCESS) {
2159 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2161 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2167 if ( ret != StatusCode::SUCCESS) {
2168 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2170 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2175 if ( ret != StatusCode::SUCCESS) {
2176 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2178 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2183 if ( ret != StatusCode::SUCCESS) {
2184 ATH_MSG_VERBOSE(
"Cannot configure NNJvtEfficiency for systematic var. " << systConfig.
name() );
2191 if ( ret != StatusCode::SUCCESS) {
2192 ATH_MSG_VERBOSE(
"Cannot configure fJvtEfficiency for systematic var. " << systConfig.
name() );
2199 if (ret != StatusCode::SUCCESS) {
2200 ATH_MSG_ERROR(
"Cannot configure MuonCalibTool for systematic var. " << systConfig.
name() );
2208 if ( ret != StatusCode::SUCCESS) {
2209 ATH_MSG_ERROR(
"Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2212 ATH_MSG_VERBOSE(
"MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2217 if ( ret != StatusCode::SUCCESS) {
2218 ATH_MSG_ERROR(
"Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.
name() );
2221 ATH_MSG_VERBOSE(
"MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.
name() );
2226 if ( ret != StatusCode::SUCCESS) {
2227 ATH_MSG_ERROR(
"Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2230 ATH_MSG_VERBOSE(
"MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2235 if ( ret != StatusCode::SUCCESS) {
2236 ATH_MSG_ERROR(
"Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.
name() );
2239 ATH_MSG_VERBOSE(
"MuonIsolationScaleFactors configured for systematic var. " << systConfig.
name() );
2244 if ( ret != StatusCode::SUCCESS) {
2245 ATH_MSG_ERROR(
"Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.
name() );
2248 ATH_MSG_VERBOSE(
"MuonTriggerScaleFactors configured for systematic var. " << systConfig.
name() );
2253 if (ret != StatusCode::SUCCESS) {
2254 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2257 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2262 if (ret != StatusCode::SUCCESS) {
2263 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.
name() );
2266 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.
name() );
2271 if (ret != StatusCode::SUCCESS) {
2272 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2275 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.
name() );
2280 if (ret != StatusCode::SUCCESS) {
2281 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.
name() );
2284 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.
name() );
2290 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2291 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2294 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2295 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2298 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2299 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2301 if (ret != StatusCode::SUCCESS) {
2302 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.
name() );
2305 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.
name() );
2311 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2312 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2315 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2316 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2319 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2320 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2322 if (ret != StatusCode::SUCCESS) {
2323 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.
name() );
2326 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.
name() );
2331 if (ret != StatusCode::SUCCESS) {
2332 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2335 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.
name() );
2340 if (ret != StatusCode::SUCCESS) {
2341 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.
name() );
2344 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.
name() );
2349 if (ret != StatusCode::SUCCESS) {
2350 ATH_MSG_ERROR(
"Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.
name() );
2353 ATH_MSG_VERBOSE(
"ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.
name() );
2358 if (ret != StatusCode::SUCCESS) {
2359 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2362 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2367 if (ret != StatusCode::SUCCESS) {
2368 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2371 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.
name() );
2376 if (ret != StatusCode::SUCCESS) {
2377 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2380 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.
name() );
2386 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2387 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2390 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2391 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2393 if (ret != StatusCode::SUCCESS) {
2394 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.
name() );
2397 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.
name() );
2402 if (ret != StatusCode::SUCCESS) {
2403 ATH_MSG_ERROR(
"Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.
name() );
2406 ATH_MSG_VERBOSE(
"EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.
name() );
2411 if (ret != StatusCode::SUCCESS) {
2412 ATH_MSG_ERROR(
"Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.
name() );
2415 ATH_MSG_VERBOSE(
"IsolationCorrectionTool configured for systematic var. " << systConfig.
name() );
2421 if ( ret != StatusCode::SUCCESS) {
2422 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2425 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2431 if ( ret != StatusCode::SUCCESS) {
2432 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2435 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2440 if ( ret != StatusCode::SUCCESS) {
2441 ATH_MSG_ERROR(
"Cannot configure TauSmearingTool for systematic var. " << systConfig.
name() );
2449 if ( ret != StatusCode::SUCCESS) {
2450 ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2453 ATH_MSG_VERBOSE(
"Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2458 if (ret != StatusCode::SUCCESS) {
2459 ATH_MSG_ERROR(
"Cannot configure " <<
tool->name() <<
" for systematic var. " << systConfig.
name() );
2467 if ( ret != StatusCode::SUCCESS) {
2468 ATH_MSG_ERROR(
"Cannot configure METSystematicsTool for systematic var. " << systConfig.
name() );
2471 ATH_MSG_VERBOSE(
"Configured METSystematicsTool for systematic var. " << systConfig.
name() );
2476 if ( ret != StatusCode::SUCCESS) {
2477 ATH_MSG_ERROR(
"Cannot configure PileupReweightingTool for systematic var. " << systConfig.
name() );
2480 ATH_MSG_VERBOSE(
"Configured PileupReweightingTool for systematic var. " << systConfig.
name() );
2486 if ( ret != StatusCode::SUCCESS) {
2487 ATH_MSG_ERROR(
"Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2490 ATH_MSG_VERBOSE(
"Configured InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2494 return StatusCode::SUCCESS;
2500 return vector<ST::SystInfo>();
2509 vector<SystInfo> sysInfoList;
2510 sysInfoList.reserve(recommendedSystematics.
size() * 2);
2518 sysInfoList.push_back(infodef);
2523 for (
const auto&
sys : systSet) {
2527 std::string JER_systematicName =
sys.name();
2528 JER_systematicName = std::regex_replace(JER_systematicName,
std::regex(
"__1"),
"__2");
2536 ATH_MSG_INFO(
"Returning list of " << sysInfoList.size() <<
" systematic variations");
2564 if (
sys.name().find(
"__2") == std::string::npos) {
2572 if (
sys.name().find(
"__2") != std::string::npos) {
2665 sysInfo.
affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2706 if (
sys.basename().compare(0, 3,
"EG_") == 0) {
2708 }
else if (
sys.basename().compare(0, 3,
"PH_") == 0) {
2710 }
else if (
sys.basename().compare(0, 3,
"EL_") == 0) {
2778 if(
tool->isAffectedBySystematic(
sys)) {
2817 std::string affectedType;
2819 case Unknown : affectedType =
"UNKNOWN";
break;
2820 case Jet : affectedType =
"JET";
break;
2821 case Egamma : affectedType =
"EGAMMA";
break;
2822 case Electron : affectedType =
"ELECTRON";
break;
2823 case Photon : affectedType =
"PHOTON";
break;
2824 case Muon : affectedType =
"MUON";
break;
2825 case Tau : affectedType =
"TAU";
break;
2826 case BTag : affectedType =
"BTAG";
break;
2827 case MET_TST : affectedType =
"MET_TST";
break;
2828 case MET_CST : affectedType =
"MET_CST";
break;
2829 case MET_Track : affectedType =
"MET_Track";
break;
2830 case EventWeight : affectedType =
"EVENT WEIGHT";
break;
2831 case LRT_Object : affectedType =
"LRT_OBJECT";
break;
2837 <<
"for " << affectedType );
2849 if(
evtStore()->contains<xAOD::JetContainer>(
"AntiKt4TruthWZJets") ){
2852 else if(
evtStore()->contains<xAOD::JetContainer>(
"AntiKt4TruthJets")){
2856 ATH_MSG_WARNING(
"No TruthJetContainer found! Dummy null weight retrieved.");
2863 if(jetContainer==
"AntiKt4TruthWZJets"){
2866 else if (jetContainer==
"AntiKt4TruthJets"){
2870 ATH_MSG_WARNING(jetContainer <<
" is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2880 for (
const auto& vx : *vertices ) {
2887 ATH_MSG_WARNING(
"Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2899 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!");
2924 return StatusCode::SUCCESS;
2932 return StatusCode::FAILURE;
2935 return StatusCode::SUCCESS;
2941 throw std::runtime_error(
"Unable to fetch EventInfo.");
2951 if(!isfinite(pu_weight)) pu_weight = 1.;
2966 if(!isfinite(pu_weight)) pu_weight = 1.;
2998 if (randomrunnumber.isAvailable(*(evtInfo)) && muDependentRRN) {
2999 return randomrunnumber(*(evtInfo));
3001 else if (!muDependentRRN) {
3004 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3012 if(!randomrunnumber.isAvailable(*evtInfo))
3014 return StatusCode::SUCCESS;
3025 if (!randomrunnumber.isAvailable(*(evtInfo))) {
3026 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3028 return randomrunnumber(*(evtInfo));
3037 throw std::runtime_error(
"Unable to fetch LargeD0 tracks.");
3049 throw std::runtime_error(
"Unable to fetch LargeD0 GSF tracks.");
3056 const EventContext& ctx = Gaudi::Hive::currentContext();
3059 ATH_MSG_DEBUG (
"Applying LRT filter tool decorations for uncertainty");
3067 return StatusCode::SUCCESS;
3075 if (theRunNumber<290000)
return 2015;
3076 else if (theRunNumber<320000)
return 2016;
3077 else if (theRunNumber<342000)
return 2017;
3078 else if (theRunNumber<400000)
return 2018;
3079 else if (theRunNumber<445000)
return 2022;
3080 else if (theRunNumber<465000)
return 2023;
3086 #ifdef XAOD_STANDALONE
3092 if (asg::ToolStore::contains<Trig::TrigDecisionTool>(
"ToolSvc.TrigDecisionTool") ){
std::vector< std::string > m_v_trigs15_cache_singleLep
def retrieve(aClass, aKey=None)
bool m_autoconfigPRWCombinedmode
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencySFTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoHighPtTool
std::string m_photonIdBaselineDFName
std::string m_autoconfigPRWRtags
SG::WriteHandleKey< xAOD::ElectronContainer > m_outElectronLocation
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_GSFLRTCollectionName
StatusCode resetSystematics() override final
double m_orBoostedElectronC1
SG::ConstAccessor< char > m_acc_photonIdBaseline
double m_photonBaselinePt
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelTool
unsigned int GetRandomRunNumber(bool muDependentRRN=true) override final
std::string m_trig2022combination_multiLep
std::string m_commonPRWFileMC23e
std::set< unsigned int > affectedWeights
bool m_metDoSetMuonJetEMScale
std::vector< std::string > m_v_trigs18_cache_diLep
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_ZTagjetUncertaintiesTool
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_multiLep
Electron_v1 Electron
Definition of the current "egamma version".
Egamma_v1 Egamma
Definition of the current "egamma version".
std::string m_jetUncertaintiesCalibArea
std::string m_prwActualMu2022File
std::string m_jesConfigAFII
std::string m_BtagSystStrategy
std::string m_tauIdBaseline
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecChargeEffCorrTool
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigEffTools
SG::ConstAccessor< char > m_acc_eleId
std::string m_eleIsoHighPt_WP
bool m_eleAllowRun3TrigSFFallback
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
std::string m_trig2016combination_diPhoton
SG::ConstAccessor< char > m_acc_eleIdBaseline
const std::vector< std::string > split(const std::string &s, const std::string &delim) const
bool m_metDoRemoveMuonJets
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
std::string find(const std::string &s)
return a remapped string
std::map< std::string, std::string > m_conf_to_prop
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonEfficiencyBMHighPtSFTool
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighterWZ
std::vector< std::string > m_v_trigs15_cache_multiLep
The common trigger namespace for trigger analysis tools.
std::string m_ZTagUncConfig
std::string m_tauSmearingToolGenerator
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diPhoton
bool m_photonBaselineCrackVeto
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_reco
Combined muon collection.
void getTauConfig(const std::string &tauConfigPath, std::vector< float > &pT_window, std::vector< float > &eta_window, bool &eleOLR, bool &muVeto, bool &muOLR) const
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihood
std::vector< std::string > GetTriggerOR(const std::string &trigExpr) const
size_t size() const
returns: size of the set
void GetTriggerTokens(std::string, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &, std::vector< std::string > &) const
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
std::string m_EigenvectorReductionC
std::string m_fJvtConfigRun2
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigEffTools
std::string m_JvtConfigRun2
asg::AnaToolHandle< TauAnalysisTools::ITauSmearingTool > m_tauSmearingTool
std::vector< std::string > m_v_trigs17_cache_singleEle
std::vector< std::string > m_el_iso_support
std::string m_trig2015combination_singleLep
void configFromFile(bool &property, const std::string &propname, TEnv &rEnv, bool defaultValue)
bool m_metRemoveOverlappingCaloTaggedMuons
asg::AnaToolHandle< IMETMaker > m_metMaker
std::string m_trig2018combination_diPhoton
Class to wrap a set of SystematicVariations.
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigMatchScoringTool
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
CP::SystematicSet systset
std::string m_photonIso_WP
std::vector< std::string > m_v_trigs18_cache_singleLep
std::string name() const
returns: the systematics joined into a single string.
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonTTVAEfficiencySFTool
std::map< std::string, std::string > m_el_iso_fallback
std::string TrigSingleLep() const override final
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
std::string m_commonPRWFileMC21a
std::string m_prwActualMu2024File
bool m_orDoTau
Overlap removal options.
std::vector< std::string > m_v_trigs18_cache_singleEle
asg::AnaToolHandle< CP::IPileupReweightingTool > m_prwTool
std::string m_muBaselineIso_WP
std::string m_trig2016combination_multiLep
std::string m_inputMETSuffix
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
std::string m_eleConfigBaseline
const xAOD::Vertex * GetPrimVtx() const override final
std::vector< std::string > m_v_trigs22_cache_singleLep
std::string m_bTaggingCalibrationFilePath
std::vector< std::string > m_v_trigs22_cache_singleEle
ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > m_photonTrigSFTools
#define ATH_MSG_VERBOSE(x)
asg::AnaToolHandle< Trig::IMatchingTool > m_trigMatchingTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
double m_elebaselined0sig
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
bool currentSystematicIsVariation() const
asg::AnaToolHandle< CP::IElectronLRTOverlapRemovalTool > m_elecLRTORTool
std::string m_trig2017combination_diPhoton
std::vector< std::string > m_mu_iso_support
std::vector< std::string > m_tau_id_support
void setDataSource(int source)
std::string m_fatJetUncVars
std::string m_eleEffMapFilePath
uint32_t runNumber() const
The current event's run number.
asg::AnaToolHandle< JetVertexTaggerTool > m_jetJvtMomentTool
StatusCode setBoolProperty(const std::string &name, const bool &property) override final
std::string m_eleIdBaseline
bool isVariation(const CP::SystematicSet &syst) const
ORUtils::ToolBox m_orToolbox
std::string m_tauConfigPath
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_LRTCollectionName
double m_photonBaselineEta
std::vector< std::string > m_v_trigs15_cache_singleEle
asg::AnaToolHandle< CP::IMuonLRTOverlapRemovalTool > m_muonLRTORTool
StatusCode ApplyLRTUncertainty() override final
std::string m_commonPRWFileMC20d
const xAOD::TrackParticleContainer & GetInDetLargeD0GSFTracks(const EventContext &ctx) const override final
SG::ConstAccessor< char > m_acc_jetClean
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
uint32_t mcChannelNumber() const
The MC generator's channel number.
std::vector< std::string > m_v_trigs17_cache_diLep
std::map< std::string, bool > m_slices
bool m_orLinkOverlapObjects
Forward iterator to traverse the main components of the trigger configuration.
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_isoHighPt
std::string m_trig2018combination_singleLep
double m_orBoostedMuonMaxConeSize
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
ULong64_t GetPileupWeightHash() override final
asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > m_trigGlobalEffCorrTool_diLep
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
std::string m_WZTaggerCalibArea
std::vector< std::string > m_prwLcalcFiles
std::vector< std::string > m_el_id_support
std::string m_defaultJets
std::vector< std::string > m_ph_id_support
StatusCode SUSYToolsInit()
std::string m_TopTaggerCalibArea
bool isWeight(const CP::SystematicSet &systSet) const
std::string m_fatJetUncConfig
StatusCode ApplyPRWTool(bool muDependentRRN=true) override final
unsigned int GetRunNumber() const override final
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_id
StatusCode readConfig() override final
std::string m_IsoCloseByORpassLabel
std::string m_tauSmearingToolRecommendationTag
float GetCorrectedAverageInteractionsPerCrossing(bool includeDataSF=false) override final
std::string m_jetUncertaintiesConfig
Prefix for trigger matchiing container name.
double GetSumOfWeights(int channel) override final
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
std::map< std::string, std::string > m_mu_iso_fallback
std::vector< std::string > m_v_trigs22_cache_multiLep
float GetPileupWeight() override final
bool isNominal(const CP::SystematicSet &syst) const
std::string m_jesCalibArea
std::string m_trig2017combination_singleLep
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonIsolationSFTool
std::string m_jetCleanDFName
std::string m_jesCalibSeq
::StatusCode StatusCode
StatusCode definition for legacy code.
SystType getSystType(const CP::SystematicVariation &systematic)
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
bool currentSystematicIsNominal() const
std::vector< std::string > m_v_trigs17_cache_singleLep
asg::AnaToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibTool
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
std::string m_trig2017combination_multiLep
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
std::string m_jesConfigJMS
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
std::string m_eleIdDFName
std::string m_jetUncertaintiesMCType
std::string m_commonPRWFileMC20e
bool check_isTighter(const std::string &wp1, const std::string &wp, const std::vector< std::string > &list) const
std::string m_jetUncertaintiesAnalysisFile
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
std::string m_trig2016combination_diLep
bool m_jetUncertaintiesPDsmearing
asg::AnaToolHandle< IMETSystematicsTool > m_metSystTool
SUSYObjDef_xAOD(const std::string &name)
double m_BtagMinPt_trkJet
std::vector< std::string > m_v_trigs15_cache_diLep
float GetDataWeight(const std::string &) override final
double m_muIsoHighPtThresh
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
std::string m_trigMatchingPrefix
Use composite trigger matching tool if matching was done upstream.
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
asg::AnaToolHandle< TauAnalysisTools::ITauSelectionTool > m_tauSelToolBaseline
bool isData() const override final
std::set< std::string > m_bool_prop_set
std::string m_trig2018combination_diLep
std::string m_jesConfigFat
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
std::string m_trig2022combination_diLep
std::string m_eleIdBaselineDFName
bool isAtlfast() const override final
std::string m_trig2015combination_multiLep
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
std::string m_jesCalibSeqJMS
std::string m_WTagUncConfig
bool m_runDepPrescaleWeightPRW
std::string m_prwActualMu2017File
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trigEff_singleLep
const xAOD::EventInfo * GetEventInfo() const override final
asg::AnaToolHandle< ORUtils::IOverlapTool > m_tauJetORtool
std::string m_photonBaselineIso_WP
std::vector< ST::SystInfo > getSystInfoList() const override final
virtual bool isValid() override final
Can the handle be successfully dereferenced?
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_iso
std::vector< std::string > m_prwConfFiles
std::string m_metJetSelection
asg::AnaToolHandle< TauAnalysisTools::ITauTruthMatchingTool > m_tauTruthMatch
std::string m_trig2022combination_singleLep
std::string EG_WP(const std::string &wp) const
std::string m_inputMETCore
bool check_isOption(const std::string &wp, const std::vector< std::string > &list) const
StatusCode NearbyLeptonCorrections(xAOD::ElectronContainer *electrons=nullptr, xAOD::MuonContainer *muons=nullptr) const override final
bool m_eleForceFullSimCalib
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
std::string m_EigenvectorReductionLight
std::string m_ToptagConfig
asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > m_tauEffTool
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionToolBaseline
std::string to_string(const DetectorType &type)
float getSherpaVjetsNjetsWeight() const override final
bool m_useBtagging_trkJet
asg::AnaToolHandle< CP::IIsolationCloseByCorrectionTool > m_isoCloseByTool
asg::AnaToolHandle< IAsgElectronEfficiencyCorrectionTool > m_elecEfficiencySFTool_trig_singleLep
std::string m_trig2018combination_multiLep
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
float GetPileupWeightPrescaledTrigger(const std::string &trigger_expr) override final
std::string m_commonPRWFileMC20a
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionHighPtTool
std::string m_fJvtConfigRun3
std::string m_BtagWP_trkJet
SG::WriteHandleKey< xAOD::MuonContainer > m_outMuonLocation
Class describing the basic event information.
Photon_v1 Photon
Definition of the current "egamma version".
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
struct TBPatternUnitContext Muon
ST::SystInfo getSystInfo(const CP::SystematicVariation &sys) const override final
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
const CP::SystematicSet & currentSystematic() const
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
double m_orMuJetTrkPtRatio
std::vector< std::string > m_v_trigs16_cache_diLep
asg::AnaToolHandle< CP::IMuonTriggerScaleFactors > m_muonTriggerSFTool
std::vector< std::string > getElSFkeys(const std::string &mapFile) const
std::string m_jesConfigJMSData
std::string m_trig2016combination_singleLep
@ Ok
The correction was done successfully.
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecChargeIDSelectorTool
double m_orBoostedElectronMaxConeSize
std::string m_eleBaselineIso_WP
std::string m_inputMETMap
std::string m_BtagTagger_trkJet
bool m_autoconfigPRWRPVmode
Class describing a Vertex.
StatusCode validConfig(bool strict=false) const
std::string m_EG_corrModel
std::vector< std::string > m_v_trigs18_cache_multiLep
std::string m_JetTruthLabelName
#define ATH_MSG_WARNING(x)
bool m_orDoBoostedElectron
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMBaseline
This module implements the central registry for handling systematic uncertainties with CP tools.
bool m_metVeryGreedyPhotons
asg::AnaToolHandle< Trig::TrigDecisionTool > m_trigDecTool
std::string m_metsysConfigPrefix
std::string m_defaultTrackJets
std::string m_prwActualMu2023File
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
std::string m_jesCalibSeqFat
std::string m_TopTagUncConfig
StatusCode applySystematicVariation(const CP::SystematicSet &systConfig) override final
CP::SystematicSet m_currentSyst
std::string m_tauConfigPathBaseline
std::string m_autoconfigPRWPath
std::string m_photonIdDFName
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
std::string m_electronTriggerSFStringSingle
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
std::vector< std::string > m_v_trigs17_cache_multiLep
std::string m_trig2017combination_diLep
asg::AnaToolHandle< Trig::IMatchScoringTool > m_trigDRScoringTool
std::string m_trig2015combination_diLep
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
asg::AnaToolHandle< IMETSignificance > m_metSignif
@ Tau
The object is a tau (jet)
std::string m_autoconfigPRWFile
std::vector< std::string > m_v_trigs16_cache_singleLep
std::string m_jesConfigFatData
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
std::string m_commonPRWFileMC23c
std::vector< std::string > m_v_trigs16_cache_multiLep
bool m_muHighPtExtraSmear
std::string m_photonTriggerName
float GetCorrectedActualInteractionsPerCrossing(bool includeDataSF=false) override final
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_TopTagjetUncertaintiesTool
std::string m_EigenvectorReductionB
double m_orBoostedElectronC2
@ BTag
The object is a b-tagging object.
std::vector< std::string > m_v_trigs22_cache_diLep
std::string m_orInputLabel
bool m_eleBaselineCrackVeto
bool currentSystematicIsWeight() const
std::string m_muIsoHighPt_WP
bool m_murequirepassedHighPtCuts
asg::AnaToolHandle< CP::IMuonEfficiencyScaleFactors > m_muonHighPtIsolationSFTool
std::string m_photonIdBaseline
int treatAsYear(const int runNumber=-1) const override final
setBGCode setTAP setLVL2ErrorBits bool
ToolHandleArray< CP::IMuonTriggerScaleFactors > m_muonTrigSFTools
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
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_BtagKeyOverride
std::string m_commonPRWFileMC23a
bool m_orDoMuonJetGhostAssociation
asg::AnaToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
std::string m_defaultTruthJets
ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > m_elecTrigSFTools
std::vector< asg::AnaToolHandle< TauAnalysisTools::ITauEfficiencyCorrectionsTool > > m_tauTrigEffTool
Jet_v1 Jet
Definition of the current "jet version".
std::vector< std::string > m_v_trigs16_cache_singleEle
std::string m_commonPRWFileMC23d
const xAOD::TrackParticleContainer & GetInDetLargeD0Tracks(const EventContext &ctx) const override final
bool m_upstreamTriggerMatching
StatusCode initialize() override final
Dummy implementation of the initialisation function.
asg::AnaToolHandle< InDet::IInclusiveTrackFilterTool > m_LRTuncTool
std::string m_EG_corrFNList
SG::ConstAccessor< char > m_acc_photonId
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
asg::AnaToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
bool m_useSigLepForIsoCloseByOR
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
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....
asg::AnaToolHandle< IEGammaAmbiguityTool > m_egammaAmbiguityTool
std::string m_prwActualMu2018File
double m_eleIsoHighPtThresh
double m_orBJetPtUpperThres
std::string m_trig2015combination_diPhoton
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoTool
std::string m_JvtConfigRun3
CP::SystematicSet m_defaultSyst
asg::AnaToolHandle< IWeightTool > m_pmgSHnjetWeighter