![]() |
ATLAS Offline Software
|
Februar 2007 (c) Atlas Detector Reconstruction Software. More...
#include <JetFitterRoutines.h>
Public Member Functions | |
| virtual StatusCode | initialize () override |
| JetFitterRoutines (const std::string &t, const std::string &n, const IInterface *p) | |
| Constructor. | |
| ~JetFitterRoutines () | |
| Destructor. | |
| void | initializeToMinDistancesToJetAxis (VxJetCandidate *) const |
| This method provides the initialization of all the tracks in the fit to the position of minimum distance to the initial flight axis. | |
| void | performTheFit (VxJetCandidate *myJetCandidate, int num_maxiterations=30, bool treat_sign_flip=true, int num_signflip_maxiterations=30, double deltachi2_convergence=0.001) const |
| This is the method where the fit is actually done. | |
| void | smoothAllVertices (VxJetCandidate *myJetCandidate) const |
| triggers the smoothing of all vertices (the tracks in the fit are updated using the constraint provided by the vertices along the jet axis they were fitted to) | |
| void | updateAllVertices (VxJetCandidate *myJetCandidate) const |
| One iteration of the Kalman Updated of all tracks to the actual fit is performed. | |
| std::pair< double, bool > | fastProbabilityOfMerging (const VxVertexOnJetAxis *, const VxVertexOnJetAxis *, const VxJetCandidate *) const |
| Calculates in a very fast way the probability two vertices along the jet axis to be compatible with each other, taking the constraint to be compatible with the previous fitted flight axis into account. | |
| double | fullProbabilityOfMerging (const VxVertexOnJetAxis *firstVertex, const VxVertexOnJetAxis *secondVertex, const VxJetCandidate *myJetCandidate, int num_maxiterations=20, bool treat_sign_flip=true, int num_signflip_maxiterations=10, double deltachi2_convergence=1e-2) const |
| Calculates in a complete way the probability two vertices along the jet axis to be compatible with each other, taking the constraint to be compatible with the previous fitted flight axis into account. | |
| void | fillTableWithFullProbOfMerging (VxJetCandidate *myJetCandidate, int num_maxiterations=20, bool treat_sign_flip=true, int num_signflip_maxiterations=10, double deltachi2_convergence=1e-3, double threshold_probability=1e-5) const |
| The VxClusteringTable of the VxJetCandidate provided in input is created, computing all the needed probabilities of merging between all the vertices two by two using a full probability estimation, with the complete fit performed with the options provided. | |
| void | fillTableWithFastProbOfMerging (VxJetCandidate *myJetCandidate) const |
| The VxClusteringTable of the VxJetCandidate provided in input is created, computing all the needed probabilities of merging between all the vertices two by two using the fast probability estimation (using for all combinations of vertices the fastProbabilityOfMerging method of the same class) | |
| void | deleteVertexFromJetCandidate (VxVertexOnJetAxis *vertexToDelete, VxJetCandidate *myJetCandidate) const |
| Deltes a vertex from the VxJetCandidate, doing everything is needed to preserve the internal coherence of the VxJetCandidate object (e.g. | |
| 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 () |
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< StoreGateSvc > | StoreGateSvc_t |
Private Member Functions | |
| std::pair< double, bool > | fastProbabilityOfMergingWithPrimary (const VxVertexOnJetAxis *otherVertex, const VxJetCandidate *myJetCandidate) const |
| Internal method to calculate fast probability of merging, for merging with primary vertex. | |
| std::pair< double, bool > | fastProbabilityOfMergingNoPrimary (const VxVertexOnJetAxis *, const VxVertexOnJetAxis *, const VxJetCandidate *myJetCandidate) const |
| Internal method to calculate fast probability of merging, for merging with non primary vertex. | |
| void | fillTableWithProbOfMerging (VxJetCandidate *myJetCandidate, bool fullcomputation, int num_maxiterations=20, bool treat_sign_flip=true, int num_signflip_maxiterations=10, double deltachi2_convergence=1e-2, double threshold_probability=1e-3) const |
| Internal method to fill the VxClusteringTable of the VxJetCandidate object, independently on if the fullcomputation is requested or not. | |
| bool | checkJetCandidate (VxJetCandidate *) const |
| Internal method to provide a check if the VxJetCandidate has been initialized in a consistent way. | |
| void | copyRecoPositionsToLinearizationPositions (VxJetCandidate &myJetCandidate) const |
| Method to copy new reco positions to linearization positions after checking new positions are inside the ID. | |
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> | |
Private Attributes | |
| SG::ReadCondHandleKey< AtlasFieldCacheCondObj > | m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"} |
| ToolHandle< JetFitterInitializationHelper > | m_initializationHelper |
| ToolHandle< JetFitterHelper > | m_helper |
| ToolHandle< KalmanVertexOnJetAxisUpdator > | m_updator |
| ToolHandle< KalmanVertexOnJetAxisSmoother > | m_smoother |
| ToolHandle< TrkDistanceFinderNeutralCharged > | m_minDistanceFinder |
| ToolHandle< TrkDistanceFinderNeutralNeutral > | m_minDistanceFinderNeutral |
| bool | m_fast |
| double | m_maxDRshift |
| bool | m_noPrimaryVertexRefit |
| double | m_maxR |
| double | m_maxZ |
| 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 |
Februar 2007 (c) Atlas Detector Reconstruction Software.
This class contains the core functions for the "JetFitter" algorithm.
This is a new algorithm which uses a "Kalman filter" based approach to implement the "ghost track method" used for the first time by SLD (reference to be inserted here).
All the tracks inside a jet can be fitted with the constraint of lying on the same 'flight axis' from the primary vertex towards the jet. This class provides all the methods which are necessary to perform this fit and to evaluate the probability of two or more tracks to build one cluster on the jet axis.
The real finding algorithm is then implemented in the "SV" finder algorithm. In this class only the methods for 'fitting' are implemented.
There is no clear input and clear output in a similar fit, so this works more like a continous interaction between the finder and the fitter, which is provided in the form in a set of routines to use.
Definition at line 56 of file JetFitterRoutines.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
| Trk::JetFitterRoutines::JetFitterRoutines | ( | const std::string & | t, |
| const std::string & | n, | ||
| const IInterface * | p ) |
Constructor.
Definition at line 59 of file JetFitterRoutines.cxx.
|
default |
Destructor.
|
private |
Internal method to provide a check if the VxJetCandidate has been initialized in a consistent way.
Definition at line 541 of file JetFitterRoutines.cxx.
|
private |
Method to copy new reco positions to linearization positions after checking new positions are inside the ID.
Definition at line 1126 of file JetFitterRoutines.cxx.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
|
inlineinherited |
Definition at line 145 of file AthCommonDataStore.h.
| void Trk::JetFitterRoutines::deleteVertexFromJetCandidate | ( | VxVertexOnJetAxis * | vertexToDelete, |
| VxJetCandidate * | myJetCandidate ) const |
Deltes a vertex from the VxJetCandidate, doing everything is needed to preserve the internal coherence of the VxJetCandidate object (e.g.
track numbering, list of tracks at vertices along the jet axis and so on)
Definition at line 1012 of file JetFitterRoutines.cxx.
|
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.
|
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
| std::pair< double, bool > Trk::JetFitterRoutines::fastProbabilityOfMerging | ( | const VxVertexOnJetAxis * | firstVertex, |
| const VxVertexOnJetAxis * | secondVertex, | ||
| const VxJetCandidate * | myJetCandidate ) const |
Calculates in a very fast way the probability two vertices along the jet axis to be compatible with each other, taking the constraint to be compatible with the previous fitted flight axis into account.
As a result a pair is provided:
If not needed the second member can just be ignored.
Description of the algorithmic procedure: a single Kalman Update step is performed on top of the previous fit, just constraining the two vertices to lie on the same position on the flight axis (this is done using a measurement equation with zero associated error). This is very fast.
Definition at line 637 of file JetFitterRoutines.cxx.
|
private |
Internal method to calculate fast probability of merging, for merging with non primary vertex.
Definition at line 702 of file JetFitterRoutines.cxx.
|
private |
Internal method to calculate fast probability of merging, for merging with primary vertex.
Definition at line 657 of file JetFitterRoutines.cxx.
| void Trk::JetFitterRoutines::fillTableWithFastProbOfMerging | ( | VxJetCandidate * | myJetCandidate | ) | const |
The VxClusteringTable of the VxJetCandidate provided in input is created, computing all the needed probabilities of merging between all the vertices two by two using the fast probability estimation (using for all combinations of vertices the fastProbabilityOfMerging method of the same class)
This is very fast and gives reasonably good results in all the cases where the fit is not too much affected by non-linearities.
Definition at line 849 of file JetFitterRoutines.cxx.
| void Trk::JetFitterRoutines::fillTableWithFullProbOfMerging | ( | VxJetCandidate * | myJetCandidate, |
| int | num_maxiterations = 20, | ||
| bool | treat_sign_flip = true, | ||
| int | num_signflip_maxiterations = 10, | ||
| double | deltachi2_convergence = 1e-3, | ||
| double | threshold_probability = 1e-5 ) const |
The VxClusteringTable of the VxJetCandidate provided in input is created, computing all the needed probabilities of merging between all the vertices two by two using a full probability estimation, with the complete fit performed with the options provided.
To increase the speed, before using the full estimation of merging probability a fast merging is done (fastProbabilityOfMerging method) and only if the fastprobability of merging is higher than the threshold_probability provided, the full probability is computed.
Definition at line 834 of file JetFitterRoutines.cxx.
|
private |
Internal method to fill the VxClusteringTable of the VxJetCandidate object, independently on if the fullcomputation is requested or not.
Definition at line 854 of file JetFitterRoutines.cxx.
| double Trk::JetFitterRoutines::fullProbabilityOfMerging | ( | const VxVertexOnJetAxis * | firstVertex, |
| const VxVertexOnJetAxis * | secondVertex, | ||
| const VxJetCandidate * | myJetCandidate, | ||
| int | num_maxiterations = 20, | ||
| bool | treat_sign_flip = true, | ||
| int | num_signflip_maxiterations = 10, | ||
| double | deltachi2_convergence = 1e-2 ) const |
Calculates in a complete way the probability two vertices along the jet axis to be compatible with each other, taking the constraint to be compatible with the previous fitted flight axis into account.
Contrary to the fast estimation method, here the complete fit is repeated and so the flight axis direction is corrected according to the new constraint taking all non linearities into account (because relinearization of the tracks partecipating in the fit is performed).
The following steps are done: 1) a temporary copy of the full VxJetCandidate has to be created 2) the copies of the vertices to join have to be found 3) the two copied vertices are merged in the new VxJetCandidate, using the mergeVerticesInJetCandidate function of the JetFitterHelper class 4) the track Number is updated, using the updateTrackNumbering function of the JetFitterInitializationHelper class 5) the full fit is performed on the new VxJetCandidate object
As a result the only full probability of merging is provided as a double.
Definition at line 750 of file JetFitterRoutines.cxx.
|
overridevirtual |
Definition at line 93 of file JetFitterRoutines.cxx.
| void Trk::JetFitterRoutines::initializeToMinDistancesToJetAxis | ( | VxJetCandidate * | myJetCandidate | ) | const |
This method provides the initialization of all the tracks in the fit to the position of minimum distance to the initial flight axis.
This should considerably improve the speed of convergence. It is still not implemented in the first version of the fit.
Definition at line 115 of file JetFitterRoutines.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 61 of file JetFitterRoutines.h.
|
inlineinherited |
Definition at line 24 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.
| void Trk::JetFitterRoutines::performTheFit | ( | VxJetCandidate * | myJetCandidate, |
| int | num_maxiterations = 30, | ||
| bool | treat_sign_flip = true, | ||
| int | num_signflip_maxiterations = 30, | ||
| double | deltachi2_convergence = 0.001 ) const |
This is the method where the fit is actually done.
The VxJetCandidate in input must be properly initialized (initial positions + proper initial covariance matrix for primary vertex, direction + all the tracks along the jet axis).
To initialized the VxJetCandidate properly please use the methods provided by the JetFitterInitializationHelper class.
The parameters to be provided are:
Definition at line 285 of file JetFitterRoutines.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::JetFitterRoutines::smoothAllVertices | ( | VxJetCandidate * | myJetCandidate | ) | const |
triggers the smoothing of all vertices (the tracks in the fit are updated using the constraint provided by the vertices along the jet axis they were fitted to)
Definition at line 514 of file JetFitterRoutines.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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.
|
overridevirtualinherited |
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
| void Trk::JetFitterRoutines::updateAllVertices | ( | VxJetCandidate * | myJetCandidate | ) | const |
One iteration of the Kalman Updated of all tracks to the actual fit is performed.
Difference between fitting to primary vertex or to a vertex along the flight axis is taken into account.
Definition at line 442 of file JetFitterRoutines.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 285 of file JetFitterRoutines.h.
|
private |
Definition at line 269 of file JetFitterRoutines.h.
|
private |
Definition at line 273 of file JetFitterRoutines.h.
|
private |
Definition at line 272 of file JetFitterRoutines.h.
|
private |
Definition at line 294 of file JetFitterRoutines.h.
|
private |
Definition at line 317 of file JetFitterRoutines.h.
|
private |
Definition at line 318 of file JetFitterRoutines.h.
|
private |
Definition at line 276 of file JetFitterRoutines.h.
|
private |
Definition at line 277 of file JetFitterRoutines.h.
|
private |
Definition at line 311 of file JetFitterRoutines.h.
|
private |
Definition at line 275 of file JetFitterRoutines.h.
|
private |
Definition at line 274 of file JetFitterRoutines.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.