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 };
struct TBPatternUnitContext Unknown

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 753 of file JetTruthLabelingTool.cxx.

759 {
760
761 // store GhostBHadronsFinal count
762 int nMatchB = getNGhostParticles( jet, "GhostBHadronsFinal" );
763 (*dh.nbHandle)(jet) = nMatchB;
764
766 bool is_bb = false;
767 bool is_cc = false;
768 bool is_tautauEl = false;
769 bool is_tautauMu = false;
770 bool is_tautauHad = false;
771 bool isTop = false;
772 bool isW = false;
773 bool isZ = false;
774
775 // Use R21Precision_2022v1 definition
777 SG::ReadDecorHandle<xAOD::JetContainer, float> split23Handle(m_split23_truthKey, ctx);
778 SG::ReadDecorHandle<xAOD::JetContainer, float> split12Handle(m_split12_truthKey, ctx);
779 is_bb = ( nMatchB > 1 );
780 isTop = ( matchTop && matchW && nMatchB > 0 && jet.m() / 1000. > m_mLowTop && split23Handle(jet) / 1000. > getTopSplit23Cut( jet.pt() / 1000. ) );
781 isW = matchW && nMatchB == 0 && jet.m() / 1000. > m_mLowW && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
782 isZ = matchZ && jet.m() / 1000. > m_mLowZ && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
783 }
784
785 // Use R10TruthLabel_R22v1 definition
787 // get extended ghost associated truth label
788 int extended_GA_label = -1;
789 if (not jet.getAttribute("HadronGhostExtendedTruthLabelID", extended_GA_label)) {
790 ATH_MSG_ERROR( "HadronGhostExtendedTruthLabelID not available for " + m_truthJetCollectionKey.key() );
791 }
792
793 SG::ReadDecorHandle<xAOD::JetContainer, float> split23Handle(m_split23_truthKey, ctx);
794 SG::ReadDecorHandle<xAOD::JetContainer, float> split12Handle(m_split12_truthKey, ctx);
795 is_bb = ( extended_GA_label == 55 );
796 is_cc = ( extended_GA_label == 44 );
797 is_tautauEl = ( extended_GA_label == 151511 );
798 is_tautauMu = ( extended_GA_label == 151513 );
799 is_tautauHad = ( extended_GA_label == 1515 );
800 isTop = ( matchTop && matchW && nMatchB > 0 && jet.m() / 1000. > m_mLowTop && split23Handle(jet) / 1000. > getTopSplit23Cut( jet.pt() / 1000. ) );
801 isW = matchW && nMatchB == 0 && jet.m() / 1000. > m_mLowW && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
802 isZ = matchZ && jet.m() / 1000. > m_mLowZ && split12Handle(jet) / 1000. > getWZSplit12Cut( jet.pt() / 1000. );
803 }
804
805
807
808 /* The default priority of labels is:
809 * 1) Hbb/cc/tautau
810 * 2) Contained top
811 * 3) Contained W
812 * 4) Contained Zbb/cc/qq/tautau
813 * 5) Uncontained top
814 * 6) Uncontained V
815 */
816
818 if( !(matchTop || matchW || matchZ || matchH) ) {
820 }
821
822 // Higgs
823 if ( matchH ) {
825 if ( is_bb ) return LargeRJetTruthLabel::Hbb;
827 if ( is_cc ) return LargeRJetTruthLabel::Hcc;
829 if ( is_tautauEl ) return LargeRJetTruthLabel::HtautauEl;
830 if ( is_tautauMu ) return LargeRJetTruthLabel::HtautauMu;
831 if ( is_tautauHad ) return LargeRJetTruthLabel::HtautauHad;
834 }
835
837 if ( isTop ) return LargeRJetTruthLabel::tqqb;
838
839 if ( isW ) {
841 if ( matchTop ) return LargeRJetTruthLabel::Wqq_From_t;
844 }
845
846 if ( matchZ ) {
848 if ( is_bb ) return LargeRJetTruthLabel::Zbb;
850 if ( is_cc ) return LargeRJetTruthLabel::Zcc;
852 if ( is_tautauEl ) return LargeRJetTruthLabel::ZtautauEl;
853 if ( is_tautauMu ) return LargeRJetTruthLabel::ZtautauMu;
854 if ( is_tautauHad ) return LargeRJetTruthLabel::ZtautauHad;
855 }
856 if ( isZ ) {
859 }
860
862 if ( matchTop ) return LargeRJetTruthLabel::other_From_t;
863
866
867}
#define ATH_MSG_ERROR(x,...)
bool isW(const T &p)
Definition AtlasPID.h:388
bool isZ(const T &p)
Definition AtlasPID.h:385
bool isTop(const T &p)
Definition AtlasPID.h:191
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 737 of file JetTruthLabelingTool.cxx.

737 {
738
739 int nMatchPart = 0;
740
741 if( !jet.getAttribute<int>( collection+"Count", nMatchPart ) ){
742
743 std::vector<const xAOD::TruthParticle*> ghostParts;
744 if( !jet.getAssociatedObjects<xAOD::TruthParticle>( collection, ghostParts ) ){
745 ATH_MSG_ERROR( collection + " cannot be retrieved! Truth label definition might be wrong" );
746 }
747 nMatchPart = ghostParts.size();
748 }
749
750 return nMatchPart;
751}
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 716 of file JetTruthLabelingTool.cxx.

716 {
717
720
721 float split23 = -999.0;
722
726
727 const float c0 = 3.3;
728 const float c1 = -6.98e-4;
729
730 split23 = std::exp( c0 + c1 * pt );
731
732 }
733
734 return split23;
735}

◆ 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 698 of file JetTruthLabelingTool.cxx.

698 {
699
702
703 float split12 = -999.0;
704
706 const float c0 = 55.25;
707 const float c1 = -2.34e-3;
708
709 split12 = c0 * std::exp( c1 * pt );
710 }
711
712 return split12;
713
714}

◆ 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 static const SG::ConstAccessor<float> accGhostTruthPt("GhostTruthPt");
374
375 // Ensure that the reco jet has at least one constituent
376 // (and thus a well-defined four-vector)
377 if (jet->numConstituents() > 0) {
378 for (const xAOD::Jet* truthJet : *truthJets) { // Truth jet loop
379 // Calculate DR
380 float dR = jet->p4().DeltaR(truthJet->p4(),true);
381 // If parent jet has been retrieved, calculate dR w.r.t. it instead
382 if (parent) dR = parent->p4().DeltaR(truthJet->p4(),true);
383 // Calculate GF
384 if (m_useGhostJetMatch) { // GA matching. Upper bound applied for completeness, but realistically not needed.
385 // Access ghostTruthPt now so it is available for pileup jets
386 float ghostTruthPt = accGhostTruthPt(*jet);
387 float ghostPtFraction = (ghostTruthPt / (truthJet->pt()));
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 if (m_useGhostJetMatch) {
412 float ghostTruthPt = accGhostTruthPt(*jet);
413 float ghostPtFraction = (ghostTruthPt / (ootJet->pt()));
414 if ((ghostPtFraction >= m_recoGhostFrac) && (ghostPtFraction <= (2 - m_recoGhostFrac))) { // All matches
415 nMatchedOOTJets += 1;
416 sumPtMatchedOOTJets += ootJet->pt();
417 if (std::abs(1 - ghostPtFraction) < std::abs(1 - ghostFracNominal)) { // Best match
418 oot_matchTruthJet = ootJet;
419 }
420 }
421 }
422 else {
423 if (dR < m_dRTruthJet) { // All matches
424 nMatchedOOTJets += 1;
425 sumPtMatchedOOTJets += ootJet->pt();
426 if (dR < oot_dRmin) { // Best match
427 oot_dRmin = dR;
428 oot_matchTruthJet = ootJet;
429 }
430 }
431 }
432 }
433 for (const xAOD::Jet* itJet : *inTimeTruthJets) { // In time pileup truth jet loop
434 float dR = jet->p4().DeltaR(itJet->p4(), true);
435 if (m_useGhostJetMatch) {
436 float ghostTruthPt = accGhostTruthPt(*jet);
437 float ghostPtFraction = (ghostTruthPt / (itJet->pt()));
438 if ((ghostPtFraction >= m_recoGhostFrac) && (ghostPtFraction <= (2 - m_recoGhostFrac))) { // All matches
439 nMatchedITJets += 1;
440 sumPtMatchedITJets += itJet->pt();
441 if (std::abs(1 - ghostPtFraction) < std::abs(1 - ghostFracNominal)) { // Best match
442 it_matchTruthJet = itJet;
443 }
444 }
445 }
446 else {
447 if (dR < m_dRTruthJet) { // All matches
448 nMatchedITJets += 1;
449 sumPtMatchedITJets += itJet->pt();
450 if (dR < it_dRmin) { // Best match
451 it_dRmin = dR;
452 it_matchTruthJet = itJet;
453 }
454 }
455 }
456 }
457
458 //#######################################################################################
459 //# PILEUP TAGGER KEY #
460 //# 0: Hard scatter ------------- Best truth jet match has >90% of the total matched pT #
461 //# 1: Mixed hard scatter-------- Match with multiple truth jets, none >90% (no PU) #
462 //# 2: Hard scatter with pileup - Best truth jet <90%, also has pileup matches #
463 //# 3: In time pileup---------- - Best it jet match has > 90 % of the total matched pT #
464 //# 4: Mixed pileup ------------- Match with multiple pileup jets, none >90% (no HS) #
465 //# 5: Out of time pileup------ - Best oot jet match has > 90 % of the total matched pT #
466 //# 6: Other/unknown ------------ Fails all above cases #
467 //#######################################################################################
468
469 //NOTE: HS has 5 GeV pT threshold, 10 GeV and 15 GeV for IT and OOT pileup.
470
471 int nMatchedPUJets = nMatchedOOTJets + nMatchedITJets;
472
473 float totalMatchedpT = sumPtMatchedHSJets + sumPtMatchedOOTJets + sumPtMatchedITJets;
474
475 if (matchTruthJet) {
476 bestHSpT = matchTruthJet->pt();
477 bestHSpTRatio = bestHSpT / totalMatchedpT;
478 }
479 if (oot_matchTruthJet) {
480 bestOOTpT = oot_matchTruthJet->pt();
481 bestOOTpTRatio = bestOOTpT / totalMatchedpT;
482 }
483 if (it_matchTruthJet) {
484 bestITpT = it_matchTruthJet->pt();
485 bestITpTRatio = bestITpT / totalMatchedpT;
486 }
487
488 if (bestHSpTRatio >= 0.9) { //HS
489 pileupTag = SmallRJetPileupLabel::HS;
490 }
491 else if (bestITpTRatio >= 0.9) { //IT
492 pileupTag = SmallRJetPileupLabel::ITPU;
493 }
494 else if (bestOOTpTRatio >= 0.9) { //OOT
495 pileupTag = SmallRJetPileupLabel::OOTPU;
496 }
497 else if (nMatchedPUJets == 0 && nMatchedHSJets > 1) { //Mixed HS
498 pileupTag = SmallRJetPileupLabel::MixHS;
499 }
500 else if (nMatchedPUJets > 0 && nMatchedHSJets > 0) { //HS with pileup
501 pileupTag = SmallRJetPileupLabel::HSPU;
502 }
503 else if (nMatchedPUJets > 1) {//Mixed PU
504 pileupTag = SmallRJetPileupLabel::MixPU;
505 }
506 else { //No match
508 }
509
510 }
511
512 }
513
515 int truthJetNB = -1;
516 float truthJetSplit12 = -9999;
517 float truthJetSplit23 = -9999;
518
519 // Defaults to null EL
520 ElementLink<xAOD::JetContainer> truthJetEL{};
521 float truthJetMass = -9999;
522 float truthJetPt = -9999;
523 float truthJetRapidity = -9;
524 float truthJetPhi = -9999;
525 float deltaR = -2;
526
527 const xAOD::JetContainer* truthJetCont = truthJets.cptr();
528
529 //If the best match is PU, reassign the truth jet to take variables from
530 switch(pileupTag) {
532 matchTruthJet = it_matchTruthJet;
533 truthJetCont = inTimeTruthJets.cptr();
534 break;
535 }
537 matchTruthJet = oot_matchTruthJet;
538 truthJetCont = outOfTimeTruthJets.cptr();
539 break;
540 }
542 if (bestITpTRatio >= bestOOTpTRatio) {
543 matchTruthJet = it_matchTruthJet;
544 truthJetCont = inTimeTruthJets.cptr();
545 }
546 else {
547 matchTruthJet = oot_matchTruthJet;
548 truthJetCont = outOfTimeTruthJets.cptr();
549 }
550 }
551 default:
552 break;
553 }
554
555 if ( matchTruthJet ) {
556
557 // Can't use the WriteDecorHandle to read --- the decoration may have
558 // been added and locked by a previous algorithm.
559 // Not saving Truth jet decorations for small R
560 if (m_doLargeRLabels) {
561 SG::ConstAccessor<int> labelAcc(dh.labelHandle->auxid());
562 label = labelAcc(*matchTruthJet);
564 SG::ReadDecorHandle<xAOD::JetContainer, float> split23Handle(m_split23_truthKey, ctx);
565 if (split23Handle.isAvailable()) truthJetSplit23 = split23Handle(*matchTruthJet);
566 SG::ReadDecorHandle<xAOD::JetContainer, float> split12Handle(m_split12_truthKey, ctx);
567 if (split12Handle.isAvailable()) truthJetSplit12 = split12Handle(*matchTruthJet);
568 }
569 if (nbAcc.isAvailable(*matchTruthJet)) truthJetNB = nbAcc(*matchTruthJet);
570 }
571 ATH_MSG_VERBOSE("For reco jet " << jet->index() << ", matched truth jet index " << matchTruthJet->index());
572 truthJetEL = ElementLink<xAOD::JetContainer>(*truthJetCont, matchTruthJet->index(), ctx);
573 truthJetMass = matchTruthJet->m();
574 truthJetPt = matchTruthJet->pt();
575 truthJetRapidity = matchTruthJet->rapidity();
576 truthJetPhi = matchTruthJet->phi();
577 deltaR = dRmin;
578 }
579
580 // Save Groomed Truth Jet variables
581 float truthGroomedJetMass = -9999;
582 float truthGroomedJetPt = -9999;
584 if ( matchTruthJet ) {
585 for ( const xAOD::Jet* truthGroomedJet : *truthGroomedJets ) {
586 ElementLink<xAOD::JetContainer> element_link = ParentAcc (*truthGroomedJet);
587 if ( !element_link.isValid() ) { continue; }
588 if ( matchTruthJet == *element_link ) {
589 matchTruthGroomedJet = truthGroomedJet;
590 break;
591 }
592 }
593 }
594 // If no matched jet found or matched jet has no corresponding groomed jet, use dR matching
595 if ( !matchTruthGroomedJet && parent != nullptr) {
596 for ( const xAOD::Jet* truthGroomedJet : *truthGroomedJets ) {
597 float dR = parent->p4().DeltaR(truthGroomedJet->p4(),true);
599 if ( m_dRTruthJet < 0 || dR < m_dRTruthJet ) {
600 if ( dR < dRminGroomed ) {
601 dRminGroomed = dR;
602 matchTruthGroomedJet = truthGroomedJet;
603 }
604 }
605 }
606 }
607 if ( matchTruthGroomedJet ) {
608 truthGroomedJetMass = matchTruthGroomedJet->m();
609 truthGroomedJetPt = matchTruthGroomedJet->pt();
610 }
611 }
612
614 if (m_doLargeRLabels) {
615 (*dh.labelRecoHandle)(*jet) = label;
618 (*dh.split23Handle)(*jet) = truthJetSplit23;
619 (*dh.split12Handle)(*jet) = truthJetSplit12;
620 }
621
622 (*dh.nbRecoHandle)(*jet) = truthJetNB;
623 }
624
625 (*dh.matchedTruthJetHandle)(*jet) = truthJetEL;
626 (*dh.matchedTruthJetMassHandle)(*jet) = truthJetMass;
627 (*dh.matchedTruthJetPtHandle)(*jet) = truthJetPt;
628 (*dh.matchedTruthJetRapidityHandle)(*jet) = truthJetRapidity;
629 (*dh.matchedTruthJetPhiHandle)(*jet) = truthJetPhi;
630 (*dh.matchedTruthJetDRHandle)(*jet) = deltaR;
631
632 if (!m_doLargeRLabels && usePileupJets) {
633 (*dh.matchedPileupTagHandle)(*jet) = pileupTag;
634 (*dh.sumPtMatchedHSJetsHandle)(*jet) = sumPtMatchedHSJets;
635 (*dh.sumPtMatchedOOTJetsHandle)(*jet) = sumPtMatchedOOTJets;
636 (*dh.sumPtMatchedITJetsHandle)(*jet) = sumPtMatchedITJets;
637 }
638
640 (*dh.matchedTruthGroomedMassHandle)(*jet) = truthGroomedJetMass;
641 (*dh.matchedTruthGroomedPtHandle)(*jet) = truthGroomedJetPt;
642 }
643 }
644
645 return StatusCode::SUCCESS;
646}
Scalar deltaR(const MatrixBase< Derived > &vec) const
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(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".
JetContainer_v1 JetContainer
Definition of the current "jet container 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 648 of file JetTruthLabelingTool.cxx.

649 {
650
652 SG::ReadHandle<xAOD::JetContainer> truthJets(m_truthJetCollectionKey, ctx);
653
655 if ( !truthJets.isValid() ) {
656 ATH_MSG_ERROR("No truth jet container retrieved. Please make sure you are using a supported TruthLabelName.");
657 return StatusCode::FAILURE;
658 }
659
660 return labelTruthJets(dh, *truthJets, ctx);
661
662}

◆ 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 664 of file JetTruthLabelingTool.cxx.

667{
669 if ( !(truthJets.size()) ) return StatusCode::SUCCESS;
670
672 if(dh.labelHandle->isAvailable()){
673 // Beware: if we get here, the configuration is probably not MT-compatible.
674 ATH_MSG_DEBUG("labelTruthJets: Truth jet collection already labelled with " << m_truthLabelName);
675 return StatusCode::SUCCESS;
676 }
677
679 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_evtInfoKey, ctx);
680 if(!eventInfo.isValid()){
681 ATH_MSG_ERROR("Failed to retrieve event information.");
682 return StatusCode::FAILURE;
683 }
684
685 if(m_doLargeRLabels) {
688 for ( const xAOD::Jet *jet : truthJets ) {
689 ATH_MSG_DEBUG("Getting truth label using ghost-association");
690 label = getTruthJetLabelGA(dh, *jet, ctx);
691 (*dh.labelHandle)(*jet) = label;
692 }
693 }
694
695 return StatusCode::SUCCESS;
696}
#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: