![]() |
ATLAS Offline Software
|
Tool to perform dR-based matching of tracks and truth particles. More...
#include <dRMatchingTool.h>
Classes | |
| struct | CacheEntry |
Public Member Functions | |
| dRMatchingTool (const std::string &name) | |
| Constructor(s). | |
| virtual | ~dRMatchingTool () |
| Destructor. | |
| virtual StatusCode | initialize () override |
| SelectionTool method(s). | |
| virtual StatusCode | finalize () override |
| virtual const asg::AcceptInfo & | getAcceptInfo () const override |
| Declare the interface ID for this pure-virtual interface class to the Athena framework. | |
| virtual asg::AcceptData | accept (const xAOD::IParticle *p) const override |
| The main accept method: the actual cuts are applied here. | |
| virtual asg::AcceptData | acceptLegacy (const xAOD::TrackParticle *p, const xAOD::TruthParticleContainer *truthParticles, bool(*truthSelectionTool)(const xAOD::TruthParticle *)=nullptr) const |
| dR-matching specific method(s). | |
| asg::AcceptData | accept (const xAOD::TrackParticle *p, const xAOD::TruthParticleContainer *truthParticles, bool(*truthSelectionTool)(const xAOD::TruthParticle *)=nullptr) const |
| virtual asg::AcceptData | acceptLegacy (const xAOD::TruthParticle *p, const xAOD::TrackParticleContainer *trackParticles, bool(*trackSelectionTool)(const xAOD::TrackParticle *)=nullptr) const |
| asg::AcceptData | accept (const xAOD::TruthParticle *p, const xAOD::TrackParticleContainer *trackParticles, bool(*trackSelectionTool)(const xAOD::TrackParticle *)=nullptr) const |
| float | dRmin () const |
| virtual void | print () const |
| Print the state of the tool. | |
| 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 |
Additional helper functions, not directly mimicking Athena | |
| template<class T> | |
| const T * | getProperty (const std::string &name) const |
| Get one of the tool's properties. | |
| const std::string & | msg_level_name () const __attribute__((deprecated)) |
| A deprecated function for getting the message level's name. | |
| const std::string & | getName (const void *ptr) const |
| Get the name of an object that is / should be in the event store. | |
| SG::sgkey_t | getKey (const void *ptr) const |
| Get the (hashed) key of an object that is in the event store. | |
Protected Member Functions | |
| void | checkCacheTrackParticles (const xAOD::TrackParticleContainer *trackParticles, CacheEntry *ent, bool(*trackSelectionTool)(const xAOD::TrackParticle *)=nullptr) const |
| Internal method(s). | |
| void | checkCacheTruthParticles (const xAOD::TruthParticleContainer *truthParticles, CacheEntry *ent, bool(*truthSelectionTool)(const xAOD::TruthParticle *)=nullptr) const |
| void | clearTrackParticles (CacheEntry *ent) const |
| void | clearTruthParticles (CacheEntry *ent) const |
| template<class T, class U> | |
| void | sortVectors (const T *container, std::vector< const U * > &vec_pt, std::vector< const U * > &vec_eta, std::vector< const U * > &vec_phi, bool(*selectionTool)(const U *)) const |
| template<class U, class V> | |
| bool | sortedMatch (const U *p, std::vector< const V * > &vec_pt, std::vector< const V * > &vec_eta, std::vector< const V * > &vec_phi, float &dRmin) const |
| 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 | |
| ASG_TOOL_CLASS1 (dRMatchingTool, IAsgSelectionTool) | |
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> | |
Private Attributes | |
| asg::AcceptInfo | m_accept {"dRMatching"} |
| Data member(s). | |
| std::vector< std::pair< std::string, std::string > > | m_cuts |
| std::atomic< ULong64_t > | m_numProcessed {0} |
| std::atomic< ULong64_t > | m_numPassed {0} |
| std::vector< ULong64_t > m_numPassedCuts | ATLAS_THREAD_SAFE |
| std::mutex | m_mutex |
| FloatProperty | m_dRmax {this, "dRmax", -1.} |
| Cut vales. | |
| FloatProperty | m_pTResMax {this, "pTResMax", -1.} |
| SG::SlotSpecificObj< CacheEntry > m_cache | ATLAS_THREAD_SAFE |
| 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 |
Tool to perform dR-based matching of tracks and truth particles.
The tool can match both a single track to a set of truth particles, and vice versa. As the tool derives from the general IAsgSelectionTool interface, the actual 'accept' methods has to be invoked using (dynamic) type casting, e.g.
bool dRMatched = (bool) dynamic_cast<dRMatchingTool&>(*m_dRMatchingTool) \ .accept(track, truthParticles, &truthSelectionTool);
to match a track to a subset of truth particle, or
bool dRMatched = (bool) dynamic_cast<dRMatchingTool&>(*m_dRMatchingTool) \ .accept(truth, trackParticles);
to match a truth particle to all tracks. The standard accept(const xAOD::IParticle*) method is disabled.
Optional track- and truth particle selection functions are allowed, to perform the matching to only a subset of the respective containers. If these functions are omitted as arguments, the matching is performed to the all particles in the specified container.
The tool is able to perform matching wrt. dR as well relative pT-resolution, i.e. \Delta p_{T}/p_{T} = \frac{|p_{T,this} - p_{T,other}|}{p_{T,this}} The tool is configured such that a successful match means that all set cuts were passed. That means that if only the dR-cut is set, no pT-resoution cut is imposed, and conversely. In particular, if neither cut is set, no particles pass the matching. The cut values are set in the job option as e.g.
from InDetPhysValMonitoring.InDetPhysValMonitoringConf import \ dRMatchingTool dRMatcher = dRMatchingTool() dRMatcher.dRmax = 0.1 # Disabled: -1 dRMatcher.pTResMax = 0.1 # Disabled: -1 ToolSvc += dRMatcher
The main 'accept' methods are implemented using caching and sorting to avoid O(N^2) complexity from what is essentially nested loops. This speeds up performance drastically, at the cost of transparency. To this end, and for validation purposes, 'acceptLegacy' methods are kept in, which are conceptually simpler and more intuitive, but much slower, than the main methods. However, these legacy methods ought not to be used for actual, even just moderately large runs.
Definition at line 84 of file dRMatchingTool.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
| dRMatchingTool::dRMatchingTool | ( | const std::string & | name | ) |
Constructor(s).
Definition at line 94 of file dRMatchingTool.cxx.
|
virtualdefault |
Destructor.
|
overridevirtual |
The main accept method: the actual cuts are applied here.
Implements IAsgSelectionTool.
Definition at line 150 of file dRMatchingTool.cxx.
| asg::AcceptData dRMatchingTool::accept | ( | const xAOD::TrackParticle * | p, |
| const xAOD::TruthParticleContainer * | truthParticles, | ||
| bool(* | truthSelectionTool )(const xAOD::TruthParticle *) = nullptr ) const |
Definition at line 364 of file dRMatchingTool.cxx.
| asg::AcceptData dRMatchingTool::accept | ( | const xAOD::TruthParticle * | p, |
| const xAOD::TrackParticleContainer * | trackParticles, | ||
| bool(* | trackSelectionTool )(const xAOD::TrackParticle *) = nullptr ) const |
Definition at line 409 of file dRMatchingTool.cxx.
|
virtual |
dR-matching specific method(s).
Definition at line 454 of file dRMatchingTool.cxx.
|
virtual |
Definition at line 532 of file dRMatchingTool.cxx.
|
private |
|
protected |
Internal method(s).
Definition at line 185 of file dRMatchingTool.cxx.
|
protected |
Definition at line 209 of file dRMatchingTool.cxx.
|
inlineprotected |
Definition at line 180 of file dRMatchingTool.h.
|
inlineprotected |
Definition at line 189 of file dRMatchingTool.h.
|
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.
|
inlineinherited |
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition at line 95 of file AthCommonDataStore.h.
| float dRMatchingTool::dRmin | ( | ) | const |
Definition at line 631 of file dRMatchingTool.cxx.
|
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
|
overridevirtual |
Definition at line 611 of file dRMatchingTool.cxx.
|
overridevirtual |
Declare the interface ID for this pure-virtual interface class to the Athena framework.
Method to get the AcceptInfo to query what cuts are defined.
Implements IAsgSelectionTool.
Definition at line 145 of file dRMatchingTool.cxx.
|
inherited |
Get the (hashed) key of an object that is in the event store.
This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.
In order to allow tools to efficiently perform this operation, they can use this helper function.
| ptr | The bare pointer to the object that the event store should know about |
Definition at line 119 of file AsgTool.cxx.
|
inherited |
Get the name of an object that is / should be in the event store.
This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.
In order to allow tools to efficiently perform this operation, they can use this helper function.
| ptr | The bare pointer to the object that the event store should know about |
Definition at line 106 of file AsgTool.cxx.
|
inherited |
Get one of the tool's properties.
|
overridevirtual |
SelectionTool method(s).
If no cuts are enabled, force to have length one, such that it will always return 'false'. This is because we want the dRMatchingTool to be ineffecitive in this case, and not select all tracks.
Reimplemented from asg::AsgTool.
Definition at line 102 of file dRMatchingTool.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.
|
inlineinherited |
Definition at line 24 of file AthCommonMsg.h.
|
inherited |
A deprecated function for getting the message level's name.
Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:
This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.
Definition at line 101 of file AsgTool.cxx.
|
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.
|
virtualinherited |
Print the state of the tool.
Implements asg::IAsgTool.
Reimplemented in AsgHelloTool, HI::HIPileupTool, JetBottomUpSoftDrop, JetConstituentsRetriever, JetDumper, JetFinder, JetFromPseudojet, JetModifiedMassDrop, JetPileupLabelingTool, JetPruner, JetPseudojetRetriever, JetReclusterer, JetReclusteringTool, JetRecTool, JetRecursiveSoftDrop, JetSoftDrop, JetSplitter, JetSubStructureMomentToolsBase, JetToolRunner, JetTrimmer, JetTruthLabelingTool, KtDeltaRTool, and LundVariablesTool.
Definition at line 131 of file AsgTool.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.
|
protected |
Definition at line 234 of file dRMatchingTool.cxx.
|
protected |
Definition at line 160 of file dRMatchingTool.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.
|
inlineinherited |
Definition at line 308 of file AthCommonDataStore.h.
|
mutableprivate |
Definition at line 223 of file dRMatchingTool.h.
|
mutableprivate |
Definition at line 233 of file dRMatchingTool.h.
|
private |
|
private |
Definition at line 218 of file dRMatchingTool.h.
|
privateinherited |
Pointer to StoreGate (detector store by default)
Definition at line 393 of file AthCommonDataStore.h.
|
private |
|
privateinherited |
Pointer to StoreGate (event store by default)
Definition at line 390 of file AthCommonDataStore.h.
|
mutableprivate |
Definition at line 224 of file dRMatchingTool.h.
|
mutableprivate |
Definition at line 222 of file dRMatchingTool.h.
|
mutableprivate |
Definition at line 221 of file dRMatchingTool.h.
|
private |
Definition at line 230 of file dRMatchingTool.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.