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::IRCSafeLabelDecoratorsm_ircsafelabeldecs
SG::ReadHandleKey< xAOD::TruthParticleContainerm_bottomPartCollectionKey {this, "BParticleCollection", "", "ReadHandleKey for bottomPartCollection"}
 Read handles for truth particle collections.
SG::ReadHandleKey< xAOD::TruthParticleContainerm_charmPartCollectionKey {this, "CParticleCollection", "", "ReadHandleKey for charmPartCollection"}
SG::ReadHandleKey< xAOD::TruthParticleContainerm_outTruthPartKey {this, "TruthParticleCollection", "", "ReadHandleKey of the TruthParticle collection"}
std::array< bool, N_ALGOSm_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< 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

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 193 of file JetIRCSafeLabelTool.cxx.

193: 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 449 of file JetIRCSafeLabelTool.cxx.

449 {
450
451 // Retrieve truth particle collections
452 SG::ReadHandle<xAOD::TruthParticleContainer> truthPartReadHandle(m_outTruthPartKey);
453 SG::ReadHandle<xAOD::TruthParticleContainer> bottomReadHandle(m_bottomPartCollectionKey);
454 SG::ReadHandle<xAOD::TruthParticleContainer> charmReadHandle(m_charmPartCollectionKey);
455
456 if (!truthPartReadHandle.isValid()) {
457 ATH_MSG_ERROR("Invalid ReadHandle for TruthParticleCollection with key: " << truthPartReadHandle.key());
458 return StatusCode::FAILURE;
459 }
460 if (!bottomReadHandle.isValid()) {
461 ATH_MSG_ERROR("Invalid ReadHandle for bottomPartCollection with key: " << bottomReadHandle.key());
462 return StatusCode::FAILURE;
463 }
464 if (!charmReadHandle.isValid()) {
465 ATH_MSG_ERROR("Invalid ReadHandle for charmPartCollection with key: " << charmReadHandle.key());
466 return StatusCode::FAILURE;
467 }
468
469 // Get algorithm flags
470 bool doIFN = doAlgo(Algo::IFN);
471 bool doCMP = doAlgo(Algo::CMP);
472 bool doGHS = doAlgo(Algo::GHS);
473 bool doSDF = doAlgo(Algo::SDF);
474 bool doAKT = doAlgo(Algo::AKT);
475
476 // Get all pseudo-jets from enabled algorithms
477 std::vector<std::vector<PseudoJet>> all_pseudojets =
478 getJetInputs(*truthPartReadHandle, *bottomReadHandle, *charmReadHandle);
479
480 // Extract b- and c-tagged jets for each algorithm
481 std::vector<PseudoJet> btagged_pseudojetsIFN, ctagged_pseudojetsIFN;
482 std::vector<PseudoJet> btagged_pseudojetsCMP, ctagged_pseudojetsCMP;
483 std::vector<PseudoJet> btagged_pseudojetsGHS, ctagged_pseudojetsGHS;
484 std::vector<PseudoJet> btagged_pseudojetsSDF, ctagged_pseudojetsSDF;
485 std::vector<PseudoJet> btagged_pseudojetsAKT, ctagged_pseudojetsAKT;
486
487 // Extract IFN jets
488 if (doIFN && all_pseudojets.size() > static_cast<std::size_t>(Algo::IFN)) {
489 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::IFN)],
490 btagged_pseudojetsIFN, ctagged_pseudojetsIFN);
491 }
492
493 // Extract CMP jets
494 if (doCMP && all_pseudojets.size() > static_cast<std::size_t>(Algo::CMP)) {
495 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::CMP)],
496 btagged_pseudojetsCMP, ctagged_pseudojetsCMP);
497 }
498
499 // Extract GHS jets
500 if (doGHS && all_pseudojets.size() > static_cast<std::size_t>(Algo::GHS)) {
501 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::GHS)],
502 btagged_pseudojetsGHS, ctagged_pseudojetsGHS);
503 }
504
505 // Extract SDF jets
506 if (doSDF && all_pseudojets.size() > static_cast<std::size_t>(Algo::SDF)) {
507 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::SDF)],
508 btagged_pseudojetsSDF, ctagged_pseudojetsSDF);
509 }
510
511 // Extract AKT jets
512 if (doAKT && all_pseudojets.size() > static_cast<std::size_t>(Algo::AKT)) {
513 extractTaggedJets(all_pseudojets[static_cast<std::size_t>(Algo::AKT)],
514 btagged_pseudojetsAKT, ctagged_pseudojetsAKT);
515 }
516
517 // Match the tagged pseudojets to reco jets
518 std::vector<std::vector<const PseudoJet*>> jetlabelIFN_b = doIFN ? match(btagged_pseudojetsIFN, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
519 std::vector<std::vector<const PseudoJet*>> jetlabelIFN_c = doIFN ? match(ctagged_pseudojetsIFN, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
520 std::vector<std::vector<const PseudoJet*>> jetlabelCMP_b = doCMP ? match(btagged_pseudojetsCMP, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
521 std::vector<std::vector<const PseudoJet*>> jetlabelCMP_c = doCMP ? match(ctagged_pseudojetsCMP, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
522 std::vector<std::vector<const PseudoJet*>> jetlabelGHS_b = doGHS ? match(btagged_pseudojetsGHS, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
523 std::vector<std::vector<const PseudoJet*>> jetlabelGHS_c = doGHS ? match(ctagged_pseudojetsGHS, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
524 std::vector<std::vector<const PseudoJet*>> jetlabelSDF_b = doSDF ? match(btagged_pseudojetsSDF, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
525 std::vector<std::vector<const PseudoJet*>> jetlabelSDF_c = doSDF ? match(ctagged_pseudojetsSDF, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
526 std::vector<std::vector<const PseudoJet*>> jetlabelAKT_b = doAKT ? match(btagged_pseudojetsAKT, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
527 std::vector<std::vector<const PseudoJet*>> jetlabelAKT_c = doAKT ? match(ctagged_pseudojetsAKT, jets) : std::vector<std::vector<const PseudoJet*>>(jets.size());
528
529 for (unsigned int iJet = 0; iJet < jets.size(); iJet++) {
530 const Jet& jet = *jets[iJet];
531 if (jet.pt() < m_jetPtMin.value()) {
532 m_ircsafelabeldecs->IFNsingleint(jet) = LABEL_DISABLED;
533 m_ircsafelabeldecs->CMPsingleint(jet) = LABEL_DISABLED;
534 m_ircsafelabeldecs->GHSsingleint(jet) = LABEL_DISABLED;
535 m_ircsafelabeldecs->SDFsingleint(jet) = LABEL_DISABLED;
536 m_ircsafelabeldecs->AKTsingleint(jet) = LABEL_DISABLED;
537 continue;
538 }
539
540 ParticleJetTools::Tag_PseudoJets tag_pjet;
541 tag_pjet.IFN_b = jetlabelIFN_b[iJet];
542 tag_pjet.IFN_c = jetlabelIFN_c[iJet];
543 tag_pjet.CMP_b = jetlabelCMP_b[iJet];
544 tag_pjet.CMP_c = jetlabelCMP_c[iJet];
545 tag_pjet.GHS_b = jetlabelGHS_b[iJet];
546 tag_pjet.GHS_c = jetlabelGHS_c[iJet];
547 tag_pjet.SDF_b = jetlabelSDF_b[iJet];
548 tag_pjet.SDF_c = jetlabelSDF_c[iJet];
549 tag_pjet.AKT_b = jetlabelAKT_b[iJet];
550 tag_pjet.AKT_c = jetlabelAKT_c[iJet];
551
552 setJetIRCSafeLabels(jet, tag_pjet, *m_ircsafelabeldecs, doIFN, doCMP, doGHS, doSDF, doAKT);
553 }
554
555 return StatusCode::SUCCESS;
556}
#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
virtual double pt() const
transverse momentum
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 195 of file JetIRCSafeLabelTool.cxx.

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

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

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