ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
JetTrackVtxAssoAlg Class Reference

creates a jet::TrackVertexAssociation object More...

#include <JetTrackVtxAssoAlg.h>

Inheritance diagram for JetTrackVtxAssoAlg:
Collaboration diagram for JetTrackVtxAssoAlg:

Public Member Functions

 JetTrackVtxAssoAlg (const std::string &n, ISvcLocator *l)
 
StatusCode initialize () override
 Athena algorithm's Hooks. More...
 
StatusCode execute (const EventContext &ctx) const override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
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 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

virtual ::StatusCode finalize ()
 finalize this algorithm More...
 
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

std::unique_ptr< jet::TrackVertexAssociationbuildTrackVertexAssociation_withTool (const xAOD::TrackParticleContainer *, const xAOD::VertexContainer *) const
 
std::unique_ptr< jet::TrackVertexAssociationbuildTrackVertexAssociation_custom (const xAOD::TrackParticleContainer *, const xAOD::VertexContainer *) const
 
std::unique_ptr< jet::TrackVertexAssociationmakeTrackVertexAssociation (const xAOD::TrackParticleContainer *, const xAOD::VertexContainer *, bool useCustom) const
 
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

ToolHandle< CP::ITrackVertexAssociationToolm_tvaTool {this, "TrackVertexAssoTool", "", "CP::ITrackVertexAssociationTool instance" }
 
Gaudi::Property< float > m_transDistMax = {this, "MaxTransverseDistance",10e6, ""}
 
Gaudi::Property< float > m_longDistMax = {this , "MaxLongitudinalDistance",10e6 , ""}
 
Gaudi::Property< float > m_maxZ0SinTheta = {this, "MaxZ0SinTheta", 10e6, ""}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_trackContainer_key = {this, "TrackParticleContainer", "" , "" }
 
SG::ReadHandleKey< xAOD::VertexContainerm_vertexContainer_key = {this, "VertexContainer", "" , "" }
 
SG::WriteHandleKey< jet::TrackVertexAssociationm_tva_key = {this, "TrackVertexAssociation", "" , "Output name of jet::TrackVertexAssociation" }
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
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

creates a jet::TrackVertexAssociation object

Creates a jet::TrackVertexAssociation map. The tool expects a ITrackVertexAssociationTool which it uses to create the map from a TrackParticleContainer and a VertexContainer. The map is recorded in the evtStore.

Properties :

If the TrackVertexAssoTool is left blank, the old custom method is used to build the code using cuts defined by these properties

Definition at line 45 of file JetTrackVtxAssoAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ JetTrackVtxAssoAlg()

JetTrackVtxAssoAlg::JetTrackVtxAssoAlg ( const std::string &  n,
ISvcLocator *  l 
)
inline

Definition at line 49 of file JetTrackVtxAssoAlg.h.

Member Function Documentation

◆ buildTrackVertexAssociation_custom()

std::unique_ptr< jet::TrackVertexAssociation > JetTrackVtxAssoAlg::buildTrackVertexAssociation_custom ( const xAOD::TrackParticleContainer trackContainer,
const xAOD::VertexContainer vertexContainer 
) const
private

Definition at line 124 of file JetTrackVtxAssoAlg.cxx.

125 {
126  ATH_MSG_DEBUG("Building track-vertex association trk size="<< trackContainer->size()
127  << " vtx size="<< vertexContainer->size());
128 
129  auto tva = std::make_unique<jet::TrackVertexAssociation>(trackContainer);
130 
131  for (size_t iTrack = 0; iTrack < trackContainer->size(); ++iTrack)
132  {
133  const xAOD::TrackParticle* track = trackContainer->at(iTrack);
134 
135  // Apply track transverse distance cut
136  const float transverseDistance = track->d0();//perigeeParameters().parameters()[Trk::d0];
137  if (transverseDistance > m_transDistMax) continue;
138 
139 
140  // Get track longitudinal distance offset
141  const float longitudinalDistance = track->z0()+track->vz();
142 
143  double sinTheta = std::sin(track->theta());
144 
145  // For each track, find the vertex with highest sum pt^2 within z0 cut
146  size_t matchedIndex = 0;
147  bool foundMatch = false;
148  for (size_t iVertex = 0; iVertex < vertexContainer->size(); ++iVertex)
149  {
150  const xAOD::Vertex* vertex = vertexContainer->at(iVertex);
151 
152  double deltaz = longitudinalDistance - vertex->z();
153 
154  // Check longitudinal distance between track and vertex
155  if ( std::abs(deltaz) > m_longDistMax)
156  continue;
157 
158  // Check z0*sinThetha between track and vertex
159  if (std::abs(deltaz*sinTheta) > m_maxZ0SinTheta)
160  continue;
161 
162  // If it passed the cuts, then this is the vertex we want
163  // This does make the assumption that the container is sorted in sum pT^2 order
164  foundMatch = true;
165  matchedIndex = iVertex;
166  break;
167  }
168 
169  // If we matched a vertex, then associate that vertex to the track
170  if (foundMatch)
171  tva->associate(trackContainer->at(iTrack),vertexContainer->at(matchedIndex));
172  }
173 
174 
175  // Return the TVA object
176  return tva;
177 }

