ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::VertexCollectionSortingTool Class Referencefinal

#include <VertexCollectionSortingTool.h>

Inheritance diagram for Trk::VertexCollectionSortingTool:
Collaboration diagram for Trk::VertexCollectionSortingTool:

Public Member Functions

virtual StatusCode initialize () override
virtual StatusCode finalize () override
 EndOfInitialize.
 VertexCollectionSortingTool (const std::string &t, const std::string &n, const IInterface *p)
 constructor
virtual ~VertexCollectionSortingTool ()=default
 destructor
virtual std::pair< xAOD::VertexContainer *, xAOD::VertexAuxContainer * > sortVertexContainer (const xAOD::VertexContainer &MyVxCont) const override
 Sort.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool interface methods.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< Trk::IVertexWeightCalculatorm_iVertexWeightCalculator
Gaudi::Property< std::string > m_decorationName
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Author
Johanna Bronner, April 2009

Changes:

David Shope david.nosp@m..ric.nosp@m.hard..nosp@m.shop.nosp@m.e@cer.nosp@m.n.ch (2016-04-26)

EDM Migration to xAOD - remove method using VxCandidate

Definition at line 37 of file VertexCollectionSortingTool.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

◆ VertexCollectionSortingTool()

Trk::VertexCollectionSortingTool::VertexCollectionSortingTool ( const std::string & t,
const std::string & n,
const IInterface * p )

constructor

Definition at line 27 of file VertexCollectionSortingTool.cxx.

30 : AthAlgTool(t, n, p)
31{
32 declareInterface<IVertexCollectionSortingTool>(this);
33}
AthAlgTool()
Default constructor:

◆ ~VertexCollectionSortingTool()

virtual Trk::VertexCollectionSortingTool::~VertexCollectionSortingTool ( )
virtualdefault

destructor

Member Function Documentation

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ evtStore()

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.

◆ 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

◆ finalize()

StatusCode Trk::VertexCollectionSortingTool::finalize ( )
overridevirtual

EndOfInitialize.

Definition at line 49 of file VertexCollectionSortingTool.cxx.

50{
51 return StatusCode::SUCCESS;
52}

◆ initialize()

StatusCode Trk::VertexCollectionSortingTool::initialize ( )
overridevirtual

Definition at line 37 of file VertexCollectionSortingTool.cxx.

38{
39 if (m_iVertexWeightCalculator.retrieve().isFailure()) {
40 ATH_MSG_FATAL("Failed to retrieve tool " << m_iVertexWeightCalculator);
41 return StatusCode::FAILURE;
42 }
43
44 ATH_MSG_INFO("Initialization successful");
45 return StatusCode::SUCCESS;
46}
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
ToolHandle< Trk::IVertexWeightCalculator > m_iVertexWeightCalculator

◆ 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.

◆ interfaceID()

const InterfaceID & Trk::IVertexCollectionSortingTool::interfaceID ( )
inlinestaticinherited

AlgTool interface methods.

Definition at line 51 of file IVertexCollectionSortingTool.h.

static const InterfaceID IID_IVertexCollectionSortingTool("IVertexCollectionSortingTool", 1, 0)

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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.

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ sortVertexContainer()

std::pair< xAOD::VertexContainer *, xAOD::VertexAuxContainer * > Trk::VertexCollectionSortingTool::sortVertexContainer ( const xAOD::VertexContainer & MyVxCont) const
overridevirtual

Sort.

Implements Trk::IVertexCollectionSortingTool.

Definition at line 55 of file VertexCollectionSortingTool.cxx.

