|
ATLAS Offline Software
|
#include <InDetJetFitterUtils.h>
|
virtual StatusCode | initialize () override |
|
| InDetJetFitterUtils (const std::string &t, const std::string &n, const IInterface *p) |
|
| ~InDetJetFitterUtils () |
|
std::pair< double, double > | compatibility (const Trk::TrackParameters &measPerigee, const Trk::RecVertex &vertex) const |
|
std::pair< double, double > | compatibility (const Trk::ParametersBase< 5, Trk::Neutral > &measPerigee, const Trk::RecVertex &vertex) const |
|
int | getTwoTrackVtxCharge (const Trk::VxCandidate &myVxCandidate) const |
|
int | getTwoTrackVtxCharge (const xAOD::Vertex &myVxCandidate) const |
|
double | getTwoTrackVtxMass (const Trk::VxCandidate &myVxCandidate, double highestMomMass, double lowestMomMass) const |
|
double | getTwoTrackVtxMass (const xAOD::Vertex &myVxCandidate, double highestMomMass, double lowestMomMass) const |
|
std::pair< double, double > | getDistanceAndErrorBetweenTwoVertices (const xAOD::Vertex &, const Trk::RecVertex &) const |
|
std::pair< double, double > | getD0andZ0IP (const Trk::TrackParameters &trackPerigee, const Trk::Vertex &vertexToExtrapolateTo) const |
|
std::pair< double, double > | getD0andZ0IPSig (const Trk::TrackParameters &trackPerigee, const Trk::RecVertex &vertex) const |
|
const Trk::LinkToTrackParticleBase * | findNeutralTrackParticleBase (const std::vector< const Trk::LinkToTrackParticleBase * > &, const Trk::VxCandidate &) 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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
Definition at line 55 of file InDetJetFitterUtils.h.
◆ StoreGateSvc_t
◆ InDetJetFitterUtils()
InDet::InDetJetFitterUtils::InDetJetFitterUtils |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~InDetJetFitterUtils()
InDet::InDetJetFitterUtils::~InDetJetFitterUtils |
( |
| ) |
|
|
default |
◆ checkIfTrackIsInNeutralTrackVector()
Definition at line 609 of file InDetJetFitterUtils.cxx.
612 msg(MSG::WARNING) <<
" null pointer (TPBlink). Skipping neutral candidate... " <<
endmsg;
620 msg(MSG::WARNING) <<
" null pointer (TPB). Skipping neutral candidate... " <<
endmsg;
626 if (myV0Candidate==0)
628 msg(MSG::WARNING) <<
" neutral TP Base has no original Vx Candidate " <<
endmsg;
638 if (trackLink1==trackToCheck || trackLink2==trackToCheck )
649 const std::vector<const xAOD::Vertex*> & vectorOfCandidates)
652 std::vector<const xAOD::Vertex*>::const_iterator vectorOfCandidatesBegin=vectorOfCandidates.begin();
653 std::vector<const xAOD::Vertex*>::const_iterator vectorOfCandidatesEnd=vectorOfCandidates.end();
655 for (std::vector<const xAOD::Vertex*>::const_iterator vectorOfCandidatesIter=vectorOfCandidatesBegin;
656 vectorOfCandidatesIter!=vectorOfCandidatesEnd;
657 ++vectorOfCandidatesIter)
◆ checkIfTrackIsInV0CandidatesVector()
Definition at line 680 of file InDetJetFitterUtils.cxx.
699 const double s_pion=139.57018;
702 CLHEP::HepLorentzVector massVector(0,0,0,0);
704 const std::vector<Trk::VxTrackAtVertex*> & tracksOfVertex=myVxVertexOnJetAxis.
getTracksAtVertex();
705 std::vector<Trk::VxTrackAtVertex*>::const_iterator clustersOfTrackBegin=tracksOfVertex.begin();
706 std::vector<Trk::VxTrackAtVertex*>::const_iterator clustersOfTrackEnd=tracksOfVertex.end();
◆ checkIfTrackIsInVector() [1/2]
Definition at line 573 of file InDetJetFitterUtils.cxx.
582 std::vector<const Trk::LinkToTrackParticleBase*>::const_iterator vectorOfTracksBegin=vectorOfTracks.begin();
583 std::vector<const Trk::LinkToTrackParticleBase*>::const_iterator vectorOfTracksEnd=vectorOfTracks.end();
585 for (std::vector<const Trk::LinkToTrackParticleBase*>::const_iterator vectorOfTracksIter=vectorOfTracksBegin;
586 vectorOfTracksIter!=vectorOfTracksEnd;++vectorOfTracksIter)
588 if (*vectorOfTracksIter==trackToCheck)
◆ checkIfTrackIsInVector() [2/2]
◆ checkIfVxCandidateIsInVector()
Definition at line 661 of file InDetJetFitterUtils.cxx.
671 std::vector<const xAOD::Vertex*>::const_iterator verticesToVetoBegin=vectorOfVxCandidates.begin();
672 std::vector<const xAOD::Vertex*>::const_iterator verticesToVetoEnd=vectorOfVxCandidates.end();
674 for (std::vector<const xAOD::Vertex*>::const_iterator verticesToVetoIter=verticesToVetoBegin;
675 verticesToVetoIter!=verticesToVetoEnd;++verticesToVetoIter)
◆ compatibility() [1/2]
Definition at line 197 of file InDetJetFitterUtils.cxx.
216 msg(MSG::WARNING) <<
" Problem inverting cov matrix in compatibility method" <<
endmsg;
218 Amg::Vector2D paramsReduced((myLinearizedTrack->expectedParametersAtPCA())[0],(myLinearizedTrack->expectedParametersAtPCA())[1]);
220 double returnv2= paramsReduced.transpose() * weightReduced * paramsReduced;
223 delete myLinearizedTrack;
224 myLinearizedTrack=
nullptr;
226 return std::pair<double,double>(returnv2,0);
◆ compatibility() [2/2]
Definition at line 148 of file InDetJetFitterUtils.cxx.
170 msg(MSG::WARNING) <<
" Problem inverting cov matrix in compatibility method" <<
endmsg;
174 Amg::Vector2D paramsReduced((myLinearizedTrack->expectedParametersAtPCA())[0],(myLinearizedTrack->expectedParametersAtPCA())[1]);
176 double returnv2= paramsReduced.transpose() * weightReduced.inverse() * paramsReduced;
178 delete myLinearizedTrack;
179 myLinearizedTrack=
nullptr;
181 return std::pair<double,double>(returnv2,0);
190 msg(MSG::ERROR) <<
" No LinearizedTrackFactory defined. Cannot calculate compatibility. 0 compatibility returned" <<
endmsg;
191 return std::pair<double,double>(0,0);
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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
◆ findNeutralTrackParticleBase() [1/2]
◆ findNeutralTrackParticleBase() [2/2]
Definition at line 552 of file InDetJetFitterUtils.cxx.
564 std::vector<const Trk::ITrackLink*>::const_iterator vectorOfTracksBegin=vectorOfTracks.begin();
565 std::vector<const Trk::ITrackLink*>::const_iterator vectorOfTracksEnd=vectorOfTracks.end();
567 for (std::vector<const Trk::ITrackLink*>::const_iterator vectorOfTracksIter=vectorOfTracksBegin;
568 vectorOfTracksIter!=vectorOfTracksEnd;++vectorOfTracksIter)
570 if (*vectorOfTracksIter==trackToCheck)
◆ fourMomentumAtVertex()
Definition at line 708 of file InDetJetFitterUtils.cxx.
711 if (
dynamic_cast<const Trk::Perigee*
>((*clustersOfTrackIter)->perigeeAtVertex())!=
nullptr)
716 massVector+=CLHEP::HepLorentzVector(mytrack.x(),mytrack.y(),mytrack.z(),TMath::Sqrt(s_pion*s_pion+mytrack.mag()*mytrack.mag()));
◆ get3DLifetimeSignOfTrack()
◆ getD0andZ0IP()
Definition at line 478 of file InDetJetFitterUtils.cxx.
482 msg(MSG::WARNING) <<
" Extrapolation failed. Wrong d0 and z0 returned " <<
endmsg;
483 return std::pair<double,double>
484 (trackPerigee.parameters()[
Trk::d0],
488 double IPd0=newMeasPerigee->parameters()[
Trk::d0];
489 double IPz0=newMeasPerigee->parameters()[
Trk::z0]*
492 delete newMeasPerigee;
493 newMeasPerigee=
nullptr;
495 return std::pair<double,double>(IPd0,IPz0);
505 ATH_MSG_ERROR(
"Cannot perform requested extrapolation. No extrapolator defined...Returning 0 compatibility..." );
506 return std::pair<double,double>(0,0);
◆ getD0andZ0IPSig()
◆ getDistanceAndErrorBetweenTwoVertices()
Definition at line 432 of file InDetJetFitterUtils.cxx.
440 double temp=differenceUnit.transpose() * sumErrorsThenInverted * differenceUnit;
443 error=1./std::sqrt(temp );
447 ATH_MSG_DEBUG(
"The significance of the distance to the PV is negative or zero definite: " << temp );
453 if (sumErrorsThenInverted.determinant()<=0)
455 ATH_MSG_DEBUG(
"Sum of cov matrices of PV + single vertex fit is zero or negative. Error on distance is returned as 1000mm." );
468 const EventContext& ctx = Gaudi::Hive::currentContext();
471 msg(MSG::ERROR) <<
"Cannot perform requested extrapolation. No extrapolator defined...Returning 0 compatibility..." <<
endmsg;
472 return std::pair<double,double>(0,0);
◆ getPosMomentumAndMomentumCovMatrix()
Definition at line 124 of file InDetJetFitterUtils.cxx.
141 msg(MSG::ERROR) <<
" No LinearizedTrackFactory defined. Cannot calculate compatibility. 0 compatibility returned" <<
endmsg;
142 return std::pair<double,double>(0,0);
◆ getTwoTrackVtxCharge() [1/2]
◆ getTwoTrackVtxCharge() [2/2]
int InDet::InDetJetFitterUtils::getTwoTrackVtxCharge |
( |
const xAOD::Vertex & |
myVxCandidate | ) |
const |
Definition at line 294 of file InDetJetFitterUtils.cxx.
302 ATH_MSG_DEBUG(
"No Perigee in one of the two tracks at vertex. No sensible charge returned." );
309 fabs(firstTrackPerigee->parameters()[
Trk::qOverP])+
311 fabs(secondTrackPerigee->parameters()[
Trk::qOverP])+0.5 )
317 double highestMomMass,
318 double lowestMomMass)
const
323 std::vector<Trk::VxTrackAtVertex*>::const_iterator vtxIter=myVxCandidate.
vxTrackAtVertex()->begin();
◆ getTwoTrackVtxMass() [1/2]
double InDet::InDetJetFitterUtils::getTwoTrackVtxMass |
( |
const Trk::VxCandidate & |
myVxCandidate, |
|
|
double |
highestMomMass, |
|
|
double |
lowestMomMass |
|
) |
| const |
Definition at line 329 of file InDetJetFitterUtils.cxx.
340 ATH_MSG_DEBUG(
"No Perigee in one of the two tracks at vertex. No sensible mass returned." );
348 CLHEP::HepLorentzVector first4Mom;
349 CLHEP::HepLorentzVector second4Mom;
351 if (firstMomentum.mag2()>secondMomentum.mag2())
353 first4Mom=CLHEP::HepLorentzVector(firstMomentum.x(),firstMomentum.y(),firstMomentum.z(),TMath::Sqrt(highestMomMass*highestMomMass+firstMomentum.mag()*firstMomentum.mag()));
354 second4Mom=CLHEP::HepLorentzVector(secondMomentum.x(),secondMomentum.y(),secondMomentum.z(),TMath::Sqrt(lowestMomMass*lowestMomMass+secondMomentum.mag()*secondMomentum.mag()));
358 first4Mom=CLHEP::HepLorentzVector(firstMomentum.x(),firstMomentum.y(),firstMomentum.z(),TMath::Sqrt(lowestMomMass*highestMomMass+firstMomentum.mag()*firstMomentum.mag()));
359 second4Mom=CLHEP::HepLorentzVector(secondMomentum.x(),secondMomentum.y(),secondMomentum.z(),TMath::Sqrt(highestMomMass*lowestMomMass+secondMomentum.mag()*secondMomentum.mag()));
362 return (first4Mom+second4Mom).mag();
369 double highestMomMass,
370 double lowestMomMass)
const
375 std::vector<Trk::VxTrackAtVertex>::const_iterator vtxIter=myVxCandidate.
vxTrackAtVertex().begin();
◆ getTwoTrackVtxMass() [2/2]
double InDet::InDetJetFitterUtils::getTwoTrackVtxMass |
( |
const xAOD::Vertex & |
myVxCandidate, |
|
|
double |
highestMomMass, |
|
|
double |
lowestMomMass |
|
) |
| const |
Definition at line 381 of file InDetJetFitterUtils.cxx.
392 ATH_MSG_DEBUG(
"No Perigee in one of the two tracks at vertex. No sensible mass returned." );
400 CLHEP::HepLorentzVector first4Mom;
401 CLHEP::HepLorentzVector second4Mom;
403 if (firstMomentum.mag2()>secondMomentum.mag2())
405 first4Mom=CLHEP::HepLorentzVector(firstMomentum.x(),firstMomentum.y(),firstMomentum.z(),TMath::Sqrt(highestMomMass*highestMomMass+firstMomentum.mag()*firstMomentum.mag()));
406 second4Mom=CLHEP::HepLorentzVector(secondMomentum.x(),secondMomentum.y(),secondMomentum.z(),TMath::Sqrt(lowestMomMass*lowestMomMass+secondMomentum.mag()*secondMomentum.mag()));
410 first4Mom=CLHEP::HepLorentzVector(firstMomentum.x(),firstMomentum.y(),firstMomentum.z(),TMath::Sqrt(lowestMomMass*highestMomMass+firstMomentum.mag()*firstMomentum.mag()));
411 second4Mom=CLHEP::HepLorentzVector(secondMomentum.x(),secondMomentum.y(),secondMomentum.z(),TMath::Sqrt(highestMomMass*lowestMomMass+secondMomentum.mag()*secondMomentum.mag()));
414 return (first4Mom+second4Mom).mag();
428 second.covariancePosition();
◆ initialize()
StatusCode InDet::InDetJetFitterUtils::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 95 of file InDetJetFitterUtils.cxx.
101 if (
sc.isFailure()) {
103 return StatusCode::FAILURE;
107 return StatusCode::SUCCESS;
116 const AmgMatrix(5,3) &
A = linTrack->positionJacobian();
117 const AmgMatrix(5,3) &
B = linTrack->momentumJacobian();
118 const AmgSymMatrix(5) & trkParametersWeight = linTrack->expectedWeightAtPCA();
119 AmgSymMatrix(3) Sm = B.transpose() * trkParametersWeight * B;
◆ inputHandles()
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()
static const InterfaceID& InDet::InDetJetFitterUtils::interfaceID |
( |
| ) |
|
|
inlinestatic |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_detStore
◆ m_evtStore
◆ m_extrapolator
◆ m_LinearizedTrackFactory
◆ m_linearizedTrackFactoryIsAvailable
bool InDet::InDetJetFitterUtils::m_linearizedTrackFactoryIsAvailable |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
The VxTrackAtVertex is a common class for all present TrkVertexFitters The VxTrackAtVertex is designe...
const std::vector< VxTrackAtVertex * > & getTracksAtVertex(void) const
get Tracks At Vertex Method
std::pair< double, double > compatibility(const Trk::TrackParameters &measPerigee, const Trk::RecVertex &vertex) const
Eigen::Matrix< double, 2, 1 > Vector2D
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
VxVertexOnJetAxis inherits from Vertex.
ToolHandle< Trk::IExtrapolator > m_extrapolator
static bool checkIfVxCandidateIsInVector(const xAOD::Vertex *vertexToCheck, const std::vector< const xAOD::Vertex * > &vectorOfCandidates)
#define AmgSymMatrix(dim)
#define AmgMatrix(rows, cols)
Trk::RecVertex inherits from Trk::Vertex.
virtual void setOwner(IDataHandleHolder *o)=0
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_LinearizedTrackFactory
std::vector< Trk::VxTrackAtVertex * > * vxTrackAtVertex(void)
Unconst pointer to the vector of tracks Required by some of the vertex fitters.
::StatusCode StatusCode
StatusCode definition for legacy code.
CalibratedSpacePoint::Covariance_t inverse(const CalibratedSpacePoint::Covariance_t &mat)
Inverts the parsed matrix.
std::pair< double, double > getDistanceAndErrorBetweenTwoVertices(const xAOD::Vertex &, const Trk::RecVertex &) const
std::pair< double, double > getD0andZ0IP(const Trk::TrackParameters &trackPerigee, const Trk::Vertex &vertexToExtrapolateTo) const
int getTwoTrackVtxCharge(const Trk::VxCandidate &myVxCandidate) const
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const Amg::Vector3D & position() const
return position of vertex
bool m_linearizedTrackFactoryIsAvailable
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
const VxCandidate * reconstructedVertex() const
Get a pointer to the primary vertex.
static CLHEP::HepLorentzVector fourMomentumAtVertex(const Trk::VxVertexOnJetAxis &)
static double get3DLifetimeSignOfTrack(const Trk::TrackParameters &track, const Amg::Vector3D &jetMomentum, const Trk::RecVertex &primaryVertex)
Eigen::Matrix< double, 3, 1 > Vector3D
const Amg::Vector3D & momentum() const
Access method for the momentum.
double getTwoTrackVtxMass(const Trk::VxCandidate &myVxCandidate, double highestMomMass, double lowestMomMass) const
Class describing a Vertex.
std::pair< double, double > getD0andZ0IPSig(const Trk::TrackParameters &trackPerigee, const Trk::RecVertex &vertex) const
std::pair< AmgMatrix(3, 3), AmgSymMatrix(3)> getPosMomentumAndMomentumCovMatrix(const Trk::LinearizedTrack *linTrack, const AmgSymMatrix(3) &vrt_cov, const AmgSymMatrix(3) &vrt_weight) const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
std::vector< Trk::VxTrackAtVertex > & vxTrackAtVertex()
Non-const access to the VxTrackAtVertex vector.
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>