ATLAS Offline Software
Loading...
Searching...
No Matches
JetTruthLabelingTool Class Reference

#include <JetTruthLabelingTool.h>

Inheritance diagram for JetTruthLabelingTool:
Collaboration diagram for JetTruthLabelingTool:

Classes

struct  DecorHandles
 Track internally if the W,Z,Top labels should be done (for large-R). More...

Public Member Functions

 JetTruthLabelingTool (const std::string &name="JetTruthLabelingTool")
 default constructor - to be used in all derived classes
virtual StatusCode initialize () override
 Dummy implementation of the initialisation function.
StatusCode decorate (const xAOD::JetContainer &jets) const override
 decorate truth label to a jet collection
void print () const override
 Print configured parameters.
const std::string & getLargeRJetTruthLabelName () const
 returns the name of large-R jet truth label
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
virtual StatusCode modify (xAOD::JetContainer &jets) const override final
 Concrete implementation of the function inherited from IJetModifier.
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 Types

enum class  TruthLabelConfiguration {
  R21Precision_2022v1 , R10TruthLabel_R22v1 , R10WZTruthLabel_R22v1 , R4TruthLabel ,
  R4TruthDressedWZLabel , R4InTimeTruthLabel , R4OutOfTimeTruthLabel , Unknown
}

Protected Member Functions

StatusCode labelTruthJets (DecorHandles &dh, const EventContext &ctx) const
 Label truth jet collection.
StatusCode labelTruthJets (DecorHandles &dh, const xAOD::JetContainer &jets, const EventContext &ctx) const
StatusCode labelRecoJets (DecorHandles &dh, const xAOD::JetContainer &jets, const EventContext &ctx) const
 Apply labels to all jets in a container.
int getTruthJetLabelGA (DecorHandles &dh, const xAOD::Jet &jet, const EventContext &ctx) const
 Get truth label using ghost-associated particles.
int getLabel (DecorHandles &dh, const xAOD::Jet &jet, bool matchH, bool matchW, bool matchZ, bool matchTop, const EventContext &ctx) const
 Get label based on matching and containment criteria.
float getWZSplit12Cut (float pt) const
 Get W/Z label Split12 cut.
float getTopSplit23Cut (float pt) const
 Get top label Split23 cut.
int getNGhostParticles (const xAOD::Jet &jet, const std::string &collection) const
 Get number of ghost associated particles.
TruthLabelConfiguration parseLabel (const std::string &label)
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.

Protected Attributes

Gaudi::Property< std::string > m_jetContainerName {this, "RecoJetContainer", "", "Input reco jet container name"}
Gaudi::Property< std::string > m_truthLabelName {this, "TruthLabelName", "R10TruthLabel_R22v1", "Truth label name"}
Gaudi::Property< bool > m_isTruthJetCol {this, "IsTruthJetCollection", false, "Flag indicating whether input collection is a truth jet container"}
Gaudi::Property< bool > m_forceDeltaRMatch {this, "ForceDeltaRMatch", false, "Whether to force dR matching e.g. if GhostTruth is not available"}
SG::ReadHandleKey< xAOD::EventInfom_evtInfoKey {this, "EventInfoKey", "EventInfo", "Name of EventInfo object"}
SG::ReadHandleKey< xAOD::JetContainerm_OOTJetName { this, "OOTJetContainer", "OutOfTimeAntiKt4TruthJets", "Do not configure manually!" }
 parameters for truth labeling
SG::ReadHandleKey< xAOD::JetContainerm_ITJetName { this, "ITJetContainer", "InTimeAntiKt4TruthJets", "Do not configure manually!" }
SG::ReadHandleKey< xAOD::JetContainerm_truthJetCollectionKey {this, "TruthJetContainer", "", "Do not configure manually!"}
SG::ReadHandleKey< xAOD::JetContainerm_truthGroomedJetCollectionKey {this, "TruthGroomedJetContainer", "", "Do not configure manually!"}
bool m_useGhostJetMatch {}
bool m_isSmallR {}
 Use ghost association to match reco to truth jets, dR otherwise.
bool m_matchUngroomedParent {}
 Is the reco jet collection small or large R, default large.
bool m_getTruthGroomedJetValues {}
 Use the ungroomed reco jet parent to match to truth jet.
double m_dRTruthJet {}
 When truth jet matching to ungroomed truth, allow saving properties of groomed truth jets.
double m_recoGhostFrac {}
 dR to match truth jet to reco jet
double m_mLowTop {}
 Ghost pT fraction to match truth jet to reco jet.
double m_mLowW {}
 Lower mass cut for top label.
double m_mLowZ {}
 Lower mass cut for W label.
bool m_doLargeRLabels {true}
 Lower mass cut for Z label.
