 |
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_tauEffToolRecommendationTag(
""),
258 m_tauSmearingToolGenerator(
""),
259 m_ApplyMVATESQualityCheck(true),
274 m_fJvtConfigRun2(
""),
275 m_fJvtConfigRun3(
""),
288 m_orDoBoostedElectron(false),
289 m_orBoostedElectronC1(-999.),
290 m_orBoostedElectronC2(-999.),
291 m_orBoostedElectronMaxConeSize(-999.),
292 m_orDoBoostedMuon(true),
293 m_orBoostedMuonC1(-999.),
294 m_orBoostedMuonC2(-999.),
295 m_orBoostedMuonMaxConeSize(-999.),
296 m_orApplyRelPt(false),
297 m_orMuJetPtRatio(-999.),
298 m_orMuJetTrkPtRatio(-999.),
299 m_orMuJetInnerDR(-999),
300 m_orDoMuonJetGhostAssociation(true),
301 m_orRemoveCaloMuons(true),
304 m_orPhotonFavoured(false),
305 m_orBJetPtUpperThres(-999.),
306 m_orLinkOverlapObjects(false),
307 m_orDoFatjets(false),
308 m_EleFatJetDR(-999.),
309 m_JetFatJetDR(-999.),
311 m_doElIsoSignal(true),
312 m_doPhIsoSignal(true),
313 m_doMuIsoSignal(true),
315 m_useSigLepForIsoCloseByOR(false),
316 m_IsoCloseByORpassLabel(
""),
320 m_slices(std::map<std::string,
bool>()),
324 m_metJetSelection(
""),
328 m_fatjetFFSmearingSyst(),
335 m_jetFatCalibTool(
""),
336 m_jetUncertaintiesTool(
""),
337 m_jetUncertaintiesPDSmearTool(
""),
338 m_fatjetUncertaintiesTool(
""),
339 m_fatjetUncertaintiesPDSmearTool(
""),
340 m_fatjetFFSmearingTool(
""),
341 m_jetCleaningTool(
""),
342 m_jetPileupLabelingTool(
""),
343 m_jetJvtMomentTool(
""),
344 m_jetNNJvtMomentTool(
""),
345 m_jetNNJvtSelectionTool(
""),
346 m_jetNNJvtEfficiencyTool(
""),
347 m_jetfJvtSelectionTool(
""),
348 m_jetfJvtEfficiencyTool(
""),
353 m_jetTruthLabelingTool(
""),
354 m_WTagjetUncertaintiesTool(
""),
355 m_ZTagjetUncertaintiesTool(
""),
356 m_TopTagjetUncertaintiesTool(
""),
358 m_muonSelectionTool(
""),
359 m_muonSelectionHighPtTool(
""),
360 m_muonSelectionToolBaseline(
""),
362 m_muonEfficiencySFTool(
""),
363 m_muonEfficiencyBMHighPtSFTool(
""),
364 m_muonTTVAEfficiencySFTool(
""),
365 m_muonIsolationSFTool(
""),
366 m_muonHighPtIsolationSFTool(
""),
367 m_muonTriggerSFTool(
""),
369 m_elecEfficiencySFTool_reco(
""),
370 m_elecEfficiencySFTool_id(
""),
371 m_elecEfficiencySFTool_trig_singleLep(
""),
372 m_elecEfficiencySFTool_trigEff_singleLep(
""),
373 m_elecEfficiencySFTool_iso(
""),
374 m_elecEfficiencySFTool_isoHighPt(
""),
376 m_egammaCalibTool(
""),
377 m_elecSelLikelihood(
""),
378 m_elecSelLikelihoodBaseline(
""),
380 m_photonSelIsEMBaseline(
""),
381 m_photonEfficiencySFTool(
""),
382 m_photonIsolationSFTool(
""),
383 m_photonTriggerSFTool(
""),
384 m_egammaAmbiguityTool(
""),
385 m_elecChargeIDSelectorTool(
""),
386 m_elecChargeEffCorrTool(
""),
389 m_tauSelToolBaseline(
""),
390 m_tauSmearingTool(
""),
396 m_btagSelTool_OR(
""),
397 m_btagEffTool_trkJet(
""),
398 m_btagSelTool_trkJet(
""),
404 m_trig2015combination_singleLep(
""),
405 m_trig2016combination_singleLep(
""),
406 m_trig2017combination_singleLep(
""),
407 m_trig2018combination_singleLep(
""),
408 m_trig2022combination_singleLep(
""),
409 m_trig2023combination_singleLep(
""),
410 m_trig2024combination_singleLep(
""),
411 m_trigNToys_diLep(-99),
412 m_trig2015combination_diLep(
""),
413 m_trig2016combination_diLep(
""),
414 m_trig2017combination_diLep(
""),
415 m_trig2018combination_diLep(
""),
416 m_trig2022combination_diLep(
""),
417 m_trigGlobalEffCorrTool_diLep(
""),
418 m_trigNToys_multiLep(-99),
419 m_trig2015combination_multiLep(
""),
420 m_trig2016combination_multiLep(
""),
421 m_trig2017combination_multiLep(
""),
422 m_trig2018combination_multiLep(
""),
423 m_trig2022combination_multiLep(
""),
424 m_trigGlobalEffCorrTool_multiLep(
""),
425 m_trigNToys_diPhoton(-99),
426 m_trig2015combination_diPhoton(
""),
427 m_trig2016combination_diPhoton(
""),
428 m_trig2017combination_diPhoton(
""),
429 m_trig2018combination_diPhoton(
""),
430 m_trig2022combination_diPhoton(
""),
431 m_trigGlobalEffCorrTool_diPhoton(
""),
434 m_trigMatchingTool(
""),
435 m_trigMatchScoringTool(
""),
436 m_trigDRScoringTool(
""),
441 m_isoBaselineTool(
""),
448 m_orToolbox(
"ORToolbox",this),
450 m_pmgSHnjetWeighter(
""),
451 m_pmgSHnjetWeighterWZ(
""),
453 m_acc_eleIdBaseline(
"DFCommonElectronsLHLooseBL"),
454 m_acc_eleId(
"DFCommonElectronsLHTight"),
455 m_acc_photonIdBaseline(
"DFCommonPhotonsIsEMTight"),
456 m_acc_photonId(
"DFCommonPhotonsIsEMTight"),
458 m_acc_jetClean(
"DFCommonJets_jetClean_LooseBad")
822 "FCLoose",
"FCTight",
826 "TightTrackOnly_VarRad",
"TightTrackOnly_FixedRad",
827 "Tight_VarRad",
"Loose_VarRad",
828 "PLVLoose",
"PLVTight",
829 "PLImprovedTight",
"PLImprovedVeryTight"
834 "PflowLoose_FixedRad",
"PflowLoose_VarRad",
"PflowTight_FixedRad",
"PflowTight_VarRad",
835 "TightTrackOnly_FixedRad",
"TightTrackOnly_VarRad",
"HighPtTrackOnly",
836 "PLVLoose",
"PLVTight",
837 "Loose_VarRad",
"Loose_FixedRad",
"Tight_VarRad",
"Tight_FixedRad",
838 "PLImprovedTight",
"PLImprovedVeryTight"
859 #define CHECK_TOOL_RETRIEVE( TOOLHANDLE ) \
860 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
861 if( TOOLHANDLE.retrieve().isFailure()) { \
862 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
863 return StatusCode::FAILURE; \
866 #define CHECK_TOOL_RETRIEVE_NONEMPTY( TOOLHANDLE ) \
867 CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, !TOOLHANDLE.empty())
869 #define CHECK_TOOL_RETRIEVE_CONDITIONAL( TOOLHANDLE, CONDITION ) \
871 ATH_MSG_VERBOSE("Try to retrieve " << #TOOLHANDLE); \
872 if(TOOLHANDLE.retrieve().isFailure()) { \
873 ATH_MSG_ERROR("Failed to retrieve tool " << #TOOLHANDLE); \
874 return StatusCode::FAILURE; \
888 ATH_MSG_ERROR(
"Initialising for a second time -- something is wrong!");
889 return StatusCode::FAILURE;
895 bool autoconf(
false);
896 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
899 ATH_MSG_INFO(
"Autoconfiguring: dataSource, mcCampaign, isPHYSLITE");
900 std::string projectName =
"";
902 if ( projectName ==
"IS_SIMULATION" ) {
903 std::string simFlavour =
"";
905 TString
s(simFlavour);
s.ToUpper();
907 }
else if (projectName.compare(0, 4,
"data") == 0 ) {
910 ATH_MSG_ERROR(
"Failed to autoconfigure -- project_name matches neither IS_SIMULATION nor data!");
911 return StatusCode::FAILURE;
924 ATH_MSG_FATAL(
"You must set the DataSource property to Data, FullSim or AtlfastII !!");
925 if (autoconf)
ATH_MSG_FATAL(
"Autoconfiguration seems to have failed!");
928 return StatusCode::FAILURE;
940 return StatusCode::FAILURE;
975 m_eleIdDFName =
m_eleId.find(
"DNN") == std::string::npos ?
"DFCommonElectronsLH" :
"DFCommonElectronsDNN";
976 m_eleIdDFName += TString(
m_eleId).ReplaceAll(
"LooseAndBLayer",
"LooseBL").ReplaceAll(
"LLH",
"").ReplaceAll(
"DNNnoCF",
"").ReplaceAll(
"DNN",
"").Data();
977 if (
m_eleId.find(
"noCF") != std::string::npos)
1011 return StatusCode::SUCCESS;
1018 std::string prwConfigFile(
"");
1022 prwConfigFile = PRWfilesDir;
1026 std::string mcCampaignMD(
"");
1027 std::string simFlavour(
"");
1028 std::string simType(
"");
1033 std::map<std::string,std::vector<std::string>> PRWRtags = {};
1034 std::string allcampaigns =
"mc20a.mc20d.mc20e.mc21a.mc23a.mc23c.mc23d.mc23e";
1035 bool standard_like =
true;
1037 std::string icampaign = campaign_rtags.substr(0, campaign_rtags.find(
":"));
1038 std::vector<std::string> irtags =
split( campaign_rtags.substr(campaign_rtags.find(
":")+1),
"_" );
1039 PRWRtags[icampaign] = irtags;
1040 ATH_MSG_DEBUG(
"PRW autoconfigure considering rtags " << campaign_rtags.substr(campaign_rtags.find(
"_")+1) <<
" for campaign " << icampaign );
1042 for (
const auto&
x : PRWRtags ) {
1043 if ( allcampaigns.find(
x.first)==string::npos ) {
1046 return StatusCode::FAILURE;
1056 if(simFlavour.starts_with(
"ATLFASTII")) simType =
"AFII";
1057 else if(simFlavour.starts_with(
"ATLFAST3")) simType =
"AF3";
1058 else simType =
"FS";
1061 while ( mcCampaignMD.empty() ) {
1062 for (
const auto& campaign_rtags : PRWRtags ) {
1063 for (
const auto& rtag: campaign_rtags.second ) {
1064 if (
found)
continue;
1065 if (
amiTag.find(rtag)!=string::npos) {
1066 mcCampaignMD = campaign_rtags.first.substr(0,5);
1067 standard_like = (campaign_rtags.first.find(
"ns")?
true:
false);
1074 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): unrecognized xAOD::FileMetaData::amiTag, \'" <<
amiTag <<
"'. Please check your input sample.");
1075 return StatusCode::FAILURE;
1078 ATH_MSG_INFO(
"Setting up autoconfigurePileupRWTool for mc campaign " << mcCampaignMD <<
" (from amiTag " <<
amiTag <<
") (standard-like = " << (standard_like?
"true":
"false") <<
")." );
1079 if ( (!standard_like) && (!RPVLLmode) )
1080 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?");
1083 #ifndef XAOD_STANDALONE
1084 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): access to FileMetaData failed, can't get mc channel number.");
1085 return StatusCode::FAILURE;
1091 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) and campaign from configuration." );
1092 std::string NoMetadataButPropertyOK(
"");
1093 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1095 NoMetadataButPropertyOK +=
"'. 'mcChannel' is used and passed to SUSYTools as '";
1097 NoMetadataButPropertyOK +=
"'. Autocongiguring PRW accordingly.";
1103 ATH_MSG_WARNING(
"autoconfigurePileupRWTool(): access to FileMetaData failed -> getting the mc channel number (DSID) from the event store." );
1107 std::string NoMetadataButPropertyOK(
"");
1108 NoMetadataButPropertyOK +=
"autoconfigurePileupRWTool(): 'mcCampaign' is used and passed to SUSYTools as '";
1110 NoMetadataButPropertyOK +=
"'. Autoconfiguring PRW accordingly.";
1115 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): `mcCampaign' is not set properly.");
1116 return StatusCode::FAILURE;
1123 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): retrieving the common PRW file for MC campaign: " << mcCampaignMD );
1133 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): no common PRW file known for MC campaign: " << mcCampaignMD);
1134 return StatusCode::FAILURE;
1140 int DSID_INT =
static_cast<int>(
dsid);
1141 prwConfigFile +=
"DSID" +
std::to_string(DSID_INT/1000) +
"xxx/pileup_" + mcCampaignMD +
"_dsid" +
std::to_string(DSID_INT) +
"_" + simType +
".root";
1143 if (RPVLLmode) prwConfigFile = TString(prwConfigFile).ReplaceAll(
".root",
"_rpvll.root").Data();
1147 if (!PRWfileName.empty()) {
1148 prwConfigFile = PRWfilesDir + PRWfileName;
1149 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): PRW file was specifed by user: " << prwConfigFile.data() );
1157 if (mcCampaignMD.find(
"mc20") == std::string::npos) {
1158 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): combined mode currently onlys supported for mc20! Impossible to autoconfigure PRW. Aborting." );
1159 return StatusCode::FAILURE;
1169 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20a").
Data() );
1170 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20d").
Data() );
1171 m_prwConfFiles.emplace_back( TString(prwConfigFile).ReplaceAll(mcCampaignMD,
"mc20e").
Data() );
1177 if ( mcCampaignMD ==
"mc20d") {
1179 }
else if (mcCampaignMD ==
"mc20e") {
1181 }
else if (mcCampaignMD ==
"mc21a" || mcCampaignMD ==
"mc23a") {
1183 }
else if (mcCampaignMD ==
"mc23c" || mcCampaignMD ==
"mc23d") {
1185 }
else if (mcCampaignMD ==
"mc23e") {
1193 TFile testF(prwConfigFile.data(),
"read");
1194 if (testF.IsZombie()) {
1195 ATH_MSG_ERROR(
"autoconfigurePileupRWTool(): file not found -> " << prwConfigFile.data() <<
" ! Impossible to autoconfigure PRW. Aborting." );
1196 if ( (!standard_like) && (!RPVLLmode) )
1197 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?");
1198 return StatusCode::FAILURE;
1201 ATH_MSG_INFO(
"autoconfigurePileupRWTool(): configuring PRW tool using " << prwConfigFile.data() );
1204 return StatusCode::SUCCESS;
1230 TString
copy = TString(
wp).Copy().ReplaceAll(
"AndBLayer",
"BL").ReplaceAll(
"LLH",
"LHElectron");
1232 if (
wp.find(
"DNNnoCF") != std::string::npos)
1233 copy.ReplaceAll(
"DNNnoCF",
"DNNnoCFElectron");
1234 else if (
wp.find(
"DNN") != std::string::npos)
1235 copy.ReplaceAll(
"DNN",
"DNNElectron");
1241 if( mapFile.empty() )
1244 std::vector<std::string> theKeys;
1248 for( std::string
line; getline( input,
line ); ){
1251 theKeys.push_back(
tokens.at(0));
1262 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1263 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1266 property = rEnv.GetValue(propname.c_str(),
static_cast<int>(defaultValue));
1267 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1269 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1274 double defaultValue)
1277 if (property > -90.) {
1278 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1279 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1282 property = rEnv.GetValue(propname.c_str(), defaultValue);
1283 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1285 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1293 if (property > -90){
1294 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1295 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1298 property = rEnv.GetValue(propname.c_str(), defaultValue);
1299 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1301 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1306 const std::string& defaultValue,
bool allowEmpty)
1309 if (!property.empty()){
1310 ATH_MSG_INFO(
"configFromFile(): property \"" << propname <<
"\" already set with value " << property <<
". Ignoring change request." );
1311 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1314 property = rEnv.GetValue(propname.c_str(), defaultValue.c_str());
1315 if (property.empty() && !allowEmpty) {
1316 ATH_MSG_FATAL(
"Read empty string property from text file (property name: " << propname <<
")");
1320 std::string tmp_prop =
property.substr(0, property.find(
'#', 0));
1321 property = TString(tmp_prop).ReplaceAll(
" ",
"").Data();
1324 if (property==
"None" || property==
"NONE" || property==
"none") {
1325 ATH_MSG_VERBOSE(
"Property \"" << propname <<
"\" being set to empty string due to specification of \"" << property <<
"\"" );
1329 ATH_MSG_INFO(
"configFromFile(): Loaded property \"" << propname <<
"\" with value " << property );
1331 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(propname.c_str() ) );
1342 success = rEnv.ReadFile(
m_configFile.c_str(), kEnvAll);
1343 if (success != 0)
return StatusCode::FAILURE;
1352 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.InputType") );
1355 int muIdTmp = rEnv.GetValue(
"Muon.Id", 1);
1356 m_muId = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1359 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Muon.Id") );
1362 int muIdTmp = rEnv.GetValue(
"MuonBaseline.Id", 1);
1363 m_muIdBaseline = (muIdTmp<4 ? static_cast<int>(xAOD::Muon::Quality(muIdTmp)) : muIdTmp);
1366 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"MuonBaseline.Id") );
1370 std::string prop = rEnv.GetValue(
"Jet.JVT_WP",
"");
1371 if ( !prop.empty() ) {
1372 ATH_MSG_WARNING(
"readConfig(): Found deprecated property name Jet.JVT_WP. Please move to using Jet.JvtWP. Propagating for now.");
1373 rEnv.SetValue(
"Jet.JvtWP", prop.c_str());
1374 rEnv.GetTable()->Remove( rEnv.GetTable()->FindObject(
"Jet.JVT_WP") );
1383 m_conf_to_prop[
"EleBaseline.CrackVeto"] =
"EleBaselineCrackVeto";
1385 m_conf_to_prop[
"Ele.AllowRun3TrigSFFallback"] =
"EleAllowRun3TrigSFFallback";
1389 m_conf_to_prop[
"PhotonBaseline.CrackVeto"] =
"PhotonBaselineCrackVeto";
1397 m_conf_to_prop[
"OR.DoMuonJetGhostAssociation"] =
"ORDoMuonJetGhostAssociation";
1412 m_conf_to_prop[
"Trigger.UpstreamMatching"] =
"TriggerUpstreamMatching";
1418 m_conf_to_prop[
"SigLepPh.IsoCloseByOR"] =
"SigLepPhIsoCloseByOR";
1419 m_conf_to_prop[
"MET.RemoveOverlappingCaloTaggedMuons"] =
"METRemoveORCaloTaggedMuons";
1420 m_conf_to_prop[
"MET.DoSetMuonJetEMScale"] =
"METDoSetMuonJetEMScale";
1472 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");
1473 configFromFile(
m_eleEffMapFilePath,
"Ele.EffMapFilePath", rEnv,
"ElectronEfficiencyCorrection/2015_2025/rel22.2/2025_Run3_Consolidated_Recommendation_v4/map2.txt");
1485 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");
1486 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");
1487 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");
1488 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");
1491 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");
1492 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");
1493 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");
1494 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");
1578 configFromFile(
m_WtagConfig,
"Jet.WtaggerConfig", rEnv,
"SmoothedContainedWTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1579 configFromFile(
m_ZtagConfig,
"Jet.ZtaggerConfig", rEnv,
"SmoothedContainedZTagger_AntiKt10UFOCSSKSoftDrop_FixedSignalEfficiency80_20220221.dat");
1584 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");
1585 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");
1586 configFromFile(
m_jesConfigJMS,
"Jet.JESConfigJMS", rEnv,
"JES_JMS_MC16Recommendation_Consolidated_MC_only_EMTopo_July2019_Rel21.config");
1588 configFromFile(
m_jesConfigFat,
"Jet.JESConfigFat", rEnv,
"JES_MC20PreRecommendation_R10_UFO_CSSK_SoftDrop_JMS_R21Insitu_26Nov2024.config");
1697 configFromFile(
m_prwActualMu2017File,
"PRW.ActualMu2017File", rEnv,
"GoodRunsLists/data17_13TeV/20180619/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1698 configFromFile(
m_prwActualMu2018File,
"PRW.ActualMu2018File", rEnv,
"GoodRunsLists/data18_13TeV/20190318/physics_25ns_Triggerno17e33prim.actualMu.OflLumi-13TeV-010.root");
1710 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");
1723 if (rEnv.GetTable() && rEnv.GetTable()->GetSize()>0){
1724 ATH_MSG_ERROR(
"Found " << rEnv.GetTable()->GetSize() <<
" unparsed environment options:");
1727 return StatusCode::FAILURE;
1732 if (
m_WtagConfig.find(
"Efficiency50") != std::string::npos){
1735 else if (
m_WtagConfig.find(
"Efficiency80") != std::string::npos){
1739 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");
1743 if (
m_ZtagConfig.find(
"Efficiency50") != std::string::npos){
1746 else if (
m_ZtagConfig.find(
"Efficiency80") != std::string::npos){
1750 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");
1753 std::string TopTagEff =
"";
1754 std::string TopTagType =
"";
1763 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");
1767 TopTagType =
"Inclusive";
1770 TopTagType =
"Contained";
1773 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");
1775 m_TopTagUncConfig =
"R10_SF_LCTopo_TopTag"+TopTagType+
"_SigEff"+TopTagEff+
".config";
1807 return StatusCode::SUCCESS;
1812 assert(delim.length() == 1);
1813 std::vector<std::string>
retval;
1816 if (
s.find(delim)==std::string::npos) {
1824 while ((
next =
s.find(delim, last)) != std::string::npos) {
1826 last =
next + delim.length();
1830 retval.emplace_back(
s.substr(last));
1837 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC23.config";
1839 return isAtlfast() ?
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config" :
"rel22/Spring2025_PreRec/R4_CategoryReduction_FullJER_MC20_MC21.config";
1842 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 {
1844 if(tauConfigPath.empty())
return;
1848 rEnv.ReadFile(
filename.c_str(), kEnvAll);
1850 std::vector<std::string>
cuts;
1851 if (rEnv.Defined(
"SelectionCuts")) {
1852 cuts =
split(rEnv.GetValue(
"SelectionCuts",
" "),
" ");
1854 auto *
l = rEnv.GetTable();
1855 for( Int_t
i = 0;
i <
l->GetEntries(); ++
i ) {
1856 cuts.push_back(
l->At(
i)->GetName() );
1865 static const std::string trueBool =
"TRUE";
1868 std::vector<std::string> v_pT_window;
1869 std::vector<std::string> v_eta_window;
1872 float pT_min = -99.0;
1873 float pT_max = -99.0;
1874 float eta_min = -99.0;
1875 float eta_max = -99.0;
1876 for (
const auto&
cut :
cuts) {
1877 if(
cut ==
"PtRegion") {
1878 v_pT_window =
split(rEnv.GetValue(
"PtRegion",
""),
";");
1881 std::back_inserter(pT_window),
1882 [](
const std::string&
s) {
return std::stof(
s); }
1884 }
else if (
cut ==
"PtMin") {
1885 pT_min = rEnv.GetValue(
"PtMin", NAN);
1886 }
else if (
cut ==
"PtMax") {
1887 pT_max = rEnv.GetValue(
"PtMax", NAN);
1888 }
else if (
cut ==
"AbsEtaRegion") {
1889 v_eta_window =
split(rEnv.GetValue(
"AbsEtaRegion",
""),
";");
1892 std::back_inserter(eta_window),
1893 [](
const std::string&
s) {
return std::stof(
s); }
1895 }
else if (
cut ==
"AbsEtaMin") {
1896 eta_min = rEnv.GetValue(
"AbsEtaMin", NAN);
1897 }
else if (
cut ==
"AbsEtaMax") {
1898 eta_max = rEnv.GetValue(
"AbsEtaMax", NAN);
1902 else if (
cut ==
"EleOLR"){
1903 eleOLR = (rEnv.GetValue(
"EleOLR",
"FALSE") == trueBool);
1905 else if (
cut ==
"MuonVeto"){
1906 muVeto = (rEnv.GetValue(
"MuonVeto",
"FALSE") == trueBool);
1908 else if (
cut ==
"MuonOLR"){
1909 muOLR = (rEnv.GetValue(
"MuonOLR",
"FALSE") == trueBool);
1913 if(pT_window.empty()) {
1914 if(pT_min == pT_min) {
1916 pT_window.push_back(pT_min);
1918 pT_window.push_back(-std::numeric_limits<float>::infinity());
1921 if(pT_max == pT_max) {
1923 pT_window.push_back(pT_max);
1925 pT_window.push_back(std::numeric_limits<float>::infinity());
1929 if(eta_window.empty()) {
1930 if(eta_min == eta_min) {
1932 eta_window.push_back(eta_min);
1934 eta_window.push_back(-std::numeric_limits<float>::infinity());
1937 if(eta_max == eta_max) {
1939 eta_window.push_back(eta_max);
1941 eta_window.push_back(std::numeric_limits<float>::infinity());
1953 if(
strict)
return StatusCode::FAILURE;
1957 if(
strict)
return StatusCode::FAILURE;
1962 if(
strict)
return StatusCode::FAILURE;
1966 if(
strict)
return StatusCode::FAILURE;
1972 if(
strict)
return StatusCode::FAILURE;
1976 if(
strict)
return StatusCode::FAILURE;
1980 if(
strict)
return StatusCode::FAILURE;
1986 if(
strict)
return StatusCode::FAILURE;
1990 if(
strict)
return StatusCode::FAILURE;
1994 if(
strict)
return StatusCode::FAILURE;
1998 if(
strict)
return StatusCode::FAILURE;
2003 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!");
2013 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).");
2020 if(
strict)
return StatusCode::FAILURE;
2025 if(
strict)
return StatusCode::FAILURE;
2029 std::vector<float> pT_window;
2030 std::vector<float> eta_window;
2039 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2040 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2041 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2042 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2043 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2047 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2051 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] <<
"]");
2052 if(
strict)
return StatusCode::FAILURE;
2055 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2056 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] <<
"]");
2057 if(
strict)
return StatusCode::FAILURE;
2061 ATH_MSG_WARNING(
"Your baseline tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2062 if(
strict)
return StatusCode::FAILURE;
2070 if (
m_tauId ==
"rnn001") theConfig =
"SUSYTools/tau_selection_rnn001.conf";
2071 else if (
m_tauId ==
"VeryLoose") theConfig =
"SUSYTools/tau_selection_veryloose.conf";
2072 else if (
m_tauId ==
"Loose") theConfig =
"SUSYTools/tau_selection_loose.conf";
2073 else if (
m_tauId ==
"Medium") theConfig =
"SUSYTools/tau_selection_medium.conf";
2074 else if (
m_tauId ==
"Tight") theConfig =
"SUSYTools/tau_selection_tight.conf";
2077 getTauConfig(theConfig, pT_window, eta_window, elOLR, muVeto, muOLR);
2080 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] <<
"]");
2081 if(
strict)
return StatusCode::FAILURE;
2084 if(
m_tauPt > 0 and (
m_tauPt != 1000*pT_window[0] or (pT_window[1] > 0 and
m_tauPt > 1000*pT_window[1]))) {
2085 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] <<
"]");
2086 if(
strict)
return StatusCode::FAILURE;
2090 ATH_MSG_WARNING(
"Your tau eta configuration is inconsistent! eta cut : " <<
m_tauEta <<
" != TauSelectionTool max eta : " << eta_window[eta_window.size()-1]);
2091 if(
strict)
return StatusCode::FAILURE;
2096 return StatusCode::SUCCESS;
2112 return syst.
name().empty();
2117 bool affectsWeights =
false;
2118 for (
const auto&
sys : systSet) {
2120 if(
info.affectsKinematics) {
return false; }
2121 affectsWeights = affectsWeights or
info.affectsWeights;
2123 return affectsWeights;
2128 for (
const auto&
sys : systSet) {
2130 if(
info.affectsKinematics) {
return true; }
2153 return StatusCode::FAILURE;
2156 ATH_MSG_DEBUG(
" in SUSYObjDef_xAOD::applySystematicVariation \"" << systConfig.
name() <<
"\" size " << systConfig.
size());
2163 if ( ret != StatusCode::SUCCESS) {
2164 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2166 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesTool for systematic var. " << systConfig.
name() );
2171 if ( ret != StatusCode::SUCCESS) {
2172 ATH_MSG_VERBOSE(
"Cannot configure JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2174 ATH_MSG_VERBOSE(
"Configured JetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2179 if ( ret != StatusCode::SUCCESS) {
2180 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2182 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (WTag) for systematic var. " << systConfig.
name() );
2187 if ( ret != StatusCode::SUCCESS) {
2188 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2190 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (ZTag) for systematic var. " << systConfig.
name() );
2196 if ( ret != StatusCode::SUCCESS) {
2197 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2199 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (TopTag) for systematic var. " << systConfig.
name() );
2204 if ( ret != StatusCode::SUCCESS) {
2205 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2207 ATH_MSG_VERBOSE(
"Configured (Fat)JetUncertaintiesTool (main) for systematic var. " << systConfig.
name() );
2212 if ( ret != StatusCode::SUCCESS) {
2213 ATH_MSG_VERBOSE(
"Cannot configure FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2215 ATH_MSG_VERBOSE(
"Configured FatJetUncertaintiesPDSmearTool for systematic var. " << systConfig.
name() );
2220 if ( ret != StatusCode::SUCCESS) {
2221 ATH_MSG_VERBOSE(
"Cannot configure (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2223 ATH_MSG_VERBOSE(
"Configured (Fat)JetFFSmearingTool (main) for systematic var. " << systConfig.
name() );
2228 if ( ret != StatusCode::SUCCESS) {
2229 ATH_MSG_VERBOSE(
"Cannot configure NNJvtEfficiency for systematic var. " << systConfig.
name() );
2236 if ( ret != StatusCode::SUCCESS) {
2237 ATH_MSG_VERBOSE(
"Cannot configure fJvtEfficiency for systematic var. " << systConfig.
name() );
2244 if (ret != StatusCode::SUCCESS) {
2245 ATH_MSG_ERROR(
"Cannot configure MuonCalibTool for systematic var. " << systConfig.
name() );
2253 if ( ret != StatusCode::SUCCESS) {
2254 ATH_MSG_ERROR(
"Cannot configure MuonEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2257 ATH_MSG_VERBOSE(
"MuonEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2262 if ( ret != StatusCode::SUCCESS) {
2263 ATH_MSG_ERROR(
"Cannot configure MuonBadMuonHighPtScaleFactors for systematic var. " << systConfig.
name() );
2266 ATH_MSG_VERBOSE(
"MuonBadMuonHighPtScaleFactors configured for systematic var. " << systConfig.
name() );
2271 if ( ret != StatusCode::SUCCESS) {
2272 ATH_MSG_ERROR(
"Cannot configure MuonTTVAEfficiencyScaleFactors for systematic var. " << systConfig.
name() );
2275 ATH_MSG_VERBOSE(
"MuonTTVAEfficiencyScaleFactors configured for systematic var. " << systConfig.
name() );
2280 if ( ret != StatusCode::SUCCESS) {
2281 ATH_MSG_ERROR(
"Cannot configure MuonIsolationScaleFactors for systematic var. " << systConfig.
name() );
2284 ATH_MSG_VERBOSE(
"MuonIsolationScaleFactors configured for systematic var. " << systConfig.
name() );
2289 if ( ret != StatusCode::SUCCESS) {
2290 ATH_MSG_ERROR(
"Cannot configure MuonTriggerScaleFactors for systematic var. " << systConfig.
name() );
2293 ATH_MSG_VERBOSE(
"MuonTriggerScaleFactors configured for systematic var. " << systConfig.
name() );
2298 if (ret != StatusCode::SUCCESS) {
2299 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2302 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2307 if (ret != StatusCode::SUCCESS) {
2308 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (id) for systematic var. " << systConfig.
name() );
2311 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (id) configured for systematic var. " << systConfig.
name() );
2316 if (ret != StatusCode::SUCCESS) {
2317 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2320 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger) configured for systematic var. " << systConfig.
name() );
2325 if (ret != StatusCode::SUCCESS) {
2326 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (trigger SFTool) for systematic var. " << systConfig.
name() );
2329 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (trigger SFTool) configured for systematic var. " << systConfig.
name() );
2335 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2336 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2339 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2340 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2343 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2344 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (dilepton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2346 if (ret != StatusCode::SUCCESS) {
2347 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (dilepton trigger) for systematic var. " << systConfig.
name() );
2350 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (dilepton trigger) configured for systematic var. " << systConfig.
name() );
2356 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2357 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigEffTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2360 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2361 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_elecTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2364 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2365 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_muonTrigSFTools (multilep trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2367 if (ret != StatusCode::SUCCESS) {
2368 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) for systematic var. " << systConfig.
name() );
2371 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (multi-lepton trigger) configured for systematic var. " << systConfig.
name() );
2376 if (ret != StatusCode::SUCCESS) {
2377 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2380 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso) configured for systematic var. " << systConfig.
name() );
2385 if (ret != StatusCode::SUCCESS) {
2386 ATH_MSG_ERROR(
"Cannot configure AsgElectronEfficiencyCorrectionTool (iso high-pt) for systematic var. " << systConfig.
name() );
2389 ATH_MSG_VERBOSE(
"AsgElectronEfficiencyCorrectionTool (iso high-pt) configured for systematic var. " << systConfig.
name() );
2394 if (ret != StatusCode::SUCCESS) {
2395 ATH_MSG_ERROR(
"Cannot configure ElectronChargeEffCorrectionTool for systematic var. " << systConfig.
name() );
2398 ATH_MSG_VERBOSE(
"ElectronChargeEffCorrectionTool configured for systematic var. " << systConfig.
name() );
2403 if (ret != StatusCode::SUCCESS) {
2404 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.
name() );
2407 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool (reco) configured for systematic var. " << systConfig.
name() );
2412 if (ret != StatusCode::SUCCESS) {
2413 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.
name() );
2416 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (iso) for systematic var. " << systConfig.
name() );
2421 if (ret != StatusCode::SUCCESS) {
2422 ATH_MSG_ERROR(
"Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.
name() );
2425 ATH_MSG_VERBOSE(
"AsgPhotonEfficiencyCorrectionTool configured (trigger) for systematic var. " << systConfig.
name() );
2431 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2432 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigEffTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2435 StatusCode ret1 = sfop->applySystematicVariation(systConfig);
2436 if (ret1 != StatusCode::SUCCESS) {
ATH_MSG_ERROR(
"Cannot configure m_photonTrigSFTools (diphoton trigger) for systematic var. " << systConfig.
name() );
return ret1; }
2438 if (ret != StatusCode::SUCCESS) {
2439 ATH_MSG_ERROR(
"Cannot configure TrigGlobalEfficiencyCorrectionTool (diphoton trigger) for systematic var. " << systConfig.
name() );
2442 ATH_MSG_VERBOSE(
"TrigGlobalEfficiencyCorrectionTool (diphoton trigger) configured for systematic var. " << systConfig.
name() );
2447 if (ret != StatusCode::SUCCESS) {
2448 ATH_MSG_ERROR(
"Cannot configure EgammaCalibrationAndSmearingTool for systematic var. " << systConfig.
name() );
2451 ATH_MSG_VERBOSE(
"EgammaCalibrationAndSmearingTool configured for systematic var. " << systConfig.
name() );
2456 if (ret != StatusCode::SUCCESS) {
2457 ATH_MSG_ERROR(
"Cannot configure IsolationCorrectionTool for systematic var. " << systConfig.
name() );
2460 ATH_MSG_VERBOSE(
"IsolationCorrectionTool configured for systematic var. " << systConfig.
name() );
2466 if ( ret != StatusCode::SUCCESS) {
2467 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2470 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency for systematic var. " << systConfig.
name() );
2476 if ( ret != StatusCode::SUCCESS) {
2477 ATH_MSG_ERROR(
"Cannot configure xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2480 ATH_MSG_VERBOSE(
"Configured xAODBTaggingEfficiency (track jets) for systematic var. " << systConfig.
name() );
2485 if ( ret != StatusCode::SUCCESS) {
2486 ATH_MSG_ERROR(
"Cannot configure TauSmearingTool for systematic var. " << systConfig.
name() );
2494 if ( ret != StatusCode::SUCCESS) {
2495 ATH_MSG_ERROR(
"Cannot configure TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2498 ATH_MSG_VERBOSE(
"Configured TauEfficiencyCorrectionsTool for systematic var. " << systConfig.
name() );
2503 if (ret != StatusCode::SUCCESS) {
2504 ATH_MSG_ERROR(
"Cannot configure " <<
tool->name() <<
" for systematic var. " << systConfig.
name() );
2512 if ( ret != StatusCode::SUCCESS) {
2513 ATH_MSG_ERROR(
"Cannot configure METSystematicsTool for systematic var. " << systConfig.
name() );
2516 ATH_MSG_VERBOSE(
"Configured METSystematicsTool for systematic var. " << systConfig.
name() );
2521 if ( ret != StatusCode::SUCCESS) {
2522 ATH_MSG_ERROR(
"Cannot configure PileupReweightingTool for systematic var. " << systConfig.
name() );
2525 ATH_MSG_VERBOSE(
"Configured PileupReweightingTool for systematic var. " << systConfig.
name() );
2531 if ( ret != StatusCode::SUCCESS) {
2532 ATH_MSG_ERROR(
"Cannot configure InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2535 ATH_MSG_VERBOSE(
"Configured InDetTrackFilterTool for systematic var. " << systConfig.
name() );
2539 return StatusCode::SUCCESS;
2545 return vector<ST::SystInfo>();
2554 vector<SystInfo> sysInfoList;
2555 sysInfoList.reserve(recommendedSystematics.
size() * 2);
2563 sysInfoList.push_back(infodef);
2568 for (
const auto&
sys : systSet) {
2573 ATH_MSG_INFO(
"Returning list of " << sysInfoList.size() <<
" systematic variations");
2714 sysInfo.
affectedWeights.insert(ST::Weights::Electron::Reconstruction);
2755 if (
sys.basename().compare(0, 3,
"EG_") == 0) {
2757 }
else if (
sys.basename().compare(0, 3,
"PH_") == 0) {
2759 }
else if (
sys.basename().compare(0, 3,
"EL_") == 0) {
2827 if(
tool->isAffectedBySystematic(
sys)) {
2866 std::string affectedType;
2868 case Unknown : affectedType =
"UNKNOWN";
break;
2869 case Jet : affectedType =
"JET";
break;
2870 case Egamma : affectedType =
"EGAMMA";
break;
2871 case Electron : affectedType =
"ELECTRON";
break;
2872 case Photon : affectedType =
"PHOTON";
break;
2873 case Muon : affectedType =
"MUON";
break;
2874 case Tau : affectedType =
"TAU";
break;
2875 case BTag : affectedType =
"BTAG";
break;
2876 case MET_TST : affectedType =
"MET_TST";
break;
2877 case MET_CST : affectedType =
"MET_CST";
break;
2878 case MET_Track : affectedType =
"MET_Track";
break;
2879 case EventWeight : affectedType =
"EVENT WEIGHT";
break;
2880 case LRT_Object : affectedType =
"LRT_OBJECT";
break;
2886 <<
"for " << affectedType );
2898 if(
evtStore()->contains<xAOD::JetContainer>(
"AntiKt4TruthWZJets") ){
2901 else if(
evtStore()->contains<xAOD::JetContainer>(
"AntiKt4TruthJets")){
2905 ATH_MSG_WARNING(
"No TruthJetContainer found! Dummy null weight retrieved.");
2912 if(jetContainer==
"AntiKt4TruthWZJets"){
2915 else if (jetContainer==
"AntiKt4TruthJets"){
2919 ATH_MSG_WARNING(jetContainer <<
" is no supported by PMGSherpa22VJetsWeightTool! Please check...");
2929 for (
const auto vx : *vertices ) {
2936 ATH_MSG_WARNING(
"Failed to retrieve VertexContainer \"PrimaryVertices\", returning nullptr");
2948 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!");
2973 return StatusCode::SUCCESS;
2981 return StatusCode::FAILURE;
2984 return StatusCode::SUCCESS;
2990 throw std::runtime_error(
"Unable to fetch EventInfo.");
3000 if(!isfinite(pu_weight)) pu_weight = 1.;
3015 if(!isfinite(pu_weight)) pu_weight = 1.;
3047 if (randomrunnumber.isAvailable(*(evtInfo)) && muDependentRRN) {
3048 return randomrunnumber(*(evtInfo));
3050 else if (!muDependentRRN) {
3053 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3061 if(!randomrunnumber.isAvailable(*evtInfo))
3063 return StatusCode::SUCCESS;
3074 if (!randomrunnumber.isAvailable(*(evtInfo))) {
3075 ATH_MSG_ERROR (
"Failed to find RandomRunNumber decoration! You need to call ApplyPRWTool() beforehand!" );
3077 return randomrunnumber(*(evtInfo));
3086 throw std::runtime_error(
"Unable to fetch LargeD0 tracks.");
3098 throw std::runtime_error(
"Unable to fetch LargeD0 GSF tracks.");
3106 if (
isData())
return StatusCode::SUCCESS;
3108 const EventContext& ctx = Gaudi::Hive::currentContext();
3111 ATH_MSG_DEBUG (
"Applying LRT filter tool decorations for uncertainty");
3119 return StatusCode::SUCCESS;
3127 if (theRunNumber<290000)
return 2015;
3128 else if (theRunNumber<320000)
return 2016;
3129 else if (theRunNumber<342000)
return 2017;
3130 else if (theRunNumber<400000)
return 2018;
3131 else if (theRunNumber<445000)
return 2022;
3132 else if (theRunNumber<465000)
return 2023;
3138 #ifdef XAOD_STANDALONE
3144 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_tauEffToolRecommendationTag
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::vector< std::string > m_v_trigs23_cache_singleLep
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
bool m_fatJetUncertaintiesPDsmearing
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 > m_v_trigs24_cache_singleEle
std::vector< std::string > GetTriggerOR(const std::string &trigExpr) const
size_t size() const
returns: size of the set
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
std::string m_muTriggerSFCalibRelease
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
std::vector< CP::SystematicSet > m_fatjetFFSmearingSyst
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
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
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
std::string to_string(const SectorProjector proj)
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
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
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)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
bool currentSystematicIsNominal() const
std::vector< std::string > m_v_trigs17_cache_singleLep
std::string m_muTriggerSFCalibFilename
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
std::string m_trig2024combination_singleLep
bool m_eleForceFullSimCalib
asg::AnaToolHandle< IAsgElectronLikelihoodTool > m_elecSelLikelihoodBaseline
asg::AnaToolHandle< TrigConf::ITrigConfigTool > m_trigConfTool
std::string m_EigenvectorReductionLight
std::vector< std::string > m_v_trigs24_cache_singleLep
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
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
bool m_ApplyMVATESQualityCheck
std::string m_BtagWP_trkJet
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetCorrectionTool > m_fatjetFFSmearingTool
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
const SystematicSet & recommendedSystematics() const
returns: the recommended set of systematics
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::vector< std::string > m_v_trigs23_cache_singleEle
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::string m_trig2023combination_singleLep
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
std::string getDefaultJetUncConfig()
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