ATLAS Offline Software
DecoratePromptLeptonRNN.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Local
9 
10 // xAOD
14 
15 // ROOT
16 #include "TH1.h"
17 
18 //=============================================================================
19 Prompt::DecoratePromptLeptonRNN::DecoratePromptLeptonRNN(const std::string& name, ISvcLocator* pSvcLocator):
20  AthAlgorithm(name, pSvcLocator),
21  m_histSvc ("THistSvc/THistSvc", name),
22  m_countEvent(0)
23 {}
24 
25 //=============================================================================
27 {
28  ATH_MSG_DEBUG("Initializing DecoratePromptLeptonRNN...");
29 
30  // Initialize read/write handles
31  ATH_CHECK(m_inputContainerLeptonKey.initialize());
32  ATH_CHECK(m_inputContainerTrackKey.initialize());
33  ATH_CHECK(m_inputContainerTrackJetKey.initialize());
34  ATH_CHECK(m_inputContainerPrimaryVerticesKey.initialize());
35 
36  ATH_CHECK(m_eventHandleKey.initialize());
37 
38  //
39  // Initialize tools and services
40  //
41  ATH_CHECK( m_histSvc.retrieve() );
42 
43  for(const std::string &label: m_toolRNN->getOutputLabels()) {
44  const std::string key = m_decorationPrefixRNN + label;
45 
46  ATH_MSG_DEBUG("Add output RNN label: \"" << key << "\"");
47 
48  m_decoratorMap.insert(decoratorFloatMap_t::value_type(key, std::make_unique<decoratorFloat_t>(key)));
49  }
50 
51  ATH_MSG_DEBUG("inputContainerMuon=\"" << m_inputContainerLeptonKey << "\"");
52 
53  //
54  // Instantiate Muon quality accessors
55  //
56  m_accessQuality = std::make_unique<SG::AuxElement::ConstAccessor<unsigned char> >("quality");
57 
58  m_timerEvent.Reset();
59 
60  ATH_MSG_DEBUG("DecoratePromptLeptonRNN initialized successfully.");
61 
62  return StatusCode::SUCCESS;
63 
64 }
65 
66 //=============================================================================
68 {
69  //
70  // Process current event
71  //
72  TimerScopeHelper timer(m_timerEvent);
73 
74  ATH_MSG_DEBUG("execute() - begin...");
75 
76  m_countEvent++;
77 
78  //
79  // Retrieve object containers and event info
80  //
81  SG::ReadHandle<xAOD::IParticleContainer> h_leptons (m_inputContainerLeptonKey);
82  SG::ReadHandle<xAOD::TrackParticleContainer> h_tracks (m_inputContainerTrackKey);
83  SG::ReadHandle<xAOD::JetContainer> h_trackJets (m_inputContainerTrackJetKey);
84  SG::ReadHandle<xAOD::VertexContainer> h_vertices (m_inputContainerPrimaryVerticesKey);
85 
86  SG::ReadHandle<xAOD::EventInfo> event_handle (m_eventHandleKey);
87 
88  ATH_MSG_DEBUG("Size of LeptonContainer: " << h_leptons->size());
89 
90  //
91  // Find default Primary Vertex
92  //
93  const xAOD::Vertex *primaryVertex = nullptr;
94 
95  for(const xAOD::Vertex *vertex: *h_vertices) {
96  if(vertex->vertexType() == xAOD::VxType::PriVtx) {
97  primaryVertex = vertex;
98  break;
99  }
100  }
101 
102  //
103  // Collect tracks
104  //
105  for(const xAOD::IParticle *lepton: *h_leptons) {
106  //
107  // Select lepton track
108  //
109  const xAOD::TrackParticle *trackLep = nullptr;
110  const xAOD::Electron *elec = dynamic_cast<const xAOD::Electron*>(lepton);
111  const xAOD::Muon *muon = dynamic_cast<const xAOD::Muon *>(lepton);
112 
113  if(elec) {
114  const xAOD::TrackParticle *bestmatchedGSFElTrack = elec->trackParticle(0);
115  if(bestmatchedGSFElTrack) {
116  trackLep = xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF(bestmatchedGSFElTrack);
117  }
118  }
119  else if (muon) {
120  trackLep = findMuonTrack(muon);
121  }
122  else {
123  ATH_MSG_WARNING("execute - failed to find electron or muon: should never happen!");
124  }
125 
126  //
127  // Find closest track jet
128  //
129  const xAOD::Jet *trackJet = findClosestTrackJet(trackLep, *h_trackJets);
130 
131  if(!trackLep || !trackJet) {
132  compDummy(*lepton, m_decorationPrefixRNN);
133  continue;
134  }
135 
136  //
137  // Select tracks within cone around lepton track.
138  //
139  std::vector<Prompt::VarHolder > select_tracks;
140 
141  Prompt::VarHolder lepton_obj;
142 
143  if(!prepTrackObject(lepton_obj, *trackLep, *trackLep, *trackJet, *primaryVertex, *event_handle)) {
144  continue;
145  }
146 
147  //
148  // Add lepton track as one of the cone tracks.
149  //
150  select_tracks.push_back(lepton_obj);
151 
152  for(const xAOD::TrackParticle *track: *h_tracks) {
153 
154  if(!track) {
155  ATH_MSG_WARNING("Prompt::DecoratePromptLeptonRNN::execute - skip null track pointer - should never happen");
156  continue;
157  }
158 
159  Prompt::VarHolder track_obj;
160 
161  if(!prepTrackObject(track_obj, *track, *trackLep, *trackJet, *primaryVertex, *event_handle)) {
162  continue;
163  }
164 
165  if(passTrack(track_obj)) {
166  select_tracks.push_back(track_obj);
167 
168  ATH_MSG_DEBUG("Prompt::DecoratePromptLeptonRNN::execute - passed track pT= " << track->pt());
169  }
170  }
171 
172  //
173  // Sort tracks by DR distance to lepton
174  //
175  std::sort(select_tracks.begin(), select_tracks.end(), Prompt::SortObjectByVar(Def::LepTrackDR, msg()));
176 
177  //
178  // Compute RNN
179  //
180  compScore(*lepton, select_tracks, m_decorationPrefixRNN);
181 
182  ATH_MSG_DEBUG("DecoratePromptLeptonRNN::CompScore - " << std::endl
183  << "lepton pT= " << lepton->pt()
184  << ", number of tracks: " << select_tracks.size());
185  }
186 
187  return StatusCode::SUCCESS;
188 }
189 
190 //=============================================================================
192 {
193  //
194  // Finalize output
195  //
196  if(m_printTime) {
197  //
198  // Print full time stopwatch
199  //
200  ATH_MSG_INFO("DecoratePromptLeptonRNN - total time: " << PrintResetStopWatch(m_timerEvent));
201  ATH_MSG_INFO("DecoratePromptLeptonRNN - processed " << m_countEvent << " events.");
202  }
203 
204  return StatusCode::SUCCESS;
205 }
206 
207 //=============================================================================
209 {
210  //
211  // Process muon - return true if all information present for RNN
212  //
213  if(muon->muonType() != xAOD::Muon::Combined || !muon->inDetTrackParticleLink().isValid()) {
214  return 0;
215  }
216 
217  const unsigned char quality = (*m_accessQuality)(*muon);
218 
219  ATH_MSG_DEBUG("muon pT=" << muon->pt() << " quality=" << int(quality) << " medium=" << int(xAOD::Muon::Medium));
220 
221  const xAOD::TrackParticle *trackLep = *(muon->inDetTrackParticleLink());
222 
223  return trackLep;
224 }
225 
226 //=============================================================================
228  const xAOD::JetContainer &trackJets)
229 {
230  //
231  // Find track jet closest to IParticle and within fixed cone
232  //
233  if(!particle) {
234  return 0;
235  }
236 
237  const xAOD::Jet *trackJet = 0;
238  double currTrackJetDR = -1.0;
239 
240  //
241  // Select track jet within cone around muon
242  //
243  for(const xAOD::Jet *jet: trackJets) {
244  const double dr = particle->p4().DeltaR(jet->p4());
245 
246  if(currTrackJetDR < 0.0 || dr < currTrackJetDR) {
247  trackJet = jet;
248  currTrackJetDR = dr;
249  }
250  }
251 
252  if(trackJet && currTrackJetDR < m_maxLepTrackJetDR) {
253  return trackJet;
254  }
255 
256  return 0;
257 }
258 
259 //=============================================================================
262  const xAOD::TrackParticle &track,
263  const xAOD::TrackParticle &lepton,
264  const xAOD::Jet &trackJet,
265  const xAOD::Vertex &priVtx,
266  const xAOD::EventInfo event
267 )
268 {
269  //
270  // Add xAOD::TrackParticle variables to the track object VarHolder
271  //
278 
279  if(!(track.summaryValue(numberOfPixelHits, xAOD::numberOfPixelHits))) return false;
280  if(!(track.summaryValue(numberOfSCTHits, xAOD::numberOfSCTHits))) return false;
281  if(!(track.summaryValue(numberOfPixelHoles, xAOD::numberOfPixelHoles))) return false;
282  if(!(track.summaryValue(numberOfSCTHoles, xAOD::numberOfSCTHoles))) return false;
283  if(!(track.summaryValue(numberOfPixelSharedHits, xAOD::numberOfPixelSharedHits))) return false;
284  if(!(track.summaryValue(numberOfSCTSharedHits, xAOD::numberOfSCTSharedHits))) return false;
285 
286  const uint8_t NSiHits = numberOfPixelHits + numberOfSCTHits;
287  const uint8_t NSiHoles = numberOfPixelHoles + numberOfSCTHoles;
288  const float NSiShHits = float(numberOfPixelSharedHits) + float(numberOfSCTSharedHits)/2.0;
289 
290  p.addVar(Def::Pt, track.pt());
291  p.addVar(Def::AbsEta, std::fabs(track.eta()));
294  p.addVar(Def::NumberOfSiHits, NSiHits);
295  p.addVar(Def::NumberOfSharedSiHits, NSiShHits);
296  p.addVar(Def::NumberOfSiHoles, NSiHoles);
298 
299  //
300  // Add lepton - jet variables to VarHolder
301  //
302  double PtFrac = -99.;
303 
304  if(track.pt() > 0.0 && trackJet.pt() > 0.0) {
305  PtFrac = track.pt() / trackJet.pt();
306  }
307 
309  p.addVar(Def::TrackJetDR, track.p4().DeltaR(trackJet.p4()));
310  p.addVar(Def::LepTrackDR, track.p4().DeltaR(lepton.p4()));
311 
312  //
313  // Add Impact Parameters
314  //
315  double d0_significance = -99.;
316  double Z0Sin = 0.0;
317 
318  if(track.definingParametersCovMatrixVec().size() > 0 && track.definingParametersCovMatrixVec().at(0) > 0.0) {
319  d0_significance = xAOD::TrackingHelpers::d0significance(&track,
320  event.beamPosSigmaX(),
321  event.beamPosSigmaY(),
322  event.beamPosSigmaXY());
323  }
324 
325  const double deltaZ0 = track.z0() + track.vz() - priVtx.z();
326  Z0Sin = deltaZ0*std::sin(track.theta());
327 
328  p.addVar(Def::Z0Sin, Z0Sin);
329  p.addVar(Def::D0Sig, d0_significance);
330 
331  return true;
332 }
333 
334 //=============================================================================
336 {
337  //
338  // Select cone tracks
339  //
340  if(p.getVar(Def::LepTrackDR) < m_minTrackLeptonDR) return false;
341  if(p.getVar(Def::LepTrackDR) > m_maxTrackLeptonDR) return false;
342 
343  //
344  // Kinematic track selection
345  //
346  if(p.getVar(Def::Pt) < m_minTrackpT) return false;
347  if(p.getVar(Def::AbsEta) > m_maxTrackEta) return false;
348  if(std::fabs(p.getVar(Def::Z0Sin)) > m_maxTrackZ0Sin) return false;
349 
350  //
351  // Hit quality track selection
352  //
353  if(p.getVar(Def::NumberOfSiHits) < m_minTrackSiHits) return false;
354  if(p.getVar(Def::NumberOfSharedSiHits) > m_maxTrackSharedSiHits) return false;
355  if(p.getVar(Def::NumberOfSiHoles) > m_maxTrackSiHoles) return false;
356  if(p.getVar(Def::NumberOfPixelHoles) > m_maxTrackPixHoles) return false;
357 
358  return true;
359 }
360 
361 //=============================================================================
363  const std::vector<Prompt::VarHolder> &tracks,
364  const std::string &prefix)
365 {
366  //
367  // Call the RNN tool to get the RNN prediction for the leptons and decorate the lepton with those RNN scores.
368  //
369  ATH_MSG_DEBUG("compScore - number of tracks: " << tracks.size());
370 
371  for(const Prompt::VarHolder &o: tracks) {
372  ATH_MSG_DEBUG("compScore - track: LepTrackDR = " << o.getVar(Def::LepTrackDR)
373  << ", TrackJetDR = " << o.getVar(Def::TrackJetDR)
374  << ", D0Sig = " << o.getVar(Def::D0Sig)
375  << ", Z0Sin = " << o.getVar(Def::Z0Sin)
376  << ", NumberOfPIXHits = " << o.getVar(Def::NumberOfPIXHits)
377  << ", NumberOfSCTHits = " << o.getVar(Def::NumberOfSCTHits)
378  << ", PtFrac = " << o.getVar(Def::TrackPtOverTrackJetPt) );
379  }
380 
381  const std::map<std::string, double> results = m_toolRNN->computeRNNOutput(tracks);
382 
383  for(const std::pair<const std::string, double>& v: results) {
384  //
385  // Decorate muon
386  //
387  const std::string dkey = prefix + v.first;
388 
389  ATH_MSG_DEBUG("DecoratePromptLeptonRNN compScore - " << v.first << " = " << v.second );
390 
391  decoratorFloatMap_t::iterator dit = m_decoratorMap.find(dkey);
392 
393  // TODO: make sure this fits within the StoreGate framework
394  // for memory access
395  if(dit != m_decoratorMap.end()) {
396  (*dit->second)(particle) = v.second;
397  }
398  else {
399  ATH_MSG_WARNING("CompScore - unknown output label=\"" << dkey << "\"");
400  }
401 
402  if(m_debug) {
403  std::map<std::string, TH1*>::iterator hit = m_hists.find(v.first);
404 
405  if(hit == m_hists.end()) {
406  TH1* h = 0;
407 
408  StatusCode hist_status = makeHist(h, v.first, 100, 0.0, 1.0);
409  if (hist_status != StatusCode::SUCCESS){
410  ATH_MSG_WARNING("DecoratePromptLeptonRNN compScore - failed to make hist");
411  }
412 
413  hit = m_hists.insert(std::map<std::string, TH1*>::value_type(v.first, h)).first;
414  }
415 
416  if(hit->second) {
417  hit->second->Fill(v.second);
418  }
419  }
420  }
421 
422  return true;
423 }
424 
425 //=============================================================================
427  const std::string &prefix)
428 {
429  //
430  // Fill dummy values for RNN outputs
431  //
432  for(const decoratorFloatMap_t::value_type &v: m_decoratorMap) {
433  //
434  // Decorate muon
435  //
436  const std::string dkey = prefix + v.first;
437 
438  (*v.second)(particle) = -1.0;
439  }
440 
441  return true;
442 }
443 
444 //=============================================================================
445 StatusCode Prompt::DecoratePromptLeptonRNN::makeHist(TH1 *&h, const std::string &key, int nbin, double xmin, double xmax)
446 {
447  //
448  // Initiliase histogram pointer. If configured to run in validation mode, then create and register histogram
449  //
450  h = 0;
451 
452  if(m_outputStream.empty() || key.empty()) {
453  return StatusCode::SUCCESS;
454  }
455 
456  const std::string hname = name() + "_" + key;
457  const std::string hist_key = "/"+m_outputStream+"/"+hname;
458 
459  h = new TH1D(hname.c_str(), hname.c_str(), nbin, xmin, xmax);
460  h->SetDirectory(0);
461 
462  return m_histSvc->regHist(hist_key, h);
463 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:261
Prompt::Def::LepTrackDR
@ LepTrackDR
Definition: VarHolder.h:75
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:195
Prompt::DecoratePromptLeptonRNN::finalize
virtual StatusCode finalize() override
Definition: DecoratePromptLeptonRNN.cxx:191
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
Prompt::Def::NumberOfSCTHits
@ NumberOfSCTHits
Definition: VarHolder.h:79
PromptUtils.h
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:272
TrackParticlexAODHelpers.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
Prompt::Def::NumberOfSiHits
@ NumberOfSiHits
Definition: VarHolder.h:80
dqt_zlumi_pandas.hname
string hname
Definition: dqt_zlumi_pandas.py:272
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
Prompt::VarHolder
Definition: VarHolder.h:112
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
TH1D
Definition: rootspy.cxx:342
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::Electron_v1::trackParticle
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
Definition: Electron_v1.cxx:55
Prompt::DecoratePromptLeptonRNN::prepTrackObject
bool prepTrackObject(Prompt::VarHolder &p, const xAOD::TrackParticle &track, const xAOD::TrackParticle &lepton, const xAOD::Jet &trackJet, const xAOD::Vertex &priVtx, const xAOD::EventInfo event)
Definition: DecoratePromptLeptonRNN.cxx:260
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
Prompt::DecoratePromptLeptonRNN::findClosestTrackJet
const xAOD::Jet * findClosestTrackJet(const xAOD::TrackParticle *particle, const xAOD::JetContainer &trackJets)
Definition: DecoratePromptLeptonRNN.cxx:227
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
Prompt::PrintResetStopWatch
std::string PrintResetStopWatch(TStopwatch &watch)
Definition: PromptUtils.cxx:244
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
Prompt::Def::Z0Sin
@ Z0Sin
Definition: VarHolder.h:86
Prompt::Def::NumberOfPIXHits
@ NumberOfPIXHits
Definition: VarHolder.h:78
Prompt::Def::PtFrac
@ PtFrac
Definition: VarHolder.h:71
Prompt::DecoratePromptLeptonRNN::makeHist
StatusCode makeHist(TH1 *&h, const std::string &key, int nbin, double xmin, double xmax)
Definition: DecoratePromptLeptonRNN.cxx:445
xAOD::TrackParticle_v1::p4
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
Definition: TrackParticle_v1.cxx:129
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:262
EgammaxAODHelpers.h
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
Prompt::Def::D0Sig
@ D0Sig
Definition: VarHolder.h:87
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
xmin
double xmin
Definition: listroot.cxx:60
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Prompt::Def::NumberOfSiHoles
@ NumberOfSiHoles
Definition: VarHolder.h:82
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::Vertex_v1::z
float z() const
Returns the z position.
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:270
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
AthAlgorithm
Definition: AthAlgorithm.h:47
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
Prompt::DecoratePromptLeptonRNN::compScore
bool compScore(const xAOD::IParticle &particle, const std::vector< Prompt::VarHolder > &tracks, const std::string &prefix)
Definition: DecoratePromptLeptonRNN.cxx:362
Prompt::SortObjectByVar
Definition: PromptUtils.h:127
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Prompt::DecoratePromptLeptonRNN::compDummy
bool compDummy(const xAOD::IParticle &particle, const std::string &prefix)
Definition: DecoratePromptLeptonRNN.cxx:426
xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
Definition: ElectronxAODHelpers.cxx:22
python.ami.results
def results
Definition: ami.py:386
xAOD::Electron_v1
Definition: Electron_v1.h:34
DecoratePromptLeptonRNN.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
VarHolder.h
python.PyAthena.v
v
Definition: PyAthena.py:157
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
Prompt::DecoratePromptLeptonRNN::DecoratePromptLeptonRNN
DecoratePromptLeptonRNN(const std::string &name, ISvcLocator *pSvcLocator)
Definition: DecoratePromptLeptonRNN.cxx:19
Prompt::Def::NumberOfSharedSiHits
@ NumberOfSharedSiHits
Definition: VarHolder.h:81
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
xAOD::Jet_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: Jet_v1.cxx:71
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
LikeEnum::Medium
@ Medium
Definition: LikelihoodEnums.h:14
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Prompt::Def::TrackPtOverTrackJetPt
@ TrackPtOverTrackJetPt
Definition: VarHolder.h:85
TH1
Definition: rootspy.cxx:268
Prompt::Def::TrackJetDR
@ TrackJetDR
Definition: VarHolder.h:84
xmax
double xmax
Definition: listroot.cxx:61
Prompt::Def::NumberOfPixelHoles
@ NumberOfPixelHoles
Definition: VarHolder.h:83
Prompt::DecoratePromptLeptonRNN::findMuonTrack
const xAOD::TrackParticle * findMuonTrack(const xAOD::Muon *muon)
Definition: DecoratePromptLeptonRNN.cxx:208
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
IParticleHelpers.h
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Prompt::TimerScopeHelper
Definition: PromptUtils.h:112
xAOD::Jet_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition: Jet_v1.cxx:44
Prompt::Def::AbsEta
@ AbsEta
Definition: VarHolder.h:77
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
readCCLHist.float
float
Definition: readCCLHist.py:83
Prompt::DecoratePromptLeptonRNN::passTrack
bool passTrack(Prompt::VarHolder &p)
Definition: DecoratePromptLeptonRNN.cxx:335
Prompt::DecoratePromptLeptonRNN::execute
virtual StatusCode execute() override
Definition: DecoratePromptLeptonRNN.cxx:67
Prompt::DecoratePromptLeptonRNN::initialize
virtual StatusCode initialize() override
Definition: DecoratePromptLeptonRNN.cxx:26
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37