ATLAS Offline Software
Loading...
Searching...
No Matches
TauGNNDataLoader.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#pragma once
6
7#include "xAODTau/TauJet.h"
8
10
17
18// Functions to calculate (scalar) input variables
19// Returns a status code indicating success
20namespace TauScalarVars{
21 bool eta(const xAOD::TauJet &tau, float &out);
22 bool absEta(const xAOD::TauJet &tau, float &out);
23 bool centFrac(const xAOD::TauJet &tau, float &out);
24 bool isolFrac(const xAOD::TauJet &tau, float &out);
25 bool etOverPtLeadTrk(const xAOD::TauJet &tau, float &out);
26 bool innerTrkAvgDist(const xAOD::TauJet &tau, float &out);
27 bool absipSigLeadTrk(const xAOD::TauJet &tau, float &out);
28 bool sumEMCellEtOverLeadTrkPt(const xAOD::TauJet &tau, float &out);
29 bool SumPtTrkFrac(const xAOD::TauJet &tau, float &out);
30 bool EMPOverTrkSysP(const xAOD::TauJet &tau, float &out);
31 bool ptRatioEflowApprox(const xAOD::TauJet &tau, float &out);
32 bool mEflowApprox(const xAOD::TauJet &tau, float &out);
33 bool dRmax(const xAOD::TauJet &tau, float &out);
34 bool trFlightPathSig(const xAOD::TauJet &tau, float &out);
35 bool massTrkSys(const xAOD::TauJet &tau, float &out);
36 bool pt(const xAOD::TauJet &tau, float &out);
37 bool pt_tau_log(const xAOD::TauJet &tau, float &out);
38 bool ptDetectorAxis(const xAOD::TauJet &tau, float &out);
39 bool ptIntermediateAxis(const xAOD::TauJet &tau, float &out);
40 bool ptJetSeed(const xAOD::TauJet &tau, float &out);
41 bool etaJetSeed(const xAOD::TauJet &tau, float &out);
42 bool phiJetSeed(const xAOD::TauJet &tau, float &out);
43 bool mJetSeed(const xAOD::TauJet &tau, float &out);
44
45 //functions to calculate input variables needed for the eVeto RNN
46 bool ptJetSeed_log (const xAOD::TauJet &tau, float &out);
47 bool absleadTrackEta (const xAOD::TauJet &tau, float &out);
48 bool leadTrackDeltaEta (const xAOD::TauJet &tau, float &out);
49 bool leadTrackDeltaPhi (const xAOD::TauJet &tau, float &out);
50 bool leadTrackProbNNorHT (const xAOD::TauJet &tau, float &out);
51 bool EMFracFixed (const xAOD::TauJet &tau, float &out);
52 bool etHotShotWinOverPtLeadTrk (const xAOD::TauJet &tau, float &out);
53 bool hadLeakFracFixed (const xAOD::TauJet &tau, float &out);
54 bool PSFrac (const xAOD::TauJet &tau, float &out);
55 bool ClustersMeanCenterLambda (const xAOD::TauJet &tau, float &out);
56 bool ClustersMeanEMProbability (const xAOD::TauJet &tau, float &out);
57 bool ClustersMeanFirstEngDens (const xAOD::TauJet &tau, float &out);
58 bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, float &out);
59 bool ClustersMeanSecondLambda (const xAOD::TauJet &tau, float &out);
60 bool EMPOverTrkSysP (const xAOD::TauJet &tau, float &out);
61 // Extension - Variables for GNTau-eVeto
62 bool TauChargedTrk_eProbNN (const xAOD::TauJet &tau, float &out);
63
64}//namespace TauScalarVars
65
67 public:
68 struct Config {
69 std::string nnFile;
70 std::string input_layer_scalar;
71 std::string input_layer_tracks;
73 std::string input_layer_hits;
74 std::string output_node_tau;
75 std::string output_node_jet;
76 size_t n_max_tracks{};
77 size_t n_max_clusters{};
79 size_t n_max_hits{};
82 bool useTRT{};
83 std::string hits_decor_name;
84 };
86 std::shared_ptr<const FlavorTagInference::SaltModel> salt_model,
87 const Config& config
88 );
89 ~TauGNNDataLoader() = default;
90 private:
91 using ScalarCalcByRef_t = std::function<bool(const xAOD::TauJet &, float &)>;
92 using ScalarCalc_t = std::function<float(const xAOD::IParticle*)>;
93 ScalarCalc_t getScalarCalc(const std::string &name) const;
94 inline static const std::unordered_map<std::string, ScalarCalcByRef_t> m_func_map = {
95 {"isolFrac", TauScalarVars::isolFrac},
96 {"centFrac", TauScalarVars::centFrac},
97 {"etOverPtLeadTrk", TauScalarVars::etOverPtLeadTrk},
98 {"innerTrkAvgDist", TauScalarVars::innerTrkAvgDist},
99 {"absipSigLeadTrk", TauScalarVars::absipSigLeadTrk},
100 {"SumPtTrkFrac", TauScalarVars::SumPtTrkFrac},
101 {"sumEMCellEtOverLeadTrkPt", TauScalarVars::sumEMCellEtOverLeadTrkPt},
102 {"EMPOverTrkSysP", TauScalarVars::EMPOverTrkSysP},
103 {"ptRatioEflowApprox", TauScalarVars::ptRatioEflowApprox},
104 {"mEflowApprox", TauScalarVars::mEflowApprox},
105 {"dRmax", TauScalarVars::dRmax},
106 {"trFlightPathSig", TauScalarVars::trFlightPathSig},
107 {"massTrkSys", TauScalarVars::massTrkSys},
108 {"pt", TauScalarVars::pt},
109 {"eta", TauScalarVars::eta},
110 {"ptJetSeed", TauScalarVars::ptJetSeed},
111 {"etaJetSeed", TauScalarVars::etaJetSeed},
112 // Extension - Variables for GNTau-eVeto
113 {"pt_tau_log", TauScalarVars::pt_tau_log},
114 {"ABS_ETA_LEAD_TRACK", TauScalarVars::absleadTrackEta},
115 {"etHotShotWinOverPtLeadTrk", TauScalarVars::etHotShotWinOverPtLeadTrk},
116 {"PSSFraction", TauScalarVars::PSFrac},
117 {"ClustersMeanFirstEngDens", TauScalarVars::ClustersMeanFirstEngDens},
118 {"ClustersMeanPresamplerFrac", TauScalarVars::ClustersMeanPresamplerFrac},
119 {"TauChargedTrk_eProbNN", TauScalarVars::TauChargedTrk_eProbNN}
120 };
121};
Scalar eta() const
pseudorapidity method
~TauGNNDataLoader()=default
ScalarCalc_t getScalarCalc(const std::string &name) const
std::function< bool(const xAOD::TauJet &, float &)> ScalarCalcByRef_t
std::function< float(const xAOD::IParticle *)> ScalarCalc_t
TauGNNDataLoader(std::shared_ptr< const FlavorTagInference::SaltModel > salt_model, const Config &config)
static const std::unordered_map< std::string, ScalarCalcByRef_t > m_func_map
Class mimicking the AthMessaging class from the offline software.
Class providing the definition of the 4-vector interface.
bool etHotShotWinOverPtLeadTrk(const xAOD::TauJet &tau, float &out)
bool phiJetSeed(const xAOD::TauJet &tau, float &out)
bool ptDetectorAxis(const xAOD::TauJet &tau, float &out)
bool ClustersMeanCenterLambda(const xAOD::TauJet &tau, float &out)
bool pt(const xAOD::TauJet &tau, float &out)
bool ptIntermediateAxis(const xAOD::TauJet &tau, float &out)
bool EMFracFixed(const xAOD::TauJet &tau, float &out)
bool isolFrac(const xAOD::TauJet &tau, float &out)
bool massTrkSys(const xAOD::TauJet &tau, float &out)
bool PSFrac(const xAOD::TauJet &tau, float &out)
bool ClustersMeanFirstEngDens(const xAOD::TauJet &tau, float &out)
bool sumEMCellEtOverLeadTrkPt(const xAOD::TauJet &tau, float &out)
bool EMPOverTrkSysP(const xAOD::TauJet &tau, float &out)
bool leadTrackProbNNorHT(const xAOD::TauJet &tau, float &out)
bool ptJetSeed_log(const xAOD::TauJet &tau, float &out)
bool leadTrackDeltaEta(const xAOD::TauJet &tau, float &out)
bool etaJetSeed(const xAOD::TauJet &tau, float &out)
bool etOverPtLeadTrk(const xAOD::TauJet &tau, float &out)
bool absEta(const xAOD::TauJet &tau, float &out)
bool hadLeakFracFixed(const xAOD::TauJet &tau, float &out)
bool leadTrackDeltaPhi(const xAOD::TauJet &tau, float &out)
bool mEflowApprox(const xAOD::TauJet &tau, float &out)
bool innerTrkAvgDist(const xAOD::TauJet &tau, float &out)
bool centFrac(const xAOD::TauJet &tau, float &out)
bool ptRatioEflowApprox(const xAOD::TauJet &tau, float &out)
bool trFlightPathSig(const xAOD::TauJet &tau, float &out)
bool ClustersMeanSecondLambda(const xAOD::TauJet &tau, float &out)
bool mJetSeed(const xAOD::TauJet &tau, float &out)
bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, float &out)
bool ClustersMeanEMProbability(const xAOD::TauJet &tau, float &out)
bool dRmax(const xAOD::TauJet &tau, float &out)
bool pt_tau_log(const xAOD::TauJet &tau, float &out)
bool absipSigLeadTrk(const xAOD::TauJet &tau, float &out)
bool SumPtTrkFrac(const xAOD::TauJet &tau, float &out)
bool eta(const xAOD::TauJet &tau, float &out)
bool ptJetSeed(const xAOD::TauJet &tau, float &out)
bool TauChargedTrk_eProbNN(const xAOD::TauJet &tau, float &out)
bool absleadTrackEta(const xAOD::TauJet &tau, float &out)
TauJet_v3 TauJet
Definition of the current "tau version".
Definition TauJet.h:17