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). More... | |
virtual | ~dRMatchingTool () |
Destructor. More... | |
virtual StatusCode | initialize () override |
SelectionTool method(s). More... | |
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. More... | |
virtual asg::AcceptData | accept (const xAOD::IParticle *p) const override |
The main accept method: the actual cuts are applied here. More... | |
virtual asg::AcceptData | acceptLegacy (const xAOD::TrackParticle *p, const xAOD::TruthParticleContainer *truthParticles, bool(*truthSelectionTool)(const xAOD::TruthParticle *)=nullptr) const |
dR-matching specific method(s). More... | |
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 =0 |
Print the state of the tool. More... | |
virtual void | print () const |
Print the state of the tool. More... | |
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 |
Protected Member Functions | |
void | checkCacheTrackParticles (const xAOD::TrackParticleContainer *trackParticles, CacheEntry *ent, bool(*trackSelectionTool)(const xAOD::TrackParticle *)=nullptr) const |
Internal method(s). More... | |
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 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 | |
ASG_TOOL_CLASS1 (dRMatchingTool, IAsgSelectionTool) | |
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 | |
asg::AcceptInfo | m_accept {"dRMatching"} |
Data member(s). More... | |
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. More... | |
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) More... | |
StoreGateSvc_t | m_detStore |
Pointer to StoreGate (detector store by default) More... | |
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(*)(const xAOD::TruthParticle *) | truthSelectionTool = nullptr |
||
) | const |
Definition at line 364 of file dRMatchingTool.cxx.
asg::AcceptData dRMatchingTool::accept | ( | const xAOD::TruthParticle * | p, |
const xAOD::TrackParticleContainer * | trackParticles, | ||
bool(*)(const xAOD::TrackParticle *) | trackSelectionTool = nullptr |
||
) | const |
Definition at line 409 of file dRMatchingTool.cxx.
|
virtual |
|
virtual |
Definition at line 532 of file dRMatchingTool.cxx.
|
private |
|
protected |
|
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::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.
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.
|
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 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.
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.
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.
|
inlineinherited |
Definition at line 27 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 JetRecTool, JetFinder, JetModifiedMassDrop, JetFromPseudojet, JetReclusterer, JetReclusteringTool, JetTruthLabelingTool, JetPileupLabelingTool, HI::HIPileupTool, JetDumper, JetBottomUpSoftDrop, JetRecursiveSoftDrop, JetSoftDrop, JetConstituentsRetriever, JetSubStructureMomentToolsBase, JetSplitter, JetToolRunner, JetPruner, JetPseudojetRetriever, JetTrimmer, AsgHelloTool, and KtDeltaRTool.
Definition at line 131 of file AsgTool.cxx.
|
pure virtualinherited |
Print the state of the tool.
Implemented in JetRecTool, JetFinder, JetModifiedMassDrop, JetFromPseudojet, JetReclusterer, JetReclusteringTool, JetTruthLabelingTool, JetPileupLabelingTool, HI::HIPileupTool, asg::AsgTool, JetDumper, JetBottomUpSoftDrop, JetRecursiveSoftDrop, JetSoftDrop, JetConstituentsRetriever, JetSubStructureMomentToolsBase, JetSplitter, JetToolRunner, JetPruner, JetPseudojetRetriever, JetTrimmer, AsgHelloTool, and KtDeltaRTool.
|
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 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.
|
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 |
Data member(s).
Definition at line 216 of file dRMatchingTool.h.
|
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 |
Cut vales.
Definition at line 228 of file dRMatchingTool.h.
|
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.