ATLAS Offline Software
GhostTrackSystematicsMaker.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 
7 #include <limits>
8 
10 
13 
17 
18 #include "TopEvent/EventTools.h"
21 
28 
29 namespace top {
30  /* explicit */
32  : ::asg::AsgTool(name),
33  m_config(nullptr),
34  m_jetPtCut(0.),
35  m_jetEtaCut(0.),
36  m_runPeriods(),
37  m_specifiedSystematics(),
38  m_recommendedSystematics(),
39  m_nominalSystematicSet(),
40  m_tools() {
41  declareProperty("config", m_config);
42  }
43 
45  }
46 
48  ATH_MSG_INFO(" top::GhostTrackSystematicsMaker initialize");
49 
50  ATH_MSG_WARNING("Usage of ghost tracks in AnalysisTop is purely EXPERIMENTAL!\n");
51 
52  m_runPeriods = m_config->runPeriodsJetGhostTrack();
53 
54  // Retrieve the systematics tools. Each individual function will cause
55  // program abortion upon failure. This is intended as there's no
56  // meaningful method of recovery.
57  // These tools are setup and initialised in the TopCPTools package, and we just retrieve them here.
59  "Failed to retrieve the ghost track CP tools");
60 
61  // Setup the recommended systematics. This utilises the tools that were
62  // setup before.
63  const std:: string& syststr = m_config->systematics();
64 
65  if (m_config->isSystNominal(syststr)) {
67  } else if (m_config->isSystAll(syststr)) {
68  specifiedSystematics({"AllGhostTrack"});
69  } else {
70  std::set<std::string> syst;
71  bool ok = m_config->getSystematicsList(syststr, syst);
72  if (!ok) {
73  ATH_MSG_ERROR(" top::GhostTrackSystematicsMaker could not determine systematic list");
74  return StatusCode::FAILURE;
75  }
76 
77  // No need to manually handle the AllGhostTrack case in here.
79  }
80 
81  // Pass the systematics list back to the top::TopConfig object.
82  m_config->systematicsJetGhostTrack(specifiedSystematics());
83 
84 
85  m_jetPtCut = m_config->jetPtGhostTracks();
86  m_jetEtaCut = m_config->jetEtaGhostTracks();
87 
89  " top::GhostTrackSystematicsMaker: Systematic variations of ghost tracks will be done only for jets with pt >= " << m_jetPtCut << " MeV and eta <= " << m_jetEtaCut <<
90  ".");
91 
92  ATH_MSG_INFO(" top::GhostTrackSystematicsMaker completed initialize");
93  return StatusCode::SUCCESS;
94  }
95 
97  const CP::SystematicSet& syst) const {
99 
100  static int warningCounter=0;
101  const int warningLimit=20;
102 
103  for (xAOD::Jet *jet : *nominal) {
104  if ((jet->pt() < m_jetPtCut) || (std::abs(jet->eta()) > m_jetEtaCut)) continue;
105  // Copy nominal ghost track container into the systematic variation.
106 
107  const auto& ghostTracks =
108  jet->getAssociatedObjects<xAOD::IParticle>(m_config->decoKeyJetGhostTrack());
109  std::vector<const xAOD::IParticle*> newGhosts;
110 
111  for (std::size_t iGhost = 0; iGhost < ghostTracks.size(); ++iGhost) {
112  if (ghostTracks[iGhost] == nullptr) continue;
113 
114  // We can re-use the existing xAOD::IParticle.
115  newGhosts.push_back(ghostTracks[iGhost]);
116  }
117 
118  if (newGhosts.size() == 0 && warningCounter<warningLimit) {
120  "in GhostTrackSystematicsMaker: All ghost tracks are null pointers. There may be something wrong with your configuration or derivation. Jet pt: " << jet->pt() << " Jet eta: " <<
121  jet->eta());
122  warningCounter++;
123  }
124 
125  jet->setAssociatedObjects(m_config->decoKeyJetGhostTrack(syst.hash()),
126  newGhosts);
127  }
128 
129  return StatusCode::SUCCESS;
130  }
131 
134  const CP::SystematicSet& syst) const {
136  top::check(tool->applySystematicVariation(syst),
137  "Failed to configure tool for systematic variation");
138 
140  for (xAOD::Jet *jet : *nominal) {
141  if ((jet->pt() < m_jetPtCut) || (std::abs(jet->eta()) > m_jetEtaCut)) continue;
142  const auto& ghostTracks =
143  jet->getAssociatedObjects<xAOD::IParticle>(m_config->decoKeyJetGhostTrack());
144  std::vector<const xAOD::IParticle*> newGhosts;
145 
146  for (std::size_t iGhost = 0; iGhost < ghostTracks.size(); ++iGhost) {
147  if (ghostTracks[iGhost] == nullptr) continue;
148  const xAOD::TrackParticle*
149  tp {
150  dynamic_cast<const xAOD::TrackParticle*>(ghostTracks[iGhost])
151  };
152  top::check(tp, "Failed to convert xAOD::IParticle to xAOD::TrackParticle for ghost track");
153 
154  if (!tool->accept(tp)) {
155  continue;
156  }
157 
158  // We can re-use the existing xAOD::IParticle.
159  newGhosts.push_back(ghostTracks[iGhost]);
160  }
161 
162  jet->setAssociatedObjects(m_config->decoKeyJetGhostTrack(syst.hash()), newGhosts);
163  }
164 
165  return StatusCode::SUCCESS;
166  }
167 
170  const CP::SystematicSet& syst) const {
172  top::check(tool->applySystematicVariation(syst),
173  "Failed to configure tool for systematic variation");
174 
176  for (xAOD::Jet *jet : *nominal) {
177  if ((jet->pt() < m_jetPtCut) || (std::abs(jet->eta()) > m_jetEtaCut)) continue;
178  const auto& ghostTracks = jet->getAssociatedObjects<xAOD::IParticle>(m_config->decoKeyJetGhostTrack());
179  std::vector<const xAOD::IParticle*> newGhosts;
180 
181 
182  for (std::size_t iGhost = 0; iGhost < ghostTracks.size(); ++iGhost) {
183  if (ghostTracks[iGhost] == nullptr) continue;
184  const xAOD::TrackParticle*
185  tp {
186  dynamic_cast<const xAOD::TrackParticle*>(ghostTracks[iGhost])
187  };
188  top::check(tp, "Failed to convert xAOD::IParticle to xAOD::TrackParticle for ghost track");
189 
190  if (!tool->accept(tp, nominal)) {
191  continue;
192  }
193 
194  // We can re-use the existing xAOD::IParticle.
195  newGhosts.push_back(ghostTracks[iGhost]);
196  }
197 
198  jet->setAssociatedObjects(m_config->decoKeyJetGhostTrack(syst.hash()), newGhosts);
199  }
200 
201  return StatusCode::SUCCESS;
202  }
203 
206  const CP::SystematicSet& syst) const {
208  top::check(tool->applySystematicVariation(syst),
209  "Failed to configure tool for systematic variation");
210 
211  const std::string sgKey {
212  m_config->decoKeyJetGhostTrack() +
213  "_Particles_" + syst.name()
214  };
215  const std::string sgKeyAux {
216  sgKey + "Aux."
217  };
218 
219 
222  top::check(evtStore()->record(newTrackParticles, sgKey),
223  "Failed to record systematically varied track particle container");
225  top::check(evtStore()->record(newTrackParticlesAux, sgKeyAux),
226  "Failed to record systematically varied track particle container");
227  newTrackParticles->setStore(newTrackParticlesAux);
228 
229  for (xAOD::Jet *jet : *nominal) {
230  if ((jet->pt() < m_jetPtCut) || (std::abs(jet->eta()) > m_jetEtaCut)) continue;
231  const auto& ghostTracks = jet->getAssociatedObjects<xAOD::TrackParticle>(m_config->decoKeyJetGhostTrack());
232 
233  std::vector<const xAOD::IParticle*> newGhosts;
234 
235  for (std::size_t iGhost = 0; iGhost < ghostTracks.size(); ++iGhost) {
236  if (ghostTracks[iGhost] == nullptr) continue;
237 
238  const xAOD::TrackParticle*
239  tp {
240  dynamic_cast<const xAOD::TrackParticle*>(ghostTracks.at(iGhost))
241  };
242  top::check(tp, "Failed to convert xAOD::IParticle to xAOD::TrackParticle for ghost track");
243 
244  xAOD::TrackParticle* newTp {
245  nullptr
246  };
247  top::check(tool->correctedCopy(*tp, newTp),
248  "Failure to apply ghost track systematic");
249  top::check(newTp, "Systematically varied xAOD::TrackParticle is nullptr");
250 
251  newTrackParticles->push_back(newTp);
252  newGhosts.push_back(newTp);
253  }
254 
255  jet->setAssociatedObjects(m_config->decoKeyJetGhostTrack(syst.hash()), newGhosts);
256  }
257 
258  return StatusCode::SUCCESS;
259  }
260 
263  const CP::SystematicSet& syst) const {
265  top::check(tool->applySystematicVariation(syst),
266  "Failed to configure tool for systematic variation");
267 
268  const std::string sgKey {
269  m_config->decoKeyJetGhostTrack() +
270  "_Particles_" + syst.name()
271  };
272  const std::string sgKeyAux {
273  sgKey + "Aux."
274  };
275 
276 
279  top::check(evtStore()->record(newTrackParticles, sgKey),
280  "Failed to record systematically varied track particle container");
282  top::check(evtStore()->record(newTrackParticlesAux, sgKeyAux),
283  "Failed to record systematically varied track particle container");
284  newTrackParticles->setStore(newTrackParticlesAux);
285 
286  for (xAOD::Jet *jet : *nominal) {
287  if ((jet->pt() < m_jetPtCut) || (std::abs(jet->eta()) > m_jetEtaCut)) continue;
288  const auto& ghostTracks = jet->getAssociatedObjects<xAOD::TrackParticle>(m_config->decoKeyJetGhostTrack());
289 
290  std::vector<const xAOD::IParticle*> newGhosts;
291 
292  for (std::size_t iGhost = 0; iGhost < ghostTracks.size(); ++iGhost) {
293  if (ghostTracks[iGhost] == nullptr) continue;
294 
295  const xAOD::TrackParticle*
296  tp {
297  dynamic_cast<const xAOD::TrackParticle*>(ghostTracks.at(iGhost))
298  };
299  top::check(tp, "Failed to convert xAOD::IParticle to xAOD::TrackParticle for ghost track");
300 
301  xAOD::TrackParticle* newTp {
302  nullptr
303  };
304  top::check(tool->correctedCopy(*tp, newTp),
305  "Failure to apply ghost track systematic");
306  top::check(newTp, "Systematically varied xAOD::TrackParticle is nullptr");
307 
308  newTrackParticles->push_back(newTp);
309  newGhosts.push_back(newTp);
310  }
311 
312  jet->setAssociatedObjects(m_config->decoKeyJetGhostTrack(syst.hash()), newGhosts);
313  }
314 
315  return StatusCode::SUCCESS;
316  }
317 
319  ATH_MSG_DEBUG(" top::GhostTrackSystematicsMaker execute:");
320 
321 
323  xAOD::JetContainer* nominalJets(nullptr);
324  top::check(evtStore()->retrieve(nominalJets,
325  m_config->sgKeyJetsStandAlone(m_nominalSystematicSet.hash())),
326  "Failed to retrieve Jets");
327 
328  // applyNoOpSystematic is used just to remove ghost track vector from thinned jets
330  "Failure to apply GhostTrackSystematic");
331 
332  // We don't want to do anything on Data -> bail early so that we can
333  // rely on the inputs to be MC.
334  if (!m_config->isMC()) {
335  return StatusCode::SUCCESS;
336  }
337 
339  if (executeNominal) return StatusCode::SUCCESS;
340 
341 
343  for (const auto& syst : m_systs.smearing) {
344  top::check(applySmearingSystematic(nominalJets, &(*m_tools.smearing), syst),
345  "Failure to apply GhostTrackSystematic");
346  }
347 
349  InDet::InDetTrackBiasingTool* biasingTool {
350  nullptr
351  };
352  if (m_runPeriods.size() == 1) {
353  biasingTool = &(*m_tools.bias[0]);
354 
355  top::check(biasingTool, "Failure to selected biasing tool");
356  for (const auto& syst : m_systs.bias) {
357  top::check(applyBiasingSystematic(nominalJets, biasingTool, syst),
358  "Failure to apply GhostTrackSystematic");
359  }
360  } else {
361  const xAOD::EventInfo* ei {
362  nullptr
363  };
364  top::check(evtStore()->retrieve(ei, "EventInfo"),
365  "Failure to retrieve EventInfo");
366 
367  top::check(ei->isAvailable<unsigned int>("RandomRunNumber"),
368  "Require that RandomRunNumber decoration is available.");
369  auto randomRunNumber = ei->auxdataConst<unsigned int>("RandomRunNumber");
370 
371  if (randomRunNumber == 0) {
372  for (const auto& syst : m_systs.bias) {
373  top::check(applyNoOpSystematic(nominalJets, syst),
374  "Failure to apply GhostTrackSystematic");
375  }
376  } else {
377  top::check(m_runPeriods[0] <= randomRunNumber,
378  "RandomRunNumber is below valid range.");
379  top::check(randomRunNumber < m_runPeriods[m_runPeriods.size() - 1],
380  "RandomRunNumber is above valid range.");
381 
382  for (std::size_t i = 1; i < m_runPeriods.size(); ++i) {
383  if (randomRunNumber < m_runPeriods[i]) {
384  biasingTool = &(*m_tools.bias[i - 1]);
385  break;
386  }
387  }
388  top::check(biasingTool, "Failure to selected biasing tool");
389  for (const auto& syst : m_systs.bias) {
390  top::check(applyBiasingSystematic(nominalJets, biasingTool, syst),
391  "Failure to apply GhostTrackSystematic");
392  }
393  }
394  }
395 
397  for (const auto& syst : m_systs.truthFilter) {
398  top::check(applyTruthFilterSystematic(nominalJets, &(*m_tools.truthFilter), syst),
399  "Failure to apply GhostTrackSystematic");
400  }
401 
403  for (const auto& syst : m_systs.jetTrackFilter) {
404  top::check(applyJetTrackFilterSystematic(nominalJets, &(*m_tools.jetTrackFilter), syst),
405  "Failure to apply GhostTrackSystematic");
406  }
407 
408  ATH_MSG_DEBUG(" top::GhostTrackSystematicsMaker completed execute");
409  return StatusCode::SUCCESS;
410  }
411 
412  void GhostTrackSystematicsMaker::specifiedSystematics(const std::set<std::string>& specSys) {
413  // NOTE: For this function -- unlike the "proper" ObjectCollectionMakers in AnalysisTop -- an empty
414  // specifiedSystematics input is considered to represent "No Systematics". All GhostTrack systematics can be
415  // requested with the string "AllGhostTrack".
416  const bool allGhostTrackSystematics = m_config->contains(specSys,
417  "AllGhostTrack");
418 
419  // Acquire the recommended systematics from the various tools and put
420  // into containers that store the per-tool systematics as well as a
421  // global container. At a later point we'll make the per-tool containers
422  // unique and check that the containers for various tools are
423  // orthogonal.
424  std::set<CP::SystematicSet> systs;
425 
426  // SMEARING
427  m_systs.smearing =
428  CP::make_systematics_vector(m_tools.smearing->recommendedSystematics());
429  systs.insert(m_systs.smearing.begin(), m_systs.smearing.end());
430 
431  // BIAS
432  for (const auto& tool : m_tools.bias) {
433  m_systs.bias =
434  CP::make_systematics_vector(tool->recommendedSystematics());
435  systs.insert(m_systs.bias.begin(), m_systs.bias.end());
436  }
437 
438  // TRUTH FILTER
439  m_systs.truthFilter =
440  CP::make_systematics_vector(m_tools.truthFilter->recommendedSystematics());
441  systs.insert(m_systs.truthFilter.begin(), m_systs.truthFilter.end());
442 
443  // JET TRACK FILTER
444  m_systs.jetTrackFilter =
445  CP::make_systematics_vector(m_tools.jetTrackFilter->recommendedSystematics());
446  systs.insert(m_systs.jetTrackFilter.begin(), m_systs.jetTrackFilter.end());
447 
448  // PUT INTO RECOMMENDED AND SPECIFIED
449  for (const auto& s : systs) {
450  // We don't want nominal.
451  if (s.name() == "") {
452  continue;
453  }
454 
455  if(!m_config->getTreeFilter()->filterTree(s.name())) continue; // Applying tree filter
456  m_recommendedSystematics.push_back(s);
457 
459  if (m_config->isMC()) {
461  if (!m_config->isSystNominal(m_config->systematics())) {
462  if (allGhostTrackSystematics) {
463  m_specifiedSystematics.push_back(s);
464  continue;
465  }
466 
467  for (const auto& i : specSys) {
469  if (!filter.filterTree(s.name())) {
470  m_specifiedSystematics.push_back(s);
471  }
472  }
473  }
474  }
475  }
476 
478  m_recommendedSystematics.unique();
479 
480  m_specifiedSystematics.sort();
481  m_specifiedSystematics.unique();
482 
483  // Make the sublists unique and remove any elements that have not "been specified".
484  m_systs.makeUnique();
485  m_systs.removeNonSpecified(m_specifiedSystematics);
486 
487  // Lastly, let use introduce a safeguard which ensures that the
488  // systematics selected for the various tools are orthogonal. This is
489  // done by asserting that the sum of the sizes of the individual
490  // systematics lists equals the size of the list of specified
491  // systematics. We can do this because we've made the individual
492  // per-tool containers unique (in makeUnique).
493  top::check(m_systs.numSystematics() == m_specifiedSystematics.size(),
494  "Sanity check failed");
495  }
496 
498  ATH_MSG_INFO(" Retrieving ghost track CPTools");
499 
500  std::string smearingToolName {
501  "top::GhostTrackCPTools::InDetTrackSmearingTool"
502  };
503  if (asg::ToolStore::contains<InDet::InDetTrackSmearingTool>(smearingToolName)) {
504  m_tools.smearing =
505  asg::ToolStore::get<InDet::InDetTrackSmearingTool>(smearingToolName);
506  } else {
507  ATH_MSG_ERROR(" Impossible to retrieve " + smearingToolName);
508  return StatusCode::FAILURE;
509  }
510 
511  std::string biasToolPrefix {
512  "top::GhostTrackCPTools::InDetTrackBiasingTool"
513  };
514  top::check(!m_runPeriods.empty(), "Assertion failed");
515  // Two cases are possible:
516  // - Either a single run number was specified to the runPeriods
517  // parameter in which case we'll use exactly that run number, or
518  // - at least two numbers have been specified, which then define
519  // (potentially multiple) run number ranges.
520  unsigned int end = 0;
521  if (m_runPeriods.size() == 1) {
522  end = 1;
523  m_tools.bias.resize(1);
524  } else {
525  end = m_runPeriods.size() - 1;
526  m_tools.bias.resize(m_runPeriods.size() - 1);
527  }
528  for (unsigned int i = 0; i < end; i++) {
529  std::string biasToolName {
530  ""
531  };
532  if (m_runPeriods.size() == 1) {
533  biasToolName = biasToolPrefix + "_" + std::to_string(m_runPeriods[0]);
534  } else {
535  biasToolName = biasToolPrefix + "_" + std::to_string(m_runPeriods[i]) + "_" +
537  }
538  if (asg::ToolStore::contains<InDet::InDetTrackBiasingTool>(biasToolName)) {
539  m_tools.bias[i] = asg::ToolStore::get<InDet::InDetTrackBiasingTool>(biasToolName);
540  } else {
541  ATH_MSG_ERROR(" Impossible to retrieve " + biasToolName);
542  return StatusCode::FAILURE;
543  }
544  }
545 
546  std::string truthOriginToolName {
547  "top::GhostTrackCPTools::InDetTrackTruthOriginTool"
548  };
549  if (asg::ToolStore::contains<InDet::InDetTrackTruthOriginTool>(truthOriginToolName)) {
550  m_tools.truthOrigin = asg::ToolStore::get<InDet::InDetTrackTruthOriginTool>(truthOriginToolName);
551  } else {
552  ATH_MSG_ERROR(" Impossible to retrieve " + truthOriginToolName);
553  return StatusCode::FAILURE;
554  }
555 
556  std::string truthFilterToolName {
557  "top::GhostTrackCPTools::InDetTrackTruthFilterTool"
558  };
559  if (asg::ToolStore::contains<InDet::InDetTrackTruthFilterTool>(truthFilterToolName)) {
560  m_tools.truthFilter = asg::ToolStore::get<InDet::InDetTrackTruthFilterTool>(truthFilterToolName);
561  } else {
562  ATH_MSG_ERROR(" Impossible to retrieve " + truthFilterToolName);
563  return StatusCode::FAILURE;
564  }
565 
566  std::string jetTrackFilterToolName {
567  "top::GhostTrackCPTools::JetTrackFilterTool"
568  };
569  if (asg::ToolStore::contains<InDet::JetTrackFilterTool>(jetTrackFilterToolName)) {
570  m_tools.jetTrackFilter = asg::ToolStore::get<InDet::JetTrackFilterTool>(jetTrackFilterToolName);
571  } else {
572  ATH_MSG_ERROR(" Impossible to retrieve " + jetTrackFilterToolName);
573  return StatusCode::FAILURE;
574  }
575 
576  return StatusCode::SUCCESS;
577  }
578 }
top::GhostTrackSystematicsMaker::applyBiasingSystematic
StatusCode applyBiasingSystematic(xAOD::JetContainer *nominal, InDet::InDetTrackBiasingTool *tool, const CP::SystematicSet &syst) const
Definition: GhostTrackSystematicsMaker.cxx:261
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
top::GhostTrackSystematicsMaker::m_recommendedSystematics
std::list< CP::SystematicSet > m_recommendedSystematics
Definition: GhostTrackSystematicsMaker.h:142
top::GhostTrackSystematicsMaker::m_jetEtaCut
double m_jetEtaCut
Definition: GhostTrackSystematicsMaker.h:138
InDetTrackTruthFilterTool.h
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
xAOD::TrackParticleAuxContainer_v5
Temporary container used until we have I/O for AuxStoreInternal.
Definition: TrackParticleAuxContainer_v5.h:35
top
TopConfig A simple configuration that is NOT a singleton.
Definition: AnalysisTrackingHelper.cxx:58
top::GhostTrackSystematicsMaker::m_specifiedSystematics
std::list< CP::SystematicSet > m_specifiedSystematics
Definition: GhostTrackSystematicsMaker.h:141
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::make_systematics_vector
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
Definition: SystematicsUtil.cxx:25
top::GhostTrackSystematicsMaker::specifiedSystematics
virtual const std::list< CP::SystematicSet > & specifiedSystematics() const
Definition: GhostTrackSystematicsMaker.h:198
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::TrackParticleAuxContainer
TrackParticleAuxContainer_v5 TrackParticleAuxContainer
Definition of the current TrackParticle auxiliary container.
Definition: TrackParticleAuxContainer.h:19
TreeFilter.h
asg
Definition: DataHandleTestTool.h:28
xAOD::TrackParticleContainer
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticleContainer.h:14
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ParticleTest.tp
tp
Definition: ParticleTest.py:25
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:278
testTrigR2ToR3NavGraphConversionV2.warningLimit
warningLimit
Definition: testTrigR2ToR3NavGraphConversionV2.py:59
top::GhostTrackSystematicsMaker::execute
StatusCode execute(bool)
Definition: GhostTrackSystematicsMaker.cxx:318
top::GhostTrackSystematicsMaker::applyNoOpSystematic
StatusCode applyNoOpSystematic(xAOD::JetContainer *nominal, const CP::SystematicSet &syst) const
Definition: GhostTrackSystematicsMaker.cxx:96
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
InDet::InDetTrackSmearingTool
Definition: InDetTrackSmearingTool.h:32
top::GhostTrackSystematicsMaker::GhostTrackSystematicsMaker
GhostTrackSystematicsMaker(const std::string &name)
Definition: GhostTrackSystematicsMaker.cxx:31
EventTools.h
A few functions for doing operations on particles / events. Currently holds code for dR,...
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
top::GhostTrackSystematicsMaker::m_tools
struct top::GhostTrackSystematicsMaker::@220 m_tools
covarianceTool.filter
filter
Definition: covarianceTool.py:514
top::GhostTrackSystematicsMaker::m_config
std::shared_ptr< top::TopConfig > m_config
Definition: GhostTrackSystematicsMaker.h:137
top::TreeFilter
Definition: TreeFilter.h:13
top::GhostTrackSystematicsMaker::applyJetTrackFilterSystematic
StatusCode applyJetTrackFilterSystematic(xAOD::JetContainer *nominal, InDet::JetTrackFilterTool *tool, const CP::SystematicSet &syst) const
Definition: GhostTrackSystematicsMaker.cxx:168
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CP::SystematicSet::hash
std::size_t hash() const
returns: hash value for the joined string.
Definition: SystematicSet.cxx:289
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TrackParticleAuxContainer.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
top::GhostTrackSystematicsMaker::applySmearingSystematic
StatusCode applySmearingSystematic(xAOD::JetContainer *nominal, InDet::InDetTrackSmearingTool *tool, const CP::SystematicSet &syst) const
Definition: GhostTrackSystematicsMaker.cxx:204
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
top::nominal
@ nominal
Definition: ScaleFactorRetriever.h:29
InDet::InDetTrackBiasingTool
Definition: InDetTrackBiasingTool.h:36
top::GhostTrackSystematicsMaker::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: GhostTrackSystematicsMaker.cxx:47
top::check
void check(bool thingToCheck, const std::string &usefulFailureMessage)
Print an error message and terminate if thingToCheck is false.
Definition: EventTools.cxx:15
top::GhostTrackSystematicsMaker::m_systs
struct top::GhostTrackSystematicsMaker::@219 m_systs
InDetTrackBiasingTool.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
InDet::JetTrackFilterTool
Definition: JetTrackFilterTool.h:37
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
top::GhostTrackSystematicsMaker::m_jetPtCut
double m_jetPtCut
Definition: GhostTrackSystematicsMaker.h:138
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
InDet::InDetTrackTruthFilterTool
Definition: InDetTrackTruthFilterTool.h:36
TopConfig.h
JetTrackFilterTool.h
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
InDetTrackTruthOriginTool.h
InDetTrackSystematics.h
TrackParticle.h
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
top::GhostTrackSystematicsMaker::m_runPeriods
std::vector< std::uint32_t > m_runPeriods
Definition: GhostTrackSystematicsMaker.h:139
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
InDetTrackSmearingTool.h
IParticleHelpers.h
GhostTrackSystematicsMaker.h
top::GhostTrackSystematicsMaker::~GhostTrackSystematicsMaker
virtual ~GhostTrackSystematicsMaker()
Definition: GhostTrackSystematicsMaker.cxx:44
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
top::GhostTrackSystematicsMaker::retrieveGhostTrackCPTool
StatusCode retrieveGhostTrackCPTool()
Definition: GhostTrackSystematicsMaker.cxx:497
TrackParticleContainer.h
top::GhostTrackSystematicsMaker::m_nominalSystematicSet
CP::SystematicSet m_nominalSystematicSet
Definition: GhostTrackSystematicsMaker.h:144
top::GhostTrackSystematicsMaker::applyTruthFilterSystematic
StatusCode applyTruthFilterSystematic(xAOD::JetContainer *nominal, InDet::InDetTrackTruthFilterTool *tool, const CP::SystematicSet &syst) const
Definition: GhostTrackSystematicsMaker.cxx:132
SystematicsUtil.h