ATLAS Offline Software
xAODJetRetriever.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 
33  xAODJetRetriever::xAODJetRetriever(const std::string& type,const std::string& name,const IInterface* parent):
35 
36  //Only declare the interface
37  declareInterface<IDataRetriever>(this);
38 
39  }
40 
42  if (m_bTaggerNames.size()!=m_CDIPaths.size()){
43  ATH_MSG_WARNING("Number of btaggers and CDI files do not match. Will not retrieve b-tagging information.");
44  return StatusCode::SUCCESS;
45  } else {
46  m_nTaggers = m_bTaggerNames.size();
47  }
48  for (unsigned int i=0; i<m_nTaggers; i++){
49  std::string taggerName = m_bTaggerNames[i];
51  btagSelTool.setTypeAndName("BTaggingSelectionTool/btagSelTool_"+taggerName);
52  ATH_CHECK(btagSelTool.setProperty("TaggerName", taggerName));
53  ATH_CHECK(btagSelTool.setProperty("JetAuthor", "AntiKt4EMPFlowJets")); // only AntiKt4EMPFlowJets is supported
54  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.
55  ATH_CHECK(btagSelTool.setProperty("FlvTagCutDefinitionsFileName", m_CDIPaths[i]));
56  ATH_CHECK(btagSelTool.setProperty( "MinPt", 0.0));
57  ATH_CHECK(btagSelTool.initialize());
58  m_btagSelTools.emplace(taggerName, btagSelTool);
59  }
60 
61  return StatusCode::SUCCESS;
62  }
63 
68  StatusCode xAODJetRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) {
69 
70  ATH_MSG_DEBUG( "in retrieveAll()" );
71 
73  const xAOD::JetContainer* Jets;
74 
75  //obtain the default collection first
76  ATH_MSG_DEBUG( "Trying to retrieve " << dataTypeName() << " (" << m_sgKeyFavourite << ")" );
77  StatusCode sc = evtStore()->retrieve(Jets, m_sgKeyFavourite);
78  if (sc.isFailure() ) {
79  ATH_MSG_WARNING( "Collection " << m_sgKeyFavourite << " not found in SG " );
80  }else{
82  if ( FormatTool->AddToEvent(dataTypeName(), m_sgKeyFavourite+"_xAOD", &data).isFailure()){
83  ATH_MSG_WARNING( "Collection " << m_sgKeyFavourite << " not found in SG " );
84  }else{
85  ATH_MSG_DEBUG( dataTypeName() << " (" << m_sgKeyFavourite << ") Jet retrieved" );
86  }
87  }
88 
89  if ( m_otherKeys.empty() ) {
90  //obtain all other collections from StoreGate
91  if (( evtStore()->retrieve(iterator, end)).isFailure()){
92  ATH_MSG_WARNING( "Unable to retrieve iterator for Jet collection" );
93  return StatusCode::SUCCESS;
94  }
95 
96  for (; iterator!=end; ++iterator) {
97 
98  std::string::size_type position = iterator.key().find("HLT",0);
99  if ( m_doWriteHLT ){ position = 99; } // override SG key find
100  if ( position != 0 ){ // SG key doesn't contain HLTAutoKey
101  if (iterator.key()!=m_sgKeyFavourite) {
102  ATH_MSG_DEBUG( "Trying to retrieve all " << dataTypeName() << " (" << iterator.key() << ")" );
103  DataMap data = getData(&(*iterator), iterator.key());
104  if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){
105  ATH_MSG_WARNING( "Collection " << iterator.key() << " not found in SG " );
106  }else{
107  ATH_MSG_DEBUG( dataTypeName() << " (" << iterator.key() << ") AODJet retrieved" );
108  }
109  }
110  }
111  }
112  }else {
113  //obtain all collections with the given keys
114  for (auto jetkey : m_otherKeys) {
115  if (jetkey==m_sgKeyFavourite) { continue; } // skip if already retrieved
116  if ( !evtStore()->contains<xAOD::JetContainer>(jetkey)){ continue; } // skip if not in SG
117  StatusCode sc = evtStore()->retrieve( Jets, jetkey );
118  if (!sc.isFailure()) {
119  ATH_MSG_DEBUG( "Trying to retrieve selected " << dataTypeName() << " (" << jetkey << ")" );
120  DataMap data = getData(Jets, jetkey);
121  if ( FormatTool->AddToEvent(dataTypeName(), jetkey+"_xAOD", &data).isFailure()){
122  ATH_MSG_WARNING( "Collection " << jetkey << " not found in SG " );
123  }else{
124  ATH_MSG_DEBUG( dataTypeName() << " (" << jetkey << ") retrieved" );
125  }
126  }
127  }
128  }
129  //All collections retrieved okay
130  return StatusCode::SUCCESS;
131  }
132 
133 
138  const DataMap xAODJetRetriever::getData(const xAOD::JetContainer* jetCont, const std::string& jetkey) {
139 
140  ATH_MSG_DEBUG( "in getData()" );
141 
143 
144  DataVect et; et.reserve(jetCont->size());
145  DataVect phi; phi.reserve(jetCont->size());
146  DataVect eta; eta.reserve(jetCont->size());
147  DataVect mass; mass.reserve(jetCont->size());
148  DataVect energy; energy.reserve(jetCont->size());
149  DataVect bTagName; bTagName.reserve(jetCont->size());
150  DataVect bTagValue; bTagValue.reserve(jetCont->size());
151  DataVect charge; energy.reserve(jetCont->size());
152  DataVect idVec; idVec.reserve(jetCont->size());
153  DataVect px; px.reserve(jetCont->size());
154  DataVect py; py.reserve(jetCont->size());
155  DataVect pz; pz.reserve(jetCont->size());
156  DataVect jvf; jvf.reserve(jetCont->size());
157  DataVect jvt; jvt.reserve(jetCont->size());
158  DataVect emfrac; emfrac.reserve(jetCont->size());
159 
160  DataVect trackKey; trackKey.reserve(jetCont->size());
161  DataVect trackContKey; trackContKey.reserve(jetCont->size());
162  DataVect trackLinkCount; trackLinkCount.reserve(jetCont->size());
163  DataVect clusterID; clusterID.reserve(jetCont->size());
164 
165  DataVect cellID; cellID.reserve(jetCont->size());
166  DataVect numCells; numCells.reserve(jetCont->size());
167 
168  int id = 0;
169 
170  int counter = 0;
171  for (const auto jet : *jetCont) {
172  ATH_MSG_DEBUG( " Jet #" << counter++ << " : eta = " << jet->eta() << ", phi = " << jet->phi() << ", pt = " << jet->pt() );
173 
174  /* retrieve associated tracks and calo clusters */
175 
176  size_t numConstit = jet->numConstituents();
177  std::vector<std::string> tempCellID;
178  size_t trackcounter = 0;
179  if (numConstit > 0) {
180 
181  xAOD::Type::ObjectType ctype = jet->rawConstituent(0)->type();
182 
183  // PFlow and Flow jets from athena/Reconstruction/Jet/JetMomentTools/Root/JetTrackMomentsTool.cxx
184  if (ctype == xAOD::Type::ParticleFlow) {
185  // This jet is either a PFlow jet (constituent type: xAOD::FlowElement::PFlow) or UFO jets
186  for (size_t i = 0; i < numConstit; i++) {
187  const xAOD::PFO *constit =
188  dynamic_cast<const xAOD::PFO *>(jet->rawConstituent(i));
189  if (constit->isCharged()) {
190  const xAOD::TrackParticle *thisTrack = constit->track(0); // by construction xAOD::PFO can only have one track, in eflowRec usage
191  trackKey.push_back(DataType(thisTrack->index()));
192  trackContKey.push_back(m_tracksName.value());
193  trackcounter++;
194  } // We have a charged PFO
195  } // Loop on jet constituents
196  } else if (ctype == xAOD::Type::FlowElement) {
197  // This jet is made from xAOD::FlowElement, so we calculate the pflow moments if they're PFOs
198  size_t numConstit = jet->numConstituents();
199  for (size_t i = 0; i < numConstit; i++) {
200  const xAOD::FlowElement *constit = dynamic_cast<const xAOD::FlowElement *>(jet->rawConstituent(i));
201  // UFO jet constituents have signalType xAOD::FlowElement::Charged or xAOD::FlowElement::Neutral
202  // PFlow jet constituents have signalType xAOD::FlowElement::ChargedPFlow or xAOD::FlowElement::NeutralPFlow
203  if (constit != nullptr && ((constit->signalType() & xAOD::FlowElement::PFlow) || constit->signalType() == xAOD::FlowElement::Charged)) {
204  if (constit->isCharged()) {
205  const xAOD::TrackParticle *thisTrack = dynamic_cast<const xAOD::TrackParticle *>( constit->chargedObject( 0)); // PFO should have only 1 track
206  if (thisTrack != nullptr) {
207  trackKey.push_back(DataType(thisTrack->index()));
208  trackContKey.push_back(m_tracksName.value());
209  trackcounter++;
210  }
211  else
212  ATH_MSG_WARNING( "Charged PFO had no associated TrackParticle");
213  } // We have a charged PFO
214  } // The FlowElement is a PFO
215  } // Loop on jet constituents
216  } else if (ctype == xAOD::Type::CaloCluster) {
217  // get associated cluster
218  for (size_t j = 0; j < numConstit; ++j) {
219  const xAOD::CaloCluster *cluster = dynamic_cast<const xAOD::CaloCluster *>(jet->rawConstituent(j));
220  clusterID.push_back(DataType(cluster->index()));
221  for (const auto cc : *(cluster->getCellLinks())) {
222  if (std::find(tempCellID.begin(), tempCellID.end(), std::to_string( cc->caloDDE()->identify().get_compact())) != tempCellID.end()) {
223  continue;
224  } else {
225  cellID.push_back( DataType(cc->caloDDE()->identify().get_compact()));
226  tempCellID.push_back( std::to_string(cc->caloDDE()->identify().get_compact()));
227  }
228  }
229  ATH_MSG_VERBOSE(" Associated cluster: eta = " << cluster->eta() << ", phi = " << cluster->phi());
230  }
231 
232  // get ghost associated tracks
233  std::vector<const xAOD::TrackParticle *> ghosttracks = jet->getAssociatedObjects<xAOD::TrackParticle>( xAOD::JetAttribute::GhostTrack);
234  if (ghosttracks.empty()) {
235  ATH_MSG_VERBOSE(" Associated track: ERROR");
236  } else {
237  for (size_t i = 0; i < ghosttracks.size(); i++) {
238 
239  // can access the base track class, should be able to get tracker hits ?
240  // const Trk::Track* baseTrack = dynamic_cast< const Trk::Track* >( ghosttracks[i]->track());
241 
242  trackKey.push_back(DataType(ghosttracks[i]->index()));
243  trackContKey.push_back(m_tracksName.value());
244 
245  ATH_MSG_VERBOSE(" Associated track: d0 = " << ghosttracks[i]->d0() << ", pt = " << ghosttracks[i]->pt());
246  }
247  trackcounter = ghosttracks.size();
248  }
249  } else if (ctype == xAOD::Type::TrackParticle) {
250  for (size_t j = 0; j < numConstit; ++j) {
251  const xAOD::TrackParticle *track =
252  dynamic_cast<const xAOD::TrackParticle *>(jet->rawConstituent(j));
253  if (!track) {
254  ATH_MSG_VERBOSE(" Associated track: ERROR");
255  } else {
256  trackKey.push_back(DataType(track->index()));
257  trackContKey.push_back(m_tracksName.value());
258  trackcounter++;
259  ATH_MSG_VERBOSE(" Associated track: d0 = " << track->d0() << ", pt = " << track->pt());
260  }
261  }
262  }
263  }
264  trackLinkCount.push_back(DataType(trackcounter));
265  numCells.push_back(DataType(tempCellID.size()));
266 
267 
268  phi.push_back(DataType(jet->phi()));
269  eta.push_back(DataType(jet->eta()));
270  et.push_back(DataType(jet->pt()/GeV)); // hack ! no et in xAOD_Jet_v1 currently
271  idVec.push_back( DataType( ++id ));
272 
273  mass.push_back(DataType(jet->m()/GeV));
274  energy.push_back( DataType(jet->e()/GeV ) );
275 
276  px.push_back(DataType(jet->px()/GeV));
277  py.push_back(DataType(jet->py()/GeV));
278  pz.push_back(DataType(jet->pz()/GeV));
279 
280  // bjet tagger values
281  if (jetkey!="AntiKt4EMPFlowJets" || (m_nTaggers==0)){
282  bTagName.push_back(DataType("None"));
283  bTagValue.push_back(DataType(0.));
284  }else{
285  double btagValue;
286  for (auto taggerName : m_bTaggerNames) {
287  CP::CorrectionCode code = m_btagSelTools[taggerName]->getTaggerWeight(*jet, btagValue);
288  if (code != CP::CorrectionCode::Ok) {
289  ATH_MSG_DEBUG("Failed to get btagging weight for tagger " << taggerName);
290  btagValue = 0;
291  }
292  bTagName.push_back(DataType(taggerName));
293  bTagValue.push_back(DataType(btagValue));
294  }
295  }
296 
297  float chargeread;
298  if (!jet->getAttribute<float>(xAOD::JetAttribute::Charge, chargeread)) {
299  ATH_MSG_DEBUG("Jet charge unavailable!");
300  charge.push_back( DataType( 0. ));
301  }else{
302  charge.push_back( DataType( chargeread ));
303  }
304 
305  // updated for data15
306  // from: Reconstruction/MET/METReconstruction/Root/METJetFilterTool.cxx
307  std::vector<float> jvfread;
308  if(!jet->getAttribute<std::vector<float> >(xAOD::JetAttribute::JVF,jvfread)) {
309  ATH_MSG_DEBUG("Jet JVF unavailable!");
310  jvf.push_back( DataType( 1. ));
311  }else{
312  jvf.push_back( DataType( jvfread[0] ));
313  }
314 
315  float jvtread;
316  if(!jet->getAttribute<float>(xAOD::JetAttribute::Jvt,jvtread)) {
317  ATH_MSG_DEBUG("Jet JVT unavailable!");
318  jvt.push_back(DataType(0.));
319  } else {
320  jvt.push_back(DataType(jvtread));
321  }
322 
323  float emfracread = 0;
324  if(!jet->getAttribute(xAOD::JetAttribute::EMFrac,emfracread)) {
325  ATH_MSG_DEBUG("Jet EMFrac unavailable!");
326  emfrac.push_back( DataType( 0. ));
327  }else{
328  emfrac.push_back( DataType( emfracread ));
329  }
330 
331  } // end loop
332 
333  // four-vectors
334  DataMap["phi"] = phi;
335  DataMap["eta"] = eta;
336  DataMap["et"] = et;
337  DataMap["energy"] = energy;
338  DataMap["mass"] = mass;
339  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
340  DataMap["bTagName multiple=\""+str_nTaggers+"\""] = bTagName; // assigned by hand !
341  DataMap["bTagValue multiple=\""+str_nTaggers+"\""] = bTagValue;
342  DataMap["charge"] = charge;
343  DataMap["id"] = idVec;
344  DataMap["px"] = px;
345  DataMap["py"] = py;
346  DataMap["pz"] = pz;
347  DataMap["jvf"] = jvf;
348  DataMap["jvt"] = jvt;
349  DataMap["emfrac"] = emfrac;
350 
351  if ((trackKey.size()) != 0){
352  double NTracksPerVertex = trackKey.size()*1./jetCont->size();
353  std::string tag = "trackIndex multiple=\"" +DataType(NTracksPerVertex).toString()+"\"";
354  DataMap[tag] = trackKey;
355  tag = "trackKey multiple=\"" +DataType(NTracksPerVertex).toString()+"\"";
356  DataMap[tag] = trackContKey;
357  }
358 
359  if ((clusterID.size())!=0){
360  std::string tag = "clusterIndex multiple=\"" + DataType(clusterID.size()).toString()+"\"";
361  double NCellsPerJet = cellID.size()*1./jetCont->size();
362  tag = "cells multiple=\"" +DataType(NCellsPerJet).toString()+"\"";
363  DataMap[tag]=cellID;
364  }
365 
366  DataMap["trackLinkCount"] = trackLinkCount;
367  DataMap["numCells"] = numCells;
368 
369  ATH_MSG_DEBUG( dataTypeName() << " retrieved with " << phi.size() << " entries" );
370 
371  //All collections retrieved okay
372  return DataMap;
373 
374  } // retrieve
375 
376  //--------------------------------------------------------------------------
377 
378 } // JiveXML namespace
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
asg::AnaToolHandle::initialize
StatusCode initialize()
initialize the tool
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
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
JiveXML::xAODJetRetriever::m_sgKeyFavourite
Gaudi::Property< std::string > m_sgKeyFavourite
Definition: xAODJetRetriever.h:53
asg::AnaToolHandle< IBTaggingSelectionTool >
JiveXML::xAODJetRetriever::m_nTaggers
unsigned int m_nTaggers
Definition: xAODJetRetriever.h:69
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
xAOD::PFO_v1::track
const TrackParticle * track(unsigned int index) const
Retrieve a const pointer to a Rec::TrackParticle.
Definition: PFO_v1.cxx:691
Jets
Definition: Jets.py:1
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
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:68
JiveXML::xAODJetRetriever::getData
const DataMap getData(const xAOD::JetContainer *, const std::string &jetkey)
Retrieve basic parameters, mainly four-vectors, for each collection.
Definition: xAODJetRetriever.cxx:138
JiveXML::xAODJetRetriever::m_doWriteHLT
Gaudi::Property< bool > m_doWriteHLT
Definition: xAODJetRetriever.h:57
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
JiveXML::DataMap
std::map< std::string, DataVect > DataMap
Definition: DataType.h:59
asg::AnaToolHandle::setProperty
StatusCode setProperty(const std::string &property, const T2 &value)
set the given property of the tool.
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
JiveXML::xAODJetRetriever::initialize
virtual StatusCode initialize()
Definition: xAODJetRetriever.cxx:41
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:33
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)
Retrieve all the data.
Definition: xAODJetRetriever.cxx:68
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:61
FlowElement.h
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
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:55
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
xAOD::CaloCluster_v1::getCellLinks
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
Definition: CaloCluster_v1.cxx:905
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.
Definition: xAODJetRetriever.h:48
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:756
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
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
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:65
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
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.
SG::ConstIterator
Definition: SGIterator.h:163
JiveXML::xAODJetRetriever::m_bTaggerNames
Gaudi::Property< std::vector< std::string > > m_bTaggerNames
Definition: xAODJetRetriever.h:63
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