ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
top::ParticleLevelLoader Class Referencefinal

Loading tool which creates a particle level event object. More...

#include <ParticleLevelLoader.h>

Inheritance diagram for top::ParticleLevelLoader:
Collaboration diagram for top::ParticleLevelLoader:

Public Member Functions

 ParticleLevelLoader (const std::shared_ptr< top::TopConfig > &cfg)
 Constructor of the loader tool. More...
 
virtual ~ParticleLevelLoader ()
 Destructor of the loader tool. More...
 
ParticleLevelEvent load ()
 Loading function. More...
 
bool active () const
 Function that can be used to test whether the ParticleLevelLoader is active. More...
 
virtual StatusCode initialize ()
 Dummy implementation of the initialisation function. More...
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

bool loadDressedLeptons (const xAOD::TruthParticleContainer &input, std::unique_ptr< xAOD::TruthParticleContainer > &store, std::unique_ptr< xAOD::ShallowAuxContainer > &storeAux) const
 
bool isDressingPhoton (const xAOD::TruthParticle &photon, const xAOD::TruthParticleContainer &dressedParticles, const float dressingCone=0.1) const
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

const std::shared_ptr< top::TopConfig > & m_config
 
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Electron
 
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Muon
 
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Photon
 
std::unique_ptr< ObjectSelectorBase< xAOD::Jet > > m_objectSelector_Jet
 
std::unique_ptr< ObjectSelectorBase< xAOD::Jet > > m_objectSelector_LargeRJet
 
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Tau
 
std::unique_ptr< ParticleLevelRCJetObjectLoaderm_particleLevelRCJetObjectLoader
 
std::map< std::string, std::unique_ptr< ParticleLevelRCJetObjectLoader > > m_particleLevelVarRCJetObjectLoader
 
std::vector< std::string > m_VarRCJetRho
 
std::vector< std::string > m_VarRCJetMassScale
 
std::unique_ptr< xAOD::TruthParticleContainerm_electronsDressed
 
std::unique_ptr< xAOD::ShallowAuxContainerm_electronsDressedAux
 
std::unique_ptr< xAOD::TruthParticleContainerm_muonsDressed
 
std::unique_ptr< xAOD::ShallowAuxContainerm_muonsDressedAux
 
std::unique_ptr< xAOD::TruthParticleContainerm_goodElectrons
 
std::unique_ptr< xAOD::TruthParticleAuxContainerm_goodElectronsAux
 
std::unique_ptr< xAOD::TruthParticleContainerm_goodMuons
 
std::unique_ptr< xAOD::TruthParticleAuxContainerm_goodMuonsAux
 
std::unique_ptr< xAOD::TruthParticleContainerm_goodSoftMuons
 
std::unique_ptr< xAOD::TruthParticleAuxContainerm_goodSoftMuonsAux
 
std::unique_ptr< xAOD::TruthParticleContainerm_goodPhotons
 
std::unique_ptr< xAOD::TruthParticleAuxContainerm_goodPhotonsAux
 
std::unique_ptr< xAOD::JetContainerm_goodJets
 
std::unique_ptr< xAOD::JetAuxContainerm_goodJetsAux
 
std::unique_ptr< xAOD::JetContainerm_goodLargeRJets
 
std::unique_ptr< xAOD::JetAuxContainerm_goodLargeRJetsAux
 
std::unique_ptr< xAOD::TruthParticleContainerm_goodTaus
 
std::unique_ptr< xAOD::TruthParticleAuxContainerm_goodTausAux
 
const bool m_active
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Loading tool which creates a particle level event object.

After creation of the loader tool, it will be in of of two states: either it is "active" or not (can be tested using the active() member function). If the tool is not active, then the load function is a no-op, it will return an "empty" ParticleLevelEvent object. The active() member function allows for the enclosing (i.e. calling) program to conditionally branch into computing intensive parts depending on whether particle level data is available or not. The loader tool is configured to be non-"active" if the input data is not monte carlo or any of the required collection names are empty respectively None

Definition at line 53 of file ParticleLevelLoader.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ ParticleLevelLoader()

top::ParticleLevelLoader::ParticleLevelLoader ( const std::shared_ptr< top::TopConfig > &  cfg)

Constructor of the loader tool.

Definition at line 36 of file ParticleLevelLoader.cxx.

37  : asg::AsgTool("ParticleLevelLoader"),
38  m_config(cfg),
39  // Don't create them here because construction is a bit long-ish
41  m_objectSelector_Muon(nullptr),
42  m_objectSelector_Photon(nullptr),
43  m_objectSelector_Jet(nullptr),
45  m_objectSelector_Tau(nullptr),
46  // Tool is inactive on non-MC data and whenever particle level is not requested
47  m_active(m_config->doTopParticleLevel() &&
48  m_config->isMC() &&
49  (m_config->useTruthElectrons() ||
50  m_config->useTruthMuons() ||
51  m_config->useTruthPhotons() ||
52  m_config->useTruthJets() ||
53  m_config->useTruthLargeRJets() ||
54  m_config->useTruthTaus() ||
55  m_config->useTruthMET())) {
56  // Configure and create electron object selector
58  m_config->truth_electron_PtCut(),
59  m_config->truth_electron_EtaCut(),
60  m_config->truth_electron_NotFromHadron(),
61  m_config->truth_electron_TauIsHadron()
62  };
63 
64  m_objectSelector_Electron.reset(new ParticleLevelElectronObjectSelector(optEl));
65 
66  // Configure and create muon object selector
68  m_config->truth_muon_PtCut(),
69  m_config->truth_muon_EtaCut(),
70  m_config->truth_muon_NotFromHadron(),
71  m_config->truth_muon_TauIsHadron()
72  };
73 
74  m_objectSelector_Muon.reset(new ParticleLevelMuonObjectSelector(optMu));
75 
76  // Configure and create photon object selector
78  m_config->truth_photon_PtCut(),
79  m_config->truth_photon_EtaCut(),
80  m_config->truth_photon_Origin(),
81  m_config->truth_photon_Isolation()
82  };
83 
84  m_objectSelector_Photon.reset(new ParticleLevelPhotonObjectSelector(optPhoton));
85 
86 
87  // Configure and create jet object selector
89  m_config->truth_jet_PtCut(),
90  m_config->truth_jet_EtaCut()
91  };
92 
93  m_objectSelector_Jet.reset(new ParticleLevelJetObjectSelector(optJet));
94 
95  // Configure and create jet object selector
96  auto optLargeRJet = ParticleLevelJetObjectSelector::Options {
97  m_config->truth_jet_largeR_PtCut(),
98  m_config->truth_jet_largeR_EtaCut()
99  };
100 
101  m_objectSelector_LargeRJet.reset(new ParticleLevelJetObjectSelector(optLargeRJet));
102 
103  // Configure and create muon object selector
105  m_config->truth_tau_PtCut(),
106  m_config->truth_tau_EtaCut()
107  };
108 
109  m_objectSelector_Tau.reset(new ParticleLevelTauObjectSelector(optTau));
110 
111 
112  MsgStream &msgInfo = msg(MSG::Level::INFO);
113  if (m_active) {
114  msgInfo << "Particle level reconstruction is enabled; telling you how I am configured:" << '\n';
115  msgInfo << " " << std::setw(20) << "UseElectrons? " << std::setw(5) << std::boolalpha <<
116  m_config->useTruthElectrons();
117  if (m_config->useTruthElectrons()) {
118  msgInfo << " [" << m_config->sgKeyTruthElectrons() << "]" << '\n'
119  << " --- Pt > " << m_config->truth_electron_PtCut() << '\n'
120  << " --- |eta| < " << m_config->truth_electron_EtaCut() << '\n'
121  << " --- notFromHadron? " << std::boolalpha << m_config->truth_electron_NotFromHadron() << '\n'
122  << " --- tauIsHadron? " << std::boolalpha << m_config->truth_electron_TauIsHadron() << '\n';
123  } else {
124  msgInfo << '\n';
125  }
126  msgInfo << " " << std::setw(20) << "UseMuons? " << std::setw(5) << std::boolalpha <<
127  m_config->useTruthMuons();
128  if (m_config->useTruthMuons()) {
129  msgInfo << " [" << m_config->sgKeyTruthMuons() << "]" << '\n'
130  << " --- Pt > " << m_config->truth_muon_PtCut() << '\n'
131  << " --- |eta| < " << m_config->truth_muon_EtaCut() << '\n'
132  << " --- notFromHadron? " << std::boolalpha << m_config->truth_muon_NotFromHadron() << '\n'
133  << " --- tauIsHadron? " << std::boolalpha << m_config->truth_muon_TauIsHadron() << '\n';
134  } else {
135  msgInfo << '\n';
136  }
137  msgInfo << " " << std::setw(20) << "UsePhotons? " << std::setw(5) << std::boolalpha <<
138  m_config->useTruthPhotons();
139  if (m_config->useTruthPhotons()) {
140  msgInfo << " [" << m_config->sgKeyTruthPhotons() << "]" << '\n'
141  << " --- Pt > " << m_config->truth_photon_PtCut() << '\n'
142  << " --- |eta| < " << m_config->truth_photon_EtaCut() << '\n'
143  << " --- Origin = " << m_config->truth_photon_Origin() << '\n'
144  << " --- Isolation = " << m_config->truth_photon_Isolation() << '\n';
145  } else {
146  msgInfo << '\n';
147  }
148  msgInfo << " " << std::setw(20) << "UseJets? " << std::setw(5) << std::boolalpha << m_config->useTruthJets();
149  if (m_config->useTruthJets()) {
150  msgInfo << " [" << m_config->sgKeyTruthJets() << "]" << '\n'
151  << " --- Pt > " << m_config->truth_jet_PtCut() << '\n'
152  << " --- |eta| < " << m_config->truth_jet_EtaCut() << '\n';
153  } else {
154  msgInfo << '\n';
155  }
156  msgInfo << " " << std::setw(20) << "UseLargeRJets? " << std::setw(5) << std::boolalpha <<
157  m_config->useTruthLargeRJets();
158  if (m_config->useTruthJets()) {
159  msgInfo << " [" << m_config->sgKeyTruthLargeRJets() << "]" << '\n'
160  << " --- Pt > " << m_config->truth_jet_largeR_PtCut() << '\n'
161  << " --- |eta| < " << m_config->truth_jet_largeR_EtaCut() << '\n';
162  } else {
163  msgInfo << '\n';
164  }
165  msgInfo << " " << std::setw(20) << "UseTaus? " << std::setw(5) << std::boolalpha << m_config->useTruthTaus();
166  if (m_config->useTruthTaus()) {
167  msgInfo << " [" << m_config->sgKeyTruthTaus() << "]" << '\n'
168  << " --- Pt > " << m_config->truth_tau_PtCut() << '\n'
169  << " --- |eta| < " << m_config->truth_tau_EtaCut() << '\n';
170  } else {
171  msgInfo << '\n';
172  }
173  msgInfo << " " << std::setw(20) << "UseMET? " << std::setw(5) << std::boolalpha << m_config->useTruthMET();
174  if (m_config->useTruthMET()) {
175  msgInfo << " [" << m_config->sgKeyTruthMET() << "]" << '\n';
176  } else {
177  msgInfo << '\n';
178  }
179  msgInfo << " " << std::setw(20) << "DoOverlapRemoval Mu-Jet? " << std::setw(5) << std::boolalpha <<
180  m_config->doParticleLevelOverlapRemovalMuJet() << '\n';
181  msgInfo << " " << std::setw(20) << "DoOverlapRemoval El-Jet? " << std::setw(5) << std::boolalpha <<
182  m_config->doParticleLevelOverlapRemovalElJet() << '\n';
183  msgInfo << " " << std::setw(20) << "DoOverlapRemoval Jet-Photon? " << std::setw(5) << std::boolalpha <<
184  m_config->doParticleLevelOverlapRemovalJetPhoton() << '\n';
185 
186 
187  if (m_config->useRCJets()) {
188  m_particleLevelRCJetObjectLoader = std::unique_ptr<ParticleLevelRCJetObjectLoader> (new ParticleLevelRCJetObjectLoader(
189  m_config));
191  "Failed to initialize ParticleLevelRCJetObjectLoader");
192  }
193 
194  if (m_config->useVarRCJets() == true) {
195  boost::split(m_VarRCJetRho, m_config->VarRCJetRho(), boost::is_any_of(","));
196  boost::split(m_VarRCJetMassScale, m_config->VarRCJetMassScale(), boost::is_any_of(","));
197 
198  for (auto& rho : m_VarRCJetRho) {
199  for (auto& mass_scale : m_VarRCJetMassScale) {
200  std::replace(rho.begin(), rho.end(), '.', '_');
201  std::string name = rho + mass_scale;
202  m_particleLevelVarRCJetObjectLoader[name] = std::unique_ptr<ParticleLevelRCJetObjectLoader> (new ParticleLevelRCJetObjectLoader(
203  m_config));
204  top::check(m_particleLevelVarRCJetObjectLoader[name]->setProperty("VarRCjets",
205  true),
206  "Failed to set VarRCjets property of VarRCJet");
207  top::check(m_particleLevelVarRCJetObjectLoader[name]->setProperty("VarRCjets_rho",
208  rho),
209  "Failed to set VarRCjets rho property of VarRCJet");
210  top::check(m_particleLevelVarRCJetObjectLoader[name]->setProperty("VarRCjets_mass_scale",
211  mass_scale),
212  "Failed to set VarRCjets mass scale property of VarRCJet");
213  top::check(m_particleLevelVarRCJetObjectLoader[name]->initialize(), "Failed to initialize VarRCJet");
214  } // end loop over mass scale parameters (e.g., top mass, w mass, etc.)
215  } // end loop over mass scale multiplies (e.g., 1.,2.,etc.)
216  }
217  } else {
218  msgInfo << "Particle level reconstruction is disabled." << '\n';
219  }
220  msgInfo.doOutput();
221  }

◆ ~ParticleLevelLoader()

top::ParticleLevelLoader::~ParticleLevelLoader ( )
virtual

Destructor of the loader tool.

Definition at line 223 of file ParticleLevelLoader.cxx.

223 { /* Deliberately Empty */}

Member Function Documentation

◆ active()

bool top::ParticleLevelLoader::active ( ) const
inline

Function that can be used to test whether the ParticleLevelLoader is active.

The loader is set to inactive if the names of the truth collections are unavailable. This is determined at construction.

Definition at line 80 of file ParticleLevelLoader.h.

80 {return m_active;}

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getProperty()

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ initialize()

virtual StatusCode asg::AsgTool::initialize ( )
inlinevirtualinherited

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented in SimpleMuonTriggerScaleFactors, Trig::TrigMuonMatching, CP::MuonTriggerScaleFactors, Trig::TrigTauMatchingTool, IHIEventShapeMapTool, ST::SUSYObjDef_xAOD, InDetSecVtxTruthMatchTool, JetGrooming::RecSoftDrop, met::METMaker, AsgForwardElectronIsEMSelector, JetGrooming::JetTrimming, ORUtils::BaseOverlapTool, PMGTools::PMGSherpa22VJetsWeightTool, AsgElectronEfficiencyCorrectionTool, CP::ElectronChargeEfficiencyCorrectionTool, AsgForwardElectronLikelihoodTool, CorrectPFOTool, CP::IsolationCorrectionTool, TauAnalysisTools::TauTruthMatchingTool, EGammaAmbiguityTool, InDetVertexTruthMatchTool, AthOnnx::OnnxRuntimeSessionToolCPU, AthOnnx::OnnxRuntimeSessionToolCUDA, PuppiWeightTool, JetIsolationTool, JetBalancePFlowJvtTool, CP::FFJetSmearingTool, JetForwardPFlowJvtTool, MCTruthClassifier, InDet::InDetHardScatterSelectionTool, dRMatchingTool, xAOD::BPhysBlindingTool, CP::EgammaCalibrationAndSmearingTool, JetVertexTaggerTool, tauRecTools::TrackRNN, LVL1::L1CaloOfflineTriggerTowerTools, TauAnalysisTools::TauSelectionTool, JetRecTool, met::METAssociationTool, CP::TrackVertexAssociationTool, met::METRebuilder, met::METAssociator, xAOD::TrackIsolationTool, InDet::InDetTrackSelectionTool, egammaMVACalibTool, TrigConf::xAODConfigTool, JetCleaningTool, met::METCaloRegionsTool, ZDC::ZdcLEDAnalysisTool, CP::MuonCalibTool, LVL1::L1CaloCells2TriggerTowers, JetVertexFractionTool, LVL1BS::PpmByteStreamReadV1V2Tool, JetClusterer, JetForwardJvtToolBDT, CP::AsgFlagSelectionTool, TauTrackFinder, TauAnalysisTools::DiTauSelectionTool, JetClustererByVertex, JetBadChanCorrTool, xAOD::BPhysTrackVertexMapTool, JetModifiedMassDrop, xAOD::CaloIsolationTool, EnhancedBiasWeighter, BookkeeperTool, ZDC::RpdSubtractCentroidTool, InDet::InDetUsedInFitTrackDecoratorTool, CP::AsgPtEtaSelectionTool, TauAnalysisTools::BuildTruthTaus, top::EventSaverFlatNtuple, tauRecTools::TauTrackRNNClassifier, InDet::InDetSecVtxTrackSelectionTool, JetForwardJvtTool, JetPileupTag::JetVertexNNTagger, CP::EgammaIsGoodOQSelectionTool, CP::IsolationCloseByCorrectionTool, CP::MuonCalibIntScaleSmearTool, DiTauRecTools::DiTauIDVarCalculator, JetFinder, AsgElectronIsEMSelector, CP::MuonCalibIntHighpTSmearTool, CP::MuonCalibIntSagittaTool, DiTauRecTools::DiTauDiscriminantTool, met::METBuilderTool, CP::AsgMaskSelectionTool, ElectronPhotonVariableCorrectionBase, ECUtils::EventCleaningTool, TauAnalysisTools::TauTruthTrackMatchingTool, met::METSoftTermsTool, LVL1::L1CaloLArTowerEnergy, HiggsTruthCategoryTool, IDTPM::TrackRoiSelectionTool, TauAnalysisTools::CommonDiTauEfficiencyTool, HIJetConstituentSubtractionTool, JetTrackSumMomentsTool, JetGrooming::SoftDrop, JetQGTaggerVariableTool, JetTrackMomentsTool, met::METTruthTool, CP::BaseLinearFakeBkgTool, PMGTools::PMGSherpaVjetsSysTool, ClusterMatching::CaloClusterMatchingTool, AsgPhotonEfficiencyCorrectionTool, InDet::JetTrackFilterTool, asg::DataHandleTestTool, xAODMaker::FileMetaDataTool, CP::BaseFakeBkgTool, InDet::InclusiveTrackFilterTool, InDet::InDetTrackTruthFilterTool, HIJetClusterSubtractorTool, CP::MVATrackVertexAssociationTool, IDTPM::RoiSelectionTool, ElectronPhotonVariableCorrectionTool, JetCalibrationTool, JetCaloQualityTool, JetOriginCorrectionTool, InDet::InDetTrackBiasingTool, HIJetClusterIndexAssociationTool, TauWPDecorator, TrigGlobalEfficiencyCorrectionTool, ZdcRecChannelToolV2, IDTPM::TrackObjectSelectionTool, CP::LhoodMM_tools, FlavorTagDiscriminants::GNNTool, FlavorTagDiscriminants::MultifoldGNNTool, CP::MuonSelectionTool, TauAnalysisTools::CommonDiTauSmearingTool, JSSTaggerBase, ZDC::ZdcAnalysisTool, IDTPM::TrackQualitySelectionTool, AsgElectronLikelihoodTool, CP::JetQGTagger, CP::JetJvtEfficiency, LVL1::L1CaloFcal23Cells2RxMappingTool, ORUtils::OverlapRemovalTool, Analysis::JetQuarkLabel, Ringer::AsgRingerSelectorTool, InDet::InDetTrackSmearingTool, JetCopier, JetGrooming::JetGroomer, met::METPhotonAssociator, JetECPSFractionTool, JetPtAssociationTool, met::METElectronAssociator, met::METTauAssociator, PMGTools::PMGDecayProductsSelectionTool, WeightToolBase, HIJetDRAssociationTool, JetClusterMomentsTool, met::METJetAssocTool, TauVertexFinder, IDTPM::JsonPlotsDefReadTool, TauAnalysisTools::DiTauSmearingTool, JetDRTrackAssocTool, JetReclusterer, TauDecayModeNNClassifier, BDTVertexWeightCalculator, asg::UnitTestTool1, IDTPM::DeltaRMatchingToolBase< T, R >, AsgElectronSelectorTool, JetReclusteringTool, met::METMuonAssociator, TauPi0CreateROI, TauShotFinder, IDTPM::DeltaRMatchingToolBase< xAOD::TrackParticle, xAOD::TruthParticle >, IDTPM::DeltaRMatchingToolBase< xAOD::TruthParticle, xAOD::TrackParticle >, IDTPM::DeltaRMatchingToolBase< xAOD::TrackParticle >, ZdcRecChannelToolLucrod, PMGTools::PMGTruthWeightTool, JetVoronoiMomentsTool, Trig::MatchFromCompositeTool, asg::UnitTestTool3, IDTPM::TruthTrackMatchingTool, CP::ApplyFakeFactor, AsgElectronChargeIDSelectorTool, HIJetMaxOverMeanTool, PanTau::Tool_FeatureExtractor, TauElectronVetoVariables, CP::IsolationSelectionTool, WeightsAgregator, EL::UnitTestTool, FlavorTagDiscriminants::TrackClassifier, JetLArHVTool, ZDC::ZdcTrigValidTool, IDTPM::TrackTruthMatchingTool, HI::HIPileupTool, InDet::InDetTrackTruthOriginTool, JetHelper::VarTool, FlavorTagDiscriminants::DL2Tool, BTaggingSelectionTool, EnergyCorrelatorGeneralizedRatiosTool, EnergyCorrelatorGeneralizedTool, EnergyCorrelatorRatiosTool, EnergyCorrelatorTool, TauEleOverlapChecker, TauJetRNNEvaluator, asg::UnitTestTool2, JetTruthLabelingTool, ZDC::ZdcRecTool, HIJetConstituentModifierTool, TauCalibrateLC, TauGNNEvaluator, TauPi0ScoreCalculator, TauRecToolBase, Trig::TrigEgammaEmulationPrecisionElectronHypoTool, asg::UnitTestTool1A, PDFWeight, HIEventShapeJetIteration, HIJetSignificanceTool, CP::JetQGTaggerBDT, JetWidthTool, TauVertexVariables, Trig::TrigEgammaEmulationPrecisionPhotonHypoTool, Trig::TrigEgammaMatchingTool, Trig::R3IParticleRetrievalTool, IDTPM::TruthTrackQualitySelectionTool, JetPileupLabelingTool, JetFromPseudojet, JetTruthParticleSelectorTool, Trig::TrigEgammaEmulationBaseHypoTool, CP::ApplyE2YFakeRate, ParticleScaleFactorTool, InDet::InDetTrackSystematicsTool, JetCaloQualityToolFE, Trig::MatchingTool, Trig::R3MatchingTool, IDTPM::OfflineTrackQualitySelectionTool, JetParticleAssociation, Trig::TrigEgammaEmulationChain, Trig::TrigEgammaEmulationFastCaloHypoTool, AthOnnx::OnnxRuntimeInferenceTool, xAODtoHepMCTool, HIEventShapeMapTool, HI::HIVertexSelectionTool, JetHelper::HistoInput2D, TauVertexedClusterDecorator, Trig::IParticleRetrievalTool, CP::AsymptMatrixTool, HI::HIEventSelectionTool, FlavorTagDiscriminants::HbbTagTool, JetConstituentFrac, JetGroomMRatio, JetHelper::HistoInput1D, JetHelper::TextInputMCJES, ExtendTrackToLayerTool, Trig::TypedScoringTool, TrackTruthSelectionTool, HIUEModulatorTool, JSSWTopTaggerANN, CP::JvtEfficiencyToolBase, JetEMScaleMomTool, MvaTESVariableDecorator, TauAODLeptonRemovalTool, TauCombinedTES, ParticleJetDeltaRLabelTool, HIEventShapeSummaryTool, FlavorTagDiscriminants::BTagAugmenterTool, FlavorTagDiscriminants::VRJetOverlapDecoratorTool, JetCaloEnergies, ParticleJetGhostLabelTool, FlavorTagDiscriminants::BTagMuonAugmenterTool, MBTSTimeFilterTool, JSSWTopTaggerDNN, SmoothedTopTagger, MvaTESEvaluator, CP::IsolationLowPtPLVTool, Trig::DRScoringTool, Trig::EgammaDRScoringTool, SmoothedWZTagger, CP::FJvtEfficiencyTool, CP::JvtSelectionToolBase, CP::NNJvtSelectionTool, AthAsgExUnittestTool, CP::JvtSelectionTool, BTaggingSelectionJsonTool, CP::FJvtSelectionTool, CP::JvtEfficiencyTool, CP::NNJvtEfficiencyTool, BookkeeperDumperTool, TrigFastCalibWithRings, top::ScaleFactorRetriever, BTaggingEfficiencyTool, BTaggingTruthTaggingTool, MissingCellListTool, JetVoronoiDiagramHelpers::Diagram, FastJetInterfaceTool, met::METSystematicsTool, Trig::TrigEgammaEmulationToolMT, JetAttributeRatioSelector, top::GhostTrackSystematicsMaker, top::TopObjectSelection, BTaggingEigenVectorRecompositionTool, LVL1::TrigT1CaloLWHistogramToolV1, LVL1::TrigT1CaloLWHistogramTool, Trig::TrigDecisionTool, CP::PhotonPointingTool, met::METRecoTool, CP::PhotonVertexSelectionTool, top::KLFitterTool, ZdcByteStreamReadV1V2Tool, CP::PileupReweightingTool, top::JetObjectCollectionMaker, LVL1::L1CaloxAODOfflineTriggerTowerTools, RCJet, LVL1::TrigT1CaloMonErrorToolV1, met::METTrackFilterTool, LVL1::TrigT1CaloMonErrorTool, SoftKillerWeightTool, EventDensityTool, met::METSignificance, ParticleLevelRCJetObjectLoader, JetUncertaintiesTool, top::TopToolStore, CP::JetTileCorrectionTool, xAODMaker::TriggerMenuMetaDataTool, D3PD::D3PDMCTruthClassifier, top::ElectronInJetSubtractionCollectionMaker, top::MuonObjectCollectionMaker, JetConstituentModSequence, top::EgammaObjectCollectionMaker, HistoGroupBase, AsgPhotonIsEMSelector, JetAttributeSelector, top::ObjectCollectionMaker, TrackVertexAssociationTool, met::METRefinerTool, TauAnalysisTools::CommonSmearingTool, top::GlobalLeptonTriggerCalculator, top::ScaleFactorCalculator, top::TrackSystematicsMaker, top::ElectronScaleFactorCalculator, top::JetScaleFactorCalculator, top::MuonScaleFactorCalculator, PanTau::Tool_DetailsArranger, LVL1::L1CaloMonitoringCaloTool, top::EventSaverxAOD, LVL1::L1CaloTTIdTools, top::SoftMuonObjectCollectionMaker, top::TauObjectCollectionMaker, JetInputElRemovalTool, TauAnalysisTools::CommonEfficiencyTool, top::BTagScaleFactorCalculator, top::MissingETObjectCollectionMaker, PanTau::PanTauProcessor, xAODMaker::TruthMetaDataTool, top::PDFScaleFactorCalculator, top::PhotonScaleFactorCalculator, top::PseudoTopReco, EventShapeCopier, met::METJetTool, GoodRunsListSelectionTool, top::EventSaverxAODNext, top::FwdElectronScaleFactorCalculator, FSR::FsrPhotonTool, Trig::StaticBunchCrossingTool, ZMassConstraint::ConstraintFit, TauAnalysisTools::TauEfficiencyCorrectionsTool, PanTau::Tool_DecayModeDeterminator, PanTau::Tool_ModeDiscriminator, CP::ElectronLRTOverlapRemovalTool, HIClusterSubtraction, JetAttributeHisto, JetPseudojetCopier, met::METEgammaAssociator, Trig::xAODBunchCrossingTool, TauAnalysisTools::DiTauEfficiencyCorrectionsTool, TauAnalysisTools::DiTauTruthMatchingTool, TauAnalysisTools::TauSmearingTool, top::JetMETCPTools, met::METTruthAssociator, PanTau::Tool_InformationStore, HistoDefinitionTool, PanTau::Tool_InputConverter, JetBottomUpSoftDrop, JetRecursiveSoftDrop, PMGTools::PMGCrossSectionTool, JetSoftDrop, TrigEgammaMatchingToolMT, DiTauMassTools::MissingMassToolV2, top::TauScaleFactorCalculator, top::TriggerCPTools, JetConstituentsRetriever, VoronoiWeightTool, top::GhostTrackCPTools, JetCaloCellQualityTool, JetContainerHistoFiller, ChargedHadronSubtractionTool, JetTrackSelectionTool, met::METRegionsTool, met::METSoftAssociator, PanTau::Tool_TauConstituentGetter, top::EventCleaningSelection, ConstituentSubtractorTool, top::EgammaCPTools, top::OtherCPTools, top::TopEventMaker, JetHistoBase, JetSelectorAttributeRunII, JetSplitter, CaloClusterConstituentsOrigin, JetTrackSelectionTool2, SimpleJetTrackSelectionTool, CP::MuonLRTOverlapRemovalTool, top::FlavorTaggingCPTools, top::TauCPTools, HistosForJetSelection, JetPruner, JetToolRunner, JetUsedInFitTrackDecoratorTool, top::TrackCPTools, JetTrimmer, NSubjettinessRatiosTool, CP::MuonEfficiencyScaleFactors, top::PileupScaleFactorCalculator, top::MuonCPTools, JetConstitFourMomTool, NSubjettinessTool, ZdcDataAccessV2, JetPseudojetRetriever, LVL1BS::TrigT1CaloDataAccessV2, PanTau::Tool_TauConstituentSelector, CopyTruthParticles, top::IsolationCPTools, top::OverlapRemovalCPTools, ClusterAtEMScaleTool, CP::IsolationHelper, top::BoostedTaggingCPTools, AsgDeadHVCellRemovalTool, ConstitTimeCutTool, Analysis::JetConeLabeling, JetSelectorAttribute, HIJetUEMonitoring, HIEfficiencyResponseHistos, JetSubStructureMomentToolsBase, AsgHelloTool, CopyTruthJetParticles, LeadingJetsRelations, EfficiencyResponseHistos, and JetEventSelector.

Definition at line 133 of file AsgTool.h.

133 { return StatusCode::SUCCESS; }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isDressingPhoton()

bool top::ParticleLevelLoader::isDressingPhoton ( const xAOD::TruthParticle photon,
const xAOD::TruthParticleContainer dressedParticles,
const float  dressingCone = 0.1 
) const
protected

Definition at line 826 of file ParticleLevelLoader.cxx.

828  {
829  // We do not check whether the original truth particle decoration exists
830  // and / or is valid because at this point we assume that it was already
831  // used by the lepton loading function.
832  static const std::string decoName {
833  "originalTruthParticle"
834  };
835 
836  // Use rapidity instead of pseudo-rapidity in deltaR calculation for overlap removal
837  bool useRapidityInDeltaRCalculation = m_config->useParticleLevelOverlapRemovalWithRapidity();
838 
839  for (const auto *particle : dressedParticles) {
840  bool tp_isValid = false;
842  try {
843  truthProxy = particle->auxdata<ElementLink<xAOD::TruthParticleContainer> >("originalTruthParticle");
844  tp_isValid = truthProxy.isValid();
845  } catch (const SG::ExcBadAuxVar&) {
846  // ExcBadAuxVar can be thrown before checking if proxy is valid
847  tp_isValid = false;
848  }
849 
850  if (not tp_isValid) {
851  if (xAOD::P4Helpers::deltaR(particle, &photon, useRapidityInDeltaRCalculation) <= dressingCone) {
852  return true;
853  }
854  } else {
855  if (xAOD::P4Helpers::deltaR((*truthProxy), &photon, useRapidityInDeltaRCalculation) <= dressingCone) {
856  return true;
857  }
858  }
859  }
860 
861  return false;
862  }