57{
58 std::vector<Vertex_pair> MyVertex_pairs;
59
60 xAOD::VertexContainer* NewContainer = new xAOD::VertexContainer();
62 NewContainer->setStore(auxNewContainer);
63 SG::AuxElement::Accessor<float> sigWeightDec(m_decorationName);
64
65 if(MyVxCont.size()<=1){
66 xAOD::Vertex* dummyVxCandidate = new xAOD::Vertex();
67 NewContainer->push_back(dummyVxCandidate);
68 if(MyVxCont.size()==1){
69 const xAOD::Vertex* existVtx = MyVxCont.back();
70 dummyVxCandidate->setPosition(existVtx->position());
71 dummyVxCandidate->setCovariancePosition(existVtx->covariancePosition());
72 }else{
73 dummyVxCandidate->setPosition(Amg::Vector3D(0.,0.,0.));
74 AmgSymMatrix(3) tmpCovar; tmpCovar.setIdentity();
75 dummyVxCandidate->setCovariancePosition(tmpCovar);
76 }
77 dummyVxCandidate->setVertexType(xAOD::VxType::NoVtx);
78 sigWeightDec(*dummyVxCandidate) = 0.;
79 return std::make_pair(NewContainer, auxNewContainer);
80 }
81
82 xAOD::VertexContainer::const_iterator beginIter = MyVxCont.begin();
83 xAOD::VertexContainer::const_iterator endIter = MyVxCont.end();
84
85 for (xAOD::VertexContainer::const_iterator i = beginIter; i != endIter; ++i) {
86 // do not weight dummy!!! (do not delete it either! it is deleted when the
87 // original MyVxContainer is deleted in InDetPriVxFinder.cxx)
88 if ((*i)->vertexType() != xAOD::VxType::NoVtx) {
89 double Weight =
90 m_iVertexWeightCalculator->estimateSignalCompatibility(**i);
91 MyVertex_pairs.emplace_back(Weight, (*i));
92 ATH_MSG_DEBUG("Weight before sorting: " << Weight);
93 }
94 }
95
96 if (!MyVertex_pairs.empty()) {
97 std::sort(MyVertex_pairs.begin(), MyVertex_pairs.end());
98 }
99
100 unsigned int vtxCount(1);
101 for (auto MyVertex_pair : MyVertex_pairs) {
102 ATH_MSG_DEBUG("Weight after sorting: " << MyVertex_pair.first);
103 xAOD::Vertex* vxCand = new xAOD::Vertex(
104 *(MyVertex_pair.second)); // use copy-constructor, creates a private store
105 NewContainer->push_back(
106 vxCand); // private store is now copied to the container store
107 if (vtxCount == 1) {
109 } else {
111 }
112 sigWeightDec(*vxCand) = MyVertex_pair.first;
113 vtxCount++;
114 }
115
116 // add dummy at position of first vertex
117 xAOD::Vertex* primaryVtx = NewContainer->front();
118 xAOD::Vertex* dummyVxCandidate = new xAOD::Vertex();
119 NewContainer->push_back(dummyVxCandidate);
120 dummyVxCandidate->setPosition(primaryVtx->position());
121 dummyVxCandidate->setCovariancePosition(primaryVtx->covariancePosition());
122 dummyVxCandidate->setVertexType(xAOD::VxType::NoVtx);
123 sigWeightDec(*dummyVxCandidate) = 0.;
124
125 return std::make_pair(NewContainer, auxNewContainer);
126}
#define ATH_MSG_DEBUG(x)
#define AmgSymMatrix(dim)
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
const T * back() const
Access the last element in the collection as an rvalue.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Property< std::string > m_decorationName
void setCovariancePosition(const AmgSymMatrix(3)&covariancePosition)
Sets the vertex covariance matrix.
void setVertexType(VxType::VertexType vType)
Set the type of the vertex.
void setPosition(const Amg::Vector3D &position)
Sets the 3-position.
const Amg::Vector3D & position() const
Returns the 3-pos.
Eigen::Matrix< double, 3, 1 > Vector3D
@ NoVtx
Dummy vertex, TrackParticle was not used in vertex fit.
Definition VertexType.h:26
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
@ PileUp
Pile-up vertex.
@ PriVtx
Primary vertex.
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
VertexAuxContainer_v1 VertexAuxContainer
Definition of the current jet auxiliary container.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.

◆ 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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_decorationName

Gaudi::Property<std::string> Trk::VertexCollectionSortingTool::m_decorationName
private
Initial value:
{
this,
"decorationName",
"sumPt2",
"Name to use for the decoration"
}

Definition at line 64 of file VertexCollectionSortingTool.h.

64 {
65 this,
66 "decorationName",
67 "sumPt2",
68 "Name to use for the decoration"
69 };

◆ 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_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_iVertexWeightCalculator

ToolHandle<Trk::IVertexWeightCalculator> Trk::VertexCollectionSortingTool::m_iVertexWeightCalculator
private
Initial value:
{
this,
"VertexWeightCalculator",
"Trk::IVertexWeightCalculator"
}

Definition at line 59 of file VertexCollectionSortingTool.h.

59 {
60 this,
61 "VertexWeightCalculator",
62 "Trk::IVertexWeightCalculator"
63 };

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.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: