ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::KalmanVertexTrackUpdator Class Reference

A concrete implementation of the VertexTrackUpdator using the Kalman filter algorithm. More...

#include <KalmanVertexTrackUpdator.h>

Inheritance diagram for Trk::KalmanVertexTrackUpdator:
Collaboration diagram for Trk::KalmanVertexTrackUpdator:

Public Member Functions

virtual StatusCode initialize () override
 KalmanVertexTrackUpdator (const std::string &t, const std::string &n, const IInterface *p)
 Constructor.
 ~KalmanVertexTrackUpdator ()=default
 Destructor.
virtual void update (VxTrackAtVertex &trk, const xAOD::Vertex &vtx) const override
 Update method.
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< IVertexUpdatorm_Updator
DoubleProperty m_maxWeight
BooleanProperty m_skipInvertibleCheck
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

A concrete implementation of the VertexTrackUpdator using the Kalman filter algorithm.

The algorithm refits a single track with the knowledge of the production vertex.

Based on R. Fruhwirth et al. Comp. Phys. Comm 96(1996) 189

Author
Kirill Prokofiev, November 2005

Changes:

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

EDM Migration to xAOD - from Trk::VxCandidate to xAOD::Vertex, from Trk::RecVertex to xAOD::Vertex, from Trk::Vertex to Amg::Vector3D

Definition at line 40 of file KalmanVertexTrackUpdator.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

◆ KalmanVertexTrackUpdator()

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

Constructor.

Definition at line 27 of file KalmanVertexTrackUpdator.cxx.

27 :
28 AthAlgTool(t,n,p)
29 {
30 declareInterface<IVertexTrackUpdator>(this);
31 }
AthAlgTool()
Default constructor:

◆ ~KalmanVertexTrackUpdator()

Trk::KalmanVertexTrackUpdator::~KalmanVertexTrackUpdator ( )
default

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

◆ initialize()

StatusCode Trk::KalmanVertexTrackUpdator::initialize ( )
overridevirtual

Definition at line 12 of file KalmanVertexTrackUpdator.cxx.

13 {
14 //uploading the corresponding tools
15 //updator
16 if ( m_Updator.retrieve().isFailure() )
17 {
18 ATH_MSG_FATAL("Failed to retrieve tool " << m_Updator);
19 return StatusCode::FAILURE;
20 }
21 ATH_MSG_INFO("Retrieved tool " << m_Updator);
22
23
24 return StatusCode::SUCCESS;
25 }
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
ToolHandle< IVertexUpdator > m_Updator

◆ 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::IVertexTrackUpdator::interfaceID ( )
inlinestaticinherited

AlgTool interface methods.

Definition at line 53 of file IVertexTrackUpdator.h.

53{ return IID_IVertexTrackUpdator; };
static const InterfaceID IID_IVertexTrackUpdator("IVertexTrackUpdator", 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 }

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

◆ update()

void Trk::KalmanVertexTrackUpdator::update ( VxTrackAtVertex & trk,
const xAOD::Vertex & vtx ) const
overridevirtual

Update method.

Implements Trk::IVertexTrackUpdator.

Definition at line 33 of file KalmanVertexTrackUpdator.cxx.