TruthLabelConfiguration m_truthLabelConfig = TruthLabelConfiguration::Unknown
SG::WriteDecorHandleKey< xAOD::JetContainerm_label_truthKey {this, "label_TruthKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_NB_truthKey {this, "NB_TruthKey", "", "Do not configure manually!"}
SG::ReadDecorHandleKey< xAOD::JetContainerm_split12_truthKey {this, "Split12_TruthKey", "", "Do not configure manually!"}
SG::ReadDecorHandleKey< xAOD::JetContainerm_split23_truthKey {this, "Split23_TruthKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_label_recoKey {this, "label_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_NB_recoKey {this, "NB_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_truthSplit12_recoKey {this, "TruthSplit12_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_truthSplit23_recoKey {this, "TruthSplit23_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthJet_recoKey {this, "TruthMatch_Jet_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthJetMass_recoKey {this, "TruthMatch_m_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthJetPt_recoKey {this, "TruthMatch_pt_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthJetRapidity_recoKey { this, "TruthMatch_rapidity_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthJetPhi_recoKey { this, "TruthMatch_phi_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthJetDR_recoKey { this, "TruthMatch_dR_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedPileupTag_recoKey { this, "TruthMatch_PileupLabel_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_sumPtMatchedHSJets_recoKey { this, "TruthMatch_HSSumPt_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_sumPtMatchedOOTJets_recoKey { this, "TruthMatch_OOTSumPt_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_sumPtMatchedITJets_recoKey { this, "TruthMatch_ITSumPt_RecoKey", "", "Do not configure manually!" }
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthGroomedJetMass_recoKey {this, "TruthMatch_GroomedJetMass_RecoKey", "", "Do not configure manually!"}
SG::WriteDecorHandleKey< xAOD::JetContainerm_matchedTruthGroomedJetPt_recoKey {this, "TruthMatch_GroomedJetPt_RecoKey", "", "Do not configure manually!"}

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

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

Friends

struct DecorHandles

Detailed Description

Definition at line 25 of file JetTruthLabelingTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ TruthLabelConfiguration

Enumerator
R21Precision_2022v1 
R10TruthLabel_R22v1 
R10WZTruthLabel_R22v1 
R4TruthLabel 
R4TruthDressedWZLabel 
R4InTimeTruthLabel 
R4OutOfTimeTruthLabel 
Unknown 

Definition at line 138 of file JetTruthLabelingTool.h.

138 {
139 R21Precision_2022v1,
140 R10TruthLabel_R22v1,
141 R10WZTruthLabel_R22v1,
142 R4TruthLabel,
143 R4TruthDressedWZLabel,
144 R4InTimeTruthLabel,
145 R4OutOfTimeTruthLabel,
146 Unknown
147 };
@ Unknown
Definition TruthClasses.h:9

Constructor & Destructor Documentation

◆ JetTruthLabelingTool()

JetTruthLabelingTool::JetTruthLabelingTool ( const std::string & name = "JetTruthLabelingTool")

default constructor - to be used in all derived classes

Definition at line 14 of file JetTruthLabelingTool.cxx.

14 :
15 asg::AsgTool(name)
16{}

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ decorate()

StatusCode JetTruthLabelingTool::decorate ( const xAOD::JetContainer & jets) const
overridevirtual

decorate truth label to a jet collection

Apply label to truth jet collections

Copy label to matched reco jets

Implements IJetDecorator.

Definition at line 284 of file JetTruthLabelingTool.cxx.

284 {
285 const EventContext& ctx = Gaudi::Hive::currentContext();
286 DecorHandles dh (*this, ctx);
287
289 if(m_isTruthJetCol) {
290 return labelTruthJets(dh, jets, ctx);
291 }
292
293 else if (!m_isTruthJetCol && !m_doLargeRLabels) {
294 return labelRecoJets(dh, jets, ctx);
295 }
296
298 else {
299 ATH_CHECK( labelTruthJets(dh, ctx) );
300 return labelRecoJets(dh, jets, ctx);
301 }
302
303 return StatusCode::SUCCESS;
304}
#define ATH_CHECK
Evaluate an expression and check for errors.
StatusCode labelRecoJets(DecorHandles &dh, const xAOD::JetContainer &jets, const EventContext &ctx) const
Apply labels to all jets in a container.
StatusCode labelTruthJets(DecorHandles &dh, const EventContext &ctx) const
Label truth jet collection.
Gaudi::Property< bool > m_isTruthJetCol
bool m_doLargeRLabels
Lower mass cut for Z label.
Track internally if the W,Z,Top labels should be done (for large-R).

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
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

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void * ptr) const
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::Event 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.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119 {
120
121#ifdef XAOD_STANDALONE
122 // In case we use @c xAOD::Event, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ getLabel()

int JetTruthLabelingTool::getLabel ( DecorHandles & dh,
const xAOD::Jet & jet,
bool matchH,
bool matchW,
bool matchZ,
bool matchTop,
const EventContext & ctx ) const
protected

Get label based on matching and containment criteria.

Booleans for containment selections

This method can be expanded to include custom label priorities

If it isn't matched to any heavy particles, is it QCD

Contained H->bb

Contained H->cc

Contained H->tautau

Other from H

Contained top

Contained W from a top

Contained W not from a top

Contained Z->bb

Contained Z->cc

Contained Z->tautau

Contained Z->qq

Uncontained top

Uncontained V

Definition at line 738 of file JetTruthLabelingTool.cxx.

744 {
745
746 // store GhostBHadronsFinal count
747 int nMatchB = getNGhostParticles( jet, "GhostBHadronsFinal" );
748 (*dh.nbHandle)(jet) = nMatchB;
749
751 bool is_bb = false;
752 bool is_cc = false;
753 bool is_tautauEl = false;
754 bool is_tautauMu = false;
755 bool is_tautauHad = false;
756 bool isTop = false;
757 bool isW = false;
758 bool isZ = false;
759
760 // Use R21Precision_2022v1 definition
762 SG::ReadDecorHandle<xAOD::JetContainer, float> split23Handle(m_split23_truthKey, ctx);
763 SG::ReadDecorHandle<xAOD::JetContainer, float> split12Handle(m_split12_truthKey, ctx);
764 is_bb = ( nMatchB > 1 );
765 isTop = ( matchTop && matchW && nMatchB > 0 && jet.m() / 1000. > m_mLowTop && split23Handle(jet) / 1000. > getTopSplit23Cut( jet.pt() / 1000. ) );
766 isW = matchW && nMatchB == 0 && jet.m() / 1000. > m_mLowW && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
767 isZ = matchZ && jet.m() / 1000. > m_mLowZ && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
768 }
769
770 // Use R10TruthLabel_R22v1 definition
772 // get extended ghost associated truth label
773 int extended_GA_label = -1;
774 if (not jet.getAttribute("HadronGhostExtendedTruthLabelID", extended_GA_label)) {
775 ATH_MSG_ERROR( "HadronGhostExtendedTruthLabelID not available for " + m_truthJetCollectionKey.key() );
776 }
777
778 SG::ReadDecorHandle<xAOD::JetContainer, float> split23Handle(m_split23_truthKey, ctx);
779 SG::ReadDecorHandle<xAOD::JetContainer, float> split12Handle(m_split12_truthKey, ctx);
780 is_bb = ( extended_GA_label == 55 );
781 is_cc = ( extended_GA_label == 44 );
782 is_tautauEl = ( extended_GA_label == 151511 );
783 is_tautauMu = ( extended_GA_label == 151513 );
784 is_tautauHad = ( extended_GA_label == 1515 );
785 isTop = ( matchTop && matchW && nMatchB > 0 && jet.m() / 1000. > m_mLowTop && split23Handle(jet) / 1000. > getTopSplit23Cut( jet.pt() / 1000. ) );
786 isW = matchW && nMatchB == 0 && jet.m() / 1000. > m_mLowW && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
787 isZ = matchZ && jet.m() / 1000. > m_mLowZ && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
788 }
789
790
792
793 /* The default priority of labels is:
794 * 1) Hbb/cc/tautau
795 * 2) Contained top
796 * 3) Contained W
797 * 4) Contained Zbb/cc/qq/tautau
798 * 5) Uncontained top
799 * 6) Uncontained V
800 */
801
803 if( !(matchTop || matchW || matchZ || matchH) ) {
805 }
806
807 // Higgs
808 if ( matchH ) {
810 if ( is_bb ) return LargeRJetTruthLabel::Hbb;
812 if ( is_cc ) return LargeRJetTruthLabel::Hcc;
814 if ( is_tautauEl ) return LargeRJetTruthLabel::HtautauEl;
815 if ( is_tautauMu ) return LargeRJetTruthLabel::HtautauMu;
816 if ( is_tautauHad ) return LargeRJetTruthLabel::HtautauHad;
819 }
820
822 if ( isTop ) return LargeRJetTruthLabel::tqqb;
823
824 if ( isW ) {
826 if ( matchTop ) return LargeRJetTruthLabel::Wqq_From_t;
829 }
830
831 if ( matchZ ) {
833 if ( is_bb ) return LargeRJetTruthLabel::Zbb;
835 if ( is_cc ) return LargeRJetTruthLabel::Zcc;
837 if ( is_tautauEl ) return LargeRJetTruthLabel::ZtautauEl;
838 if ( is_tautauMu ) return LargeRJetTruthLabel::ZtautauMu;
839 if ( is_tautauHad ) return LargeRJetTruthLabel::ZtautauHad;
840 }
841 if ( isZ ) {
844 }
845
847 if ( matchTop ) return LargeRJetTruthLabel::other_From_t;
848
851
852}
#define ATH_MSG_ERROR(x)
bool isW(const T &p)
Definition AtlasPID.h:382
bool isZ(const T &p)
Definition AtlasPID.h:379
bool isTop(const T &p)
Definition AtlasPID.h:185
double m_mLowZ
Lower mass cut for W label.
float getTopSplit23Cut(float pt) const
Get top label Split23 cut.
double m_mLowTop
Ghost pT fraction to match truth jet to reco jet.
TruthLabelConfiguration m_truthLabelConfig
float getWZSplit12Cut(float pt) const
Get W/Z label Split12 cut.
SG::ReadDecorHandleKey< xAOD::JetContainer > m_split23_truthKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_split12_truthKey
int getNGhostParticles(const xAOD::Jet &jet, const std::string &collection) const
Get number of ghost associated particles.
SG::ReadHandleKey< xAOD::JetContainer > m_truthJetCollectionKey
double m_mLowW
Lower mass cut for top label.
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition Jet_v1.cxx:44
virtual double m() const
The invariant mass of the particle.
Definition Jet_v1.cxx:59
bool getAttribute(AttributeID type, T &value) const
Retrieve attribute moment by enum.

◆ getLargeRJetTruthLabelName()

const std::string & JetTruthLabelingTool::getLargeRJetTruthLabelName ( ) const
inline

returns the name of large-R jet truth label

Definition at line 44 of file JetTruthLabelingTool.h.

44 {
45 return m_truthLabelName;
46 };
Gaudi::Property< std::string > m_truthLabelName

◆ getName()

const std::string & asg::AsgTool::getName ( const void * ptr) const
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::Event 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.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106 {
107
108#ifdef XAOD_STANDALONE
109 // In case we use @c xAOD::Event, we have a direct function call
110 // for this.
111 return evtStore()->event()->getName( ptr );
112#else
113 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114 static const std::string dummy = "";
115 return ( proxy == nullptr ? dummy : proxy->name() );
116#endif // XAOD_STANDALONE
117 }

◆ getNGhostParticles()

int JetTruthLabelingTool::getNGhostParticles ( const xAOD::Jet & jet,
const std::string & collection ) const
protected

Get number of ghost associated particles.

Definition at line 722 of file JetTruthLabelingTool.cxx.

722 {
723
724 int nMatchPart = 0;
725
726 if( !jet.getAttribute<int>( collection+"Count", nMatchPart ) ){
727
728 std::vector<const xAOD::TruthParticle*> ghostParts;
729 if( !jet.getAssociatedObjects<xAOD::TruthParticle>( collection, ghostParts ) ){
730 ATH_MSG_ERROR( collection + " cannot be retrieved! Truth label definition might be wrong" );
731 }
732 nMatchPart = ghostParts.size();
733 }
734
735 return nMatchPart;
736}
std::vector< const T * > getAssociatedObjects(const std::string &name) const
get associated objects as a vector<object> this compact form throws an exception if the object is not...
TruthParticle_v1 TruthParticle
Typedef to implementation.

◆ getProperty()

template<class T>
const T * asg::AsgTool::getProperty ( const std::string & name) const
inherited

Get one of the tool's properties.

◆ getTopSplit23Cut()

float JetTruthLabelingTool::getTopSplit23Cut ( float pt) const
protected

Get top label Split23 cut.

The functional form and parameters come from optimization studies: https://indico.cern.ch/event/931498/contributions/3921872/attachments/2064188/3463746/JSS_25June.pdf

Definition at line 701 of file JetTruthLabelingTool.cxx.

701 {
702
705
706 float split23 = -999.0;
707
711
712 const float c0 = 3.3;
713 const float c1 = -6.98e-4;
714
715 split23 = std::exp( c0 + c1 * pt );
716
717 }
718
719 return split23;
720}

◆ getTruthJetLabelGA()

int JetTruthLabelingTool::getTruthJetLabelGA ( DecorHandles & dh,
const xAOD::Jet & jet,
const EventContext & ctx ) const
protected

Get truth label using ghost-associated particles.

Booleans to check ghost-associated heavy particles

Find ghost associated W bosons

Find ghost associated Z bosons

Find ghost associated H bosons

Find ghost associated top quarks

Definition at line 242 of file JetTruthLabelingTool.cxx.

245{
247 bool matchW = false;
248 bool matchZ = false;
249 bool matchH = false;
250 bool matchTop = false;
251
253 int nMatchW = getNGhostParticles( jet, "GhostWBosons" );
254
255 if ( nMatchW ) {
256 matchW = true;
257 }
258
260 int nMatchZ = getNGhostParticles( jet, "GhostZBosons" );
261
262 if ( nMatchZ ) {
263 matchZ = true;
264 }
265
267 int nMatchH = getNGhostParticles( jet, "GhostHBosons" );
268
269 if ( nMatchH ) {
270 matchH = true;
271 }
272
274 int nMatchTop = getNGhostParticles( jet, "GhostTQuarksFinal" );
275
276 if ( nMatchTop ) {
277 matchTop = true;
278 }
279
280 return getLabel( dh, jet, matchH, matchW, matchZ, matchTop, ctx );
281
282}
int getLabel(DecorHandles &dh, const xAOD::Jet &jet, bool matchH, bool matchW, bool matchZ, bool matchTop, const EventContext &ctx) const
Get label based on matching and containment criteria.

◆ getWZSplit12Cut()

float JetTruthLabelingTool::getWZSplit12Cut ( float pt) const
protected

Get W/Z label Split12 cut.

The functional form and parameters come from optimization studies: https://cds.cern.ch/record/2777009/files/ATL-PHYS-PUB-2021-029.pdf

Definition at line 683 of file JetTruthLabelingTool.cxx.

683 {
684
687
688 float split12 = -999.0;
689
691 const float c0 = 55.25;
692 const float c1 = -2.34e-3;
693
694 split12 = c0 * std::exp( c1 * pt );
695 }
696
697 return split12;
698
699}

◆ initialize()

StatusCode JetTruthLabelingTool::initialize ( void )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Check if TruthLabelName is supported. If not, give an error and return FAILURE

Ghost Association values

Hard-code some values for R10TruthLabel_R21Precision_2022v1 and R10TruthLabel_R22v1

Hard-code some values for R10WZTruthLabel_R22v1

Hard code for small-R jets

Reimplemented from asg::AsgTool.

Definition at line 46 of file JetTruthLabelingTool.cxx.

46 {
47
48 ATH_MSG_INFO("Initializing " << name());
49
51
54 ATH_MSG_ERROR("TruthLabelName " << m_truthLabelName << " is not supported. Exiting...");
55 return StatusCode::FAILURE;
56 }
57
59 m_useGhostJetMatch = false;
60 m_recoGhostFrac = 0.75;
61
62 switch(m_truthLabelConfig) {
66 m_truthJetCollectionKey="AntiKt10TruthJets";
68 m_dRTruthJet = 0.75;
71 m_truthGroomedJetCollectionKey="AntiKt10TruthSoftDropBeta100Zcut10Jets";
72 } else {
74 }
75 break;
78 m_truthJetCollectionKey="AntiKt10TruthDressedWZJets";
80 m_dRTruthJet = 0.75;
81 m_mLowTop = 140.0;
82 m_mLowW = 50.0;
83 m_mLowZ = 50.0;
85 m_truthGroomedJetCollectionKey="AntiKt10TruthDressedWZSoftDropBeta100Zcut10Jets";
86 break;
87
93 switch (m_truthLabelConfig) {
95 m_truthJetCollectionKey = "AntiKt4TruthJets";
96 break;
98 m_truthJetCollectionKey = "AntiKt4TruthDressedWZJets";
99 break;
101 m_truthJetCollectionKey = "InTimeAntiKt4TruthJets";
102 break;
104 m_truthJetCollectionKey = "OutOfTimeAntiKt4TruthJets";
105 break;
106 default: // Cannot hit anything else
107 break;
108 }
110 m_dRTruthJet = 0.3;
112 m_useGhostJetMatch = false;
113 m_doLargeRLabels = false;
114 break;
115 default:
116 ATH_MSG_ERROR(" Unhandled TruthLabelName " << m_truthLabelName << "! Exiting...");
117 return StatusCode::FAILURE;
118 }
119
121 m_useGhostJetMatch = false;
122 }
123
124 print();
125
128 m_split12_truthKey = m_truthJetCollectionKey.key() + ".Split12";
129 m_split23_truthKey = m_truthJetCollectionKey.key() + ".Split23";
130
131 if(!m_isTruthJetCol){
134 m_truthSplit12_recoKey = m_jetContainerName + "." + m_truthLabelName + "_TruthJetSplit12";
135 m_truthSplit23_recoKey = m_jetContainerName + "." + m_truthLabelName + "_TruthJetSplit23";
136
143
144 if (!m_doLargeRLabels) { //Simple naming for small R
145 m_matchedTruthJet_recoKey = m_jetContainerName + "." + "TruthMatch_Jet";
146 m_matchedTruthJetMass_recoKey = m_jetContainerName + "." + "TruthMatch_m";
147 m_matchedTruthJetPt_recoKey = m_jetContainerName + "." + "TruthMatch_pt";
148 m_matchedTruthJetRapidity_recoKey = m_jetContainerName + "." + "TruthMatch_rapidity";
149 m_matchedTruthJetPhi_recoKey = m_jetContainerName + "." + "TruthMatch_phi";
150 m_matchedTruthJetDR_recoKey = m_jetContainerName + "." + "TruthMatch_dR";
151 m_matchedPileupTag_recoKey = m_jetContainerName + "." + "TruthMatch_PileupLabel";
152 m_sumPtMatchedHSJets_recoKey = m_jetContainerName + "." + "TruthMatch_HSSumPt";
153 m_sumPtMatchedOOTJets_recoKey = m_jetContainerName + "." + "TruthMatch_OOTSumPt";
154 m_sumPtMatchedITJets_recoKey = m_jetContainerName + "." + "TruthMatch_ITSumPt";
155 }
156
157 m_matchedTruthGroomedJetMass_recoKey = m_jetContainerName + "." + m_truthLabelName + "_TruthMatch_GroomedJetMass";
158 m_matchedTruthGroomedJetPt_recoKey = m_jetContainerName + "." + m_truthLabelName + "_TruthMatch_GroomedJetPt";
159 }
160
161 ATH_CHECK(m_evtInfoKey.initialize());
164
167
168 ATH_CHECK(m_label_truthKey.initialize());
169 ATH_CHECK(m_NB_truthKey.initialize());
170
173
178
185
190
193
194 return StatusCode::SUCCESS;
195}
#define ATH_MSG_INFO(x)
Gaudi::Property< std::string > m_jetContainerName
Gaudi::Property< bool > m_forceDeltaRMatch
bool m_getTruthGroomedJetValues
Use the ungroomed reco jet parent to match to truth jet.
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthJetDR_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_NB_truthKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthJetPt_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_label_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthJetPhi_recoKey
SG::ReadHandleKey< xAOD::JetContainer > m_truthGroomedJetCollectionKey
void print() const override
Print configured parameters.
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthJetMass_recoKey
double m_recoGhostFrac
dR to match truth jet to reco jet
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthJet_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_truthSplit23_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedPileupTag_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_sumPtMatchedOOTJets_recoKey
SG::ReadHandleKey< xAOD::JetContainer > m_ITJetName
SG::ReadHandleKey< xAOD::JetContainer > m_OOTJetName
parameters for truth labeling
SG::WriteDecorHandleKey< xAOD::JetContainer > m_truthSplit12_recoKey
SG::ReadHandleKey< xAOD::EventInfo > m_evtInfoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthGroomedJetMass_recoKey
bool m_matchUngroomedParent
Is the reco jet collection small or large R, default large.
TruthLabelConfiguration parseLabel(const std::string &label)
SG::WriteDecorHandleKey< xAOD::JetContainer > m_label_truthKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_NB_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthGroomedJetPt_recoKey
double m_dRTruthJet
When truth jet matching to ungroomed truth, allow saving properties of groomed truth jets.
SG::WriteDecorHandleKey< xAOD::JetContainer > m_matchedTruthJetRapidity_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_sumPtMatchedHSJets_recoKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_sumPtMatchedITJets_recoKey

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
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.

◆ labelRecoJets()

StatusCode JetTruthLabelingTool::labelRecoJets ( DecorHandles & dh,
const xAOD::JetContainer & jets,
const EventContext & ctx ) const
protected

Apply labels to all jets in a container.

Get parent ungroomed reco jet for matching

Find matched truth jet

Groomed Jet matching variables (Large R only)

Pileup tagging variables

If m_dRTruthJet < 0, the closest truth jet is used as matched jet. Otherwise, only match if dR < m_dRTruthJet

Decorate truth label

Decorate additional information used for truth labeling

Definition at line 306 of file JetTruthLabelingTool.cxx.

308 {
309
310 SG::ReadHandle<xAOD::JetContainer> truthJets(m_truthJetCollectionKey, ctx);
311
312 bool usePileupJets = true;
313
314 SG::ReadHandle<xAOD::JetContainer> inTimeTruthJets;
315 SG::ReadHandle<xAOD::JetContainer> outOfTimeTruthJets;
316 if (!m_doLargeRLabels) {
317 inTimeTruthJets = SG::makeHandle(m_ITJetName, ctx);
318 outOfTimeTruthJets = SG::makeHandle(m_OOTJetName, ctx);
319
320 if (!inTimeTruthJets.isValid() || !outOfTimeTruthJets.isValid()) {
321 ATH_MSG_WARNING("Pileup jet collections unavailabel for " << m_truthJetCollectionKey << ". Running without pileup tagger.");
322 usePileupJets = false;
323 }
324 }
325
326 SG::ReadHandle<xAOD::JetContainer> truthGroomedJets;
328 truthGroomedJets = SG::makeHandle(m_truthGroomedJetCollectionKey, ctx);
329 }
330
331 const SG::AuxElement::Accessor<int> nbAcc (m_truthLabelName + "_NB");
332 static const SG::ConstAccessor< ElementLink< xAOD::JetContainer > > ParentAcc ("Parent");
333
334 for(const xAOD::Jet *jet : jets) {
335
337 const xAOD::Jet* parent = nullptr;
339 ElementLink<xAOD::JetContainer> element_link = ParentAcc (*jet);
340 if ( element_link.isValid() ) {
341 parent = *element_link;
342 }
343 else {
344 ATH_MSG_ERROR("Unable to get a link to the parent jet! Returning a NULL pointer.");
345 return StatusCode::FAILURE;
346 }
347 }
349 float dRmin = 9999;
350 float oot_dRmin = 9999;
351 float it_dRmin = 9999;
352 float ghostFracNominal = 9;
353 const xAOD::Jet* matchTruthJet = nullptr;
354 const xAOD::Jet* oot_matchTruthJet = nullptr;
355 const xAOD::Jet* it_matchTruthJet = nullptr;
357 float dRminGroomed = 9999;
358 const xAOD::Jet* matchTruthGroomedJet = nullptr;
360 float sumPtMatchedHSJets = 0;
361 float sumPtMatchedOOTJets = 0;
362 float sumPtMatchedITJets = 0;
363 float bestHSpT = -9999;
364 float bestOOTpT = -9999;
365 float bestITpT = -9999;
366 float bestHSpTRatio = -9;
367 float bestOOTpTRatio = -9;
368 float bestITpTRatio = -9;
369 int nMatchedHSJets = 0;
370 int nMatchedOOTJets = 0;
371 int nMatchedITJets = 0;
373
374 // Ensure that the reco jet has at least one constituent
375 // (and thus a well-defined four-vector)
376 if (jet->numConstituents() > 0) {
377 // Access ghostTruthPt now so it is available for pileup jets
378 static const SG::ConstAccessor<float> accGhostTruthPt("GhostTruthPt");
379 float ghostTruthPt = accGhostTruthPt(*jet);
380 for (const xAOD::Jet* truthJet : *truthJets) { // Truth jet loop
381 // Calculate DR
382 float dR = jet->p4().DeltaR(truthJet->p4(),true);
383 // If parent jet has been retrieved, calculate dR w.r.t. it instead
384 if (parent) dR = parent->p4().DeltaR(truthJet->p4(),true);
385 // Calculate GF
386 float ghostPtFraction = (ghostTruthPt / (truthJet->pt()));
387 if (m_useGhostJetMatch) { // GA matching. Upper bound applied for completeness, but realistically not needed.
388 if ((ghostPtFraction >= m_recoGhostFrac) && (ghostPtFraction <= (2 - m_recoGhostFrac))) { // All matches
389 nMatchedHSJets += 1;
390 sumPtMatchedHSJets += truthJet->pt();
391 if (std::abs(1 - ghostPtFraction) < std::abs(1 - ghostFracNominal)) { // Best match
392 matchTruthJet = truthJet;
393 ghostFracNominal = ghostPtFraction;
394 }
395 }
396 }
397 else { // If m_dRTruthJet < 0, the closest truth jet is used as matched jet. Otherwise, only match if dR < m_dRTruthJet
398 if (m_dRTruthJet < 0 || dR < m_dRTruthJet) { // All matches
399 nMatchedHSJets += 1;
400 sumPtMatchedHSJets += truthJet->pt();
401 if (dR < dRmin) { // Best match
402 dRmin = dR;
403 matchTruthJet = truthJet;
404 }
405 }
406 }
407 }
408 if (!m_doLargeRLabels && usePileupJets) {
409 for (const xAOD::Jet* ootJet : *outOfTimeTruthJets) { // Out of time pileup truth jet loop
410 float dR = jet->p4().DeltaR(ootJet->p4(), true);
411 float ghostPtFraction = (ghostTruthPt / (ootJet->pt()));
412 if (m_useGhostJetMatch) {
413 if ((ghostPtFraction >= m_recoGhostFrac) && (ghostPtFraction <= (2 - m_recoGhostFrac))) { // All matches
414 nMatchedOOTJets += 1;
415 sumPtMatchedOOTJets += ootJet->pt();
416 if (std::abs(1 - ghostPtFraction) < std::abs(1 - ghostFracNominal)) { // Best match
417 oot_matchTruthJet = ootJet;
418 }
419 }
420 }
421 else {
422 if (dR < m_dRTruthJet) { // All matches
423 nMatchedOOTJets += 1;
424 sumPtMatchedOOTJets += ootJet->pt();
425 if (dR < oot_dRmin) { // Best match
426 oot_dRmin = dR;
427 oot_matchTruthJet = ootJet;
428 }
429 }
430 }
431 }
432 for (const xAOD::Jet* itJet : *inTimeTruthJets) { // In time pileup truth jet loop
433 float dR = jet->p4().DeltaR(itJet->p4(), true);
434 float ghostPtFraction = (ghostTruthPt / (itJet->pt()));
435 if (m_useGhostJetMatch) {
436 if ((ghostPtFraction >= m_recoGhostFrac) && (ghostPtFraction <= (2 - m_recoGhostFrac))) { // All matches
437 nMatchedITJets += 1;
438 sumPtMatchedITJets += itJet->pt();
439 if (std::abs(1 - ghostPtFraction) < std::abs(1 - ghostFracNominal)) { // Best match
440 it_matchTruthJet = itJet;
441 }
442 }
443 }
444 else {
445 if (dR < m_dRTruthJet) { // All matches
446 nMatchedITJets += 1;
447 sumPtMatchedITJets += itJet->pt();
448 if (dR < it_dRmin) { // Best match
449 it_dRmin = dR;
450 it_matchTruthJet = itJet;
451 }
452 }
453 }
454 }
455
456 //#######################################################################################
457 //# PILEUP TAGGER KEY #
458 //# 0: Hard scatter ------------- Best truth jet match has >90% of the total matched pT #
459 //# 1: Mixed hard scatter-------- Match with multiple truth jets, none >90% (no PU) #
460 //# 2: Hard scatter with pileup - Best truth jet <90%, also has pileup matches #
461 //# 3: In time pileup---------- - Best it jet match has > 90 % of the total matched pT #
462 //# 4: Mixed pileup ------------- Match with multiple pileup jets, none >90% (no HS) #
463 //# 5: Out of time pileup------ - Best oot jet match has > 90 % of the total matched pT #
464 //# 6: Other/unknown ------------ Fails all above cases #
465 //#######################################################################################
466
467 //NOTE: HS has 5 GeV pT threshold, 10 GeV and 15 GeV for IT and OOT pileup.
468
469 int nMatchedPUJets = nMatchedOOTJets + nMatchedITJets;
470
471 float totalMatchedpT = sumPtMatchedHSJets + sumPtMatchedOOTJets + sumPtMatchedITJets;
472
473 if (matchTruthJet) {
474 bestHSpT = matchTruthJet->pt();
475 bestHSpTRatio = bestHSpT / totalMatchedpT;
476 }
477 if (oot_matchTruthJet) {
478 bestOOTpT = oot_matchTruthJet->pt();
479 bestOOTpTRatio = bestOOTpT / totalMatchedpT;
480 }
481 if (it_matchTruthJet) {
482 bestITpT = it_matchTruthJet->pt();
483 bestITpTRatio = bestITpT / totalMatchedpT;
484 }
485
486 if (bestHSpTRatio >= 0.9) { //HS
487 pileupTag = SmallRJetPileupLabel::HS;
488 }
489 else if (bestITpTRatio >= 0.9) { //IT
490 pileupTag = SmallRJetPileupLabel::ITPU;
491 }
492 else if (bestOOTpTRatio >= 0.9) { //OOT
493 pileupTag = SmallRJetPileupLabel::OOTPU;
494 }
495 else if (nMatchedPUJets == 0 && nMatchedHSJets > 1) { //Mixed HS
496 pileupTag = SmallRJetPileupLabel::MixHS;
497 }
498 else if (nMatchedPUJets > 0 && nMatchedHSJets > 0) { //HS with pileup
499 pileupTag = SmallRJetPileupLabel::HSPU;
500 }
501 else if (nMatchedPUJets > 1) {//Mixed PU
502 pileupTag = SmallRJetPileupLabel::MixPU;
503 }
504 else { //No match
506 }
507
508 }
509
510 }
511
513 int truthJetNB = -1;
514 float truthJetSplit12 = -9999;
515 float truthJetSplit23 = -9999;
516
517 // Defaults to null EL
518 ElementLink<xAOD::JetContainer> truthJetEL{};
519 float truthJetMass = -9999;
520 float truthJetPt = -9999;
521 float truthJetRapidity = -9;
522 float truthJetPhi = -9999;
523 float deltaR = -2;
524
525 //If the best match is PU, reassign the truth jet to take variables from
526 if (pileupTag == SmallRJetPileupLabel::ITPU) {
527 matchTruthJet = it_matchTruthJet;
528 }
529 else if (pileupTag == SmallRJetPileupLabel::OOTPU) {
530 matchTruthJet = oot_matchTruthJet;
531 }
532 else if (pileupTag == SmallRJetPileupLabel::MixPU) {
533 if (bestITpTRatio >= bestOOTpTRatio) {
534 matchTruthJet = it_matchTruthJet;
535 }
536 else {
537 matchTruthJet = oot_matchTruthJet;
538 }
539 }
540
541 if ( matchTruthJet ) {
542
543 // Can't use the WriteDecorHandle to read --- the decoration may have
544 // been added and locked by a previous algorithm.
545 // Not saving Truth jet decorations for small R
546 if (m_doLargeRLabels) {
547 SG::ConstAccessor<int> labelAcc(dh.labelHandle->auxid());
548 label = labelAcc(*matchTruthJet);
550 SG::ReadDecorHandle<xAOD::JetContainer, float> split23Handle(m_split23_truthKey, ctx);
551 if (split23Handle.isAvailable()) truthJetSplit23 = split23Handle(*matchTruthJet);
552 SG::ReadDecorHandle<xAOD::JetContainer, float> split12Handle(m_split12_truthKey, ctx);
553 if (split12Handle.isAvailable()) truthJetSplit12 = split12Handle(*matchTruthJet);
554 }
555 if (nbAcc.isAvailable(*matchTruthJet)) truthJetNB = nbAcc(*matchTruthJet);
556 }
557 truthJetEL = ElementLink<xAOD::JetContainer>(*truthJets, matchTruthJet->index(), ctx);
558 truthJetMass = matchTruthJet->m();
559 truthJetPt = matchTruthJet->pt();
560 truthJetRapidity = matchTruthJet->rapidity();
561 truthJetPhi = matchTruthJet->phi();
562 deltaR = dRmin;
563 }
564
565 // Save Groomed Truth Jet variables
566 float truthGroomedJetMass = -9999;
567 float truthGroomedJetPt = -9999;
569 if ( matchTruthJet ) {
570 for ( const xAOD::Jet* truthGroomedJet : *truthGroomedJets ) {
571 ElementLink<xAOD::JetContainer> element_link = ParentAcc (*truthGroomedJet);
572 if ( !element_link.isValid() ) { continue; }
573 if ( matchTruthJet == *element_link ) {
574 matchTruthGroomedJet = truthGroomedJet;
575 break;
576 }
577 }
578 }
579 // If no matched jet found or matched jet has no corresponding groomed jet, use dR matching
580 if ( !matchTruthGroomedJet && parent != nullptr) {
581 for ( const xAOD::Jet* truthGroomedJet : *truthGroomedJets ) {
582 float dR = parent->p4().DeltaR(truthGroomedJet->p4(),true);
584 if ( m_dRTruthJet < 0 || dR < m_dRTruthJet ) {
585 if ( dR < dRminGroomed ) {
586 dRminGroomed = dR;
587 matchTruthGroomedJet = truthGroomedJet;
588 }
589 }
590 }
591 }
592 if ( matchTruthGroomedJet ) {
593 truthGroomedJetMass = matchTruthGroomedJet->m();
594 truthGroomedJetPt = matchTruthGroomedJet->pt();
595 }
596 }
597
599 if (m_doLargeRLabels) {
600 (*dh.labelRecoHandle)(*jet) = label;
603 (*dh.split23Handle)(*jet) = truthJetSplit23;
604 (*dh.split12Handle)(*jet) = truthJetSplit12;
605 }
606
607 (*dh.nbRecoHandle)(*jet) = truthJetNB;
608 }
609
610 (*dh.matchedTruthJetHandle)(*jet) = truthJetEL;
611 (*dh.matchedTruthJetMassHandle)(*jet) = truthJetMass;
612 (*dh.matchedTruthJetPtHandle)(*jet) = truthJetPt;
613 (*dh.matchedTruthJetRapidityHandle)(*jet) = truthJetRapidity;
614 (*dh.matchedTruthJetPhiHandle)(*jet) = truthJetPhi;
615 (*dh.matchedTruthJetDRHandle)(*jet) = deltaR;
616
617 if (!m_doLargeRLabels && usePileupJets) {
618 (*dh.matchedPileupTagHandle)(*jet) = pileupTag;
619 (*dh.sumPtMatchedHSJetsHandle)(*jet) = sumPtMatchedHSJets;
620 (*dh.sumPtMatchedOOTJetsHandle)(*jet) = sumPtMatchedOOTJets;
621 (*dh.sumPtMatchedITJetsHandle)(*jet) = sumPtMatchedITJets;
622 }
623
625 (*dh.matchedTruthGroomedMassHandle)(*jet) = truthGroomedJetMass;
626 (*dh.matchedTruthGroomedPtHandle)(*jet) = truthGroomedJetPt;
627 }
628 }
629
630 return StatusCode::SUCCESS;
631}
Scalar deltaR(const MatrixBase< Derived > &vec) const
#define ATH_MSG_WARNING(x)
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition Jet_v1.cxx:54
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition Jet_v1.cxx:67
std::string label(const std::string &format, int i)
Definition label.h:19
int enumToInt(const TypeEnum type)
SG::ConstAccessor< T, ALLOC > ConstAccessor
Definition AuxElement.h:570
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
int enumToInt(const TypeEnum type)
Jet_v1 Jet
Definition of the current "jet version".

