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

#include <JetIRCSafeLabelTool.h>

Inheritance diagram for JetIRCSafeLabelTool:
Collaboration diagram for JetIRCSafeLabelTool:

Public Types

enum class  Algo : std::size_t {
  IFN = 0 , CMP = 1 , GHS = 2 , SDF = 3 ,
  AKT = 4 , COUNT = 5
}
 Enumeration of supported IRC-safe flavour tagging algorithms. More...

Public Member Functions

 JetIRCSafeLabelTool (const std::string &name)
 Constructor.
StatusCode initialize () override
 Dummy implementation of the initialisation function.
StatusCode decorate (const xAOD::JetContainer &jets) const override
 Decorate a jet collection without otherwise modifying it.
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
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.

Static Public Attributes

static constexpr std::size_t N_ALGOS = static_cast<std::size_t>(Algo::COUNT)
static constexpr double DEFAULT_TRUTH_JET_PT_MIN = 5000.0
 Algorithm configuration constants.
static constexpr double DEFAULT_RECO_JET_PT_MIN = 10000.0
static constexpr double DEFAULT_DR_MAX = 0.3
static constexpr double DEFAULT_TRUTH_R = 0.4
static constexpr double IFN_RFACTOR = 1.0
static constexpr double IFN_BETA = 2.0
static constexpr double CMP_A = 0.1
static constexpr double GHS_ALPHA = 1.0
static constexpr double GHS_OMEGA = 0.0
static constexpr double GHS_PT_CUT = 5000.0
static constexpr int LABEL_B = 5
static constexpr int LABEL_C = 4
static constexpr int LABEL_LIGHT = 0
static constexpr int LABEL_DISABLED = -99

Protected Member Functions

std::vector< std::vector< fastjet::PseudoJet > > getJetInputs (const xAOD::TruthParticleContainer &parts, const xAOD::TruthParticleContainer &label_bs, const xAOD::TruthParticleContainer &label_cs) const
 Collect truth particles and cluster them into jets using the enabled algorithms.
std::vector< std::vector< const fastjet::PseudoJet * > > match (std::vector< fastjet::PseudoJet > &tagged_jets, const xAOD::JetContainer &jets) const
 Match truth-level pseudo-jets to reconstructed jets.
bool doAlgo (Algo a) const
 Convenience function to check if an algorithm is enabled.
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_labelNameIFN
 Label name properties.
Gaudi::Property< std::string > m_labelNameCMP
Gaudi::Property< std::string > m_labelNameGHS
Gaudi::Property< std::string > m_labelNameSDF
Gaudi::Property< std::string > m_labelNameAKT
Gaudi::Property< std::vector< std::string > > m_enabledAlgorithms
 Algorithm selection property.
Gaudi::Property< double > m_truthJetPtMin
 Cut and configuration properties.
Gaudi::Property< double > m_jetPtMin
Gaudi::Property< double > m_drMax
Gaudi::Property< double > m_truthR
ParticleJetTools::IRCSafeLabelNames m_ircsafelabelnames
 Name of jet label attributes.
std::unique_ptr< ParticleJetTools::IRCSafeLabelDecorators > m_ircsafelabeldecs
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_bottomPartCollectionKey {this, "BParticleCollection", "", "ReadHandleKey for bottomPartCollection"}
 Read handles for truth particle collections.
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_charmPartCollectionKey {this, "CParticleCollection", "", "ReadHandleKey for charmPartCollection"}
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_outTruthPartKey {this, "TruthParticleCollection", "", "ReadHandleKey of the TruthParticle collection"}
std::array< bool, N_ALGOS > m_doAlgo {}
 Compact array storing enabled algorithms (true = enabled).
std::unique_ptr< fastjet::Selector > m_selectPt
 FastJet configuration cached at initialize to avoid per-event allocations.
std::unique_ptr< fastjet::contrib::FlavRecombiner > m_flavRecombiner
std::unique_ptr< fastjet::JetDefinition > m_aktJetDef
std::unique_ptr< fastjet::JetDefinition > m_ifnJetDef
std::unique_ptr< fastjet::JetDefinition > m_cmpJetDef

Private Types

typedef ServiceHandle< StoreGateSvc > StoreGateSvc_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

Detailed Description

Definition at line 25 of file JetIRCSafeLabelTool.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

◆ Algo

enum class JetIRCSafeLabelTool::Algo : std::size_t
strong

Enumeration of supported IRC-safe flavour tagging algorithms.

Enumerator
IFN 

Interleaved Flavour Neutralisation.

CMP 

Czakon-Mitov-Poncelet algorithm.

GHS 

Gauld-Huss-Stagnitto flavour dressing.

SDF 

SDFlav algorithm (Marzani et al.).

AKT 

Anti-kt with net flavour (NOT IRC-safe, for comparison).

COUNT 

Number of algorithms.

Definition at line 30 of file JetIRCSafeLabelTool.h.

30 : std::size_t {
31 IFN = 0,
32 CMP = 1,
33 GHS = 2,
34 SDF = 3,
35 AKT = 4,
36 COUNT = 5
37 };

Constructor & Destructor Documentation

◆ JetIRCSafeLabelTool()

JetIRCSafeLabelTool::JetIRCSafeLabelTool ( const std::string & name)

Constructor.

Definition at line 194 of file JetIRCSafeLabelTool.cxx.

194: AsgTool(name) {}
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition AsgTool.cxx:58

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 JetIRCSafeLabelTool::decorate ( const xAOD::JetContainer & jets) const
overridevirtual

Decorate a jet collection without otherwise modifying it.

Implements IJetDecorator.

Definition at line 450 of file JetIRCSafeLabelTool.cxx.

450 {
451
452 // Retrieve truth particle collections
453 SG::ReadHandle<xAOD::TruthParticleContainer> truthPartReadHandle(m_outTruthPartKey);
454 SG::ReadHandle<xAOD::TruthParticleContainer> bottomReadHandle(m_bottomPartCollectionKey);
455 SG::ReadHandle<xAOD::TruthParticleContainer> charmReadHandle(m_charmPartCollectionKey);
456
457 if (!truthPartReadHandle.isValid()) {
458 ATH_MSG_ERROR("Invalid ReadHandle for TruthParticleCollection with key: " << truthPartReadHandle.key());
459 return StatusCode::FAILURE;
460 }
461 if (!bottomReadHandle.isValid()) {
462 ATH_MSG_ERROR("Invalid ReadHandle for bottomPartCollection with key: " << bottomReadHandle.key());
463 return StatusCode::FAILURE;
464 }
465 if (!charmReadHandle.isValid()) {
466 ATH_MSG_ERROR("Invalid ReadHandle for charmPartCollection with key: " << charmReadHandle.key());
467 return StatusCode::FAILURE;
468 }
469
470 // Get algorithm flags
471 bool doIFN = doAlgo(Algo::IFN);
472 bool doCMP = doAlgo(Algo::CMP);
473 bool doGHS = doAlgo(Algo::GHS);
474 bool doSDF = doAlgo(Algo::SDF);
475 bool doAKT = doAlgo(Algo::AKT);
476
477 // Get all pseudo-jets from enabled algorithms
478 std::vector<std::vector<PseudoJet>> all_pseudojets =
479 getJetInputs(*truthPartReadHandle, *bottomReadHandle, *charmReadHandle);
480
481 // Extract b- and c-tagged jets for each algorithm
482 std::vector<PseudoJet> btagged_pseudojetsIFN, ctagged_pseudojetsIFN;
483 std::vector<PseudoJet> btagged_pseudojetsCMP, ctagged_pseudojetsCMP;
484 std::vector<PseudoJet> btagged_pseudojetsGHS, ctagged_pseudojetsGHS;
485 std::vector<PseudoJet> btagged_pseudojetsSDF, ctagged_pseudojetsSDF;
486 std::vector<PseudoJet> btagged_pseudojetsAKT, ctagged_pseudojetsAKT;
487
488 // Extract IFN jets
489 if (doIFN && all_pseudojets.size() > static_cast<std::size_t>(Algo::IFN)) {
490 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::IFN)],
491 btagged_pseudojetsIFN, ctagged_pseudojetsIFN);
492 }
493
494 // Extract CMP jets
495 if (doCMP && all_pseudojets.size() > static_cast<std::size_t>(Algo::CMP)) {
496 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::CMP)],
497 btagged_pseudojetsCMP, ctagged_pseudojetsCMP);
498 }
499
500 // Extract GHS jets
501 if (doGHS && all_pseudojets.size() > static_cast<std::size_t>(Algo::GHS)) {
502 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::GHS)],
503 btagged_pseudojetsGHS, ctagged_pseudojetsGHS);
504 }
505
506 // Extract SDF jets
507 if (doSDF && all_pseudojets.size() > static_cast<std::size_t>(Algo::SDF)) {
508 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::SDF)],
509 btagged_pseudojetsSDF, ctagged_pseudojetsSDF);
510 }
511
512 // Extract AKT jets
513 if (doAKT && all_pseudojets.size() > static_cast<std::size_t>(Algo::AKT)) {
514 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::AKT)],
515 btagged_pseudojetsAKT, ctagged_pseudojetsAKT);
516 }
517
518 // Match the tagged pseudojets to reco jets
519 std::vector<std::vector<const PseudoJet*>> jetlabelIFN_b = doIFN ? match(btagged_pseudojetsIFN, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
520 std::vector<std::vector<const PseudoJet*>> jetlabelIFN_c = doIFN ? match(ctagged_pseudojetsIFN, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
521 std::vector<std::vector<const PseudoJet*>> jetlabelCMP_b = doCMP ? match(btagged_pseudojetsCMP, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
522 std::vector<std::vector<const PseudoJet*>> jetlabelCMP_c = doCMP ? match(ctagged_pseudojetsCMP, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
523 std::vector<std::vector<const PseudoJet*>> jetlabelGHS_b = doGHS ? match(btagged_pseudojetsGHS, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
524 std::vector<std::vector<const PseudoJet*>> jetlabelGHS_c = doGHS ? match(ctagged_pseudojetsGHS, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
525 std::vector<std::vector<const PseudoJet*>> jetlabelSDF_b = doSDF ? match(btagged_pseudojetsSDF, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
526 std::vector<std::vector<const PseudoJet*>> jetlabelSDF_c = doSDF ? match(ctagged_pseudojetsSDF, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
527 std::vector<std::vector<const PseudoJet*>> jetlabelAKT_b = doAKT ? match(btagged_pseudojetsAKT, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
528 std::vector<std::vector<const PseudoJet*>> jetlabelAKT_c = doAKT ? match(ctagged_pseudojetsAKT, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
529
530 for (unsigned int iJet = 0; iJet < jets.size(); iJet++) {
531 const Jet& jet = *jets[iJet];
532 if (jet.pt() < m_jetPtMin.value()) {
533 m_ircsafelabeldecs->IFNsingleint(jet) = LABEL_DISABLED;
534 m_ircsafelabeldecs->CMPsingleint(jet) = LABEL_DISABLED;
535 m_ircsafelabeldecs->GHSsingleint(jet) = LABEL_DISABLED;
536 m_ircsafelabeldecs->SDFsingleint(jet) = LABEL_DISABLED;
537 m_ircsafelabeldecs->AKTsingleint(jet) = LABEL_DISABLED;
538 continue;
539 }
540
541 ParticleJetTools::Tag_PseudoJets tag_pjet;
542 tag_pjet.IFN_b = jetlabelIFN_b[iJet];
543 tag_pjet.IFN_c = jetlabelIFN_c[iJet];
544 tag_pjet.CMP_b = jetlabelCMP_b[iJet];
545 tag_pjet.CMP_c = jetlabelCMP_c[iJet];
546 tag_pjet.GHS_b = jetlabelGHS_b[iJet];
547 tag_pjet.GHS_c = jetlabelGHS_c[iJet];
548 tag_pjet.SDF_b = jetlabelSDF_b[iJet];
549 tag_pjet.SDF_c = jetlabelSDF_c[iJet];
550 tag_pjet.AKT_b = jetlabelAKT_b[iJet];
551 tag_pjet.AKT_c = jetlabelAKT_c[iJet];
552
553 setJetIRCSafeLabels(jet, tag_pjet, *m_ircsafelabeldecs, doIFN, doCMP, doGHS, doSDF, doAKT);
554 }
555
556 return StatusCode::SUCCESS;
557}
#define ATH_MSG_ERROR(x,...)
void setJetIRCSafeLabels(const xAOD::Jet &jet, const ParticleJetTools::Tag_PseudoJets &tag_pjets, const ParticleJetTools::IRCSafeLabelDecorators &decs, bool doIFN, bool doCMP, bool doGHS, bool doSDF, bool doAKT)
static void extractTaggedJets(const std::vector< fastjet::PseudoJet > &pseudojets, std::vector< fastjet::PseudoJet > &btagged, std::vector< fastjet::PseudoJet > &ctagged)
size_t size() const
Number of registered mappings.
bool doAlgo(Algo a) const
Convenience function to check if an algorithm is enabled.
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_bottomPartCollectionKey
Read handles for truth particle collections.
std::vector< std::vector< const fastjet::PseudoJet * > > match(std::vector< fastjet::PseudoJet > &tagged_jets, const xAOD::JetContainer &jets) const
Match truth-level pseudo-jets to reconstructed jets.
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_outTruthPartKey
static constexpr int LABEL_DISABLED
@ GHS
Gauld-Huss-Stagnitto flavour dressing.
@ CMP
Czakon-Mitov-Poncelet algorithm.
@ AKT
Anti-kt with net flavour (NOT IRC-safe, for comparison).
@ SDF
SDFlav algorithm (Marzani et al.).
@ IFN
Interleaved Flavour Neutralisation.
Gaudi::Property< double > m_jetPtMin
std::vector< std::vector< fastjet::PseudoJet > > getJetInputs(const xAOD::TruthParticleContainer &parts, const xAOD::TruthParticleContainer &label_bs, const xAOD::TruthParticleContainer &label_cs) const
Collect truth particles and cluster them into jets using the enabled algorithms.
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_charmPartCollectionKey
std::unique_ptr< ParticleJetTools::IRCSafeLabelDecorators > m_ircsafelabeldecs
const
helper method to get the collection index (into m_inputCollectionsName) and tuple index (into m_tuple...
Jet_v1 Jet
Definition of the current "jet version".
std::vector< const fastjet::PseudoJet * > CMP_b
std::vector< const fastjet::PseudoJet * > CMP_c
std::vector< const fastjet::PseudoJet * > AKT_b
std::vector< const fastjet::PseudoJet * > AKT_c
std::vector< const fastjet::PseudoJet * > IFN_b
std::vector< const fastjet::PseudoJet * > GHS_b
std::vector< const fastjet::PseudoJet * > SDF_c
std::vector< const fastjet::PseudoJet * > IFN_c
std::vector< const fastjet::PseudoJet * > SDF_b
std::vector< const fastjet::PseudoJet * > GHS_c

◆ 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.

◆ doAlgo()

bool JetIRCSafeLabelTool::doAlgo ( Algo a) const
inlineprotected

Convenience function to check if an algorithm is enabled.

Definition at line 125 of file JetIRCSafeLabelTool.h.

125{ return m_doAlgo[static_cast<std::size_t>(a)]; }
static Double_t a
std::array< bool, N_ALGOS > m_doAlgo
Compact array storing enabled algorithms (true = enabled).

◆ 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

◆ getJetInputs()

std::vector< std::vector< PseudoJet > > JetIRCSafeLabelTool::getJetInputs ( const xAOD::TruthParticleContainer & parts,
const xAOD::TruthParticleContainer & label_bs,
const xAOD::TruthParticleContainer & label_cs ) const
protected

Collect truth particles and cluster them into jets using the enabled algorithms.

Definition at line 196 of file JetIRCSafeLabelTool.cxx.

199 {
200
201 // Collect all particles needed
202 std::vector<const TruthParticle*> truthparts(parts.begin(), parts.end());
203 std::vector<const TruthParticle*> bs(label_bs.begin(), label_bs.end());
204 std::vector<const TruthParticle*> cs(label_cs.begin(), label_cs.end());
205
206 // Remove all children of B and D hadrons
208 childrenRemoved(bs, bs);
209 childrenRemoved(bs, cs);
210 childrenRemoved(bs, truthparts);
211 childrenRemoved(cs, cs);
212 childrenRemoved(cs, truthparts);
213
214 // Add original B and D hadrons to the truth particles
215 truthparts.insert(truthparts.end(), bs.begin(), bs.end());
216 truthparts.insert(truthparts.end(), cs.begin(), cs.end());
217
218 // Now, create the PseudoJet event from them
219 std::vector<PseudoJet> fullevent(truthparts.size());
220 for (unsigned int ip = 0; ip < truthparts.size(); ip++) {
221 const TruthParticle* part = truthparts[ip];
222 double px = part->px();
223 double py = part->py();
224 double pz = part->pz();
225 double E = part->e();
226 fullevent[ip] = PseudoJet(px,py,pz,E);
227 FlavInfo partFlavInfo = HeavyFlavourContent(part->pdgId());
228 // fastjet sets a weird example to take ownership.
229 // But we don't have a better option than using their interface the way it's designed.
230 fullevent[ip].set_user_info(new FlavInfo(partFlavInfo));
231 }
232
233 std::array< std::vector<PseudoJet>, N_ALGOS > all_pseudojets_array{};
234
235 bool doIFN = doAlgo(Algo::IFN);
236 bool doCMP = doAlgo(Algo::CMP);
237 bool doGHS = doAlgo(Algo::GHS);
238 bool doSDF = doAlgo(Algo::SDF);
239 bool doAKT = doAlgo(Algo::AKT);
240
241 // If no algorithms enabled, return empty vector
242 if (!(doIFN || doCMP || doGHS || doSDF || doAKT)) {
243 std::vector<std::vector<PseudoJet>> empty_result;
244 empty_result.resize(N_ALGOS);
245 return empty_result;
246 }
247
248 const Selector& selectpt = *m_selectPt;
249 const FlavRecombiner& flav_recombiner = *m_flavRecombiner;
250 const JetDefinition& akt_jet_def = *m_aktJetDef;
251
252 if (doIFN) {
253 const JetDefinition& ifn_jet_def = *m_ifnJetDef;
254 all_pseudojets_array[static_cast<std::size_t>(Algo::IFN)] = selectpt(ifn_jet_def(fullevent));
255 }
256
257 if (doCMP) {
258 const JetDefinition& cmp_jet_def = *m_cmpJetDef;
259 all_pseudojets_array[static_cast<std::size_t>(Algo::CMP)] = selectpt(cmp_jet_def(fullevent));
260 }
261
262 std::vector<PseudoJet> base_jets;
263 if (doAKT || doGHS || doSDF) {
264 base_jets = selectpt(akt_jet_def(fullevent));
265 }
266
267 // GHS parameters using class constants
268 if (doGHS) {
269 all_pseudojets_array[static_cast<std::size_t>(Algo::GHS)] =
270 run_GHS(base_jets, GHS_PT_CUT, GHS_ALPHA, GHS_OMEGA, flav_recombiner);
271 }
272
273 if (doSDF) {
274 SDFlavourCalc sdFlavCalc;
275 std::vector<PseudoJet> SDF_jets = base_jets;
276 sdFlavCalc(SDF_jets);
277 all_pseudojets_array[static_cast<std::size_t>(Algo::SDF)] = std::move(SDF_jets);
278 }
279
280 if (doAKT) {
281 // Copy base_jets instead of moving, as it may be used by GHS and SDF
282 all_pseudojets_array[static_cast<std::size_t>(Algo::AKT)] = std::move(base_jets);
283 }
284
285 std::vector<std::vector<PseudoJet>> all_pseudojets;
286 all_pseudojets.reserve(N_ALGOS);
287 for (std::size_t i = 0; i < N_ALGOS; ++i) {
288 all_pseudojets.push_back(std::move(all_pseudojets_array[i]));
289 }
290
291 return all_pseudojets;
292}
FlavInfo HeavyFlavourContent(int pdgId)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
static constexpr std::size_t N_ALGOS
std::unique_ptr< fastjet::contrib::FlavRecombiner > m_flavRecombiner
static constexpr double GHS_OMEGA
std::unique_ptr< fastjet::JetDefinition > m_aktJetDef
std::unique_ptr< fastjet::JetDefinition > m_cmpJetDef
std::unique_ptr< fastjet::JetDefinition > m_ifnJetDef
std::unique_ptr< fastjet::Selector > m_selectPt
FastJet configuration cached at initialize to avoid per-event allocations.
static constexpr double GHS_PT_CUT
static constexpr double GHS_ALPHA
void childrenRemoved(const std::vector< const xAOD::TruthParticle * > &parents, std::vector< const xAOD::TruthParticle * > &children)
TruthParticle_v1 TruthParticle
Typedef to implementation.

◆ 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()

◆ 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 }

◆ getProperty()

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

Get one of the tool's properties.

◆ initialize()

StatusCode JetIRCSafeLabelTool::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...

Reimplemented from asg::AsgTool.

Definition at line 317 of file JetIRCSafeLabelTool.cxx.

317 {
318
319 ATH_MSG_DEBUG(" Initializing... ");
320
321 // Initialize truth jet inputs key
322 ATH_CHECK(m_outTruthPartKey.initialize());
325
326 // Update label names from properties
327 m_ircsafelabelnames.IFNsingleint = m_labelNameIFN.value();
328 m_ircsafelabelnames.CMPsingleint = m_labelNameCMP.value();
329 m_ircsafelabelnames.GHSsingleint = m_labelNameGHS.value();
330 m_ircsafelabelnames.SDFsingleint = m_labelNameSDF.value();
331 m_ircsafelabelnames.AKTsingleint = m_labelNameAKT.value();
332
333 // Build decorators using updated label names
335 std::make_unique<ParticleJetTools::IRCSafeLabelDecorators>(m_ircsafelabelnames);
336
337 // Initialize all algorithms to false
338 m_doAlgo.fill(false);
339
340 // Parse enabled algorithm names from configuration
341 for (const auto& name : m_enabledAlgorithms.value()) {
342 std::string lowerName = toLower(name);
343 bool found = false;
344
345 for (std::size_t i = 0; i < N_ALGOS; ++i) {
346 if (toLower(ALGO_NAMES[i]) == lowerName) {
347 m_doAlgo[i] = true;
348 found = true;
349 break;
350 }
351 }
352
353 if (!found) {
354 ATH_MSG_WARNING("Unknown algorithm in EnabledAlgorithms: " << name);
355 }
356 }
357
358 // Check if any algorithm is enabled
359 bool anyEnabled = false;
360 for (bool enabled : m_doAlgo) {
361 if (enabled) {
362 anyEnabled = true;
363 break;
364 }
365 }
366
367 if (!anyEnabled) {
368 ATH_MSG_WARNING("EnabledAlgorithms is empty; no IRCSafe labelling will be performed.");
369 return StatusCode::SUCCESS;
370 }
371
372 bool doIFN = doAlgo(Algo::IFN);
373 bool doCMP = doAlgo(Algo::CMP);
374
375 // Build FastJet objects using property values
376 m_selectPt = std::make_unique<Selector>(SelectorPtMin(m_truthJetPtMin.value()));
377 m_flavRecombiner = std::make_unique<FlavRecombiner>(FlavRecombiner::net);
378 m_aktJetDef = std::make_unique<JetDefinition>(antikt_algorithm, m_truthR.value());
379 m_aktJetDef->set_recombiner(m_flavRecombiner.get());
380
381 // Interleaved flavour neutralisation - IFN (2306.07314)
382 if (doIFN) {
384 *m_aktJetDef, IFN_RFACTOR, IFN_BETA, FlavRecombiner::net
385 );
386 }
387
388 // Czakon, Mitov, Poncelet (CMP) algorithm - flavour anti-kt (2205.11879)
389 if (doCMP) {
391 m_truthR.value(), CMP_A,
392 CMPPlugin::CorrectionType::OverAllCoshyCosPhi_a2,
393 CMPPlugin::ClusteringType::DynamicKtMax
394 );
395 m_cmpJetDef->set_recombiner(m_flavRecombiner.get());
396 }
397
398 return StatusCode::SUCCESS;
399}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_WARNING(x,...)
std::unique_ptr< fastjet::JetDefinition > makeJetDefWithPlugin(Args &&... args)
static constexpr std::array< const char *, JetIRCSafeLabelTool::N_ALGOS > ALGO_NAMES
static std::string toLower(const std::string &s)
Gaudi::Property< std::vector< std::string > > m_enabledAlgorithms
Algorithm selection property.
Gaudi::Property< double > m_truthJetPtMin
Cut and configuration properties.
Gaudi::Property< std::string > m_labelNameCMP
static constexpr double IFN_BETA
static constexpr double IFN_RFACTOR
Gaudi::Property< std::string > m_labelNameGHS
Gaudi::Property< double > m_truthR
static constexpr double CMP_A
Gaudi::Property< std::string > m_labelNameIFN
Label name properties.
Gaudi::Property< std::string > m_labelNameSDF
ParticleJetTools::IRCSafeLabelNames m_ircsafelabelnames
Name of jet label attributes.
Gaudi::Property< std::string > m_labelNameAKT

◆ 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.

◆ match()

std::vector< std::vector< const PseudoJet * > > JetIRCSafeLabelTool::match ( std::vector< fastjet::PseudoJet > & tagged_jets,
const xAOD::JetContainer & jets ) const
protected

Match truth-level pseudo-jets to reconstructed jets.

Definition at line 401 of file JetIRCSafeLabelTool.cxx.

403 {
404 ATH_MSG_VERBOSE("In " << name() << "::match()");
405
406 std::vector< std::vector<const PseudoJet*> > jetlabelparts(jets.size(), std::vector<const PseudoJet*>());
407
408 // Loop over pseudojets and find the best matched jet
409 for (unsigned int i_tj = 0; i_tj < tagged_pseudojets.size(); i_tj++) {
410
411 const auto* tag_pjet = &tagged_pseudojets[i_tj];
412
413 double mindr = DBL_MAX;
414 int mindrjetidx = -1;
415
416 for (unsigned int iJet = 0; iJet < jets.size(); iJet++) {
417
418 const Jet& jet = *jets[iJet];
419
420 double pt = jet.pt();
421 if (pt < m_jetPtMin.value())
422 continue;
423
424 double drap = abs(jet.rapidity() - tag_pjet->rap());
425 double dphi = abs(jet.phi() - tag_pjet->phi());
426 if (dphi > numbers::pi) dphi = 2*numbers::pi - dphi;
427 double dr = sqrt(drap*drap + dphi*dphi);
428
429 // Too far for matching criterion
430 if (dr > m_drMax.value())
431 continue;
432
433 // Store the matched jet
434 if (dr < mindr) {
435 mindr = dr;
436 mindrjetidx = iJet;
437 }
438
439 }
440
441 // Store the label particle with the jet
442 if (mindrjetidx >= 0) {
443 jetlabelparts.at(mindrjetidx).push_back(tag_pjet);
444 }
445 }
446
447 return jetlabelparts;
448}
#define ATH_MSG_VERBOSE(x,...)
Gaudi::Property< double > m_drMax
setRcore setEtHad setFside pt

◆ 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.

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ 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

Member Data Documentation

◆ CMP_A

double JetIRCSafeLabelTool::CMP_A = 0.1
staticconstexpr

Definition at line 48 of file JetIRCSafeLabelTool.h.

◆ DEFAULT_DR_MAX

double JetIRCSafeLabelTool::DEFAULT_DR_MAX = 0.3
staticconstexpr

Definition at line 43 of file JetIRCSafeLabelTool.h.

◆ DEFAULT_RECO_JET_PT_MIN

double JetIRCSafeLabelTool::DEFAULT_RECO_JET_PT_MIN = 10000.0
staticconstexpr

Definition at line 42 of file JetIRCSafeLabelTool.h.

◆ DEFAULT_TRUTH_JET_PT_MIN

double JetIRCSafeLabelTool::DEFAULT_TRUTH_JET_PT_MIN = 5000.0
staticconstexpr

Algorithm configuration constants.

Definition at line 41 of file JetIRCSafeLabelTool.h.

◆ DEFAULT_TRUTH_R

double JetIRCSafeLabelTool::DEFAULT_TRUTH_R = 0.4
staticconstexpr

Definition at line 44 of file JetIRCSafeLabelTool.h.

◆ GHS_ALPHA

double JetIRCSafeLabelTool::GHS_ALPHA = 1.0
staticconstexpr

Definition at line 49 of file JetIRCSafeLabelTool.h.

◆ GHS_OMEGA

double JetIRCSafeLabelTool::GHS_OMEGA = 0.0
staticconstexpr

Definition at line 50 of file JetIRCSafeLabelTool.h.

◆ GHS_PT_CUT

double JetIRCSafeLabelTool::GHS_PT_CUT = 5000.0
staticconstexpr

Definition at line 51 of file JetIRCSafeLabelTool.h.

◆ IFN_BETA

double JetIRCSafeLabelTool::IFN_BETA = 2.0
staticconstexpr

Definition at line 47 of file JetIRCSafeLabelTool.h.

◆ IFN_RFACTOR

double JetIRCSafeLabelTool::IFN_RFACTOR = 1.0
staticconstexpr

Definition at line 46 of file JetIRCSafeLabelTool.h.

◆ LABEL_B

int JetIRCSafeLabelTool::LABEL_B = 5
staticconstexpr

Definition at line 53 of file JetIRCSafeLabelTool.h.

◆ LABEL_C

int JetIRCSafeLabelTool::LABEL_C = 4
staticconstexpr

Definition at line 54 of file JetIRCSafeLabelTool.h.

◆ LABEL_DISABLED

int JetIRCSafeLabelTool::LABEL_DISABLED = -99
staticconstexpr

Definition at line 56 of file JetIRCSafeLabelTool.h.

◆ LABEL_LIGHT

int JetIRCSafeLabelTool::LABEL_LIGHT = 0
staticconstexpr

Definition at line 55 of file JetIRCSafeLabelTool.h.

◆ m_aktJetDef

std::unique_ptr<fastjet::JetDefinition> JetIRCSafeLabelTool::m_aktJetDef
protected

Definition at line 120 of file JetIRCSafeLabelTool.h.

◆ m_bottomPartCollectionKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> JetIRCSafeLabelTool::m_bottomPartCollectionKey {this, "BParticleCollection", "", "ReadHandleKey for bottomPartCollection"}
protected

Read handles for truth particle collections.

Definition at line 110 of file JetIRCSafeLabelTool.h.

110{this, "BParticleCollection", "", "ReadHandleKey for bottomPartCollection"};

◆ m_charmPartCollectionKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> JetIRCSafeLabelTool::m_charmPartCollectionKey {this, "CParticleCollection", "", "ReadHandleKey for charmPartCollection"}
protected

Definition at line 111 of file JetIRCSafeLabelTool.h.

111{this, "CParticleCollection", "", "ReadHandleKey for charmPartCollection"};

◆ m_cmpJetDef

std::unique_ptr<fastjet::JetDefinition> JetIRCSafeLabelTool::m_cmpJetDef
protected

Definition at line 122 of file JetIRCSafeLabelTool.h.

◆ 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_doAlgo

std::array<bool, N_ALGOS> JetIRCSafeLabelTool::m_doAlgo {}
protected

Compact array storing enabled algorithms (true = enabled).

Definition at line 115 of file JetIRCSafeLabelTool.h.

115{};

◆ m_drMax

Gaudi::Property<double> JetIRCSafeLabelTool::m_drMax
protected
Initial value:
{this, "DRMax", DEFAULT_DR_MAX,
"Maximum deltaR between a particle and jet to be labeled"}
static constexpr double DEFAULT_DR_MAX

Definition at line 99 of file JetIRCSafeLabelTool.h.

99 {this, "DRMax", DEFAULT_DR_MAX,
100 "Maximum deltaR between a particle and jet to be labeled"};

◆ m_enabledAlgorithms

Gaudi::Property<std::vector<std::string> > JetIRCSafeLabelTool::m_enabledAlgorithms
protected
Initial value:
{this, "EnabledAlgorithms",
{"IFN", "CMP", "GHS", "SDF", "AKT"},
"Subset of IRCSafe algorithms to run (IFN, CMP, GHS, SDF, AKT)"}

Algorithm selection property.

Definition at line 90 of file JetIRCSafeLabelTool.h.

90 {this, "EnabledAlgorithms",
91 {"IFN", "CMP", "GHS", "SDF", "AKT"},
92 "Subset of IRCSafe algorithms to run (IFN, CMP, GHS, SDF, AKT)"};

◆ 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_flavRecombiner

std::unique_ptr<fastjet::contrib::FlavRecombiner> JetIRCSafeLabelTool::m_flavRecombiner
protected

Definition at line 119 of file JetIRCSafeLabelTool.h.

◆ m_ifnJetDef

std::unique_ptr<fastjet::JetDefinition> JetIRCSafeLabelTool::m_ifnJetDef
protected

Definition at line 121 of file JetIRCSafeLabelTool.h.

◆ m_ircsafelabeldecs

std::unique_ptr<ParticleJetTools::IRCSafeLabelDecorators> JetIRCSafeLabelTool::m_ircsafelabeldecs
protected

Definition at line 107 of file JetIRCSafeLabelTool.h.

◆ m_ircsafelabelnames

ParticleJetTools::IRCSafeLabelNames JetIRCSafeLabelTool::m_ircsafelabelnames
protected

Name of jet label attributes.

Definition at line 106 of file JetIRCSafeLabelTool.h.

◆ m_jetPtMin

Gaudi::Property<double> JetIRCSafeLabelTool::m_jetPtMin
protected
Initial value:
{this, "JetPtMin", DEFAULT_RECO_JET_PT_MIN,
"Minimum pT of reco jets to be labeled [MeV]"}
static constexpr double DEFAULT_RECO_JET_PT_MIN

Definition at line 97 of file JetIRCSafeLabelTool.h.

97 {this, "JetPtMin", DEFAULT_RECO_JET_PT_MIN,
98 "Minimum pT of reco jets to be labeled [MeV]"};

◆ m_labelNameAKT

Gaudi::Property<std::string> JetIRCSafeLabelTool::m_labelNameAKT
protected
Initial value:
{this, "LabelNameAKT", "IRCSafeLabelAKT",
"Name of the jet label attribute to be added (anti-kt with net flavour - NOT IRC SAFE)"}

Definition at line 86 of file JetIRCSafeLabelTool.h.

86 {this, "LabelNameAKT", "IRCSafeLabelAKT",
87 "Name of the jet label attribute to be added (anti-kt with net flavour - NOT IRC SAFE)"};

◆ m_labelNameCMP

Gaudi::Property<std::string> JetIRCSafeLabelTool::m_labelNameCMP
protected
Initial value:
{this, "LabelNameCMP", "IRCSafeLabelCMP",
"Name of the jet label attribute to be added (CMP)"}

Definition at line 80 of file JetIRCSafeLabelTool.h.

80 {this, "LabelNameCMP", "IRCSafeLabelCMP",
81 "Name of the jet label attribute to be added (CMP)"};

◆ m_labelNameGHS

Gaudi::Property<std::string> JetIRCSafeLabelTool::m_labelNameGHS
protected
Initial value:
{this, "LabelNameGHS", "IRCSafeLabelGHS",
"Name of the jet label attribute to be added (GHS)"}

Definition at line 82 of file JetIRCSafeLabelTool.h.

82 {this, "LabelNameGHS", "IRCSafeLabelGHS",
83 "Name of the jet label attribute to be added (GHS)"};

◆ m_labelNameIFN

Gaudi::Property<std::string> JetIRCSafeLabelTool::m_labelNameIFN
protected
Initial value:
{this, "LabelNameIFN", "IRCSafeLabelIFN",
"Name of the jet label attribute to be added (IFN)"}

Label name properties.

Definition at line 78 of file JetIRCSafeLabelTool.h.

78 {this, "LabelNameIFN", "IRCSafeLabelIFN",
79 "Name of the jet label attribute to be added (IFN)"};

◆ m_labelNameSDF

Gaudi::Property<std::string> JetIRCSafeLabelTool::m_labelNameSDF
protected
Initial value:
{this, "LabelNameSDF", "IRCSafeLabelSDF",
"Name of the jet label attribute to be added (SDF, Marzani et al.)"}

Definition at line 84 of file JetIRCSafeLabelTool.h.

84 {this, "LabelNameSDF", "IRCSafeLabelSDF",
85 "Name of the jet label attribute to be added (SDF, Marzani et al.)"};

◆ m_outTruthPartKey

SG::ReadHandleKey<xAOD::TruthParticleContainer> JetIRCSafeLabelTool::m_outTruthPartKey {this, "TruthParticleCollection", "", "ReadHandleKey of the TruthParticle collection"}
protected

Definition at line 112 of file JetIRCSafeLabelTool.h.

112{this, "TruthParticleCollection", "", "ReadHandleKey of the TruthParticle collection"};

◆ m_selectPt

std::unique_ptr<fastjet::Selector> JetIRCSafeLabelTool::m_selectPt
protected

FastJet configuration cached at initialize to avoid per-event allocations.

Definition at line 118 of file JetIRCSafeLabelTool.h.

◆ m_truthJetPtMin

Gaudi::Property<double> JetIRCSafeLabelTool::m_truthJetPtMin
protected
Initial value:
{this, "TruthJetPtMin", DEFAULT_TRUTH_JET_PT_MIN,
"Minimum pT of truth jets that are matched to reco for labeling [MeV]"}
static constexpr double DEFAULT_TRUTH_JET_PT_MIN
Algorithm configuration constants.

Cut and configuration properties.

Definition at line 95 of file JetIRCSafeLabelTool.h.

95 {this, "TruthJetPtMin", DEFAULT_TRUTH_JET_PT_MIN,
96 "Minimum pT of truth jets that are matched to reco for labeling [MeV]"};

◆ m_truthR

Gaudi::Property<double> JetIRCSafeLabelTool::m_truthR
protected
Initial value:
{this, "TruthR", DEFAULT_TRUTH_R,
"Radius with which truth particles will be clustered when determining the flavour "
"(should be equal to the radius of the tagged jets)"}
static constexpr double DEFAULT_TRUTH_R

Definition at line 101 of file JetIRCSafeLabelTool.h.

101 {this, "TruthR", DEFAULT_TRUTH_R,
102 "Radius with which truth particles will be clustered when determining the flavour "
103 "(should be equal to the radius of the tagged jets)"};

◆ 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.

◆ N_ALGOS

std::size_t JetIRCSafeLabelTool::N_ALGOS = static_cast<std::size_t>(Algo::COUNT)
staticconstexpr

Definition at line 38 of file JetIRCSafeLabelTool.h.


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