◆ load()

ParticleLevelEvent top::ParticleLevelLoader::load ( )

Loading function.

Does the actual work. This function will load the truth information from the #xaodEvent and return this data transformed into a truth level event. The data stored in the ParticleLevel is owned by the truth event loader.

Parameters
xaodEventThe input data event object.
Returns
ParticleLevelEvent object.

Definition at line 225 of file ParticleLevelLoader.cxx.

225  {
226  // If the ParticleLevelLoader is not active, return an empty object
227  if (!m_active) {
228  return {};
229  }
230 
231  // Create the result object.
232  ParticleLevelEvent plEvent;
233 
234  // Load event info object directly into the plEvent
235  top::check(evtStore()->retrieve(plEvent.m_info, m_config->sgKeyEventInfo()),
236  "xAOD::TEvent::retrieve failed for EventInfo");
237 
238  // Load the info for electrons, muons, jets, and MET into local objects:
239  // They need to be selected / modified / etc
241  nullptr
242  };
243  const xAOD::TruthParticleContainer* muons {
244  nullptr
245  };
246  const xAOD::TruthParticleContainer* photons {
247  nullptr
248  };
249  const xAOD::JetContainer* jets {
250  nullptr
251  };
252  const xAOD::JetContainer* largeRJets {
253  nullptr
254  };
255  const xAOD::TruthParticleContainer* taus {
256  nullptr
257  };
258  const xAOD::MissingETContainer* mets {
259  nullptr
260  };
261 
262  if (m_config->useTruthElectrons()) {
263  top::check(evtStore()->retrieve(electrons, m_config->sgKeyTruthElectrons()),
264  "xAOD::TEvent::retrieve failed for Truth Electrons");
265  }
266 
267  if (m_config->useTruthMuons()) {
268  top::check(evtStore()->retrieve(muons, m_config->sgKeyTruthMuons()),
269  "xAOD::TEvent::retrieve failed for Truth Muons");
270  }
271 
272  if (m_config->useTruthPhotons()) {
273  top::check(evtStore()->retrieve(photons, m_config->sgKeyTruthPhotons()),
274  "xAOD::TEvent::retrieve failed for Truth Photons");
275  }
276 
277  if (m_config->useTruthJets()) {
278  top::check(evtStore()->retrieve(jets, m_config->sgKeyTruthJets()),
279  "xAOD::TEvent::retrieve failed for Truth Jets");
280  }
281 
282  if (m_config->useTruthLargeRJets()) {
283  top::check(evtStore()->retrieve(largeRJets, m_config->sgKeyTruthLargeRJets()),
284  "xAOD::TEvent::retrieve failed for Truth Jets Large R");
285  }
286 
287  if (m_config->useTruthTaus()) {
288  top::check(evtStore()->retrieve(taus, m_config->sgKeyTruthTaus()),
289  "xAOD::TEvent::retrieve failed for Truth Taus");
290  }
291 
292  if (m_config->useTruthMET()) {
293  top::check(evtStore()->retrieve(mets, m_config->sgKeyTruthMET()),
294  "xAOD::TEvent::retrieve failed for Truth Missing ET");
295  }
296 
297  // ======================================================================
298  // DRESSING
299  // We want to put the dressed leptons into the Event container, however,
300  // after reading from the TOPQ file, their dressed kinematics are stored
301  // as decorations. Lets (1) create a shallow copied container now, (2)
302  // set the kinematics for the shallow copies to the dressed values, (3)
303  // create decorations for the bare (non-dressed) kinematics, and (4)
304  // deep-copy the selection electrons from that container later.
305 
306  // ELECTRONS
307  if (m_config->useTruthElectrons()) {
311  "Failure to load dressed electrons.");
312  }
313 
314  // MUONS
315  if (m_config->useTruthMuons()) {
319  "Failure to load dressed muons.");
320  }
321 
322  // ======================================================================
323  // OBJECT SELECTION
324  // This yields index collections, one for each
325  // { electrons, muons, photons, jets, largeRJets }.
326  std::list<std::size_t> idx_electrons; // -> relative to `electrons`
327  std::list<std::size_t> idx_muons; // -> relative to `muons`
328  std::list<std::size_t> idx_photons; // -> relative to `photons`
329  std::list<std::size_t> idx_jets; // -> relative to `jets`
330  std::list<std::size_t> idx_largeRJets; // -> relative to `largeRJets`
331  std::list<std::size_t> idx_taus; // -> relative to `taus`
332 
333  // Electrons
334  if (m_config->useTruthElectrons()) {
335  for (std::size_t i = 0; i < electrons->size(); ++i) {
336  const auto* electron = electrons->at(i);
337 
338  // Allow use of mixed-particle input container.
339  if (electron->absPdgId() != 11) {
340  continue;
341  }
342 
343  // FIXME: Is this still needed?
345  continue;
346  }
347 
348  if (m_objectSelector_Electron->apply(*electron)) {
349  idx_electrons.push_back(i);
350  }
351  }
352  }
353 
354  // Muons
355  if (m_config->useTruthMuons()) {
356  for (std::size_t i = 0; i < muons->size(); ++i) {
357  const auto* muon = muons->at(i);
358 
359  // Allow use of mixed-particle input container.
360  if (muon->absPdgId() != 13) {
361  continue;
362  }
363 
364  // FIXME: Is this still needed?
366  continue;
367  }
368 
369  if (m_objectSelector_Muon->apply(*muon)) {
370  idx_muons.push_back(i);
371  }
372  }
373  }
374 
375  // Photons
376  if (m_config->useTruthPhotons()) {
377  for (std::size_t i = 0; i < photons->size(); ++i) {
378  const auto* photon = photons->at(i);
379 
380  // Allow use of mixed-particle input container.
381  if (photon->absPdgId() != 22) {
382  continue;
383  }
384 
385  // FIXME: Is this still needed?
387  continue;
388  }
389 
390  if (not m_objectSelector_Photon->apply(*photon)) {
391  continue;
392  }
393 
394  // Reject photons used for electron dressing.
395  if (m_config->useTruthElectrons()) {
397  continue;
398  }
399  }
400 
401  // Reject photons used for muon dressing.
402  if (m_config->useTruthMuons()) {
403  if (isDressingPhoton(*photon, *muons)) {
404  continue;
405  }
406  }
407  idx_photons.push_back(i);
408  }
409  }
410 
411  // Jets
412  if (m_config->useTruthJets()) {
413  for (std::size_t i = 0; i < jets->size(); ++i) {
414  if (m_objectSelector_Jet->apply(*jets->at(i))) {
415  idx_jets.push_back(i);
416  }
417  }
418  }
419 
420  // Large-R-Jets
421  if (m_config->useTruthLargeRJets()) {
422  for (std::size_t i = 0; i < largeRJets->size(); ++i) {
423  if (m_objectSelector_LargeRJet->apply(*largeRJets->at(i))) {
424  idx_largeRJets.push_back(i);
425  }
426  }
427  }
428 
429  // Taus
430  if (m_config->useTruthTaus()) {
431  for (std::size_t i = 0; i < taus->size(); ++i) {
432  if (m_objectSelector_Tau->apply(*taus->at(i))) {
433  idx_taus.push_back(i);
434  }
435  }
436  }
437 
438  // ======================================================================
439  // OVERLAP REMOVAL
440  // Removal Steps:
441  // 1. Jets & Muons:
442  // Remove Muons with dR < 0.4
443  // 2. Jets & Electrons:
444  // Remove Electrons with dR < 0.4
445  // 3. Photons & Jets:
446  // Remove Jets with dR < 0.4
447 
448  // Use rapidity instead of pseudo-rapidity in deltaR calculation for overlap removal
449  bool useRapidityInDeltaRCalculation = m_config->useParticleLevelOverlapRemovalWithRapidity();
450 
451  // Jets and Muons: Remove Muon with dR < 0.4
452  if (m_config->useTruthMuons() && m_config->useTruthJets() && m_config->doParticleLevelOverlapRemovalMuJet()) {
453 #ifdef TOP_PARTICLE_LEVEL_DEBUG_OVERLAP_REMOVAL
454  const std::size_t nMuonsPreOR {
455  idx_muons.size()
456  };
457 #endif
458 
459  idx_muons.remove_if([&idx_jets, &jets, &useRapidityInDeltaRCalculation, this](std::size_t m) {
460  for (auto j : idx_jets) {
461  if (xAOD::P4Helpers::deltaR(jets->at(j), m_muonsDressed->at(m), useRapidityInDeltaRCalculation) < 0.4) {
462  return true;
463  }
464  }
465  return false;
466  });
467 
468 #ifdef TOP_PARTICLE_LEVEL_DEBUG_OVERLAP_REMOVAL
469  ATH_MSG_INFO("[top::ParticleLevelLoader] Muon-In-Jet OR: "
470  << nMuonsPreOR << " -> " << idx_muons.size());
471 #endif
472  }
473 
474  // Jets and Electrons: Remove Electron with dR < 0.4
475  if (m_config->useTruthElectrons() && m_config->useTruthJets() && m_config->doParticleLevelOverlapRemovalElJet()) {
476 #ifdef TOP_PARTICLE_LEVEL_DEBUG_OVERLAP_REMOVAL
477  const std::size_t nElectronsPreOR {
478  idx_electrons.size()
479  };
480 #endif
481 
482  idx_electrons.remove_if([&idx_jets, &jets, &useRapidityInDeltaRCalculation, this](std::size_t e) {
483  for (auto j : idx_jets) {
484  if (xAOD::P4Helpers::deltaR(jets->at(j),m_electronsDressed->at(e), useRapidityInDeltaRCalculation) < 0.4) {
485  return true;
486  }
487  }
488  return false;
489  });
490 
491 #ifdef TOP_PARTICLE_LEVEL_DEBUG_OVERLAP_REMOVAL
492  ATH_MSG_INFO("[top::ParticleLevelLoader] Electron-In-Jet OR: "
493  << nElectronsPreOR << " -> " << idx_electrons.size());
494 #endif
495  }
496 
497  // Photons and Jets: Remove Jet with dR < 0.4
498  if (m_config->useTruthPhotons() && m_config->useTruthJets() && m_config->doParticleLevelOverlapRemovalJetPhoton()) {
499 #ifdef TOP_PARTICLE_LEVEL_DEBUG_OVERLAP_REMOVAL
500  const std::size_t nJetPreOR {
501  idx_jets.size()
502  };
503 #endif
504 
505  idx_jets.remove_if([&idx_photons, &photons, &useRapidityInDeltaRCalculation, &jets](std::size_t j) {
506  for (auto ph : idx_photons) {
507  if (xAOD::P4Helpers::deltaR(photons->at(ph), jets->at(j), useRapidityInDeltaRCalculation) < 0.4) {
508  return true;
509  }
510  }
511  return false;
512  });
513 
514 #ifdef TOP_PARTICLE_LEVEL_DEBUG_OVERLAP_REMOVAL
515  ATH_MSG_INFO("[top::ParticleLevelLoader] Jet-In-Photon OR: "
516  << nJetsPreOR << " -> " << idx_jets.size());
517 #endif
518  }
519 
520 
521  // ======================================================================
522  // WRITE TO LOADER
523  // 1. Loop index lists for electrons / muons / photons / jets
524  // 2. Create a deep copy of the item and insert it into the
525  // appropriate container
526  // 3. Create a shallow copy of the containers and apply corrections
527  // if needed (dressing, etc.)
528 
529  // Create New Containers holding the "Good" Electrons / Muons / Jets
530  // and the MET
531  if (m_config->useTruthElectrons()) {
534  goodElectrons->setStore(goodElectronsAux); //< Connect the two
535 
536  m_goodElectrons.reset(goodElectrons);
537  m_goodElectronsAux.reset(goodElectronsAux);
538 
539  for (auto e : idx_electrons) {
540  const auto& elPtr = m_electronsDressed->at(e);
542  electron->makePrivateStore(*elPtr);
543  m_goodElectrons->push_back(electron);
544  }
545 
546  // sort electrons based on dressed pT -- otherwise they remain sorted according to bare pT
548  }
549 
550  if (m_config->useTruthMuons()) {
553  goodMuons->setStore(goodMuonsAux); //< Connect the two
554 
555  m_goodMuons.reset(goodMuons);
556  m_goodMuonsAux.reset(goodMuonsAux);
557 
558  for (auto m : idx_muons) {
559  const auto& muPtr = m_muonsDressed->at(m);
561  muon->makePrivateStore(*muPtr);
562  m_goodMuons->push_back(muon);
563  }
564 
565  // sort muons based on dressed pT -- otherwise they remain sorted according to bare pT
567  }
568 
569  if (m_config->useTruthPhotons()) {
572  goodPhotons->setStore(goodPhotonsAux); //< Connect the two
573 
574  m_goodPhotons.reset(goodPhotons);
575  m_goodPhotonsAux.reset(goodPhotonsAux);
576 
577  for (auto ph : idx_photons) {
578  const auto& phPtr = photons->at(ph);
580  photon->makePrivateStore(*phPtr);
581  m_goodPhotons->push_back(photon);
582  }
583  }
584 
585  if (m_config->useTruthJets()) {
586  xAOD::JetContainer* goodJets = new xAOD::JetContainer();
587  xAOD::JetAuxContainer* goodJetsAux = new xAOD::JetAuxContainer();
588  goodJets->setStore(goodJetsAux); //< Connect the two
589 
590  m_goodJets.reset(goodJets);
591  m_goodJetsAux.reset(goodJetsAux);
592 
593  for (auto j : idx_jets) {
594  const auto& jetPtr = jets->at(j);
595  xAOD::Jet* jet = new xAOD::Jet();
596  jet->makePrivateStore(*jetPtr);
597  m_goodJets->push_back(jet);
598  }
599  }
600 
601  if (m_config->useTruthLargeRJets()) {
602  xAOD::JetContainer* goodLargeRJets = new xAOD::JetContainer();
603  xAOD::JetAuxContainer* goodLargeRJetsAux = new xAOD::JetAuxContainer();
604  goodLargeRJets->setStore(goodLargeRJetsAux); //< Connect the two
605 
606  m_goodLargeRJets.reset(goodLargeRJets);
607  m_goodLargeRJetsAux.reset(goodLargeRJetsAux);
608 
609  for (auto j : idx_largeRJets) {
610  const auto& jetPtr = largeRJets->at(j);
611  xAOD::Jet* jet = new xAOD::Jet();
612  jet->makePrivateStore(*jetPtr);
613  m_goodLargeRJets->push_back(jet);
614  }
615  }
616 
617  if (m_config->useTruthTaus()) {
620  goodTaus->setStore(goodTausAux); //< Connect the two
621 
622  m_goodTaus.reset(goodTaus);
623  m_goodTausAux.reset(goodTausAux);
624 
625  for (auto t : idx_taus) {
626  const auto& tauPtr = taus->at(t);
628  tau->makePrivateStore(*tauPtr);
629  m_goodTaus->push_back(tau);
630  }
631  }
632 
633  if (m_config->useTruthMuons() && m_config->useSoftMuons() ) {
636  goodSoftMuons->setStore(goodSoftMuonsAux); //< Connect the two
637 
638  m_goodSoftMuons.reset(goodSoftMuons);
639  m_goodSoftMuonsAux.reset(goodSoftMuonsAux);
640 
641  //if we want the soft muon truth history, the parent navigation for the TruthMuons collection is unfortunately working only in DAOD_PHYS, in other derivations
642  //we need a workaround, i.e. we need to use the muon from the TruthParticles container instead of the one from the TruthMuon container
643  std::vector<const xAOD::TruthParticle*> truth_particles_vec; //this is an helper vector to speed up looking for the right muon...
644  const xAOD::TruthParticleContainer* truth_particles = nullptr;
645  if (m_config->useTruthParticles() && m_config->softmuonAdditionalTruthInfo()) {
646  top::check(evtStore()->retrieve(truth_particles, m_config->sgKeyMCParticle()),
647  "xAOD::TEvent::retrieve failed for Truth Particles");
648  if(truth_particles)
649  {
650  for(const xAOD::TruthParticle* p : *truth_particles)
651  {
652  if(p->isMuon() && MC::isStable(p)) truth_particles_vec.push_back(p);
653  }
654  }
655  }
656 
657  for (std::size_t i = 0; i < muons->size(); ++i) { //note we don't use dressed muons in this case
658  if(std::find(idx_muons.begin(), idx_muons.end(), i)!=idx_muons.end()) continue; //we don't want to store muons both as standard muons and as soft muons
659  const auto& muPtr = muons->at(i);
660 
661  //here we apply the selection for soft muons
662  if(muPtr->absPdgId()!=13) continue;
663  if(muPtr->pt()<m_config->truth_softmuon_PtCut()) continue;
664  if(fabs(muPtr->eta())>m_config->truth_softmuon_EtaCut()) continue;
665  //now the association with the jets
666 
667  if(m_config->useTruthJets())
668  {
669  bool isInJet=false;
670  for(xAOD::Jet* jetPtr : *m_goodJets)
671  {
672  float dR = xAOD::P4Helpers::deltaR(*muPtr,*jetPtr,m_config->softmuonDRJetcutUseRapidity());
673  if(dR<m_config->softmuonDRJetcut())
674  {
675  isInJet=true;
676  break;
677  }
678  }
679  if(!isInJet) continue;
680  }
681  //end of selection
682 
683  if(m_config->softmuonAdditionalTruthInfo() && (!muPtr->isAvailable<bool>("hasTruthMuonHistoryInfo") || !muPtr->auxdecor<bool>("hasTruthMuonHistoryInfo"))) //if "hasTruthMuonPartonHistoryInfo" exists and is true, we already filled these info for this muon (since muon history filling can be done in several parts of the code for good reasons)
684  {
685  bool doPartonHistory=m_config->softmuonAdditionalTruthInfoCheckPartonOrigin();
686  top::truth::initTruthMuonHistoryInfo(muPtr,doPartonHistory);
687 
688  //in DAOD_PHYS we can just navigate directly from the muon from TruthMuons
689  if (m_config->getDerivationStream() == "PHYS")
690  {
691  top::truth::getTruthMuonHistory(muPtr,doPartonHistory,m_config->getShoweringAlgorithm(),m_config->softmuonAdditionalTruthInfoDoVerbose());
692  }
693  else //apparently in older derivation formats we have to navigate using the muon from the TruthParticles container, this is annoying
694  {
695  //first we find the associated truth muon from truth_particles
696  const xAOD::TruthParticle* assMuon = 0;
697  for(const xAOD::TruthParticle* p : truth_particles_vec)
698  {
699  if(!p) continue;
700  if(HepMC::uniqueID(p) == HepMC::uniqueID(muPtr))
701  {
702  assMuon = p;
703  break;
704  }
705  }
706  if(assMuon) //then we use it
707  {
708  //if we don't have the info correctly filled already, let's initialize it to default values
709  if(!assMuon->isAvailable<bool>("hasTruthMuonHistoryInfo") || ! assMuon->auxdecor<bool>("hasTruthMuonHistoryInfo")) top::truth::initTruthMuonHistoryInfo(assMuon,doPartonHistory);
710  //we have to use the associated muon from the TruthParticles container in this case
711  top::truth::getTruthMuonHistory(assMuon,doPartonHistory,m_config->getShoweringAlgorithm(),m_config->softmuonAdditionalTruthInfoDoVerbose());
712  //then we copy the info to our muon
714 
715  }
716  }
717  }//end of additional soft muon filling
718 
720  muon->makePrivateStore(*muPtr);
721 
722  m_goodSoftMuons->push_back(muon);
723 
724  }
725 
726  // sort muons based on dressed pT -- otherwise they remain sorted according to bare pT
728  }
729 
730 
731  // ======================================================================
732  // INSERTION INTO STORAGE
733  // Put everything into storage, i.e. into the ParticleLevel.event object
734  plEvent.m_electrons = m_config->useTruthElectrons() ? m_goodElectrons.get() : nullptr;
735  plEvent.m_muons = m_config->useTruthMuons() ? m_goodMuons.get() : nullptr;
736  plEvent.m_softmuons = (m_config->useTruthMuons() && m_config->useSoftMuons()) ? m_goodSoftMuons.get() : nullptr;
737  plEvent.m_photons = m_config->useTruthPhotons() ? m_goodPhotons.get() : nullptr;
738  plEvent.m_jets = m_config->useTruthJets() ? m_goodJets.get() : nullptr;
739  plEvent.m_largeRJets = m_config->useTruthLargeRJets() ? m_goodLargeRJets.get() : nullptr;
740  plEvent.m_taus = m_config->useTruthTaus() ? m_goodTaus.get() : nullptr;
741  plEvent.m_met = m_config->useTruthMET() ? (*mets)[ "NonInt" ] : nullptr;
742 
743  // Reclustered jets
744  if (m_config->useRCJets()) {
746  plEvent), "Failed to execute ParticleLevelRCJetObjectLoader container");
747  // Get the name of the container of re-clustered jets
748  std::string RCJetContainerNane = m_particleLevelRCJetObjectLoader->rcjetContainerName();
749 
750  // -- Retrieve the re-clustered jets from TStore & save good re-clustered jets -- //
751  const xAOD::JetContainer* rc_jets(nullptr);
752  top::check(evtStore()->retrieve(rc_jets, RCJetContainerNane), "Failed to retrieve particle RC JetContainer");
753 
754  for (auto rcjet : *rc_jets) {
755  top::check(rcjet->isAvailable<bool>(
756  "PassedSelection"),
757  " Can't find reclustered jet decoration \"PassedSelection\" - we need it to decide if we should keep the reclustered jet in the top::Event instance or not!");
758  if (rcjet->auxdataConst<bool>("PassedSelection")) plEvent.m_RCJets.push_back((xAOD::Jet*) rcjet);
759  }
760  }
761  // Variable-R reclustered jets
762  if (m_config->useVarRCJets()) {
763  for (auto& rho : m_VarRCJetRho) {
764  for (auto& mass_scale : m_VarRCJetMassScale) {
765  std::replace(rho.begin(), rho.end(), '.', '_');
766  std::string name = rho + mass_scale;
768  plEvent), "Failed to execute RCJet container");
769 
770  // Get the name of the container of re-clustered jets in TStore
771  std::string varRCJetContainerName = m_particleLevelVarRCJetObjectLoader[name]->rcjetContainerName();
772 
773  // -- Retrieve the re-clustered jets from TStore & save good re-clustered jets -- //
774  const xAOD::JetContainer* vrc_jets(nullptr);
775  top::check(evtStore()->retrieve(vrc_jets, varRCJetContainerName), "Failed to retrieve RC JetContainer");
776 
777  plEvent.m_VarRCJets[name] = std::make_shared<xAOD::JetContainer>(SG::VIEW_ELEMENTS);
778  for (auto vrcjet : *vrc_jets) {
779  top::check(vrcjet->isAvailable<bool>(
780  "PassedSelection"),
781  " Can't find jet decoration \"PassedSelection\" - we need it to decide if we should keep the variable-R reclustered jet in the top::Event instance or not!");
782  if (vrcjet->auxdataConst<bool>("PassedSelection")) plEvent.m_VarRCJets[name]->push_back((xAOD::Jet*) vrcjet);
783 
784  }
785  }
786  }
787  }
788 
789 
790 
791  return plEvent;
792  }

◆ loadDressedLeptons()

bool top::ParticleLevelLoader::loadDressedLeptons ( const xAOD::TruthParticleContainer input,
std::unique_ptr< xAOD::TruthParticleContainer > &  store,
std::unique_ptr< xAOD::ShallowAuxContainer > &  storeAux 
) const
protected

Definition at line 794 of file ParticleLevelLoader.cxx.

796  {
797  auto dressed = xAOD::shallowCopyContainer(input);
798 
799  store.reset(dressed.first);
800  storeAux.reset(dressed.second);
801 
802  for (auto pl : *store.get()) {
803  TLorentzVector fvDressed;
804  fvDressed.SetPtEtaPhiE(pl->auxdata<float>("pt_dressed"),
805  pl->auxdata<float>("eta_dressed"),
806  pl->auxdata<float>("phi_dressed"),
807  pl->auxdata<float>("e_dressed"));
808 
809  // Store original kinematics as decoration
810  // m->auxdata<int>( "nPhotons_dressed" ) = m->auxdata<int>( "nPhotons_dressed" );
811 
812  pl->auxdata<float>("pt_bare") = pl->pt();
813  pl->auxdata<float>("eta_bare") = pl->eta();
814  pl->auxdata<float>("phi_bare") = pl->phi();
815  pl->auxdata<float>("e_bare") = pl->e();
816 
817  pl->setPx(fvDressed.Px());
818  pl->setPy(fvDressed.Py());
819  pl->setPz(fvDressed.Pz());
820  pl->setE(fvDressed.E());
821  }
822 
823  return true;
824  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_active

const bool top::ParticleLevelLoader::m_active
private

Definition at line 137 of file ParticleLevelLoader.h.

◆ m_config

const std::shared_ptr<top::TopConfig>& top::ParticleLevelLoader::m_config
private

Definition at line 91 of file ParticleLevelLoader.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_electronsDressed

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_electronsDressed
private

Definition at line 108 of file ParticleLevelLoader.h.

◆ m_electronsDressedAux

std::unique_ptr<xAOD::ShallowAuxContainer> top::ParticleLevelLoader::m_electronsDressedAux
private

Definition at line 109 of file ParticleLevelLoader.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_goodElectrons

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_goodElectrons
private

Definition at line 114 of file ParticleLevelLoader.h.

◆ m_goodElectronsAux

std::unique_ptr<xAOD::TruthParticleAuxContainer> top::ParticleLevelLoader::m_goodElectronsAux
private

Definition at line 115 of file ParticleLevelLoader.h.

◆ m_goodJets

std::unique_ptr<xAOD::JetContainer> top::ParticleLevelLoader::m_goodJets
private

Definition at line 126 of file ParticleLevelLoader.h.

◆ m_goodJetsAux

std::unique_ptr<xAOD::JetAuxContainer> top::ParticleLevelLoader::m_goodJetsAux
private

Definition at line 127 of file ParticleLevelLoader.h.

◆ m_goodLargeRJets

std::unique_ptr<xAOD::JetContainer> top::ParticleLevelLoader::m_goodLargeRJets
private

Definition at line 129 of file ParticleLevelLoader.h.

◆ m_goodLargeRJetsAux

std::unique_ptr<xAOD::JetAuxContainer> top::ParticleLevelLoader::m_goodLargeRJetsAux
private

Definition at line 130 of file ParticleLevelLoader.h.

◆ m_goodMuons

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_goodMuons
private

Definition at line 117 of file ParticleLevelLoader.h.

◆ m_goodMuonsAux

std::unique_ptr<xAOD::TruthParticleAuxContainer> top::ParticleLevelLoader::m_goodMuonsAux
private

Definition at line 118 of file ParticleLevelLoader.h.

◆ m_goodPhotons

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_goodPhotons
private

Definition at line 123 of file ParticleLevelLoader.h.

◆ m_goodPhotonsAux

std::unique_ptr<xAOD::TruthParticleAuxContainer> top::ParticleLevelLoader::m_goodPhotonsAux
private

Definition at line 124 of file ParticleLevelLoader.h.

◆ m_goodSoftMuons

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_goodSoftMuons
private

Definition at line 120 of file ParticleLevelLoader.h.

◆ m_goodSoftMuonsAux

std::unique_ptr<xAOD::TruthParticleAuxContainer> top::ParticleLevelLoader::m_goodSoftMuonsAux
private

Definition at line 121 of file ParticleLevelLoader.h.

◆ m_goodTaus

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_goodTaus
private

Definition at line 132 of file ParticleLevelLoader.h.

◆ m_goodTausAux

std::unique_ptr<xAOD::TruthParticleAuxContainer> top::ParticleLevelLoader::m_goodTausAux
private

Definition at line 133 of file ParticleLevelLoader.h.

◆ m_muonsDressed

std::unique_ptr<xAOD::TruthParticleContainer> top::ParticleLevelLoader::m_muonsDressed
private

Definition at line 111 of file ParticleLevelLoader.h.

◆ m_muonsDressedAux

std::unique_ptr<xAOD::ShallowAuxContainer> top::ParticleLevelLoader::m_muonsDressedAux
private

Definition at line 112 of file ParticleLevelLoader.h.

◆ m_objectSelector_Electron

std::unique_ptr<ObjectSelectorBase<xAOD::TruthParticle> > top::ParticleLevelLoader::m_objectSelector_Electron
private

Definition at line 96 of file ParticleLevelLoader.h.

◆ m_objectSelector_Jet

std::unique_ptr<ObjectSelectorBase<xAOD::Jet> > top::ParticleLevelLoader::m_objectSelector_Jet
private

Definition at line 99 of file ParticleLevelLoader.h.

◆ m_objectSelector_LargeRJet

std::unique_ptr<ObjectSelectorBase<xAOD::Jet> > top::ParticleLevelLoader::m_objectSelector_LargeRJet
private

Definition at line 100 of file ParticleLevelLoader.h.

◆ m_objectSelector_Muon

std::unique_ptr<ObjectSelectorBase<xAOD::TruthParticle> > top::ParticleLevelLoader::m_objectSelector_Muon
private

Definition at line 97 of file ParticleLevelLoader.h.

◆ m_objectSelector_Photon

std::unique_ptr<ObjectSelectorBase<xAOD::TruthParticle> > top::ParticleLevelLoader::m_objectSelector_Photon
private

Definition at line 98 of file ParticleLevelLoader.h.

◆ m_objectSelector_Tau

std::unique_ptr<ObjectSelectorBase<xAOD::TruthParticle> > top::ParticleLevelLoader::m_objectSelector_Tau
private

Definition at line 101 of file ParticleLevelLoader.h.

◆ m_particleLevelRCJetObjectLoader

std::unique_ptr<ParticleLevelRCJetObjectLoader> top::ParticleLevelLoader::m_particleLevelRCJetObjectLoader
private

Definition at line 102 of file ParticleLevelLoader.h.

◆ m_particleLevelVarRCJetObjectLoader

std::map<std::string, std::unique_ptr<ParticleLevelRCJetObjectLoader> > top::ParticleLevelLoader::m_particleLevelVarRCJetObjectLoader
private

Definition at line 103 of file ParticleLevelLoader.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_VarRCJetMassScale

std::vector<std::string> top::ParticleLevelLoader::m_VarRCJetMassScale
private

Definition at line 105 of file ParticleLevelLoader.h.

◆ m_VarRCJetRho

std::vector<std::string> top::ParticleLevelLoader::m_VarRCJetRho
private

Definition at line 104 of file ParticleLevelLoader.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
top::ParticleLevelLoader::m_goodPhotons
std::unique_ptr< xAOD::TruthParticleContainer > m_goodPhotons
Definition: ParticleLevelLoader.h:123
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
store
StoreGateSvc * store
Definition: fbtTestBasics.cxx:69
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:195
top::ParticleLevelLoader::m_goodSoftMuons
std::unique_ptr< xAOD::TruthParticleContainer > m_goodSoftMuons
Definition: ParticleLevelLoader.h:120
top::ParticleLevelLoader::m_goodLargeRJets
std::unique_ptr< xAOD::JetContainer > m_goodLargeRJets
Definition: ParticleLevelLoader.h:129
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
top::ParticleLevelLoader::m_objectSelector_Photon
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Photon
Definition: ParticleLevelLoader.h:98
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::JetAuxContainer
JetAuxContainer_v1 JetAuxContainer
Definition of the current jet auxiliary container.
Definition: JetAuxContainer.h:22
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
top::ParticleLevelLoader::m_active
const bool m_active
Definition: ParticleLevelLoader.h:137
top::ParticleLevelLoader::m_goodMuonsAux
std::unique_ptr< xAOD::TruthParticleAuxContainer > m_goodMuonsAux
Definition: ParticleLevelLoader.h:118
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
top::ParticleLevelLoader::loadDressedLeptons
bool loadDressedLeptons(const xAOD::TruthParticleContainer &input, std::unique_ptr< xAOD::TruthParticleContainer > &store, std::unique_ptr< xAOD::ShallowAuxContainer > &storeAux) const
Definition: ParticleLevelLoader.cxx:794
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
top::ParticleLevelLoader::m_goodTaus
std::unique_ptr< xAOD::TruthParticleContainer > m_goodTaus
Definition: ParticleLevelLoader.h:132
SG::AuxElement::auxdecor
Decorator< T, ALLOC >::reference_type auxdecor(const std::string &name) const
Fetch an aux decoration, as a non-const reference.
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
LArG4FSStartPointFilterLegacy.execute
execute
Definition: LArG4FSStartPointFilterLegacy.py:20
top::ParticleLevelLoader::m_goodSoftMuonsAux
std::unique_ptr< xAOD::TruthParticleAuxContainer > m_goodSoftMuonsAux
Definition: ParticleLevelLoader.h:121
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
xAOD::TruthParticleAuxContainer_v1
Auxiliary store for the truth vertices.
Definition: TruthParticleAuxContainer_v1.h:27
top::ParticleLevelLoader::m_particleLevelRCJetObjectLoader
std::unique_ptr< ParticleLevelRCJetObjectLoader > m_particleLevelRCJetObjectLoader
Definition: ParticleLevelLoader.h:102
xAOD::JetAuxContainer_v1
Temporary container used until we have I/O for AuxStoreInternal.
Definition: JetAuxContainer_v1.h:37
xAOD::TruthParticleAuxContainer
TruthParticleAuxContainer_v1 TruthParticleAuxContainer
Declare the latest version of the truth particle auxiliary container.
Definition: TruthParticleAuxContainer.h:16
top::ParticleLevelLoader::m_particleLevelVarRCJetObjectLoader
std::map< std::string, std::unique_ptr< ParticleLevelRCJetObjectLoader > > m_particleLevelVarRCJetObjectLoader
Definition: ParticleLevelLoader.h:103
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
top::truth::initTruthMuonHistoryInfo
void initTruthMuonHistoryInfo(const xAOD::TruthParticle *truthmu, bool doPartonHistory)
Definition: TruthTools.cxx:62
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::ExcBadAuxVar
Exception — Attempt to retrieve nonexistent aux data item.
Definition: Control/AthContainers/AthContainers/exceptions.h:59
top::ParticleLevelLoader::m_electronsDressedAux
std::unique_ptr< xAOD::ShallowAuxContainer > m_electronsDressedAux
Definition: ParticleLevelLoader.h:109
HepMC::is_simulation_particle
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
Definition: MagicNumbers.h:299
lumiFormat.i
int i
Definition: lumiFormat.py:92
top::ParticleLevelLoader::m_muonsDressedAux
std::unique_ptr< xAOD::ShallowAuxContainer > m_muonsDressedAux
Definition: ParticleLevelLoader.h:112
xAOD::P4Helpers::deltaR
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Definition: xAODP4Helpers.h:150
top::ParticleLevelLoader::m_objectSelector_Jet
std::unique_ptr< ObjectSelectorBase< xAOD::Jet > > m_objectSelector_Jet
Definition: ParticleLevelLoader.h:99
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
top::ParticleLevelLoader::m_goodMuons
std::unique_ptr< xAOD::TruthParticleContainer > m_goodMuons
Definition: ParticleLevelLoader.h:117
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition: Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:113
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::truth::getTruthMuonHistory
void getTruthMuonHistory(const xAOD::TruthParticle *truthmu, bool doPartonHistory, SampleXsection::showering shAlgo, bool verbose)
Definition: TruthTools.cxx:200
python.xAODType.dummy
dummy
Definition: xAODType.py:4
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
top::ParticleLevelLoader::m_objectSelector_Tau
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Tau
Definition: ParticleLevelLoader.h:101
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
top::ParticleLevelLoader::m_objectSelector_LargeRJet
std::unique_ptr< ObjectSelectorBase< xAOD::Jet > > m_objectSelector_LargeRJet
Definition: ParticleLevelLoader.h:100
top::ParticleLevelLoader::m_muonsDressed
std::unique_ptr< xAOD::TruthParticleContainer > m_muonsDressed
Definition: ParticleLevelLoader.h:111
top::ParticleLevelLoader::m_goodPhotonsAux
std::unique_ptr< xAOD::TruthParticleAuxContainer > m_goodPhotonsAux
Definition: ParticleLevelLoader.h:124
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
ParticleLevelRCJetObjectLoader
Definition: ParticleLevelRCJetObjectLoader.h:51
top::ParticleLevelLoader::m_electronsDressed
std::unique_ptr< xAOD::TruthParticleContainer > m_electronsDressed
Definition: ParticleLevelLoader.h:108
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
checkNSWValTree.Options
Options
Definition: checkNSWValTree.py:15
WriteCaloSwCorrections.cfg
cfg
Definition: WriteCaloSwCorrections.py:23
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
xAOD::TruthParticleContainer
TruthParticleContainer_v1 TruthParticleContainer
Declare the latest version of the truth particle container.
Definition: Event/xAOD/xAODTruth/xAODTruth/TruthParticleContainer.h:17
top::ParticleLevelLoader::m_goodElectrons
std::unique_ptr< xAOD::TruthParticleContainer > m_goodElectrons
Definition: ParticleLevelLoader.h:114
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
xAOD::IParticle::isAvailable
bool isAvailable(const std::string &name, const std::string &clsname="") const
Check if a user property is available for reading or not.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:131
top::ParticleLevelLoader::m_goodJets
std::unique_ptr< xAOD::JetContainer > m_goodJets
Definition: ParticleLevelLoader.h:126
top::ParticleLevelLoader::m_VarRCJetRho
std::vector< std::string > m_VarRCJetRho
Definition: ParticleLevelLoader.h:104
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
top::ParticleLevelLoader::m_goodLargeRJetsAux
std::unique_ptr< xAOD::JetAuxContainer > m_goodLargeRJetsAux
Definition: ParticleLevelLoader.h:130
MC::isStable
bool isStable(const T &p)
Definition: HepMCHelpers.h:30
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
a
TList * a
Definition: liststreamerinfos.cxx:10
top::ParticleLevelLoader::m_objectSelector_Muon
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Muon
Definition: ParticleLevelLoader.h:97
h
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:16
top::ParticleLevelLoader::m_VarRCJetMassScale
std::vector< std::string > m_VarRCJetMassScale
Definition: ParticleLevelLoader.h:105
top::ParticleLevelLoader::m_goodJetsAux
std::unique_ptr< xAOD::JetAuxContainer > m_goodJetsAux
Definition: ParticleLevelLoader.h:127
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
top::ParticleLevelLoader::m_goodElectronsAux
std::unique_ptr< xAOD::TruthParticleAuxContainer > m_goodElectronsAux
Definition: ParticleLevelLoader.h:115
xAOD::JetContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Definition: JetContainer.h:17
top::ParticleLevelLoader::m_goodTausAux
std::unique_ptr< xAOD::TruthParticleAuxContainer > m_goodTausAux
Definition: ParticleLevelLoader.h:133
SG::DataProxy
Definition: DataProxy.h:44
top::descendingPtSorter
bool descendingPtSorter(const xAOD::IParticle *p1, const xAOD::IParticle *p2)
Used when sorting the e, mu, jet, tau containers after CP corrections.
Definition: EventTools.cxx:56
asg::AsgTool::initialize
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: AsgTool.h:133
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
top::truth::copyTruthMuonHistoryInfo
void copyTruthMuonHistoryInfo(const xAOD::TruthParticle *tm_origin, const xAOD::TruthParticle *tm_target)
Definition: TruthTools.cxx:77
fitman.rho
rho
Definition: fitman.py:532
fitman.k
k
Definition: fitman.py:528
top::ParticleLevelLoader::m_objectSelector_Electron
std::unique_ptr< ObjectSelectorBase< xAOD::TruthParticle > > m_objectSelector_Electron
Definition: ParticleLevelLoader.h:96
top::ParticleLevelLoader::isDressingPhoton
bool isDressingPhoton(const xAOD::TruthParticle &photon, const xAOD::TruthParticleContainer &dressedParticles, const float dressingCone=0.1) const
Definition: ParticleLevelLoader.cxx:826
top::ParticleLevelLoader::m_config
const std::shared_ptr< top::TopConfig > & m_config
Definition: ParticleLevelLoader.h:91