◆ labelTruthJets() [1/2]

StatusCode JetTruthLabelingTool::labelTruthJets ( DecorHandles & dh,
const EventContext & ctx ) const
protected

Label truth jet collection.

Retrieve appropriate truth jet container

Make sure the truth jet collection has been retrieved

Definition at line 633 of file JetTruthLabelingTool.cxx.

634 {
635
637 SG::ReadHandle<xAOD::JetContainer> truthJets(m_truthJetCollectionKey, ctx);
638
640 if ( !truthJets.isValid() ) {
641 ATH_MSG_ERROR("No truth jet container retrieved. Please make sure you are using a supported TruthLabelName.");
642 return StatusCode::FAILURE;
643 }
644
645 return labelTruthJets(dh, *truthJets, ctx);
646
647}

◆ labelTruthJets() [2/2]

StatusCode JetTruthLabelingTool::labelTruthJets ( DecorHandles & dh,
const xAOD::JetContainer & jets,
const EventContext & ctx ) const
protected

Make sure there is at least 1 jet in truth collection

Check if the truth jet collection already has labels applied

Get the EventInfo to identify Sherpa samples

Apply label to truth jet

Definition at line 649 of file JetTruthLabelingTool.cxx.

652{
654 if ( !(truthJets.size()) ) return StatusCode::SUCCESS;
655
657 if(dh.labelHandle->isAvailable()){
658 // Beware: if we get here, the configuration is probably not MT-compatible.
659 ATH_MSG_DEBUG("labelTruthJets: Truth jet collection already labelled with " << m_truthLabelName);
660 return StatusCode::SUCCESS;
661 }
662
664 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_evtInfoKey, ctx);
665 if(!eventInfo.isValid()){
666 ATH_MSG_ERROR("Failed to retrieve event information.");
667 return StatusCode::FAILURE;
668 }
669
670 if(m_doLargeRLabels) {
673 for ( const xAOD::Jet *jet : truthJets ) {
674 ATH_MSG_DEBUG("Getting truth label using ghost-association");
675 label = getTruthJetLabelGA(dh, *jet, ctx);
676 (*dh.labelHandle)(*jet) = label;
677 }
678 }
679
680 return StatusCode::SUCCESS;
681}
#define ATH_MSG_DEBUG(x)
int getTruthJetLabelGA(DecorHandles &dh, const xAOD::Jet &jet, const EventContext &ctx) const
Get truth label using ghost-associated particles.