34 {
35 const Amg::Vector3D & fit_vrt_pos = vtx.position();
36 Trk::LinearizedTrack * linTrack = trk.linState();
37
38 //protection check
39 if(linTrack == nullptr)
40 {
41 if(trk.weight() > m_maxWeight)
42 {
43 //actual error case
44 msg(MSG::INFO) << "The VxTrackAtVertex passed does not have a Linearized Track" << endmsg;
45 msg(MSG::INFO) << "Please produce one with corresponding LinearizedTrackFactory"<< endmsg;
46 msg(MSG::INFO) << "The VxTrackAtVertex returned not refitted"<< endmsg;
47 // std::cout<<"Weight of the track: "<<trk.weight()<<std::endl;
48 }else{
49 if (msgLvl(MSG::DEBUG))
50 {
51 msg(MSG::DEBUG) << "The VxTrackAtVertex passed does not have a Linearized Track" << endmsg;
52 msg(MSG::DEBUG) << "However the weight of this track is less than " << m_maxWeight << endmsg;
53 msg(MSG::DEBUG) << "The VxTrackAtVertex returned not refitted"<< endmsg;
54 }
55 }//end of absent linTrack case
56
57 return;
58 }//end of no lintrack check
59
60 //getting Jacobians and track information
61 const AmgMatrix(5,3) & A = linTrack->positionJacobian();
62 const AmgMatrix(5,3) & B = linTrack->momentumJacobian();
63 const AmgVector(5) & trkParameters = linTrack->expectedParametersAtPCA();
64 // std::cout << "Perigee before refit " << trkParameters << std::endl;
65 // std::cout << "Track covariance before refit " << linTrack->expectedPerigeeCovarianceAtPCA() << std::endl;
66
67 const AmgSymMatrix(5) & trkParametersWeight = linTrack->expectedWeightAtPCA();
68
69 //calculation of S matrix
70 AmgSymMatrix(3) Sm = B.transpose()*(trkParametersWeight*B);
71
72 if (Sm.determinant() == 0.0) {
73 ATH_MSG_WARNING("Matrix can not be inverted, new type of check as part of Eigen, please monitor."
74 << endmsg << "Matrix Sm = " << Sm);
75 return;
76 }
77 Sm = Sm.inverse().eval();
78 const AmgVector(5) & theResidual = linTrack->constantTerm();
79
80 //refitted track momentum
81 Amg::Vector3D newTrackMomentum = Sm*B.transpose() * trkParametersWeight
82 * (trkParameters - theResidual - A*fit_vrt_pos);
83
84 //refitted track parameters
85 AmgVector(5) refTrkPar; refTrkPar.setZero();
86 refTrkPar(Trk::phi) = newTrackMomentum(0);//phi
87 refTrkPar(Trk::theta) = newTrackMomentum(1);//theta
88 refTrkPar(Trk::qOverP)= newTrackMomentum(2);//qoverP
89
90 //bring parameter phi again in the limits, if
91 //phi is slightly outside (as can be expected
92 //due to refitting)
93 // if (refTrkPar[2]<-M_PI) {
94 // refTrkPar[2] = refTrkPar[2]+M_PI;
95 // } else if (refTrkPar[2]>M_PI) {
96 // refTrkPar[2] = refTrkPar[2]-M_PI;
97 // }
98
99 if (refTrkPar[Trk::phi0] > M_PI)
100 {
101 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "-U- phi = " << refTrkPar[Trk::phi0];
102 refTrkPar[Trk::phi0] = fmod(refTrkPar[Trk::phi0]+M_PI,2*M_PI)-M_PI;
103 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< " out of range, now "
104 << "corrected to " << refTrkPar[Trk::phi0] << endmsg;
105 } else if(refTrkPar[Trk::phi0]<-M_PI) {
106 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "-U- phi = " << refTrkPar[Trk::phi0];
107 refTrkPar[Trk::phi0] = fmod(refTrkPar[Trk::phi0]-M_PI,2*M_PI)+M_PI;
108 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< " out of range, now "
109 << "corrected to " << refTrkPar[Trk::phi0] << endmsg;
110 }
111
112 if (refTrkPar[Trk::theta] > M_PI)
113 {
114 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< " Theta out of range: correcting theta: " << refTrkPar[Trk::theta];
115 refTrkPar[Trk::theta]=fmod(refTrkPar[Trk::theta]+M_PI,2*M_PI)-M_PI;
116 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< " to: " << refTrkPar[Trk::theta] << endmsg;
117 }
118 else if (refTrkPar[Trk::theta]<0)
119 {
120 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< " Theta out of range: correcting theta: " << refTrkPar[Trk::theta];
121 refTrkPar[Trk::theta]=fmod(refTrkPar[Trk::theta]-M_PI,2*M_PI)+M_PI;
122 if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< " to: " << refTrkPar[Trk::theta] << endmsg;
123 }
124
125 if (refTrkPar[Trk::theta] < 0)
126 {
127 refTrkPar[Trk::theta] =
128 - refTrkPar[Trk::theta];
129 refTrkPar[Trk::phi0] +=
130 (refTrkPar[Trk::phi0] > 0 ? -M_PI : M_PI);
131 } else if (refTrkPar[Trk::theta] > M_PI) {//this in principle should not be needed anymore
132 refTrkPar[Trk::theta] =
133 2*M_PI - refTrkPar[Trk::theta];
134 refTrkPar[Trk::phi0] +=
135 (refTrkPar[Trk::phi0] > 0 ? -M_PI : M_PI);
136 }
137
138 //temporary hack to check the consistence of the frame
139 // std::cout<<"New track parameters "<<refTrkPar<<std::endl;
140
141 //vertex covariance and weight
142 const AmgSymMatrix(3)& vrt_cov = vtx.covariancePosition();
143 if (vrt_cov.determinant() == 0.0) {
144 ATH_MSG_WARNING("Matrix can not be inverted, new type of check as part of Eigen, please monitor."
145 << endmsg << "Matrix vrt_cov = " << vrt_cov);
146 return;
147 }
148 AmgSymMatrix(3) vrt_weight;
149 bool invertible;
151 vrt_weight = vtx.covariancePosition().inverse();
152 invertible = true;
153 } else
154 vtx.covariancePosition().computeInverseWithCheck(vrt_weight,invertible);
155
156 if(!invertible) {
157 ATH_MSG_VERBOSE ("The vertex's cov is not invertible, quit updating the track.");
158 return;
159 }
160
161 //making a new track covariance matrix
162 AmgSymMatrix(3) posMomentumCovariance = -vrt_cov * A.transpose() * trkParametersWeight * B *Sm;
163
164 //--------------------------------------------------------------------------------------------------------
165 //correction to what was forgotten before: making the smoothed chi2 of track
166 //this operation invokes removing of the track from the vertex
167 const IVertexUpdator::positionUpdateOutcome & reducedVrt = m_Updator->positionUpdate( vtx, linTrack, trk.weight(), IVertexUpdator::removeTrack );
168
169 AmgSymMatrix(3) reduced_vrt_weight;
171 reduced_vrt_weight = reducedVrt.covariancePosition.inverse();
172 } else
173 reducedVrt.covariancePosition.computeInverseWithCheck(reduced_vrt_weight,invertible);
174 if(!invertible) {
175 ATH_MSG_VERBOSE ("The vertex's cov is not invertible, quit updating the track.");
176 return;
177 }
178 // const CLHEP::HepSymMatrix & reduced_vrt_cov = reducedVrt.covariancePosition();
179
180 Amg::Vector3D posDifference = vtx.position() - reducedVrt.position;
181
182 //now making the second part of the chi2 calculation: smoothed parameters
183 AmgVector(5) smRes = trkParameters - (theResidual + A*vtx.position() + B*newTrackMomentum);
184
185 double chi2 = posDifference.dot(reduced_vrt_weight*posDifference) + smRes.dot(trkParametersWeight*smRes);
186
187 // std::cout<<"Smoothed chi2 in the fit "<<chi2<<std::endl;
188 //-------------------------------------------------------------------------------------
189 //new momentum covariance
190 AmgSymMatrix(3) momentumCovariance = Sm + posMomentumCovariance.transpose()*(vrt_weight*posMomentumCovariance);
191
192 //full (x,y,z,phi, theta, q/p) covariance matrix
193 AmgSymMatrix (6) fullTrkCov;
194 fullTrkCov.setZero();
195
196 fullTrkCov.block<3,3>(0,0) = vrt_cov;
197 fullTrkCov.block<3,3>(0,3) = posMomentumCovariance;
198 fullTrkCov.block<3,3>(3,0) = posMomentumCovariance.transpose();
199 fullTrkCov.block<3,3>(3,3) = momentumCovariance;
200
201 //debug hacking
202 AmgMatrix(5,6) trJac;
203 trJac.setZero();
204 trJac(4,5) = 1.;
205 trJac(3,4) = 1.;
206 trJac(2,3) = 1.;
207
208 //first row
209 trJac(0,0) = - sin(refTrkPar[2]);
210 trJac(0,1) = cos(refTrkPar[2]);
211
212 //second row
213 trJac(1,0) = -cos(refTrkPar[2])/tan(refTrkPar[3]);
214 trJac(1,1) = -sin(refTrkPar[2])/tan(refTrkPar[3]);
215 trJac(1,2) = 1.;
216
217 AmgSymMatrix(5) perFullTrkCov = AmgSymMatrix(5)(trJac*(fullTrkCov*trJac.transpose()));
218
219 //temporary hack: returning the state with incorrect covariance matrix, to see
220 //how general infrastructure works.
221
222
223 Trk::Perigee * refittedPerigee = new Trk::Perigee(refTrkPar[0],
224 refTrkPar[1],
225 refTrkPar[2],
226 refTrkPar[3],
227 refTrkPar[4],
228 fit_vrt_pos,
229 std::move(perFullTrkCov));
230
231 trk.setPerigeeAtVertex(refittedPerigee);
232 const FitQuality trkQuality(chi2,2*trk.weight());
233 // std::cout<<"Tracks at vertex are assigned with chi2 "<<trkQuality.chiSquared()<<std::endl;
234 // std::cout<<"Tracks at vertex are assigned with ndf "<<trkQuality.numberDoF()<<std::endl;
235 trk.setTrackQuality(trkQuality);
236
237 }//end of update method
#define M_PI
#define endmsg
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define AmgSymMatrix(dim)
#define AmgVector(rows)
#define AmgMatrix(rows, cols)
if(febId1==febId2)
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
const Amg::Vector3D & position() const
Returns the 3-pos.
double chi2(TH1 *h0, TH1 *h1)
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ phi
Definition ParamDefs.h:75

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

DoubleProperty Trk::KalmanVertexTrackUpdator::m_maxWeight
private
Initial value:
{
this, "MaximalWeight", 0.001, "Max weight of a given track in the vertex reconstruction"}

Definition at line 66 of file KalmanVertexTrackUpdator.h.

66 {
67 this, "MaximalWeight", 0.001, "Max weight of a given track in the vertex reconstruction"};

◆ m_skipInvertibleCheck

BooleanProperty Trk::KalmanVertexTrackUpdator::m_skipInvertibleCheck
private
Initial value:
{
this, "SkipInvertibleCheck", false, "skip the invertible check for the track CovMat and the vertex CovMat"}

Definition at line 68 of file KalmanVertexTrackUpdator.h.

68 {
69 this, "SkipInvertibleCheck", false, "skip the invertible check for the track CovMat and the vertex CovMat"};

◆ m_Updator

ToolHandle< IVertexUpdator > Trk::KalmanVertexTrackUpdator::m_Updator
private
Initial value:
{
this, "VertexUpdator", "Trk::KalmanVertexUpdator"}

Definition at line 63 of file KalmanVertexTrackUpdator.h.

63 {
64 this, "VertexUpdator", "Trk::KalmanVertexUpdator"};

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