◆ buildTrackVertexAssociation_withTool()

std::unique_ptr< jet::TrackVertexAssociation > JetTrackVtxAssoAlg::buildTrackVertexAssociation_withTool ( const xAOD::TrackParticleContainer trackContainer,
const xAOD::VertexContainer vertexContainer 
) const
private

Definition at line 102 of file JetTrackVtxAssoAlg.cxx.

103 {
104 
105  ATH_MSG_DEBUG("Building track-vertex association USING InDet tool. trk size="<< trackContainer->size()
106  << " vtx size="<< vertexContainer->size());
107 
108  auto tva = std::make_unique<jet::TrackVertexAssociation>(trackContainer);
109 
110  std::vector<const xAOD::Vertex*> vecVert;
111  vecVert.assign(vertexContainer->begin(), vertexContainer->end());
112 
113  for( const xAOD::TrackParticle* track : *trackContainer) {
114 
115  const xAOD::Vertex * v = m_tvaTool->getUniqueMatchVertex(*track, vecVert) ;
116  tva->associate( track, v );
117  }
118  return tva;
119 }

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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; }

◆ execute()

StatusCode JetTrackVtxAssoAlg::execute ( const EventContext &  ctx) const
override

Definition at line 31 of file JetTrackVtxAssoAlg.cxx.