◆ modify()

virtual StatusCode IJetDecorator::modify ( xAOD::JetContainer & jets) const
inlinefinaloverridevirtualinherited

Concrete implementation of the function inherited from IJetModifier.

Implements IJetModifier.

Definition at line 32 of file IJetDecorator.h.

32{return decorate(jets);};
virtual StatusCode decorate(const xAOD::JetContainer &jets) const =0
Decorate a jet collection without otherwise modifying it.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
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:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101 {
102
103 return MSG::name( msg().level() );
104 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
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.

◆ parseLabel()

JetTruthLabelingTool::TruthLabelConfiguration JetTruthLabelingTool::parseLabel ( const std::string & label)
protected

Definition at line 19 of file JetTruthLabelingTool.cxx.

19 {
20
21 if (name == "R10TruthLabel_R21Precision_2022v1")
23
24 if (name == "R10TruthLabel_R22v1")
26
27 if (name == "R10WZTruthLabel_R22v1")
29
30 if (name == "R4TruthLabel")
32
33 if (name == "R4TruthDressedWZLabel")
35
36 if (name == "R4InTimeTruthLabel")
38
39 if (name == "R4OutOfTimeTruthLabel")
41
43}

◆ print()

void JetTruthLabelingTool::print ( ) const
overridevirtual

Print configured parameters.

Reimplemented from asg::AsgTool.

Definition at line 197 of file JetTruthLabelingTool.cxx.

197 {
198 ATH_MSG_INFO("Parameters for " << name());
199
200 ATH_MSG_INFO("xAOD information:");
201 ATH_MSG_INFO("TruthLabelName: " << m_truthLabelName);
202 ATH_MSG_INFO("TruthJetCollectionName: " << m_truthJetCollectionKey.key());
203 ATH_MSG_INFO("dRTruthJet: " << std::to_string(m_dRTruthJet));
204
206 ATH_MSG_INFO("truthGroomedJetCollectionName: " << m_truthGroomedJetCollectionKey.key());
207 }
208}

◆ renounce()

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 > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
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)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
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 >, and AthCheckedComponent<::AthAlgTool >.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ DecorHandles

friend struct DecorHandles
friend

Definition at line 105 of file JetTruthLabelingTool.h.

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doLargeRLabels

bool JetTruthLabelingTool::m_doLargeRLabels {true}
protected

Lower mass cut for Z label.

Definition at line 72 of file JetTruthLabelingTool.h.

72{true};

◆ m_dRTruthJet

double JetTruthLabelingTool::m_dRTruthJet {}
protected

When truth jet matching to ungroomed truth, allow saving properties of groomed truth jets.

Definition at line 67 of file JetTruthLabelingTool.h.

67{};

◆ m_evtInfoKey

SG::ReadHandleKey<xAOD::EventInfo> JetTruthLabelingTool::m_evtInfoKey {this, "EventInfoKey", "EventInfo", "Name of EventInfo object"}
protected

Definition at line 56 of file JetTruthLabelingTool.h.

56{this, "EventInfoKey", "EventInfo", "Name of EventInfo object"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_forceDeltaRMatch

Gaudi::Property<bool> JetTruthLabelingTool::m_forceDeltaRMatch {this, "ForceDeltaRMatch", false, "Whether to force dR matching e.g. if GhostTruth is not available"}
protected

Definition at line 54 of file JetTruthLabelingTool.h.

54{this, "ForceDeltaRMatch", false, "Whether to force dR matching e.g. if GhostTruth is not available"};

◆ m_getTruthGroomedJetValues

bool JetTruthLabelingTool::m_getTruthGroomedJetValues {}
protected

Use the ungroomed reco jet parent to match to truth jet.

Definition at line 66 of file JetTruthLabelingTool.h.

66{};

◆ m_isSmallR

bool JetTruthLabelingTool::m_isSmallR {}
protected

Use ghost association to match reco to truth jets, dR otherwise.

Definition at line 64 of file JetTruthLabelingTool.h.

64{};

◆ m_isTruthJetCol

Gaudi::Property<bool> JetTruthLabelingTool::m_isTruthJetCol {this, "IsTruthJetCollection", false, "Flag indicating whether input collection is a truth jet container"}
protected

Definition at line 53 of file JetTruthLabelingTool.h.

53{this, "IsTruthJetCollection", false, "Flag indicating whether input collection is a truth jet container"};

◆ m_ITJetName

SG::ReadHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_ITJetName { this, "ITJetContainer", "InTimeAntiKt4TruthJets", "Do not configure manually!" }
protected

Definition at line 60 of file JetTruthLabelingTool.h.

60{ this, "ITJetContainer", "InTimeAntiKt4TruthJets", "Do not configure manually!" };

◆ m_jetContainerName

Gaudi::Property<std::string> JetTruthLabelingTool::m_jetContainerName {this, "RecoJetContainer", "", "Input reco jet container name"}
protected

Definition at line 50 of file JetTruthLabelingTool.h.

50{this, "RecoJetContainer", "", "Input reco jet container name"};

◆ m_label_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_label_recoKey {this, "label_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 157 of file JetTruthLabelingTool.h.

157{this, "label_RecoKey", "", "Do not configure manually!"};

◆ m_label_truthKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_label_truthKey {this, "label_TruthKey", "", "Do not configure manually!"}
protected

Definition at line 152 of file JetTruthLabelingTool.h.

152{this, "label_TruthKey", "", "Do not configure manually!"};

◆ m_matchedPileupTag_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedPileupTag_recoKey { this, "TruthMatch_PileupLabel_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 168 of file JetTruthLabelingTool.h.

168{ this, "TruthMatch_PileupLabel_RecoKey", "", "Do not configure manually!" };

◆ m_matchedTruthGroomedJetMass_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthGroomedJetMass_recoKey {this, "TruthMatch_GroomedJetMass_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 173 of file JetTruthLabelingTool.h.

173{this, "TruthMatch_GroomedJetMass_RecoKey", "", "Do not configure manually!"};

◆ m_matchedTruthGroomedJetPt_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthGroomedJetPt_recoKey {this, "TruthMatch_GroomedJetPt_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 174 of file JetTruthLabelingTool.h.

174{this, "TruthMatch_GroomedJetPt_RecoKey", "", "Do not configure manually!"};

◆ m_matchedTruthJet_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthJet_recoKey {this, "TruthMatch_Jet_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 162 of file JetTruthLabelingTool.h.

162{this, "TruthMatch_Jet_RecoKey", "", "Do not configure manually!"};

◆ m_matchedTruthJetDR_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthJetDR_recoKey { this, "TruthMatch_dR_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 167 of file JetTruthLabelingTool.h.

167{ this, "TruthMatch_dR_RecoKey", "", "Do not configure manually!" };

◆ m_matchedTruthJetMass_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthJetMass_recoKey {this, "TruthMatch_m_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 163 of file JetTruthLabelingTool.h.

163{this, "TruthMatch_m_RecoKey", "", "Do not configure manually!"};

◆ m_matchedTruthJetPhi_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthJetPhi_recoKey { this, "TruthMatch_phi_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 166 of file JetTruthLabelingTool.h.

166{ this, "TruthMatch_phi_RecoKey", "", "Do not configure manually!" };

◆ m_matchedTruthJetPt_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthJetPt_recoKey {this, "TruthMatch_pt_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 164 of file JetTruthLabelingTool.h.

164{this, "TruthMatch_pt_RecoKey", "", "Do not configure manually!"};

◆ m_matchedTruthJetRapidity_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_matchedTruthJetRapidity_recoKey { this, "TruthMatch_rapidity_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 165 of file JetTruthLabelingTool.h.

165{ this, "TruthMatch_rapidity_RecoKey", "", "Do not configure manually!" };

◆ m_matchUngroomedParent

bool JetTruthLabelingTool::m_matchUngroomedParent {}
protected

Is the reco jet collection small or large R, default large.

Definition at line 65 of file JetTruthLabelingTool.h.

65{};

◆ m_mLowTop

double JetTruthLabelingTool::m_mLowTop {}
protected

Ghost pT fraction to match truth jet to reco jet.

Definition at line 69 of file JetTruthLabelingTool.h.

69{};

◆ m_mLowW

double JetTruthLabelingTool::m_mLowW {}
protected

Lower mass cut for top label.

Definition at line 70 of file JetTruthLabelingTool.h.

70{};

◆ m_mLowZ

double JetTruthLabelingTool::m_mLowZ {}
protected

Lower mass cut for W label.

Definition at line 71 of file JetTruthLabelingTool.h.

71{};

◆ m_NB_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_NB_recoKey {this, "NB_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 158 of file JetTruthLabelingTool.h.

158{this, "NB_RecoKey", "", "Do not configure manually!"};

◆ m_NB_truthKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_NB_truthKey {this, "NB_TruthKey", "", "Do not configure manually!"}
protected

Definition at line 153 of file JetTruthLabelingTool.h.

153{this, "NB_TruthKey", "", "Do not configure manually!"};

◆ m_OOTJetName

SG::ReadHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_OOTJetName { this, "OOTJetContainer", "OutOfTimeAntiKt4TruthJets", "Do not configure manually!" }
protected

parameters for truth labeling

Definition at line 59 of file JetTruthLabelingTool.h.

59{ this, "OOTJetContainer", "OutOfTimeAntiKt4TruthJets", "Do not configure manually!" };

◆ m_recoGhostFrac

double JetTruthLabelingTool::m_recoGhostFrac {}
protected

dR to match truth jet to reco jet

Definition at line 68 of file JetTruthLabelingTool.h.

68{};

◆ m_split12_truthKey

SG::ReadDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_split12_truthKey {this, "Split12_TruthKey", "", "Do not configure manually!"}
protected

Definition at line 154 of file JetTruthLabelingTool.h.

154{this, "Split12_TruthKey", "", "Do not configure manually!"};

◆ m_split23_truthKey

SG::ReadDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_split23_truthKey {this, "Split23_TruthKey", "", "Do not configure manually!"}
protected

Definition at line 155 of file JetTruthLabelingTool.h.

155{this, "Split23_TruthKey", "", "Do not configure manually!"};

◆ m_sumPtMatchedHSJets_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_sumPtMatchedHSJets_recoKey { this, "TruthMatch_HSSumPt_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 169 of file JetTruthLabelingTool.h.

169{ this, "TruthMatch_HSSumPt_RecoKey", "", "Do not configure manually!" };

◆ m_sumPtMatchedITJets_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_sumPtMatchedITJets_recoKey { this, "TruthMatch_ITSumPt_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 171 of file JetTruthLabelingTool.h.

171{ this, "TruthMatch_ITSumPt_RecoKey", "", "Do not configure manually!" };

◆ m_sumPtMatchedOOTJets_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_sumPtMatchedOOTJets_recoKey { this, "TruthMatch_OOTSumPt_RecoKey", "", "Do not configure manually!" }
protected

Definition at line 170 of file JetTruthLabelingTool.h.

170{ this, "TruthMatch_OOTSumPt_RecoKey", "", "Do not configure manually!" };

◆ m_truthGroomedJetCollectionKey

SG::ReadHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_truthGroomedJetCollectionKey {this, "TruthGroomedJetContainer", "", "Do not configure manually!"}
protected

Definition at line 62 of file JetTruthLabelingTool.h.

62{this, "TruthGroomedJetContainer", "", "Do not configure manually!"};

◆ m_truthJetCollectionKey

SG::ReadHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_truthJetCollectionKey {this, "TruthJetContainer", "", "Do not configure manually!"}
protected

Definition at line 61 of file JetTruthLabelingTool.h.

61{this, "TruthJetContainer", "", "Do not configure manually!"};

◆ m_truthLabelConfig

TruthLabelConfiguration JetTruthLabelingTool::m_truthLabelConfig = TruthLabelConfiguration::Unknown
protected

Definition at line 150 of file JetTruthLabelingTool.h.

◆ m_truthLabelName

Gaudi::Property<std::string> JetTruthLabelingTool::m_truthLabelName {this, "TruthLabelName", "R10TruthLabel_R22v1", "Truth label name"}
protected

Definition at line 51 of file JetTruthLabelingTool.h.

51{this, "TruthLabelName", "R10TruthLabel_R22v1", "Truth label name"};

◆ m_truthSplit12_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_truthSplit12_recoKey {this, "TruthSplit12_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 159 of file JetTruthLabelingTool.h.

159{this, "TruthSplit12_RecoKey", "", "Do not configure manually!"};

◆ m_truthSplit23_recoKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetTruthLabelingTool::m_truthSplit23_recoKey {this, "TruthSplit23_RecoKey", "", "Do not configure manually!"}
protected

Definition at line 160 of file JetTruthLabelingTool.h.

160{this, "TruthSplit23_RecoKey", "", "Do not configure manually!"};

◆ m_useGhostJetMatch

bool JetTruthLabelingTool::m_useGhostJetMatch {}
protected

Definition at line 63 of file JetTruthLabelingTool.h.

63{};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: