ATLAS Offline Software
Loading...
Searching...
No Matches
TauJetRNNUtils.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TAURECTOOLS_TAUJETRNNUTILS_H
6#define TAURECTOOLS_TAUJETRNNUTILS_H
7
8#include "xAODTau/TauJet.h"
10
12
13#include <unordered_map>
14
15
16namespace TauJetRNNUtils {
17
29class VarCalc : public asg::AsgMessaging {
30public:
31 // Pointers to calculator functions
32 using ScalarCalc = bool (*)(const xAOD::TauJet &, double &);
33
34 using TrackCalc = bool (*)(const xAOD::TauJet &, const xAOD::TauTrack &,
35 double &);
36
37 using ClusterCalc = bool (*)(const xAOD::TauJet &,
38 const xAOD::CaloVertexedTopoCluster &, double &);
39
40public:
41 VarCalc();
42 ~VarCalc() = default;
43
44 // Methods to compute the output (vector) based on the variable name
45
46 // Computes high-level ID variables
47 bool compute(const std::string &name, const xAOD::TauJet &tau, double &out) const;
48
49 // Computes track variables
50 bool compute(const std::string &name, const xAOD::TauJet &tau,
51 const std::vector<const xAOD::TauTrack *> &tracks,
52 std::vector<double> &out) const;
53
54 // Computes cluster variables
55 bool compute(const std::string &name, const xAOD::TauJet &tau,
56 const std::vector<xAOD::CaloVertexedTopoCluster> &clusters,
57 std::vector<double> &out) const;
58
59 // Methods to insert calculator functions into the lookup table
60 void insert(const std::string &name, ScalarCalc func, const std::vector<std::string>& scalar_vars);
61 void insert(const std::string &name, TrackCalc func, const std::vector<std::string>& track_vars);
62 void insert(const std::string &name, ClusterCalc func, const std::vector<std::string>& cluster_vars);
63
64private:
65 // Lookup tables
66 std::unordered_map<std::string, ScalarCalc> m_scalar_map;
67 std::unordered_map<std::string, TrackCalc> m_track_map;
68 std::unordered_map<std::string, ClusterCalc> m_cluster_map;
69
70};
71
72// Factory function to create a variable calculator populated with default
73// variables
74std::unique_ptr<VarCalc> get_calculator(const std::vector<std::string>& scalar_vars,
75 const std::vector<std::string>& track_vars,
76 const std::vector<std::string>& cluster_vars,
77 bool useTRT);
78
79
80namespace Variables {
81
82// Functions to calculate (scalar) input variables
83// Returns a status code indicating success
84
85bool centFrac(const xAOD::TauJet &tau, double &out);
86
87bool etOverPtLeadTrk(const xAOD::TauJet &tau, double &out);
88
89bool innerTrkAvgDist(const xAOD::TauJet &tau, double &out);
90
91bool absipSigLeadTrk(const xAOD::TauJet &tau, double &out);
92
93bool SumPtTrkFrac(const xAOD::TauJet &tau, double &out);
94
95bool EMPOverTrkSysP(const xAOD::TauJet &tau, double &out);
96
97bool ptRatioEflowApprox(const xAOD::TauJet &tau, double &out);
98
99bool mEflowApprox(const xAOD::TauJet &tau, double &out);
100
101bool dRmax(const xAOD::TauJet &tau, double &out);
102
103bool trFlightPathSig(const xAOD::TauJet &tau, double &out);
104
105bool massTrkSys(const xAOD::TauJet &tau, double &out);
106
107bool pt(const xAOD::TauJet &tau, double &out);
108
109bool pt_tau_log(const xAOD::TauJet &tau, double &out);
110
111bool ptDetectorAxis(const xAOD::TauJet &tau, double &out);
112
113//functions to calculate input variables needed for the eVeto RNN
114bool ptJetSeed_log (const xAOD::TauJet &tau, double &out);
115bool absleadTrackEta (const xAOD::TauJet &tau, double &out);
116bool leadTrackDeltaEta (const xAOD::TauJet &tau, double &out);
117bool leadTrackDeltaPhi (const xAOD::TauJet &tau, double &out);
118bool leadTrackProbNNorHT (const xAOD::TauJet &tau, double &out);
119bool leadTrackProbNNorHT_noTRT (const xAOD::TauJet &tau, double &out);
120bool EMFracFixed (const xAOD::TauJet &tau, double &out);
121bool etHotShotWinOverPtLeadTrk (const xAOD::TauJet &tau, double &out);
122bool hadLeakFracFixed (const xAOD::TauJet &tau, double &out);
123bool PSFrac (const xAOD::TauJet &tau, double &out);
124bool ClustersMeanCenterLambda (const xAOD::TauJet &tau, double &out);
125bool ClustersMeanEMProbability (const xAOD::TauJet &tau, double &out);
126bool ClustersMeanFirstEngDens (const xAOD::TauJet &tau, double &out);
127bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, double &out);
128bool ClustersMeanSecondLambda (const xAOD::TauJet &tau, double &out);
129bool EMPOverTrkSysP (const xAOD::TauJet &tau, double &out);
130
131
132namespace Track {
133
134// Functions to calculate input variables for each track
135// Returns a status code indicating success
136
137bool pt_log(
138 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
139
140bool pt_tau_log(
141 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
142
143bool pt_jetseed_log(
144 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
145
146bool d0_abs_log(
147 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
148
150 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
151
152bool z0sinthetaTJVA(
153 const xAOD::TauJet& tau, const xAOD::TauTrack &track, double &out);
154
156 const xAOD::TauJet& tau, const xAOD::TauTrack &track, double &out);
157
158bool d0TJVA(
159 const xAOD::TauJet& tau, const xAOD::TauTrack &track, double &out);
160
161bool d0SigTJVA(
162 const xAOD::TauJet& tau, const xAOD::TauTrack &track, double &out);
163
164bool dEta(
165 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
166
167bool dPhi(
168 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
169
171 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
172
173bool nPixelHits(
174 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
175
176bool nSCTHits(
177 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
178
179// trigger variants
180bool nIBLHitsAndExp (
181 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
182
184 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
185
187 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
188
190 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
191
193 const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out);
194
195} // namespace Track
196
197
198namespace Cluster {
199
200// Functions to calculate input variables for each cluster
201// Returns a status code indicating success
202
203bool et_log(
204 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
205
206bool pt_tau_log(
207 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
208
209bool pt_jetseed_log(
210 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
211
212bool dEta(
213 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
214
215bool dPhi(
216 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
217
218bool SECOND_R(
219 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
220
221bool SECOND_LAMBDA(
222 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
223
224bool CENTER_LAMBDA(
225 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
226
228 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
229
231 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
232
234 const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out);
235
236} // namespace Cluster
237} // namespace Variables
238} // namespace TauJetRNNUtils
239
240#endif // TAURECTOOLS_TAUJETRNNUTILS_H
Evaluate cluster kinematics with a different vertex / signal state.
std::unordered_map< std::string, ClusterCalc > m_cluster_map
bool(*)(const xAOD::TauJet &, double &) ScalarCalc
bool compute(const std::string &name, const xAOD::TauJet &tau, double &out) const
void insert(const std::string &name, ScalarCalc func, const std::vector< std::string > &scalar_vars)
bool(*)(const xAOD::TauJet &, const xAOD::TauTrack &, double &) TrackCalc
std::unordered_map< std::string, ScalarCalc > m_scalar_map
bool(*)(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &, double &) ClusterCalc
std::unordered_map< std::string, TrackCalc > m_track_map
Class mimicking the AthMessaging class from the offline software.
Evaluate cluster kinematics with a different vertex / signal state.
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, double &out)
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool et_log(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool SECOND_LAMBDAOverClustersMeanSecondLambda(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool CENTER_LAMBDAOverClustersMeanCenterLambda(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool FirstEngDensOverClustersMeanFirstEngDens(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, double &out)
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool z0sinthetaSigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool nPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool nSCTHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool nInnermostPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool nIBLHitsAndExp(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool pt_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool d0_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool nPixelHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool z0sinthetaTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
bool eProbabilityNNorHT_noTRT(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool eProbabilityNNorHT(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool z0sinThetaTJVA_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool d0SigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
bool innerTrkAvgDist(const xAOD::TauJet &tau, double &out)
bool etOverPtLeadTrk(const xAOD::TauJet &tau, double &out)
bool ClustersMeanCenterLambda(const xAOD::TauJet &tau, double &out)
bool pt_tau_log(const xAOD::TauJet &tau, double &out)
bool ptJetSeed_log(const xAOD::TauJet &tau, double &out)
bool pt(const xAOD::TauJet &tau, double &out)
bool trFlightPathSig(const xAOD::TauJet &tau, double &out)
bool ptDetectorAxis(const xAOD::TauJet &tau, double &out)
bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, double &out)
bool ClustersMeanFirstEngDens(const xAOD::TauJet &tau, double &out)
bool ClustersMeanEMProbability(const xAOD::TauJet &tau, double &out)
bool etHotShotWinOverPtLeadTrk(const xAOD::TauJet &tau, double &out)
bool PSFrac(const xAOD::TauJet &tau, double &out)
bool leadTrackDeltaEta(const xAOD::TauJet &tau, double &out)
bool hadLeakFracFixed(const xAOD::TauJet &tau, double &out)
bool ptRatioEflowApprox(const xAOD::TauJet &tau, double &out)
bool EMFracFixed(const xAOD::TauJet &tau, double &out)
bool leadTrackProbNNorHT(const xAOD::TauJet &tau, double &out)
bool EMPOverTrkSysP(const xAOD::TauJet &tau, double &out)
bool mEflowApprox(const xAOD::TauJet &tau, double &out)
bool absleadTrackEta(const xAOD::TauJet &tau, double &out)
bool absipSigLeadTrk(const xAOD::TauJet &tau, double &out)
bool leadTrackProbNNorHT_noTRT(const xAOD::TauJet &tau, double &out)
bool centFrac(const xAOD::TauJet &tau, double &out)
bool dRmax(const xAOD::TauJet &tau, double &out)
bool massTrkSys(const xAOD::TauJet &tau, double &out)
bool leadTrackDeltaPhi(const xAOD::TauJet &tau, double &out)
bool SumPtTrkFrac(const xAOD::TauJet &tau, double &out)
bool ClustersMeanSecondLambda(const xAOD::TauJet &tau, double &out)
std::unique_ptr< VarCalc > get_calculator(const std::vector< std::string > &scalar_vars, const std::vector< std::string > &track_vars, const std::vector< std::string > &cluster_vars, bool useTRT)
TauTrack_v1 TauTrack
Definition of the current version.
Definition TauTrack.h:16
TauJet_v3 TauJet
Definition of the current "tau version".