Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
xAODJetRetriever.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "xAODJet/JetContainer.h"
10 #include "xAODJet/JetAttributes.h"
11 #include "xAODPFlow/PFO.h"
12 #include "xAODPFlow/FlowElement.h"
13 
14 #include "AthenaKernel/Units.h"
15 using Athena::Units::GeV;
16 
17 namespace JiveXML {
18 
25  xAODJetRetriever::xAODJetRetriever(const std::string& type,const std::string& name,const IInterface* parent):
27 
29  if (m_bTaggerNames.size()!=m_CDIPaths.size()){
30  ATH_MSG_WARNING("Number of btaggers and CDI files do not match. Will not retrieve b-tagging information.");
31  return StatusCode::SUCCESS;
32  } else {
33  m_nTaggers = m_bTaggerNames.size();
34  }
35  for (unsigned int i=0; i<m_nTaggers; i++){
36  std::string taggerName = m_bTaggerNames[i];
38  btagSelTool.setTypeAndName("BTaggingSelectionTool/btagSelTool_"+taggerName);
39  ATH_CHECK(btagSelTool.setProperty("TaggerName", taggerName));
40  ATH_CHECK(btagSelTool.setProperty("JetAuthor", "AntiKt4EMPFlowJets")); // only AntiKt4EMPFlowJets is supported
41  ATH_CHECK(btagSelTool.setProperty("OperatingPoint", "FixedCutBEff_70")); // the working point doesn't matter because we don't cut on the tagger discriminant, but it must exist in CDI.
42  ATH_CHECK(btagSelTool.setProperty("FlvTagCutDefinitionsFileName", m_CDIPaths[i]));
43  ATH_CHECK(btagSelTool.setProperty( "MinPt", 0.0));
44  ATH_CHECK(btagSelTool.initialize());
45  m_btagSelTools.emplace(taggerName, btagSelTool);
46  }
47 
48  return StatusCode::SUCCESS;
49  }
50 
55  StatusCode xAODJetRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) {
56 
57  ATH_MSG_DEBUG( "in retrieve()" );
58 
59  std::vector<std::string> keys = getKeys();
60 
61  if(keys.empty()){
62  ATH_MSG_WARNING("No StoreGate keys found");
63  return StatusCode::SUCCESS;
64  }
65 
66  // Loop through the keys and retrieve the corresponding data
67  for (const std::string& key : keys) {
69  if(cont.isValid()){
70  DataMap data = getData(&(*cont), key);
71  if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) {
72  ATH_MSG_WARNING("Failed to retrieve Collection " << key);
73  } else {
74  ATH_MSG_DEBUG(" (" << key << ") retrieved");
75  }
76  }
77  else {
78  ATH_MSG_WARNING("Collection " << key << " not found in SG");
79  }
80  }
81  return StatusCode::SUCCESS;
82  }
83 
84 
89  const DataMap xAODJetRetriever::getData(const xAOD::JetContainer* jetCont, const std::string &jetkey) {
90 
91  ATH_MSG_DEBUG( "in getData()" );
92 
94 
95  DataVect et; et.reserve(jetCont->size());
96  DataVect phi; phi.reserve(jetCont->size());
97  DataVect eta; eta.reserve(jetCont->size());
98  DataVect mass; mass.reserve(jetCont->size());
99  DataVect energy; energy.reserve(jetCont->size());
100  DataVect bTagName; bTagName.reserve(jetCont->size());
101  DataVect bTagValue; bTagValue.reserve(jetCont->size());
102  DataVect charge; energy.reserve(jetCont->size());
103  DataVect idVec; idVec.reserve(jetCont->size());
104  DataVect px; px.reserve(jetCont->size());
105  DataVect py; py.reserve(jetCont->size());
106  DataVect pz; pz.reserve(jetCont->size());
107  DataVect jvf; jvf.reserve(jetCont->size());
108  DataVect jvt; jvt.reserve(jetCont->size());
109  DataVect emfrac; emfrac.reserve(jetCont->size());
110 
111  DataVect trackKey; trackKey.reserve(jetCont->size());
112  DataVect trackContKey; trackContKey.reserve(jetCont->size());
113  DataVect trackLinkCount; trackLinkCount.reserve(jetCont->size());
114  DataVect clusterID; clusterID.reserve(jetCont->size());
115 
116  DataVect cellID; cellID.reserve(jetCont->size());
117  DataVect numCells; numCells.reserve(jetCont->size());
118 
119  int id = 0;
120 
121  int counter = 0;
122  for (const auto jet : *jetCont) {
123  if(!jet)continue;
124  ATH_MSG_DEBUG( " Jet #" << counter++ << " : eta = " << jet->eta() << ", phi = " << jet->phi() << ", pt = " << jet->pt() );
125 
126  /* retrieve associated tracks and calo clusters */
127  size_t numConstit = jet->numConstituents();
128  std::vector<std::string> tempCellID;
129  size_t trackcounter = 0;
130  //TODO FIXME jet->rawConstituent(0) fails for some keys, including (but not exclusively) HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftf, HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf, HLT_AntiKt4EMPFlowJets_nojcalib_ftf, HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf, HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf
131  if (numConstit > 0){
132  const xAOD::IParticle* constituent = jet->rawConstituent(0);
133  if (constituent){
134  xAOD::Type::ObjectType ctype=jet->rawConstituent(0)->type();
135  // PFlow and Flow jets from athena/Reconstruction/Jet/JetMomentTools/Root/JetTrackMomentsTool.cxx
136  if (ctype == xAOD::Type::ParticleFlow) {
137  // This jet is either a PFlow jet (constituent type: xAOD::FlowElement::PFlow) or UFO jets
138  for (size_t i = 0; i < numConstit; i++) {
139  const xAOD::PFO *constit =
140  dynamic_cast<const xAOD::PFO *>(jet->rawConstituent(i));
141  if (constit->isCharged()) {
142  const xAOD::TrackParticle *thisTrack = constit->track(0); // by construction xAOD::PFO can only have one track, in eflowRec usage
143  trackKey.emplace_back(DataType(thisTrack->index()));
144  trackContKey.emplace_back(m_tracksName.value());
145  trackcounter++;
146  } // We have a charged PFO
147  } // Loop on jet constituents
148  } else if (ctype == xAOD::Type::FlowElement) {
149  // This jet is made from xAOD::FlowElement, so we calculate the pflow moments if they're PFOs
150  size_t numConstit = jet->numConstituents();
151  for (size_t i = 0; i < numConstit; i++) {
152  const xAOD::FlowElement *constit = dynamic_cast<const xAOD::FlowElement *>(jet->rawConstituent(i));
153  // UFO jet constituents have signalType xAOD::FlowElement::Charged or xAOD::FlowElement::Neutral
154  // PFlow jet constituents have signalType xAOD::FlowElement::ChargedPFlow or xAOD::FlowElement::NeutralPFlow
155  if (constit != nullptr && ((constit->signalType() & xAOD::FlowElement::PFlow) || constit->signalType() == xAOD::FlowElement::Charged)) {
156  if (constit->isCharged()) {
157  const xAOD::TrackParticle *thisTrack = dynamic_cast<const xAOD::TrackParticle *>( constit->chargedObject( 0)); // PFO should have only 1 track
158  if (thisTrack != nullptr) {
159  trackKey.emplace_back(DataType(thisTrack->index()));
160  trackContKey.emplace_back(m_tracksName.value());
161  trackcounter++;
162  }
163  else
164  ATH_MSG_WARNING( "Charged PFO had no associated TrackParticle");
165  } // We have a charged PFO
166  } // The FlowElement is a PFO
167  } // Loop on jet constituents
168  } else if (ctype == xAOD::Type::CaloCluster) {
169  // get associated cluster
170  for (size_t j = 0; j < numConstit; ++j) {
171  const xAOD::CaloCluster *cluster = dynamic_cast<const xAOD::CaloCluster *>(jet->rawConstituent(j));
172  clusterID.emplace_back(DataType(cluster->index()));
173  if(!cluster->getCellLinks())continue;
174  for (const auto cc : *(cluster->getCellLinks())) {
175  if (std::find(tempCellID.begin(), tempCellID.end(), std::to_string( cc->caloDDE()->identify().get_compact())) != tempCellID.end()) {
176  continue;
177  } else {
178  cellID.emplace_back( DataType(cc->caloDDE()->identify().get_compact()));
179  tempCellID.emplace_back( std::to_string(cc->caloDDE()->identify().get_compact()));
180  }
181  }
182  ATH_MSG_VERBOSE(" Associated cluster: eta = " << cluster->eta() << ", phi = " << cluster->phi());
183  }
184  // get ghost associated tracks
185  std::vector<const xAOD::TrackParticle*> ghosttracks;
186  jet->getAssociatedObjects<xAOD::TrackParticle>(xAOD::JetAttribute::GhostTrack, ghosttracks);
187  if (ghosttracks.empty()) {
188  ATH_MSG_VERBOSE(" Associated track: ERROR");
189  } else {
190  for (size_t i = 0; i < ghosttracks.size(); i++) {
191 
192  // can access the base track class, should be able to get tracker hits ?
193  // const Trk::Track* baseTrack = dynamic_cast< const Trk::Track* >( ghosttracks[i]->track());
194 
195  trackKey.emplace_back(DataType(ghosttracks[i]->index()));
196  trackContKey.emplace_back(m_tracksName.value());
197 
198  ATH_MSG_VERBOSE(" Associated track: d0 = " << ghosttracks[i]->d0() << ", pt = " << ghosttracks[i]->pt());
199  }
200  trackcounter = ghosttracks.size();
201  }
202  } else if (ctype == xAOD::Type::TrackParticle) {
203  for (size_t j = 0; j < numConstit; ++j) {
204  const xAOD::TrackParticle *track =
205  dynamic_cast<const xAOD::TrackParticle *>(jet->rawConstituent(j));
206  if (!track) {
207  ATH_MSG_VERBOSE(" Associated track: ERROR");
208  } else {
209  trackKey.emplace_back(DataType(track->index()));
210  trackContKey.emplace_back(m_tracksName.value());
211  trackcounter++;
212  ATH_MSG_VERBOSE(" Associated track: d0 = " << track->d0() << ", pt = " << track->pt());
213  }
214  }
215  }
216  }
217  }
218  trackLinkCount.emplace_back(DataType(trackcounter));
219  numCells.emplace_back(DataType(tempCellID.size()));
220 
221 
222  phi.emplace_back(DataType(jet->phi()));
223  eta.emplace_back(DataType(jet->eta()));
224  et.emplace_back(DataType(jet->pt()/GeV)); // hack ! no et in xAOD_Jet_v1 currently
225  idVec.emplace_back( DataType( ++id ));
226 
227  mass.emplace_back(DataType(jet->m()/GeV));
228  energy.emplace_back( DataType(jet->e()/GeV ) );
229 
230  px.emplace_back(DataType(jet->px()/GeV));
231  py.emplace_back(DataType(jet->py()/GeV));
232  pz.emplace_back(DataType(jet->pz()/GeV));
233 
234  // bjet tagger values
235  if (jetkey!="AntiKt4EMPFlowJets" || (m_nTaggers==0)){
236  bTagName.emplace_back(DataType("None"));
237  bTagValue.emplace_back(DataType(0.));
238  }else{
239  double btagValue;
240  for (auto taggerName : m_bTaggerNames) {
241  CP::CorrectionCode code = m_btagSelTools[taggerName]->getTaggerWeight(*jet, btagValue);
242  if (code != CP::CorrectionCode::Ok) {
243  ATH_MSG_DEBUG("Failed to get btagging weight for tagger " << taggerName);
244  btagValue = 0;
245  }
246  bTagName.emplace_back(DataType(taggerName));
247  bTagValue.emplace_back(DataType(btagValue));
248  }
249  }
250 
251  float chargeread;
252  if (!jet->getAttribute<float>(xAOD::JetAttribute::Charge, chargeread)) {
253  ATH_MSG_DEBUG("Jet charge unavailable!");
254  charge.emplace_back( DataType( 0. ));
255  }else{
256  charge.emplace_back( DataType( chargeread ));
257  }
258 
259  // updated for data15
260  // from: Reconstruction/MET/METReconstruction/Root/METJetFilterTool.cxx
261  std::vector<float> jvfread;
262  if(!jet->getAttribute<std::vector<float> >(xAOD::JetAttribute::JVF,jvfread)) {
263  ATH_MSG_DEBUG("Jet JVF unavailable!");
264  jvf.emplace_back( DataType( 1. ));
265  }else{
266  jvf.emplace_back( DataType( jvfread[0] ));
267  }
268 
269  float jvtread;
270  if(!jet->getAttribute<float>(xAOD::JetAttribute::Jvt,jvtread)) {
271  ATH_MSG_DEBUG("Jet JVT unavailable!");
272  jvt.emplace_back(DataType(0.));
273  } else {
274  jvt.emplace_back(DataType(jvtread));
275  }
276 
277  float emfracread = 0;
278  if(!jet->getAttribute(xAOD::JetAttribute::EMFrac,emfracread)) {
279  ATH_MSG_DEBUG("Jet EMFrac unavailable!");
280  emfrac.emplace_back( DataType( 0. ));
281  }else{
282  emfrac.emplace_back( DataType( emfracread ));
283  }
284 
285  } // end loop
286 
287  // four-vectors
288  DataMap["phi"] = phi;
289  DataMap["eta"] = eta;
290  DataMap["et"] = et;
291  DataMap["energy"] = energy;
292  DataMap["mass"] = mass;
293  std::string str_nTaggers = m_nTaggers>0 ? std::to_string(m_nTaggers) : "1"; // default to 1 if no btaggers so that atlantis can process the jets properly
294  DataMap["bTagName multiple=\""+str_nTaggers+"\""] = bTagName; // assigned by hand !
295  DataMap["bTagValue multiple=\""+str_nTaggers+"\""] = bTagValue;
296  DataMap["charge"] = charge;
297  DataMap["id"] = idVec;
298  DataMap["px"] = px;
299  DataMap["py"] = py;
300  DataMap["pz"] = pz;
301  DataMap["jvf"] = jvf;
302  DataMap["jvt"] = jvt;
303  DataMap["emfrac"] = emfrac;
304 
305  if ((trackKey.size()) != 0){
306  double NTracksPerVertex = trackKey.size()*1./jetCont->size();
307  std::string tag = "trackIndex multiple=\"" +DataType(NTracksPerVertex).toString()+"\"";
308  DataMap[tag] = trackKey;
309  tag = "trackKey multiple=\"" +DataType(NTracksPerVertex).toString()+"\"";
310  DataMap[tag] = trackContKey;
311  }
312 
313  if ((clusterID.size())!=0){
314  std::string tag = "clusterIndex multiple=\"" + DataType(clusterID.size()).toString()+"\"";
315  double NCellsPerJet = cellID.size()*1./jetCont->size();
316  tag = "cells multiple=\"" +DataType(NCellsPerJet).toString()+"\"";
317  DataMap[tag]=cellID;
318  }
319 
320  DataMap["trackLinkCount"] = trackLinkCount;
321  DataMap["numCells"] = numCells;
322 
323  ATH_MSG_DEBUG( dataTypeName() << " retrieved with " << phi.size() << " entries" );
324 
325  return DataMap;
326  }
327 
328 
329  const std::vector<std::string> xAODJetRetriever::getKeys() {
330 
331  ATH_MSG_DEBUG("in getKeys()");
332 
333  std::vector<std::string> keys = {};
334 
335  // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice
336  auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey);
337  if(it != m_otherKeys.end()){
338  m_otherKeys.erase(it);
339  }
340 
341  // Add m_priorityKey as the first element if it is not ""
342  if(m_priorityKey!=""){
343  keys.push_back(m_priorityKey);
344  }
345 
346  if(!m_otherKeys.empty()){
347  keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end());
348  }
349 
350  // If all collections are requested, obtain all available keys from StoreGate
351  std::vector<std::string> allKeys;
353  evtStore()->keys<xAOD::JetContainer>(allKeys);
354 
355  // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested
356  for(const std::string& key : allKeys){
357  // Don't include key if it's already in keys
358  auto it2 = std::find(keys.begin(), keys.end(), key);
359  if(it2 != keys.end())continue;
360  if(key.find("HLT") == std::string::npos || m_doWriteHLT){
361  keys.emplace_back(key);
362  }
363  }
364  }
365  return keys;
366  }
367 
368 } // JiveXML namespace
asg::AnaToolHandle::initialize
StatusCode initialize()
initialize the tool
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
et
Extra patterns decribing particle interation process.
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
asg::AnaToolHandle< IBTaggingSelectionTool >
JiveXML::xAODJetRetriever::m_nTaggers
unsigned int m_nTaggers
Definition: xAODJetRetriever.h:79
test_pyathena.px
px
Definition: test_pyathena.py:18
xAOD::FlowElement_v1::Charged
@ Charged
Definition: FlowElement_v1.h:38
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
ObjectType
ObjectType
Definition: BaseObject.h:11
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::PFO_v1::track
const TrackParticle * track(unsigned int index) const
Retrieve a const pointer to a Rec::TrackParticle.
Definition: PFO_v1.cxx:691
JiveXML::DataVect
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
Definition: DataType.h:58
DataType
OFFLINE_FRAGMENTS_NAMESPACE::PointerType DataType
Definition: RoIBResultByteStreamTool.cxx:25
asg::AnaToolHandle::setTypeAndName
void setTypeAndName(const std::string &val_typeAndName)
set the value of type and name
skel.it
it
Definition: skel.GENtoEVGEN.py:407
JetAttributes.h
test_pyathena.pt
pt
Definition: test_pyathena.py:11
JiveXML::xAODJetRetriever::m_btagSelTools
std::unordered_map< std::string, asg::AnaToolHandle< IBTaggingSelectionTool > > m_btagSelTools
Definition: xAODJetRetriever.h:78
JiveXML::xAODJetRetriever::getData
const DataMap getData(const xAOD::JetContainer *, const std::string &jetkey)
Puts the variables into a DataMap.
Definition: xAODJetRetriever.cxx:89
JiveXML::xAODJetRetriever::m_doWriteHLT
Gaudi::Property< bool > m_doWriteHLT
Definition: xAODJetRetriever.h:63
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
JiveXML::DataMap
std::map< std::string, DataVect > DataMap
Definition: DataType.h:59
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
asg::AnaToolHandle::setProperty
StatusCode setProperty(const std::string &property, const T2 &value)
set the given property of the tool.
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
JiveXML::xAODJetRetriever::initialize
virtual StatusCode initialize()
Definition: xAODJetRetriever.cxx:28
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
xAOD::FlowElement_v1::PFlow
@ PFlow
Definition: FlowElement_v1.h:45
JiveXML::xAODJetRetriever::xAODJetRetriever
xAODJetRetriever(const std::string &type, const std::string &name, const IInterface *parent)
Standard Constructor.
Definition: xAODJetRetriever.cxx:25
xAOD::FlowElement_v1::isCharged
bool isCharged() const
Definition: FlowElement_v1.cxx:56
PFO.h
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::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
histSizes.code
code
Definition: histSizes.py:129
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
JiveXML::xAODJetRetriever::retrieve
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
For each jet collections retrieve basic parameters.
Definition: xAODJetRetriever.cxx:55
JiveXML::xAODJetRetriever::getKeys
const std::vector< std::string > getKeys()
Gets the StoreGate keys for the desired containers.
Definition: xAODJetRetriever.cxx:329
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
JiveXML::xAODJetRetriever::m_tracksName
Gaudi::Property< std::string > m_tracksName
Definition: xAODJetRetriever.h:71
FlowElement.h
lumiFormat.i
int i
Definition: lumiFormat.py:85
CaloCluster.h
xAOD::JetAttribute::EMFrac
@ EMFrac
Definition: JetAttributes.h:112
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
xAOD::FlowElement
FlowElement_v1 FlowElement
Definition of the current "pfo version".
Definition: FlowElement.h:16
JiveXML::xAODJetRetriever::m_otherKeys
Gaudi::Property< std::vector< std::string > > m_otherKeys
Definition: xAODJetRetriever.h:67
xAOD::FlowElement_v1::signalType
signal_t signalType() const
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
Amg::pz
@ pz
Definition: GeoPrimitives.h:40
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAODType::ParticleFlow
@ ParticleFlow
The object is a particle-flow object.
Definition: ObjectType.h:41
xAOD::JetAttribute::JVF
@ JVF
Definition: JetAttributes.h:99
SG::AuxElement::index
size_t index() const
Return the index of this element within its container.
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
xAOD::PFO_v1::isCharged
bool isCharged() const
is a charged PFO
Definition: PFO_v1.cxx:251
JiveXML
This header is shared inbetween the C-style server thread and the C++ Athena ServerSvc.
Definition: BadLArRetriever.cxx:22
xAOD::FlowElement_v1::chargedObject
const xAOD::IParticle * chargedObject(std::size_t i) const
Definition: FlowElement_v1.cxx:127
Amg::py
@ py
Definition: GeoPrimitives.h:39
xAOD::PFO_v1
Class describing a particle flow object.
Definition: PFO_v1.h:35
JiveXML::xAODJetRetriever::dataTypeName
virtual std::string dataTypeName() const
Return the name of the data type that is generated by this retriever.
Definition: xAODJetRetriever.h:54
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
charge
double charge(const T &p)
Definition: AtlasPID.h:931
Units.h
Wrapper to avoid constant divisions when using units.
xAOD::JetAttribute::Charge
@ Charge
Definition: JetAttributes.h:182
TrackParticle.h
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
DeMoScan.index
string index
Definition: DeMoScan.py:364
xAOD::TauJetParameters::numCells
@ numCells
Definition: TauDefs.h:171
xAODJetRetriever.h
JetContainer.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
xAOD::JetAttribute::Jvt
@ Jvt
Definition: JetAttributes.h:101
JiveXML::xAODJetRetriever::m_CDIPaths
Gaudi::Property< std::vector< std::string > > m_CDIPaths
Definition: xAODJetRetriever.h:75
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
JiveXML::xAODJetRetriever::m_doWriteAllCollections
Gaudi::Property< bool > m_doWriteAllCollections
Definition: xAODJetRetriever.h:64
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
AthAlgTool
Definition: AthAlgTool.h:26
test_pyathena.counter
counter
Definition: test_pyathena.py:15
xAOD::JetAttribute::GhostTrack
@ GhostTrack
Definition: JetAttributes.h:252
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
JiveXML::xAODJetRetriever::m_bTaggerNames
Gaudi::Property< std::vector< std::string > > m_bTaggerNames
Definition: xAODJetRetriever.h:73
JiveXML::xAODJetRetriever::m_priorityKey
Gaudi::Property< std::string > m_priorityKey
Definition: xAODJetRetriever.h:68
python.handimod.cc
int cc
Definition: handimod.py:523
xAOD::FlowElement_v1
A detector object made of other lower level object(s)
Definition: FlowElement_v1.h:25
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37