31  {
32 
33  // Get input track collection
34 
35  auto handle_tracks = SG::makeHandle(m_trackContainer_key,ctx);
36 
37  if(!handle_tracks.isValid()){
38  ATH_MSG_ERROR("Error retrieving TrackParticleContainer from evtStore: "
40  return StatusCode::FAILURE;
41  }
42 
43  const auto *trackContainer = handle_tracks.cptr();
44 
45 
46  // If this is a view container, then we assume that it contains elements from only one owning container
47  if ( trackContainer->ownPolicy() != SG::OWN_ELEMENTS ) {
48  bool oneOwningContainer(true);
49  for(const auto *const track : *trackContainer) {
50  if(track->container() != trackContainer->front()->container()) {
51  oneOwningContainer=false;
52  break;
53  }
54  }
55  if(!oneOwningContainer) {
56  ATH_MSG_ERROR("Track view container holds track from multiple owning containers.");
57  ATH_MSG_ERROR("Problem is this container: " << m_trackContainer_key.key());
58  return StatusCode::FAILURE;
59  }
60  }
61 
62  // Get input vertex collection
63  auto handle_vert = SG::makeHandle(m_vertexContainer_key,ctx);
64 
65  if(!handle_vert.isValid()){
66  ATH_MSG_ERROR("Error retrieving VertexContainer from evtStore: "
67  << m_vertexContainer_key.key());
68  return StatusCode::FAILURE;
69  }
70 
71  const auto *vertexContainer = handle_vert.cptr();
72 
73  auto useCustom = m_tvaTool.empty();
74  auto tva = makeTrackVertexAssociation(trackContainer,
75  vertexContainer,
76  useCustom);
77  // Check the result.
78  if (!tva){
79  ATH_MSG_ERROR("Could not build the TrackVertexAssociation");
80  return StatusCode::FAILURE;
81  }
82 
83  // Store it
84 
85  auto handle_tva = SG::makeHandle(m_tva_key,ctx);
86  if(!handle_tva.record(std::move(tva))){
87  ATH_MSG_ERROR("Unable to write new TrackVertexAssociation to evtStore: "
88  << m_tva_key.key());
89  return StatusCode::FAILURE;
90  }
91 
92  // Success
93  ATH_MSG_DEBUG("Wrote new TrackVertexAssociation to evtStore: "
94  << m_tva_key.key());
95  return StatusCode::SUCCESS;
96 
97 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode EL::AnaReentrantAlgorithm::finalize ( )
protectedinherited

finalize this algorithm

This gets called after event processing has finished. The last event may no longer be in memory, and the code should not try to access it.

Definition at line 102 of file AnaReentrantAlgorithm.cxx.

104  {
105  return StatusCode::SUCCESS;
106  }

◆ initialize()

StatusCode JetTrackVtxAssoAlg::initialize ( )
override

Athena algorithm's Hooks.

Definition at line 11 of file JetTrackVtxAssoAlg.cxx.

11  {
12  ATH_MSG_DEBUG("Initializing " );
13 
14  ATH_MSG_INFO("Initializing tool " << name() << "...");
15  ATH_MSG_DEBUG("initializing version with data handles");
16 
18  ATH_CHECK(m_vertexContainer_key.initialize());
20 
21  if(! m_tvaTool.empty() ) {
22  ATH_MSG_INFO("Intialized using ITrackVertexAssociationTool");
23  return m_tvaTool.retrieve();
24  }
25 
26  ATH_MSG_INFO("Intialized using custom track-vertex association");
27  return StatusCode::SUCCESS;
28 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ makeTrackVertexAssociation()

std::unique_ptr< jet::TrackVertexAssociation > JetTrackVtxAssoAlg::makeTrackVertexAssociation ( const xAOD::TrackParticleContainer ,
const xAOD::VertexContainer ,
bool  useCustom 
) const
private

Definition at line 182 of file JetTrackVtxAssoAlg.cxx.

184  {
185  if (useCustom) {
186  return buildTrackVertexAssociation_custom(trackContainer,
187  vertexContainer);
188  } else {
189  return buildTrackVertexAssociation_withTool(trackContainer,
190  vertexContainer);
191  }
192 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::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< Gaudi::Algorithm > >::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.

◆ 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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_longDistMax

Gaudi::Property<float> JetTrackVtxAssoAlg::m_longDistMax = {this , "MaxLongitudinalDistance",10e6 , ""}
private

Definition at line 77 of file JetTrackVtxAssoAlg.h.

◆ m_maxZ0SinTheta

Gaudi::Property<float> JetTrackVtxAssoAlg::m_maxZ0SinTheta = {this, "MaxZ0SinTheta", 10e6, ""}
private

Definition at line 78 of file JetTrackVtxAssoAlg.h.

◆ m_trackContainer_key

SG::ReadHandleKey<xAOD::TrackParticleContainer> JetTrackVtxAssoAlg::m_trackContainer_key = {this, "TrackParticleContainer", "" , "" }
private

Definition at line 80 of file JetTrackVtxAssoAlg.h.

◆ m_transDistMax

Gaudi::Property<float> JetTrackVtxAssoAlg::m_transDistMax = {this, "MaxTransverseDistance",10e6, ""}
private

Definition at line 76 of file JetTrackVtxAssoAlg.h.

◆ m_tva_key

SG::WriteHandleKey<jet::TrackVertexAssociation> JetTrackVtxAssoAlg::m_tva_key = {this, "TrackVertexAssociation", "" , "Output name of jet::TrackVertexAssociation" }
private

Definition at line 82 of file JetTrackVtxAssoAlg.h.

◆ m_tvaTool

ToolHandle<CP::ITrackVertexAssociationTool> JetTrackVtxAssoAlg::m_tvaTool {this, "TrackVertexAssoTool", "", "CP::ITrackVertexAssociationTool instance" }
private

Definition at line 72 of file JetTrackVtxAssoAlg.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertexContainer_key

SG::ReadHandleKey<xAOD::VertexContainer> JetTrackVtxAssoAlg::m_vertexContainer_key = {this, "VertexContainer", "" , "" }
private

Definition at line 81 of file JetTrackVtxAssoAlg.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
JetTrackVtxAssoAlg::m_tvaTool
ToolHandle< CP::ITrackVertexAssociationTool > m_tvaTool
Definition: JetTrackVtxAssoAlg.h:72
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
JetTrackVtxAssoAlg::m_vertexContainer_key
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainer_key
Definition: JetTrackVtxAssoAlg.h:81
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
JetTrackVtxAssoAlg::m_trackContainer_key
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackContainer_key
Definition: JetTrackVtxAssoAlg.h:80
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
SG::OWN_ELEMENTS
@ OWN_ELEMENTS
this data object owns its elements
Definition: OwnershipPolicy.h:17
beamspotman.n
n
Definition: beamspotman.py:731
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
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
JetTrackVtxAssoAlg::buildTrackVertexAssociation_withTool
std::unique_ptr< jet::TrackVertexAssociation > buildTrackVertexAssociation_withTool(const xAOD::TrackParticleContainer *, const xAOD::VertexContainer *) const
Definition: JetTrackVtxAssoAlg.cxx:102
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
EL::AnaReentrantAlgorithm
the base class for EventLoop reentrant algorithms
Definition: AnaReentrantAlgorithm.h:51
JetTrackVtxAssoAlg::buildTrackVertexAssociation_custom
std::unique_ptr< jet::TrackVertexAssociation > buildTrackVertexAssociation_custom(const xAOD::TrackParticleContainer *, const xAOD::VertexContainer *) const
Definition: JetTrackVtxAssoAlg.cxx:124
JetTrackVtxAssoAlg::m_transDistMax
Gaudi::Property< float > m_transDistMax
Definition: JetTrackVtxAssoAlg.h:76
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.PyAthena.v
v
Definition: PyAthena.py:157
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
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
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
JetTrackVtxAssoAlg::m_tva_key
SG::WriteHandleKey< jet::TrackVertexAssociation > m_tva_key
Definition: JetTrackVtxAssoAlg.h:82
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
JetTrackVtxAssoAlg::m_maxZ0SinTheta
Gaudi::Property< float > m_maxZ0SinTheta
Definition: JetTrackVtxAssoAlg.h:78
JetTrackVtxAssoAlg::makeTrackVertexAssociation
std::unique_ptr< jet::TrackVertexAssociation > makeTrackVertexAssociation(const xAOD::TrackParticleContainer *, const xAOD::VertexContainer *, bool useCustom) const
Definition: JetTrackVtxAssoAlg.cxx:182
JetTrackVtxAssoAlg::m_longDistMax
Gaudi::Property< float > m_longDistMax
Definition: JetTrackVtxAssoAlg.h:77
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >