diff --git a/FTagDumper/src/JetDumperConfig.cxx b/FTagDumper/src/JetDumperConfig.cxx index 671457ae44523e06bc01513c77f7689335ea0687..9cd750572a98c1b712b30386c49c110451aa1f97 100644 --- a/FTagDumper/src/JetDumperConfig.cxx +++ b/FTagDumper/src/JetDumperConfig.cxx @@ -275,6 +275,7 @@ namespace { TRY(stableNonGeant); TRY(higgs); TRY(top); + TRY(stableCharged); #undef TRY throw std::logic_error("unknown truth particle type: " + name); } diff --git a/FTagDumper/src/JetTruthAssociator.cxx b/FTagDumper/src/JetTruthAssociator.cxx index ab825331367f8b6bcf3fce2dd98b6d4d7f70f0fc..3dc7d822f9398348c4d61de552cfb6f9d4b117b6 100644 --- a/FTagDumper/src/JetTruthAssociator.cxx +++ b/FTagDumper/src/JetTruthAssociator.cxx @@ -32,6 +32,13 @@ namespace { return true; } + bool is_stable_charged(const xAOD::TruthParticle& x) { + if (x.status() != 1) return false; // not stable + if (x.e() <= 500) return false; // energy <= 500 MeV + if (!x.isCharged()) return false; // not charged + return true; +} + std::function<bool(const xAOD::TruthParticle&)> get_selector( TruthSelectorConfig::Particle particle) { @@ -95,6 +102,8 @@ namespace { return [](const TP& x) { return is_higgs(x); }; case p::top: return [](const TP& x) { return is_top(x); }; + case p::stableCharged: + return [](const TP& x) {return is_stable_charged(x); }; default: throw std::logic_error("unknown particle type"); } diff --git a/FTagDumper/src/TruthSelectorConfig.hh b/FTagDumper/src/TruthSelectorConfig.hh index a0a677f7ba702f084135a9e3e9e7f0f335d5cb9d..a9440d8cd48923e3ae3793013121abbcf070c061 100644 --- a/FTagDumper/src/TruthSelectorConfig.hh +++ b/FTagDumper/src/TruthSelectorConfig.hh @@ -17,7 +17,7 @@ struct TruthSelectorConfig std::vector<std::string> containers; enum class Particle { hadron, lepton, fromBC, overlapLepton, promptLepton, nonPromptLepton, muon, stableNonGeant, higgs, top, - any}; + any, stableCharged}; Particle particle; TruthKinematicConfig kinematics; }; diff --git a/configs/TracklessEMPFlow.json b/configs/TracklessEMPFlow.json index 0ef55509d20f8c81bed0820eace1f2effd42669b..83b280737f0029e542305ec9ae9b76e27b740e0d 100644 --- a/configs/TracklessEMPFlow.json +++ b/configs/TracklessEMPFlow.json @@ -117,7 +117,9 @@ "variables": { "file": "fragments/pflow-track-variables-all.json", "ints" :[ - "TrackID" + "TrackID", + "ftagTruthBarcode", + "ftagTruthParentBarcode" ] }, "ip_prefix": "btagIp_" @@ -144,7 +146,22 @@ "particles": "promptLepton" }, "decorate_summary": true + }, + { + "association": { + "file": "fragments/baseline-truth-kinematics.json", + "particles": "stableCharged" + }, + "association_name": "charged_particles", + "output": { + "n_to_save": 40, + "sort_order": "pt" + }, + "vars" : { + "file": "fragments/truth-variables.json" + } } + ], "decorate": { "jet_aug": false, diff --git a/configs/trigger_hits.json b/configs/trigger_hits.json index fe6f32df793f42346df558b3786d3a50421fac87..607b50c895e00da8e2d6bf751d578edf5df69380 100644 --- a/configs/trigger_hits.json +++ b/configs/trigger_hits.json @@ -20,7 +20,8 @@ "isBarrel", "j", "a", - "b" + "b", + "TruthBarcode" ] } }