ATLAS Offline Software
|
ATLAS Reconstruction Software - (C) 2005 - 2007. More...
#include <KalmanVertexOnJetAxisUpdator.h>
Public Member Functions | |
virtual StatusCode | initialize () override |
KalmanVertexOnJetAxisUpdator (const std::string &t, const std::string &n, const IInterface *p) | |
Constructor. More... | |
void | add (VxTrackAtVertex *trackToAdd, const VxVertexOnJetAxis *vertexToUpdate, VxJetCandidate *candidateToUpdate) const |
Method updating the fit along the flight axis (VxJetCandidate) with a track (VxTrackOnJetAxis) which is added to the vertex along the jet axis provided (VxVertexOnJetAxis). More... | |
void | addWithFastUpdate (VxTrackAtVertex *trackToAdd, const VxVertexOnJetAxis *vertexToUpdate, VxJetCandidate *candidateToUpdate) const |
void | remove (VxTrackAtVertex *trackToRemove, const VxVertexOnJetAxis *vertexToUpdate, VxJetCandidate *candidateToUpdate) const |
Method removing already added track from the fit along the flight axis, where you specify from what vertex along the jet axis the track should be removed. More... | |
void | removeWithFastUpdate (VxTrackAtVertex *trackToRemove, const VxVertexOnJetAxis *vertexToUpdate, VxJetCandidate *candidateToUpdate) const |
void | updateChi2NdfInfo (VxTrackAtVertex *trackToUpdate, const VxVertexOnJetAxis *vertexToUpdate, VxJetCandidate *vertexCandidate) const |
Obsolete (will be removed - not in use, however migrated to eigen before finding out -WL) Updates only the chi2 + ndf information, in case the weight matrix is not inverted at every step, so that there is no info about the fitted position at intermediate steps of the fit. More... | |
void | updateVertexChi2 (VxJetCandidate *vertexCandidate) const |
Obsolete (will be removed - not in use, however moved to eigen before finding out -WL). More... | |
Trk::RecVertexPositions | positionUpdate (VxJetCandidate &vertexCandidate, const LinearizedTrack *trk, double trackWeight, int sign, int numVertex, bool isPrimary, bool doFastUpdate) const |
Method to do the Kalman Update of the positions of the fit along the flight axis with a single new track (which belongs to the VxVertexOnJetAxis number numVertex). More... | |
std::pair< Amg::Vector3D, Eigen::Matrix3Xd > | createTransformJacobian (const Amg::VectorX &initialjetdir, int numVertex, bool isPrimary, bool truncate) const |
Method to create the Jacobian needed to go to the space of single vertices to the space of the variables representing the full fit along the flight axis (primary vertex, phi and theta of jet direction, distance to primary vertex of the remaining vertices along the jetaxis). More... | |
void | smartInvert (Amg::MatrixX &new_vrt_cov) 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 |
Static Public Member Functions | |
static const InterfaceID & | interfaceID () |
Protected Member Functions | |
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< StoreGateSvc > | StoreGateSvc_t |
Private Member Functions | |
void | update (VxTrackAtVertex *trackToUpdate, const VxVertexOnJetAxis *vertexToUpdate, VxJetCandidate *candidateToUpdate, int sign, bool doFastUpdate) const |
Internal method to do the Kalman Update. More... | |
double | calculateTrackChi2 (const VxJetCandidate &vertexCandidate, const LinearizedTrack *trk, double trackWeight, int numVertex, bool isPrimary=false) const |
Internal method where the chi2/ndf update is actually done. More... | |
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 | |
double | m_initialMomentumError |
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 |
ATLAS Reconstruction Software - (C) 2005 - 2007.
A concrete implementation of the Vertex Updator using the Kalman filter algorithm.
This is a special implementation (part of the JetFitter algorithm) which is able to fit a vertex correcting the jet axis parameters to find the best overall agreement.
Basic approach is based on R. Fruhwirth et al. Comp. Phys. Comm 96(1996) 189
The first version implemented in TrkVertexFitterUtils, for general vertexing purposes, was created by Kirill Prokofiev and G.P.
First version: December 2006 Updated version for athena: Februar 2007
Alberts-Ludwig-Universita"t Freiburg
Definition at line 54 of file KalmanVertexOnJetAxisUpdator.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
Trk::KalmanVertexOnJetAxisUpdator::KalmanVertexOnJetAxisUpdator | ( | const std::string & | t, |
const std::string & | n, | ||
const IInterface * | p | ||
) |
void Trk::KalmanVertexOnJetAxisUpdator::add | ( | VxTrackAtVertex * | trackToAdd, |
const VxVertexOnJetAxis * | vertexToUpdate, | ||
VxJetCandidate * | candidateToUpdate | ||
) | const |
Method updating the fit along the flight axis (VxJetCandidate) with a track (VxTrackOnJetAxis) which is added to the vertex along the jet axis provided (VxVertexOnJetAxis).
To update the fit with a new vertex (VxVertexOnJetAxis) you have to iteratively add all its tracks to the fit using this method. In the RecVertexPositions datamember of the VxJetCandidate the result will appear as the value of the distance of this fitted vertex from the primary vertex. All the other vertices and the jet direction will of course be also dynamically adjusted while adding tracks to the fit.
Definition at line 45 of file KalmanVertexOnJetAxisUpdator.cxx.
void Trk::KalmanVertexOnJetAxisUpdator::addWithFastUpdate | ( | VxTrackAtVertex * | trackToAdd, |
const VxVertexOnJetAxis * | vertexToUpdate, | ||
VxJetCandidate * | candidateToUpdate | ||
) | const |
Definition at line 52 of file KalmanVertexOnJetAxisUpdator.cxx.
|
private |
Internal method where the chi2/ndf update is actually done.
Definition at line 429 of file KalmanVertexOnJetAxisUpdator.cxx.
std::pair< Amg::Vector3D, Eigen::Matrix3Xd > Trk::KalmanVertexOnJetAxisUpdator::createTransformJacobian | ( | const Amg::VectorX & | initialjetdir, |
int | numVertex, | ||
bool | isPrimary, | ||
bool | truncate | ||
) | const |
Method to create the Jacobian needed to go to the space of single vertices to the space of the variables representing the full fit along the flight axis (primary vertex, phi and theta of jet direction, distance to primary vertex of the remaining vertices along the jetaxis).
As a result the vector of position where the linearization was done and the jacobian are provided.
If the parameter truncate is true, the method also cuts the size of the matrix down to the only needed elements (if you work on vertex number 5, all the ones which come after are cut out from the jacobian to make the fit faster).
Definition at line 515 of file KalmanVertexOnJetAxisUpdator.cxx.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
|
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.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Definition at line 259 of file AthCommonDataStore.h.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Definition at line 145 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc/DetectorStore
Returns (kind of) a pointer to the StoreGateSvc
.
Definition at line 95 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc
(event store) Returns (kind of) a pointer to the StoreGateSvc
.
Definition at line 85 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc
(event store) Returns (kind of) a pointer to the StoreGateSvc
.
Definition at line 90 of file AthCommonDataStore.h.
|
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
|
overridevirtual |
Definition at line 34 of file KalmanVertexOnJetAxisUpdator.cxx.
|
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.
|
inlinestatic |
Definition at line 58 of file KalmanVertexOnJetAxisUpdator.h.
|
inlineinherited |
Definition at line 24 of file AthCommonMsg.h.
|
inlineinherited |
Definition at line 27 of file AthCommonMsg.h.
|
inlineinherited |
Definition at line 30 of file AthCommonMsg.h.
|
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.
Trk::RecVertexPositions Trk::KalmanVertexOnJetAxisUpdator::positionUpdate | ( | VxJetCandidate & | vertexCandidate, |
const LinearizedTrack * | trk, | ||
double | trackWeight, | ||
int | sign, | ||
int | numVertex, | ||
bool | isPrimary, | ||
bool | doFastUpdate | ||
) | const |
Method to do the Kalman Update of the positions of the fit along the flight axis with a single new track (which belongs to the VxVertexOnJetAxis number numVertex).
Definition at line 140 of file KalmanVertexOnJetAxisUpdator.cxx.
void Trk::KalmanVertexOnJetAxisUpdator::remove | ( | VxTrackAtVertex * | trackToRemove, |
const VxVertexOnJetAxis * | vertexToUpdate, | ||
VxJetCandidate * | candidateToUpdate | ||
) | const |
Method removing already added track from the fit along the flight axis, where you specify from what vertex along the jet axis the track should be removed.
Usefull for smoothing and for estimating the compatibility of single vertices with the rest of the fit (the smoothed chi2 of the vertex can be obtained by iteratively removing all its tracks and storing the intermediate result at every time).
Just adding the chi2 of every track involved (as in Fruehwirth's reference) would lead here to misleading results.
Definition at line 59 of file KalmanVertexOnJetAxisUpdator.cxx.
void Trk::KalmanVertexOnJetAxisUpdator::removeWithFastUpdate | ( | VxTrackAtVertex * | trackToRemove, |
const VxVertexOnJetAxis * | vertexToUpdate, | ||
VxJetCandidate * | candidateToUpdate | ||
) | const |
Definition at line 66 of file KalmanVertexOnJetAxisUpdator.cxx.
|
inlineprotectedinherited |
Definition at line 380 of file AthCommonDataStore.h.
|
inlineprotectedinherited |
remove all handles from I/O resolution
Definition at line 364 of file AthCommonDataStore.h.
void Trk::KalmanVertexOnJetAxisUpdator::smartInvert | ( | Amg::MatrixX & | new_vrt_cov | ) | const |
Definition at line 571 of file KalmanVertexOnJetAxisUpdator.cxx.
|
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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.
|
overridevirtualinherited |
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
|
private |
Internal method to do the Kalman Update.
This is where the real fit iteration is done.
Definition at line 73 of file KalmanVertexOnJetAxisUpdator.cxx.
void Trk::KalmanVertexOnJetAxisUpdator::updateChi2NdfInfo | ( | VxTrackAtVertex * | trackToUpdate, |
const VxVertexOnJetAxis * | vertexToUpdate, | ||
VxJetCandidate * | vertexCandidate | ||
) | const |
Obsolete (will be removed - not in use, however migrated to eigen before finding out -WL) Updates only the chi2 + ndf information, in case the weight matrix is not inverted at every step, so that there is no info about the fitted position at intermediate steps of the fit.
Dropped because the chi2 obtained is not reliable.
Definition at line 362 of file KalmanVertexOnJetAxisUpdator.cxx.
void Trk::KalmanVertexOnJetAxisUpdator::updateVertexChi2 | ( | VxJetCandidate * | vertexCandidate | ) | const |
Obsolete (will be removed - not in use, however moved to eigen before finding out -WL).
Updates the chi2/ndf of the entire fit with the final information about the position.
Definition at line 481 of file KalmanVertexOnJetAxisUpdator.cxx.
|
inlineinherited |
Definition at line 308 of file AthCommonDataStore.h.
|
privateinherited |
Pointer to StoreGate (detector store by default)
Definition at line 393 of file AthCommonDataStore.h.
|
privateinherited |
Pointer to StoreGate (event store by default)
Definition at line 390 of file AthCommonDataStore.h.
|
private |
Definition at line 174 of file KalmanVertexOnJetAxisUpdator.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.