ATLAS Offline Software
Loading...
Searching...
No Matches
EventReco::RunHyPERAlg Class Referencefinal

This class is in charge of building the HyPER graph and running the HyPER algorithm: The user-inputs are: More...

#include <RunHyPERAlg.h>

Inheritance diagram for EventReco::RunHyPERAlg:

Public Types

using MetaStorePtr_t = ServiceHandle< StoreGateSvc >&
 Type of the metadata store pointer in Athena.
using ConstMetaStorePtr_t = const ServiceHandle< StoreGateSvc >&
using MetaStore_t = ServiceHandle< StoreGateSvc >
 Type of the metadata store variable in Athena.

Public Member Functions

virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) override
 execute this algorithm
virtual StatusCode finalize () override
StatusCode buildGraph ()
 These methods build the HyPER graph based on the user-input topology.
StatusCode buildTtbarAllHadronicGraph ()
StatusCode buildTtbarLJetsGraph ()
StatusCode buildTtbarDiLeptonGraph ()
bool buildDileptonPartialCandidate (const std::vector< int > &indicesindices, const std::vector< int > &ids, PtEtaPhiMVector &bJetP4, PtEtaPhiMVector &leptonP4, float &analyserCharge) const
void buildTopP4TtbarAllHadronic (const std::vector< int > &topIndices, const std::vector< int > &wIndices, PtEtaPhiMVector &top_b_p4, PtEtaPhiMVector &top_W_decay0_p4, PtEtaPhiMVector &top_W_decay1_p4)
void buildTopP4TtbarLJets (const std::vector< int > &topHadIndices, const std::vector< int > &wHadIndices, const std::vector< int > &topLepIndices, const std::vector< int > &topLepIDs, PtEtaPhiMVector &tophad_b_p4, PtEtaPhiMVector &tophad_w_decay0_p4, PtEtaPhiMVector &tophad_w_decay1_p4, PtEtaPhiMVector &toplep_b_p4, PtEtaPhiMVector &toplep_lep_p4)
 AnaAlgorithm (const std::string &name, ISvcLocator *pSvcLocator)
 constructor with parameters
::StatusCode requestFileExecute ()
 register this algorithm to have an implementation of fileexecute
::StatusCode requestBeginInputFile ()
 register this algorithm to have an implementation of beginInputFile
::StatusCode requestEndInputFile ()
 register this algorithm to have an implementation of endInputFile
void handle (const Incident &inc)
 receive the given incident
virtual StatusCode sysInitialize ()
 Initialization method invoked by the framework.
const ServiceHandle< ITHistSvc > & histSvc () const
 The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a pointer to the THistSvc.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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 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
ConstMetaStorePtr_t inputMetaStore () const
MetaStorePtr_t inputMetaStore ()
ConstMetaStorePtr_t outputMetaStore () const
MetaStorePtr_t outputMetaStore ()

Protected Member Functions

virtual::StatusCode execute ()
 execute this algorithm
virtual void print () const
 print the state of the algorithm
virtual::StatusCode fileExecute ()
 perform the action exactly once for each file in the dataset
virtual::StatusCode beginInputFile ()
 perform the action for the beginning of an input file
virtual::StatusCode endInputFile ()
 perform the action for the end of an input file
virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
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.
StatusCode configAthHistogramming (const ServiceHandle< ITHistSvc > &histSvc, const std::string &prefix, const std::string &rootDir, const std::string &histNamePrefix, const std::string &histNamePostfix, const std::string &histTitlePrefix, const std::string &histTitlePostfix)
 To be called by the derived classes to fill the internal configuration.
TH1 * bookGetPointer (const TH1 &hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
TH1 * bookGetPointer (TH1 *hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
TH1 * bookGetPointer (TH1 &histRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
TTree * bookGetPointer (const TTree &treeRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TTrees.
TGraph * bookGetPointer (const TGraph &graphRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TGraphs.
TEfficiency * bookGetPointer (const TEfficiency &eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
TEfficiency * bookGetPointer (TEfficiency *eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
TEfficiency * bookGetPointer (TEfficiency &effRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
StatusCode book (const TH1 &hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
StatusCode book (TH1 *hist, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
StatusCode book (TH1 &histRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of histograms.
StatusCode book (const TTree &treeRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TTrees.
StatusCode book (const TGraph &graphRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TGraphs.
StatusCode book (const TEfficiency &eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
StatusCode book (TEfficiency *eff, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
StatusCode book (TEfficiency &effRef, const std::string &tDir="", const std::string &stream="")
 Simplify the booking and registering (into THistSvc) of TEfficiency.
TH1 * hist (std::string_view histName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered histograms of any type.
TH2 * hist2d (std::string_view histName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered 2-d histograms.
TH3 * hist3d (std::string_view histName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered 3-d histograms.
TTree * tree (const std::string &treeName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered TTrees.
TGraph * graph (const std::string &graphName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered TGraphs.
TEfficiency * efficiency (const std::string &effName, const std::string &tDir="", const std::string &stream="")
 Simplify the retrieval of registered TEfficiency.

Private Types

typedef ServiceHandle< StoreGateSvc > StoreGateSvc_t
typedef uint32_t hash_t
 typedef for the internal hash
typedef std::map< const hash_t, TH1 * > HistMap_t
 Typedef for convenience.
typedef std::map< const hash_t, TEfficiency * > EffMap_t
 Typedef for convenience.
typedef std::map< const hash_t, TTree * > TreeMap_t
 Typedef for convenience.
typedef std::map< const hash_t, TGraph * > GraphMap_t
 Typedef for convenience.

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>
std::string buildBookingString (std::string_view histName, std::string_view tDir, std::string_view stream, bool usePrefixPostfix=false) const
 Method to build individual booking string.
hash_t hash (std::string_view histName) const
 Method to calculate a 32-bit hash from a string.

Private Attributes

Gaudi::Property< std::string > m_topology
Gaudi::Property< std::string > m_btagger
std::string m_btagDecorName
ToolHandle< AthOnnx::IOnnxRuntimeInferenceTool > m_onnxToolTrainedOnEven
ToolHandle< AthOnnx::IOnnxRuntimeInferenceTool > m_onnxToolTrainedOnOdd
std::unique_ptr< HyPERModel > m_hyperModel
std::unique_ptr< HyPERGraph > m_hyperGraph
InputsPack m_hyperInputs {}
std::unique_ptr< HyPERParser > m_hyperParser
Gaudi::Property< long unsigned int > m_fullLogEventNumber
HyPERTopology m_hyperTopology {HyPERTopology::NotSelected}
bool m_ljetsUseBTag {false}
CP::SysListHandle m_systematicsList {this}
CP::SysReadHandle< xAOD::ElectronContainer > m_electronsHandle
CP::SysReadSelectionHandle m_electronSelection
CP::SysReadHandle< xAOD::MuonContainer > m_muonsHandle
CP::SysReadSelectionHandle m_muonSelection
CP::SysReadHandle< xAOD::JetContainer > m_jetsHandle
CP::SysReadSelectionHandle m_jetSelection
CP::SysReadHandle< xAOD::MissingETContainer > m_metHandle
CP::SysReadHandle< xAOD::EventInfo > m_eventInfoHandle
CP::SysReadSelectionHandle m_selection
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_Top1_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_Top2_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_W1_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_W2_Indices
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_Top1_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_Top2_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_W1_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_W2_Score
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_Wplus_decay0_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_Wplus_decay1_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_Wminus_decay0_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_Wminus_decay1_p4
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_Classification_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopHad_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopLep_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_WHad_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_WLep_Indices
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_TopHad_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_TopLep_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_WHad_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_WLep_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopHad_IDs
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopLep_IDs
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_toplep_b_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_toplep_lep_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_tophad_b_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_tophad_w_decay0_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_tophad_w_decay1_p4
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_Classification_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top1_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top2_Indices
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_Top1_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_Top2_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top1_IDs
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top2_IDs
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_HE_Score
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_b_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_bbar_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_lep_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_lepbar_p4
std::unique_ptr< SG::ConstAccessor< int > > m_bTagDecoAcc
MetaStore_t m_inputMetaStore
 Object accessing the input metadata store.
MetaStore_t m_outputMetaStore
 Object accessing the output metadata store.
bool m_hasFileExecute {false}
 the value of hasFileExecute
bool m_hasBeginInputFile {false}
 the value of hasBeginInputFile
bool m_hasEndInputFile {false}
 the value of hasEndInputFile
ServiceHandle< ITHistSvc > m_histSvc
 Default constructor: AthHistogramAlgorithm();.
std::string m_prefix
 Name of the ROOT output stream (file).
std::string m_rootDir
 Name of the ROOT directory.
std::string m_histNamePrefix
 The prefix for the histogram THx name.
std::string m_histNamePostfix
 The postfix for the histogram THx name.
std::string m_histTitlePrefix
 The prefix for the histogram THx title.
std::string m_histTitlePostfix
 The postfix for the histogram THx title.
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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
HistMap_t m_histMap
 The map of histogram names to their pointers.
EffMap_t m_effMap
 The map of histogram names to their pointers.
TreeMap_t m_treeMap
 The map of TTree names to their pointers.
GraphMap_t m_graphMap
 The map of TGraph names to their pointers.
std::string m_streamName
 Name of the ROOT output stream (file).
std::string m_name
 Instance name.
MsgStream m_msg
 Cached Message Stream.

Detailed Description

This class is in charge of building the HyPER graph and running the HyPER algorithm: The user-inputs are:

  • The HyPER topology
  • The b-tagger to use
  • The object containers to use
  • The event selection
  • The algortithm debug level. Apart from the usual handles to the xAOD containers and tools, the class stores pointers to:
  • The HyPER ONNX model to be used -> Implemented in HyPER<TOPOLOGY>Model.h
  • The graph class -> Implemented in HyPERGraph.h
  • A parser object -> Implemented in HyPER<TOPOLOGY>Parser.h

Definition at line 77 of file RunHyPERAlg.h.

Member Typedef Documentation

◆ ConstMetaStorePtr_t

Definition at line 112 of file AnaAlgorithm.h.

◆ EffMap_t

typedef std::map< const hash_t, TEfficiency* > AthHistogramming::EffMap_t
privateinherited

Typedef for convenience.

Definition at line 199 of file AthHistogramming.h.

◆ GraphMap_t

typedef std::map< const hash_t, TGraph* > AthHistogramming::GraphMap_t
privateinherited

Typedef for convenience.

Definition at line 213 of file AthHistogramming.h.

◆ hash_t

typedef uint32_t AthHistogramming::hash_t
privateinherited

typedef for the internal hash

Definition at line 171 of file AthHistogramming.h.

◆ HistMap_t

typedef std::map< const hash_t, TH1* > AthHistogramming::HistMap_t
privateinherited

Typedef for convenience.

Definition at line 192 of file AthHistogramming.h.

◆ MetaStore_t

Type of the metadata store variable in Athena.

Definition at line 564 of file AnaAlgorithm.h.

◆ MetaStorePtr_t

Type of the metadata store pointer in Athena.

Definition at line 111 of file AnaAlgorithm.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

◆ TreeMap_t

typedef std::map< const hash_t, TTree* > AthHistogramming::TreeMap_t
privateinherited

Typedef for convenience.

Definition at line 206 of file AthHistogramming.h.

Member Function Documentation

◆ AnaAlgorithm()

EL::AnaAlgorithm::AnaAlgorithm ( const std::string & name,
ISvcLocator * pSvcLocator )

constructor with parameters

This matches the Athena algorithm constructor (for dual-use purposes). Within EventLoop the pSvcLocator will always be nullptr (unless we ever have dual-use services).

Guarantee
strong
Failures
out of memory II

Definition at line 90 of file AnaAlgorithm.cxx.

47 : AsgComponent (name)
50#else
51 : AthHistogramAlgorithm (name, pSvcLocator)
52 , m_inputMetaStore ("StoreGateSvc/InputMetaDataStore", name)
53 , m_outputMetaStore ("StoreGateSvc/MetaDataStore", name)
54#endif
55 {
56#ifdef XAOD_STANDALONE
57 declareProperty ("RootStreamName", m_treeStreamName = "ANALYSIS",
58 "Name of the stream to put trees into");
59#endif
60
61 ANA_MSG_DEBUG ("AnaAlgorithm: " << name);
62 }
#define ANA_MSG_DEBUG(xmsg,...)
Macro printing debug messages.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
MetaStore_t m_outputMetaStore
Object accessing the output metadata store.
MetaStore_t m_inputMetaStore
Object accessing the input metadata store.
@ InputStore
This store is used to access the input metadata.
Definition SgEventMeta.h:50
@ OutputStore
This store is used to access the output metadata.
Definition SgEventMeta.h:51

◆ beginInputFile()

StatusCode EL::AnaAlgorithm::beginInputFile ( )
protectedinherited

perform the action for the beginning of an input file

Ideally you don't use this, but instead rely on meta-data tools instead. However, there are enough people asking for it that I decided to implement it anyways.

Warning
To use this you have to call requestBeginInputFile to use this.
If a file is split across multiple jobs this will be called more than once. This only happens for specific batch drivers and/or if it is explicitly configured by the user. With PROOF it could even happen multiple times within the same job, and while PROOF is no longer supported that behavior may come back if support for a similar framework is added in the future. As such, this method should not be used for accounting that relies to be called exactly once per file, take a look at fileExecute if you want something that is guaranteed to be executed exactly once per input file.
The execution order of beginInputFile and fileExecute is currently unspecified.

Definition at line 353 of file AnaAlgorithm.cxx.

355 {
356 return StatusCode::SUCCESS;
357 }

◆ book() [1/8]

StatusCode AthHistogramming::book ( const TEfficiency & eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 329 of file AthHistogramming.h.

330{
331 // We need to create a non-const clone
332 TEfficiency* effClone = dynamic_cast< TEfficiency* >( eff.Clone() );
333 if ( !effClone ) {
334 m_msg << MSG::ERROR << "Couldn't create a TEfficiency clone" << endmsg;
335 return StatusCode::FAILURE;
336 }
337 return this->book( *effClone, tDir, stream );
338}
#define endmsg
StatusCode book(const TH1 &hist, const std::string &tDir="", const std::string &stream="")
Simplify the booking and registering (into THistSvc) of histograms.
MsgStream m_msg
Cached Message Stream.

◆ book() [2/8]

StatusCode AthHistogramming::book ( const TGraph & graphRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TGraphs.

◆ book() [3/8]

StatusCode AthHistogramming::book ( const TH1 & hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 297 of file AthHistogramming.h.

298{
299 // We need to create a non-const clone
300 TH1* histClone = dynamic_cast< TH1* >( hist.Clone() );
301 if ( !histClone ) {
302 m_msg << MSG::ERROR << "Couldn't create a TH1 clone" << endmsg;
303 return StatusCode::FAILURE;
304 }
305 return this->book( *histClone, tDir, stream );
306}
TH1 * hist(std::string_view histName, const std::string &tDir="", const std::string &stream="")
Simplify the retrieval of registered histograms of any type.

◆ book() [4/8]

StatusCode AthHistogramming::book ( const TTree & treeRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TTrees.

Definition at line 397 of file AthHistogramming.h.

398{
399 // Call the other Book method and see if it returns a valid pointer
400 TTree* treePointer = this->bookGetPointer( treeRef, tDir, stream );
401 if ( treePointer )
402 {
403 return StatusCode::SUCCESS;
404 }
405 else
406 {
407 return StatusCode::FAILURE;
408 }
409}
TH1 * bookGetPointer(const TH1 &hist, const std::string &tDir="", const std::string &stream="")
Simplify the booking and registering (into THistSvc) of histograms.

◆ book() [5/8]

StatusCode AthHistogramming::book ( TEfficiency & effRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 350 of file AthHistogramming.h.

351{
352 // Call the other Book method and see if it returns a valid pointer
353 TEfficiency* effPointer = this->bookGetPointer( effRef, tDir, stream );
354 if ( !effPointer ) {
355 m_msg << MSG::ERROR << "Couldn't book a TEfficiency" << endmsg;
356 return StatusCode::FAILURE;
357 }
358 return StatusCode::SUCCESS;
359}

◆ book() [6/8]

StatusCode AthHistogramming::book ( TEfficiency * eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 340 of file AthHistogramming.h.

341{
342 if ( !eff ) {
343 m_msg << MSG::ERROR << "Got a zero pointer to a TEfficiency" << endmsg;
344 return StatusCode::FAILURE;
345 }
346 return this->book( *eff, tDir, stream );
347}

◆ book() [7/8]

StatusCode AthHistogramming::book ( TH1 & histRef,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 318 of file AthHistogramming.h.

319{
320 // Call the other Book method and see if it returns a valid pointer
321 TH1* histPointer = this->bookGetPointer( histRef, tDir, stream );
322 if ( !histPointer ) {
323 m_msg << MSG::ERROR << "Couldn't book a TH1" << endmsg;
324 return StatusCode::FAILURE;
325 }
326 return StatusCode::SUCCESS;
327}

◆ book() [8/8]

StatusCode AthHistogramming::book ( TH1 * hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 308 of file AthHistogramming.h.

309{
310 if ( !hist ) {
311 m_msg << MSG::ERROR << "Got a zero pointer to a TH1" << endmsg;
312 return StatusCode::FAILURE;
313 }
314 return this->book( *hist, tDir, stream );
315}

◆ bookGetPointer() [1/8]

TEfficiency * AthHistogramming::bookGetPointer ( const TEfficiency & eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 275 of file AthHistogramming.h.

276{
277 // We need to create a non-const clone
278 TEfficiency* histClone = dynamic_cast< TEfficiency* >( hist.Clone() );
279 if ( !histClone ) {
280 m_msg << MSG::ERROR << "Couldn't create a TEfficiency clone in bookGetPointer" << endmsg;
281 return 0;
282 }
283 return this->bookGetPointer( *histClone, tDir, stream );
284
285}

◆ bookGetPointer() [2/8]

TGraph * AthHistogramming::bookGetPointer ( const TGraph & graphRef,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of TGraphs.

Definition at line 374 of file AthHistogramming.cxx.

375{
376 // Get a pointer
377 const TGraph* graphPointer = &graphRef;
378
379 // Check that we got a valid pointer
380 if ( !graphPointer )
381 {
382 m_msg << MSG::WARNING
383 << "We got an invalid TGraph pointer in the BookGetPointer(TGraph*) method of the class" << m_name
384 << "!" << endmsg;
385 return NULL;
386 }
387
388 // Modify the name and title according to the prefixes of this classes instance
389 std::string graphName = graphPointer->GetName();
390 const std::string graphTitle = graphPointer->GetTitle();
391
392 // Check if the hash for this graphName already exists, i.e., if we have a hash collision
393 const hash_t graphHash = this->hash(graphName);
394 GraphMap_t::const_iterator it = m_graphMap.find( graphHash );
395 if ( it != m_graphMap.end() ) // It does exist!
396 {
397 m_msg << MSG::WARNING
398 << "Detected a hash collision. The hash for the TGraph with name=" << graphName
399 << " already exists and points to a TGraph with name=" << it->second->GetName()
400 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
401 return NULL;
402 }
403
404 // Create a clone that has the new name
405 TGraph* graphClone = dynamic_cast< TGraph* >( graphPointer->Clone((m_histNamePrefix+graphName+m_histNamePostfix).c_str()) );
406 if( !graphClone )
407 {
408 m_msg << MSG::WARNING
409 << "We couldn't clone the TGraph in the BookGetPointer(TGraph&) method of the class" << m_name
410 << "!" << endmsg;
411 return NULL;
412 }
413 graphClone->SetTitle ((m_histTitlePrefix+graphTitle+m_histTitlePostfix).c_str());
414
415 // Massage the final string to book things
416 std::string bookingString = buildBookingString( graphName, tDir, stream );
417
418 // Register the TGraph into the THistSvc
419 if ( !((histSvc()->regGraph(bookingString, graphClone)).isSuccess()) )
420 {
421 m_msg << MSG::WARNING
422 << "Problem registering TGraph with name " << graphName
423 << ", title " << graphTitle
424 << " in " << m_name << "!" << endmsg;
425 return NULL;
426 }
427
428 // Also register it in the local map of string to pointer
429 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphClone ) );
430
431 return graphClone;
432}
const ServiceHandle< ITHistSvc > & histSvc() const
The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a...
hash_t hash(std::string_view histName) const
Method to calculate a 32-bit hash from a string.
std::string buildBookingString(std::string_view histName, std::string_view tDir, std::string_view stream, bool usePrefixPostfix=false) const
Method to build individual booking string.
std::string m_histNamePostfix
The postfix for the histogram THx name.
uint32_t hash_t
typedef for the internal hash
std::string m_histTitlePostfix
The postfix for the histogram THx title.
std::string m_histTitlePrefix
The prefix for the histogram THx title.
std::string m_name
Instance name.
std::string m_histNamePrefix
The prefix for the histogram THx name.
GraphMap_t m_graphMap
The map of TGraph names to their pointers.

◆ bookGetPointer() [3/8]

TH1 * AthHistogramming::bookGetPointer ( const TH1 & hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 254 of file AthHistogramming.h.

255{
256 // We need to create a non-const clone
257 TH1* histClone = dynamic_cast< TH1* >( hist.Clone() );
258 if ( !histClone ) {
259 m_msg << MSG::ERROR << "Couldn't create a TH1 clone in bookGetPointer" << endmsg;
260 return 0;
261 }
262 return this->bookGetPointer( *histClone, tDir, stream );
263
264}

◆ bookGetPointer() [4/8]

TTree * AthHistogramming::bookGetPointer ( const TTree & treeRef,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of TTrees.

Definition at line 268 of file AthHistogramming.cxx.

269{
270 // Get a pointer
271 const TTree* treePointer = &treeRef;
272
273 // Check that we got a valid pointer
274 if ( !treePointer )
275 {
276 m_msg << MSG::WARNING
277 << "We got an invalid TTree pointer in the BookGetPointer(TTree*) method of the class" << m_name
278 << "!" << endmsg;
279 return NULL;
280 }
281
282 // Modify the name and title according to the prefixes of this classes instance
283 std::string treeName = treePointer->GetName();
284 const std::string treeTitle = treePointer->GetTitle();
285
286 // Check if the hash for this treeName already exists, i.e., if we have a hash collision
287 const hash_t treeHash = this->hash(treeName);
288 TreeMap_t::const_iterator it = m_treeMap.find( treeHash );
289 if ( it != m_treeMap.end() ) // It does exist!
290 {
291 m_msg << MSG::WARNING
292 << "Detected a hash collision. The hash for the TTree with name=" << treeName
293 << " already exists and points to a TTree with name=" << it->second->GetName()
294 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
295 return NULL;
296 }
297
298 // Create a clone that has the new name
299 TTree* treeClone = dynamic_cast< TTree* >( treePointer->Clone(treeName.c_str()) );
300 if( !treeClone )
301 {
302 m_msg << MSG::WARNING
303 << "We couldn't clone the TTree in the BookGetPointer(TTree&) method of the class" << m_name
304 << "!" << endmsg;
305 return NULL;
306 }
307 treeClone->SetTitle (treeTitle.c_str());
308
309 // Massage the final string to book things
310 std::string bookingString = buildBookingString( treeName, tDir, stream );
311
312 // Register the TTree into the THistSvc
313 if ( !((histSvc()->regTree(bookingString, treeClone)).isSuccess()) )
314 {
315 m_msg << MSG::WARNING
316 << "Problem registering TTree with name " << treeName
317 << ", title " << treeTitle
318 << " in " << m_name << "!" << endmsg;
319 return NULL;
320 }
321
322 // Also register it in the local map of string to pointer
323 m_treeMap.insert( m_treeMap.end(), std::pair< const hash_t, TTree* >( treeHash, treeClone ) );
324
325 return treeClone;
326}
TreeMap_t m_treeMap
The map of TTree names to their pointers.

◆ bookGetPointer() [5/8]

TEfficiency * AthHistogramming::bookGetPointer ( TEfficiency & effRef,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 139 of file AthHistogramming.cxx.

140{
141 std::string originalName{effRef.GetName()};
142 const auto effName = splitName(originalName).second;
143 const std::string effTitle(effRef.GetTitle());
144 std::string bookingString = buildBookingString(originalName, tDir, stream);
145 std::string finalEffName{m_histNamePrefix};
146 finalEffName += effName;
147 finalEffName += m_histNamePostfix;
148 effRef.SetTitle((m_histTitlePrefix + effTitle + m_histTitlePostfix).c_str());
149 effRef.SetName(finalEffName.c_str());
150
151 const hash_t effHash = this->hash(effName);
152 EffMap_t::const_iterator it = m_effMap.find(effHash);
153 if (it != m_effMap.end()) {
154 m_msg << MSG::WARNING
155 << "Detected a hash collision. The hash for the TEfficiency with name=" << effName
156 << " already exists and points to a TEfficiency with name=" << it->second->GetName()
157 << " NOT going to book the new TEfficiency and returning a NULL pointer!" << endmsg;
158 return nullptr;
159 }
160
161 if (!histSvc()->regEfficiency(bookingString, &effRef).isSuccess()) {
162 m_msg << MSG::WARNING
163 << "Problem registering TEfficiency with name " << effName
164 << ", name prefix " << m_histNamePrefix
165 << ", title " << effTitle
166 << ", title prefix " << m_histTitlePrefix
167 << ", and title postfix " << m_histTitlePostfix
168 << " in " << m_name << "!" << endmsg;
169 return nullptr;
170 }
171
172 m_effMap.insert(m_effMap.end(), std::pair<const hash_t, TEfficiency*>(effHash, &effRef));
173
174 return &effRef;
175}
EffMap_t m_effMap
The map of histogram names to their pointers.

◆ bookGetPointer() [6/8]

TEfficiency * AthHistogramming::bookGetPointer ( TEfficiency * eff,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of TEfficiency.

Definition at line 287 of file AthHistogramming.h.

288{
289 if ( !hist ) {
290 m_msg << MSG::ERROR << "Got a zero pointer to a TEfficiency in bookGetPointer" << endmsg;
291 return 0;
292 }
293 return this->bookGetPointer( *hist, tDir, stream );
294}

◆ bookGetPointer() [7/8]

TH1 * AthHistogramming::bookGetPointer ( TH1 & histRef,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 97 of file AthHistogramming.cxx.

97 {
98
99 const std::string originalName{histRef.GetName()};
100 const auto histName = splitName(originalName).second;
101
102 const std::string histTitle(histRef.GetTitle());
103 std::string bookingString = buildBookingString(originalName, tDir, stream);
104
105 std::string finalHistName{m_histNamePrefix};
106 finalHistName += histName;
107 finalHistName += m_histNamePostfix;
108
109 histRef.SetTitle((m_histTitlePrefix + histTitle + m_histTitlePostfix).c_str());
110 histRef.SetName(finalHistName.c_str());
111
112 const hash_t histHash = this->hash(histName);
113 HistMap_t::const_iterator it = m_histMap.find(histHash);
114 if (it != m_histMap.end()) {
115 m_msg << MSG::WARNING
116 << "Detected a hash collision. The hash for the histogram with name=" << histName
117 << " already exists and points to a histogram with name=" << it->second->GetName()
118 << " NOT going to book the new histogram and returning a NULL pointer!" << endmsg;
119 return nullptr;
120 }
121
122 if (!histSvc()->regHist(bookingString, &histRef).isSuccess()) {
123 m_msg << MSG::WARNING
124 << "Problem registering histogram with name " << histName
125 << ", name prefix " << m_histNamePrefix
126 << ", title " << histTitle
127 << ", title prefix " << m_histTitlePrefix
128 << ", and title postfix " << m_histTitlePostfix
129 << " in " << m_name << "!" << endmsg;
130 return nullptr;
131 }
132
133 m_histMap.insert(m_histMap.end(), std::pair<const hash_t, TH1*>(histHash, &histRef));
134
135 return &histRef;
136}
HistMap_t m_histMap
The map of histogram names to their pointers.

◆ bookGetPointer() [8/8]

TH1 * AthHistogramming::bookGetPointer ( TH1 * hist,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the booking and registering (into THistSvc) of histograms.

Definition at line 266 of file AthHistogramming.h.

267{
268 if ( !hist ) {
269 m_msg << MSG::ERROR << "Got a zero pointer to a TH1 in bookGetPointer" << endmsg;
270 return 0;
271 }
272 return this->bookGetPointer( *hist, tDir, stream );
273}

◆ buildBookingString()

std::string AthHistogramming::buildBookingString ( std::string_view histName,
std::string_view tDir,
std::string_view stream,
bool usePrefixPostfix = false ) const
privateinherited

Method to build individual booking string.

Definition at line 500 of file AthHistogramming.cxx.

501 {
502 if (tDir.empty()) {
503 tDir = m_rootDir;
504 }
505 if (stream.empty()) {
507 }
508 const auto [histDir, baseName] = splitName(histName);
509 std::string bookingString{"/"};
510 bookingString += stream;
511 bookingString += '/';
512 bookingString += tDir;
513 if (!histDir.empty()) {
514 bookingString += '/';
515 bookingString += histDir;
516 }
517 bookingString += '/';
518 if (usePrefixPostfix) {
519 bookingString += m_histNamePrefix;
520 }
521 bookingString += baseName;
522 if (usePrefixPostfix) {
523 bookingString += m_histNamePostfix;
524 }
525 const auto tail = std::ranges::unique(
526 bookingString, [](char lhs, char rhs) { return lhs == '/' && rhs == '/'; });
527 bookingString.erase(tail.begin(), tail.end());
528 return bookingString;
529}
std::string m_rootDir
Name of the ROOT directory.
std::string m_streamName
Name of the ROOT output stream (file).
std::string tail(std::string s, const std::string &pattern)
tail of a string

◆ buildDileptonPartialCandidate()

bool EventReco::RunHyPERAlg::buildDileptonPartialCandidate ( const std::vector< int > & indices,
const std::vector< int > & ids,
PtEtaPhiMVector & bJetP4,
PtEtaPhiMVector & leptonP4,
float & analyserCharge ) const

Definition at line 216 of file RunHyPERAlg.cxx.

220 {
221 const int jetID = static_cast<int>(HyPERParticleID::jet);
222 const int electronID = static_cast<int>(HyPERParticleID::e);
223 const int muonID = static_cast<int>(HyPERParticleID::mu);
224
225 if (indices.size() != 2 || ids.size() != 2)
226 return false;
227
228 int jetPosition = -1;
229 int leptonPosition = -1;
230 for (std::size_t i = 0; i < ids.size(); ++i) {
231 if (ids.at(i) == jetID)
232 jetPosition = static_cast<int>(i);
233 if (ids.at(i) == electronID || ids.at(i) == muonID)
234 leptonPosition = static_cast<int>(i);
235 }
236
237 if (jetPosition < 0 || leptonPosition < 0)
238 return false;
239
240 const int jetIndex = indices.at(jetPosition);
241 const int leptonIndex = indices.at(leptonPosition);
242 if (jetIndex < 0 || jetIndex >= static_cast<int>(m_hyperInputs.m_jets.size()))
243 return false;
244
245 const xAOD::Jet* jet = m_hyperInputs.m_jets.at(jetIndex);
246 ROOT::Math::PtEtaPhiEVector jetP4 =
247 buildRecoP4(jet->pt(), jet->eta(), jet->phi(), jet->e());
248
249 ROOT::Math::PtEtaPhiEVector localLeptonP4;
250 if (ids.at(leptonPosition) == electronID) {
251 if (leptonIndex < 0 ||
252 leptonIndex >= static_cast<int>(m_hyperInputs.m_electrons.size()))
253 return false;
254 const xAOD::Electron* electron = m_hyperInputs.m_electrons.at(leptonIndex);
255 localLeptonP4 = buildRecoP4(electron->pt(), electron->eta(),
256 electron->phi(), electron->e());
257 analyserCharge = electron->charge();
258 } else {
259 if (leptonIndex < 0 ||
260 leptonIndex >= static_cast<int>(m_hyperInputs.m_muons.size()))
261 return false;
262 const xAOD::Muon* muon = m_hyperInputs.m_muons.at(leptonIndex);
263 localLeptonP4 =
264 buildRecoP4(muon->pt(), muon->eta(), muon->phi(), muon->e());
265 analyserCharge = muon->charge();
266 }
267
268 bJetP4 = toPtEtaPhiM(jetP4);
269 leptonP4 = toPtEtaPhiM(localLeptonP4);
270 return true;
271}
std::vector< std::vector< int64_t > > indices
Jet_v1 Jet
Definition of the current "jet version".
Muon_v1 Muon
Reference the current persistent version:
Electron_v1 Electron
Definition of the current "egamma version".

◆ buildGraph()

StatusCode EventReco::RunHyPERAlg::buildGraph ( )

These methods build the HyPER graph based on the user-input topology.

Definition at line 868 of file RunHyPERAlg.cxx.

868 {
869 HyPERTopology topology = m_hyperModel->getTopology();
871 ANA_MSG_ERROR("Bad topology while building HyPER graph");
872 return StatusCode::FAILURE;
873 }
874
875 using Features = std::vector<float>;
876
877 // Remember... For HyPER we use the following particle IDs -> jet=1 e=2 mu=3
878 // met=4 tau=5 Also... VERY important! The order of filling the particles for
879 // the graph is important! We use this later for the reconstruction. The order
880 // is: jets -> electrons -> muons -> met -> taus
881 // TODO: Write a checker function for the ordering.
882
884 return this->buildTtbarLJetsGraph();
886 return this->buildTtbarAllHadronicGraph();
887 else if (topology == EventReco::HyPERTopology::TtbarDiLepton)
888 return this->buildTtbarDiLeptonGraph();
889 return StatusCode::FAILURE; // No topology selected, this is bad behaviour.
890}
#define ANA_MSG_ERROR(xmsg,...)
Macro printing error messages.
StatusCode buildTtbarLJetsGraph()
StatusCode buildTtbarDiLeptonGraph()
StatusCode buildTtbarAllHadronicGraph()
std::unique_ptr< HyPERModel > m_hyperModel
std::vector< float > Features
Definition GraphBase.h:16

◆ buildTopP4TtbarAllHadronic()

void EventReco::RunHyPERAlg::buildTopP4TtbarAllHadronic ( const std::vector< int > & topIndices,
const std::vector< int > & wIndices,
PtEtaPhiMVector & top_b_p4,
PtEtaPhiMVector & top_W_decay0_p4,
PtEtaPhiMVector & top_W_decay1_p4 )

Definition at line 273 of file RunHyPERAlg.cxx.

277 {
278 // Check we have enough indices
279 if (topIndices.size() != 3 || wIndices.size() != 2) {
280 top_b_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
281 top_W_decay0_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
282 top_W_decay1_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
283 return;
284 }
285
286 // Check that W indices are within the top indices
287 if (std::find(topIndices.begin(), topIndices.end(), wIndices[0]) ==
288 topIndices.end() ||
289 std::find(topIndices.begin(), topIndices.end(), wIndices[1]) ==
290 topIndices.end()) {
291 top_b_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
292 top_W_decay0_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
293 top_W_decay1_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
294 return;
295 }
296
297 const xAOD::Jet* leadWJet = nullptr;
298 const xAOD::Jet* subleadWJet = nullptr;
299
300 // Filter good W indices (-1 is bad)
301 std::vector<int> goodWIndices;
302 for (const auto idx : wIndices) {
303 if (idx != -1) {
304 goodWIndices.push_back(idx);
305 }
306 }
307 // If we only have one good W index, by definition is the leading W decay
308 if (goodWIndices.size() == 1) {
309 int leadingWIndex = goodWIndices[0];
310 leadWJet = m_hyperInputs.m_jets.at(leadingWIndex);
311 }
312 // If there are two good W indices, we need to determine which is leading and
313 // subleading
314 else if (goodWIndices.size() == 2) {
315 int leadingWIndex = goodWIndices[0];
316 int subleadingWIndex = goodWIndices[1];
317 const xAOD::Jet* jet1 = m_hyperInputs.m_jets.at(leadingWIndex);
318 const xAOD::Jet* jet2 = m_hyperInputs.m_jets.at(subleadingWIndex);
319 if (jet1->pt() >= jet2->pt()) {
320 leadWJet = jet1;
321 subleadWJet = jet2;
322 } else {
323 leadWJet = jet2;
324 subleadWJet = jet1;
325 }
326 }
327 // Take out the b-jet index as the one not in the W indices
328 int bJetIndex = -1;
329 for (const auto idx : topIndices) {
330 if (std::find(wIndices.begin(), wIndices.end(), idx) == wIndices.end()) {
331 bJetIndex = idx;
332 break;
333 }
334 }
335 const xAOD::Jet* bJet =
336 (bJetIndex != -1) ? m_hyperInputs.m_jets.at(bJetIndex) : nullptr;
337
338 // Build the 4-vectors
339 top_b_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
340 top_W_decay0_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
341 top_W_decay1_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
342
343 if (bJet) {
344 ROOT::Math::PtEtaPhiEVector bJetP4 =
345 buildRecoP4(bJet->pt(), bJet->eta(), bJet->phi(), bJet->e());
346 top_b_p4 = toPtEtaPhiM(bJetP4);
347 }
348 if (leadWJet) {
349 ROOT::Math::PtEtaPhiEVector leadWJetP4 = buildRecoP4(
350 leadWJet->pt(), leadWJet->eta(), leadWJet->phi(), leadWJet->e());
351 top_W_decay0_p4 = toPtEtaPhiM(leadWJetP4);
352 }
353 if (subleadWJet) {
354 ROOT::Math::PtEtaPhiEVector subleadWJetP4 =
355 buildRecoP4(subleadWJet->pt(), subleadWJet->eta(), subleadWJet->phi(),
356 subleadWJet->e());
357 top_W_decay1_p4 = toPtEtaPhiM(subleadWJetP4);
358 }
359}
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition Jet_v1.cxx:54
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition Jet_v1.cxx:44
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition Jet_v1.cxx:49
virtual double e() const
The total energy of the particle.
Definition Jet_v1.cxx:63

◆ buildTopP4TtbarLJets()

void EventReco::RunHyPERAlg::buildTopP4TtbarLJets ( const std::vector< int > & topHadIndices,
const std::vector< int > & wHadIndices,
const std::vector< int > & topLepIndices,
const std::vector< int > & topLepIDs,
PtEtaPhiMVector & tophad_b_p4,
PtEtaPhiMVector & tophad_w_decay0_p4,
PtEtaPhiMVector & tophad_w_decay1_p4,
PtEtaPhiMVector & toplep_b_p4,
PtEtaPhiMVector & toplep_lep_p4 )

Definition at line 361 of file RunHyPERAlg.cxx.

366 {
367 tophad_b_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
368 tophad_w_decay0_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
369 tophad_w_decay1_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
370 toplep_b_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
371 toplep_lep_p4.SetCoordinates(0.0, 0.0, 0.0, 0.0);
372
373 // Hadronic top 4-vectors
374 buildTopP4TtbarAllHadronic(topHadIndices, wHadIndices, tophad_b_p4,
375 tophad_w_decay0_p4, tophad_w_decay1_p4);
376
377 // Leptonic top 4-vectors
378 if (topLepIndices.size() == 3 && topLepIDs.size() == 3) {
379 const int jetID = static_cast<int>(HyPERParticleID::jet);
380 const int electronID = static_cast<int>(HyPERParticleID::e);
381 const int muonID = static_cast<int>(HyPERParticleID::mu);
382
383 for (std::size_t i = 0; i < 3; ++i) {
384 int idx = topLepIndices[i];
385 int id = topLepIDs[i];
386 if (idx < 0)
387 continue;
388
389 if (id == jetID) {
390 if (idx < static_cast<int>(m_hyperInputs.m_jets.size())) {
391 const xAOD::Jet* jet = m_hyperInputs.m_jets.at(idx);
392 toplep_b_p4 = toPtEtaPhiM(
393 buildRecoP4(jet->pt(), jet->eta(), jet->phi(), jet->e()));
394 }
395 } else if (id == electronID) {
396 if (idx < static_cast<int>(m_hyperInputs.m_electrons.size())) {
397 const xAOD::Electron* el = m_hyperInputs.m_electrons.at(idx);
398 toplep_lep_p4 =
399 toPtEtaPhiM(buildRecoP4(el->pt(), el->eta(), el->phi(), el->e()));
400 }
401 } else if (id == muonID) {
402 if (idx < static_cast<int>(m_hyperInputs.m_muons.size())) {
403 const xAOD::Muon* mu = m_hyperInputs.m_muons.at(idx);
404 toplep_lep_p4 =
405 toPtEtaPhiM(buildRecoP4(mu->pt(), mu->eta(), mu->phi(), mu->e()));
406 }
407 }
408 }
409 }
410}
void buildTopP4TtbarAllHadronic(const std::vector< int > &topIndices, const std::vector< int > &wIndices, PtEtaPhiMVector &top_b_p4, PtEtaPhiMVector &top_W_decay0_p4, PtEtaPhiMVector &top_W_decay1_p4)

◆ buildTtbarAllHadronicGraph()

StatusCode EventReco::RunHyPERAlg::buildTtbarAllHadronicGraph ( )

Definition at line 1072 of file RunHyPERAlg.cxx.

1072 {
1073 // For this topology we only use jets:
1074 // [E, eta, phi, pT, bTag, particleID = 1]
1075 // And Edges with the following features:
1076 // [dEta, dPhi, dR, m(i,j)]
1077 // And, the following globals:
1078 // [nJets, nBTagJets]
1079
1080 // Build particles
1081 std::vector<Features> particles;
1082 float nBJets90 =
1083 0; // Store number of bjets per-quantile for the global features.
1084 float nBJets85 = 0;
1085 float nBJets77 = 0;
1086 float nBJets70 = 0;
1087 float nBJets65 = 0;
1088 float nJets = 0; // Store number of jets for the global features.
1089 for (const xAOD::Jet* jet : m_hyperInputs.m_jets) {
1090 nJets += 1.0f;
1091 // Get b-tagging decision
1092 if (!m_bTagDecoAcc->isAvailable(*jet)) {
1093 ANA_MSG_ERROR("HyPERAlg:: the jets do not have " << m_btagDecorName
1094 << " aux variable!");
1095 return StatusCode::FAILURE;
1096 }
1097
1098 int bTagQuantile = (*m_bTagDecoAcc)(*jet);
1099 if (bTagQuantile >= 2)
1100 nBJets90 += 1;
1101 if (bTagQuantile >= 3)
1102 nBJets85 += 1;
1103 if (bTagQuantile >= 4)
1104 nBJets77 += 1;
1105 if (bTagQuantile >= 5)
1106 nBJets70 += 1;
1107 if (bTagQuantile >= 6)
1108 nBJets65 += 1;
1109 Features feats = {float(jet->e() / 1000), float(jet->eta()),
1110 float(jet->phi()), float(jet->pt() / 1000),
1112 particles.push_back(feats);
1113 }
1114
1115 // Add the nodes
1116 for (std::size_t i = 0; i < particles.size(); i++) {
1117 m_hyperGraph->addNode(particles[i]);
1118 }
1119
1120 // Add the globals, scaling already applied here.
1121 Features globalFeats = {nJets / 6.0f, nBJets90 / 2.0f, nBJets85 / 2.0f,
1122 nBJets77 / 2.0f, nBJets70 / 2.0f, nBJets65 / 2.0f};
1123 m_hyperGraph->addGlobal(globalFeats);
1124
1125 // Build graph edges and hyperedges
1126 m_hyperGraph->buildEdgeIndices();
1127 m_hyperGraph->buildHyperEdges(3);
1128
1129 // Add the edges
1130 // Loop over the edge indices
1131 for (const auto& edge : m_hyperGraph->getEdgeIndicesVector()) {
1132 // Get the source and target nodes
1133 int64_t source = edge.first;
1134 int64_t target = edge.second;
1135 // Get the features
1136 Features firstNodeFeats = m_hyperGraph->getNodeFeats(source);
1137 Features secondNodeFeats = m_hyperGraph->getNodeFeats(target);
1138
1139 // Calculate the edge features
1140 float dEta = secondNodeFeats[1] - firstNodeFeats[1];
1141 float dPhi = deltaPhi(secondNodeFeats[2], firstNodeFeats[2]);
1142 float dR = sqrt(dEta * dEta + dPhi * dPhi);
1143 ROOT::Math::PtEtaPhiEVector particle1;
1144 ROOT::Math::PtEtaPhiEVector particle2;
1145 particle1.SetCoordinates(firstNodeFeats[3], firstNodeFeats[1],
1146 firstNodeFeats[2], firstNodeFeats[0]);
1147 particle2.SetCoordinates(secondNodeFeats[3], secondNodeFeats[1],
1148 secondNodeFeats[2], secondNodeFeats[0]);
1149 float m = (particle1 + particle2).M();
1150
1151 Features edgeFeats = {dEta, dPhi, dR, log(m)};
1152 m_hyperGraph->addEdge(source, target, edgeFeats);
1153 }
1154
1155 // Scaling the node inputs
1156 for (std::size_t i{0}; i < static_cast<std::size_t>(m_hyperGraph->nNodes());
1157 i++) {
1158 Features& nodeFeats = m_hyperGraph->getNodeFeats(i);
1159 nodeFeats.at(0) = log(nodeFeats.at(0));
1160 nodeFeats.at(3) = log(nodeFeats.at(3));
1161 }
1162 return StatusCode::SUCCESS;
1163}
std::unique_ptr< SG::ConstAccessor< int > > m_bTagDecoAcc
std::string m_btagDecorName
std::unique_ptr< HyPERGraph > m_hyperGraph
float deltaPhi(float phi1, float phi2)
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)

◆ buildTtbarDiLeptonGraph()

StatusCode EventReco::RunHyPERAlg::buildTtbarDiLeptonGraph ( )

Definition at line 1165 of file RunHyPERAlg.cxx.

1165 {
1166 // For this topology we use jets, electrons and muons:
1167 // [Log(E), eta, phi, Log(pT), bTagQuantile/6, charge, particleID/2]
1168 // And Edges with the following features:
1169 // [dEta, dPhi, dR, m(i,j)]
1170 // And, the following globals:
1171 // [nJets/6, Log(met_pT), met_phi, nBTagJets90/2, nBTagJets85/2,
1172 // nBTagJets77/2, nBTagJets70/2, nBTagJets65/2]
1173
1174 // Build particles
1175 std::vector<Features> particles;
1176 float nBJets90 =
1177 0; // Store number of bjets per-quantile for the global features.
1178 float nBJets85 = 0;
1179 float nBJets77 = 0;
1180 float nBJets70 = 0;
1181 float nBJets65 = 0;
1182 float nJets = 0; // Store number of jets for the global features.
1183 for (const xAOD::Jet* jet : m_hyperInputs.m_jets) {
1184
1185 nJets += 1.0f;
1186 // Get b-tagging decision.
1187 if (!m_bTagDecoAcc->isAvailable(*jet)) {
1188 ANA_MSG_ERROR("HyPERAlg:: the jets do not have " << m_btagDecorName
1189 << " aux variable!");
1190 return StatusCode::FAILURE;
1191 }
1192 int bTagQuantile = (*m_bTagDecoAcc)(*jet);
1193 if (bTagQuantile >= 2)
1194 nBJets90 += 1;
1195 if (bTagQuantile >= 3)
1196 nBJets85 += 1;
1197 if (bTagQuantile >= 4)
1198 nBJets77 += 1;
1199 if (bTagQuantile >= 5)
1200 nBJets70 += 1;
1201 if (bTagQuantile >= 6)
1202 nBJets65 += 1;
1203 Features feats = {float(jet->e() / 1000),
1204 float(jet->eta()),
1205 float(jet->phi()),
1206 float(jet->pt() / 1000),
1207 float(bTagQuantile),
1208 0.f,
1210 1.f}; // TODO: This is needed because the training was
1211 // done with new HyPER dataset.
1212 particles.push_back(feats);
1213 }
1214
1215 for (const xAOD::Electron* el : m_hyperInputs.m_electrons) {
1216
1217 Features feats = {float(el->e() / 1000),
1218 float(el->eta()),
1219 float(el->phi()),
1220 float(el->pt() / 1000),
1221 0.f,
1222 float(el->charge()),
1224 2.f};
1225 particles.push_back(feats);
1226 }
1227
1228 for (const xAOD::Muon* mu : m_hyperInputs.m_muons) {
1229
1230 Features feats = {float(mu->e() / 1000),
1231 float(mu->eta()),
1232 float(mu->phi()),
1233 float(mu->pt() / 1000),
1234 0.f,
1235 float(mu->charge()),
1237 2.f}; // TODO: This is needed because the
1238 // training was done with new HyPER
1239 // dataset.
1240 particles.push_back(feats);
1241 }
1242
1243 // MET features
1244 float met_pt = (*m_hyperInputs.m_met)["Final"]->met() / 1000;
1245 float met_phi = (*m_hyperInputs.m_met)["Final"]->phi();
1246
1247 Features metFeats = {
1248 met_pt, 0.f, met_phi, met_pt, 0.f, 0.f, float(EventReco::HyPERParticleID::met),
1249 3.f}; // TODO: This is needed because the training was
1250 // done with new HyPER dataset.
1251 particles.push_back(metFeats);
1252
1253 // Add the nodes
1254 for (std::size_t i = 0; i < particles.size(); i++) {
1255 m_hyperGraph->addNode(particles[i]);
1256 }
1257
1258 // Add the globals, scaling already applied here.
1259 Features globalFeats;
1260
1261 globalFeats = {nJets / 6.0f, log(met_pt), met_phi,
1262 nBJets90 / 2.0f, nBJets85 / 2.0f, nBJets77 / 2.0f,
1263 nBJets70 / 2.0f, nBJets65 / 2.0f};
1264 m_hyperGraph->addGlobal(globalFeats);
1265
1266 // Build graph edges and hyperedges
1267 m_hyperGraph->buildEdgeIndices();
1268 m_hyperGraph->buildHyperEdges(4);
1269
1270 // Add the edges
1271 // Loop over the edge indices
1272 for (const auto& edge : m_hyperGraph->getEdgeIndicesVector()) {
1273 // Get the source and target nodes
1274 int64_t source = edge.first;
1275 int64_t target = edge.second;
1276 // Get the features
1277 Features firstNodeFeats = m_hyperGraph->getNodeFeats(source);
1278 Features secondNodeFeats = m_hyperGraph->getNodeFeats(target);
1279
1280 // Calculate the edge features
1281 float dEta = secondNodeFeats[1] - firstNodeFeats[1];
1282 float dPhi = deltaPhi(secondNodeFeats[2], firstNodeFeats[2]);
1283 float dR = sqrt(dEta * dEta + dPhi * dPhi);
1284 ROOT::Math::PtEtaPhiEVector particle1;
1285 ROOT::Math::PtEtaPhiEVector particle2;
1286 particle1.SetCoordinates(firstNodeFeats[3], firstNodeFeats[1],
1287 firstNodeFeats[2], firstNodeFeats[0]);
1288 particle2.SetCoordinates(secondNodeFeats[3], secondNodeFeats[1],
1289 secondNodeFeats[2], secondNodeFeats[0]);
1290 float m = (particle1 + particle2).M();
1291
1292 Features edgeFeats = {dEta, dPhi, dR, log(m)};
1293 m_hyperGraph->addEdge(source, target, edgeFeats);
1294 }
1295
1296 // Scaling the node inputs
1297 for (std::size_t i{0}; i < static_cast<std::size_t>(m_hyperGraph->nNodes());
1298 i++) {
1299 Features& nodeFeats = m_hyperGraph->getNodeFeats(i);
1300 nodeFeats.at(0) = log(nodeFeats.at(0));
1301 nodeFeats.at(3) = log(nodeFeats.at(3));
1302 nodeFeats.at(4) = nodeFeats.at(4) / 6.0f;
1303 nodeFeats.at(6) = nodeFeats.at(6) / 2.0f;
1304 }
1305 return StatusCode::SUCCESS;
1306}
Scalar phi() const
phi method

◆ buildTtbarLJetsGraph()

StatusCode EventReco::RunHyPERAlg::buildTtbarLJetsGraph ( )

Definition at line 892 of file RunHyPERAlg.cxx.

892 {
893 // For this topology we use jets, electrons and muons:
894 // [E, eta, phi, pT, charge, particleID]
895 // And Edges with the following features:
896 // [dEta, dPhi, dR, m(i,j)]
897 // And, the following globals:
898 // [nJets, nBTagJets]
899
900 // Build particles
901 std::vector<Features> particles;
902 float nBJets90 =
903 0; // Store number of bjets per-quantile for the global features.
904 float nBJets85 = 0;
905 float nBJets77 = 0;
906 float nBJets70 = 0;
907 float nBJets65 = 0;
908 float nJets = 0; // Store number of jets for the global features.
909 for (const xAOD::Jet* jet : m_hyperInputs.m_jets) {
910 nJets += 1.0f;
911 Features feats;
912 if (m_ljetsUseBTag) {
913 // Get b-tagging decision.
914 if (!m_bTagDecoAcc->isAvailable(*jet)) {
915 ANA_MSG_ERROR("HyPERAlg:: the jets do not have " << m_btagDecorName
916 << " aux variable!");
917 return StatusCode::FAILURE;
918 }
919 int bTagQuantile = (*m_bTagDecoAcc)(*jet);
920 if (bTagQuantile >= 2)
921 nBJets90 += 1;
922 if (bTagQuantile >= 3)
923 nBJets85 += 1;
924 if (bTagQuantile >= 4)
925 nBJets77 += 1;
926 if (bTagQuantile >= 5)
927 nBJets70 += 1;
928 if (bTagQuantile >= 6)
929 nBJets65 += 1;
930 feats = {float(jet->e() / 1000),
931 float(jet->eta()),
932 float(jet->phi()),
933 float(jet->pt() / 1000),
934 float(bTagQuantile),
935 0.f,
937 1.f}; // TODO: This is needed because the training was
938 // done with new HyPER dataset.
939 } else {
940 feats = {float(jet->e() / 1000),
941 float(jet->eta()),
942 float(jet->phi()),
943 float(jet->pt() / 1000),
944 0.f,
946 1.f}; // TODO: This is needed because the training was
947 // done with new HyPER dataset.
948 }
949 particles.push_back(feats);
950 }
951 for (const xAOD::Electron* el : m_hyperInputs.m_electrons) {
952 Features feats;
953 if (m_ljetsUseBTag) {
954 feats = {float(el->e() / 1000),
955 float(el->eta()),
956 float(el->phi()),
957 float(el->pt() / 1000),
958 0.f,
959 float(el->charge()),
961 2.f};
962 } else {
963 feats = {float(el->e() / 1000),
964 float(el->eta()),
965 float(el->phi()),
966 float(el->pt() / 1000),
967 float(el->charge()),
969 2.f}; // TODO: This is needed because the training was
970 // done with new HyPER dataset.
971 }
972 particles.push_back(feats);
973 }
974 for (const xAOD::Muon* mu : m_hyperInputs.m_muons) {
975 Features feats;
976 if (m_ljetsUseBTag) {
977 feats = {float(mu->e() / 1000),
978 float(mu->eta()),
979 float(mu->phi()),
980 float(mu->pt() / 1000),
981 0.f,
982 float(mu->charge()),
984 2.f};
985 } else {
986 feats = {float(mu->e() / 1000),
987 float(mu->eta()),
988 float(mu->phi()),
989 float(mu->pt() / 1000),
990 float(mu->charge()),
992 2.f}; // TODO: This is needed because the training was
993 // done with new HyPER dataset.
994 }
995 particles.push_back(feats);
996 }
997 Features metFeats;
998 if (m_ljetsUseBTag) {
999 metFeats = {float((*m_hyperInputs.m_met)["Final"]->met() / 1000),
1000 0.f,
1001 float((*m_hyperInputs.m_met)["Final"]->phi()),
1002 float((*m_hyperInputs.m_met)["Final"]->met() / 1000),
1003 0.f,
1004 0.f,
1006 3.f};
1007 } else {
1008 metFeats = {float((*m_hyperInputs.m_met)["Final"]->met() / 1000),
1009 0.f,
1010 float((*m_hyperInputs.m_met)["Final"]->phi()),
1011 float((*m_hyperInputs.m_met)["Final"]->met() / 1000),
1012 0.f,
1014 3.f};
1015 }
1016 particles.push_back(metFeats);
1017
1018 // Add the nodes
1019 for (std::size_t i = 0; i < particles.size(); i++) {
1020 m_hyperGraph->addNode(particles[i]);
1021 }
1022
1023 // Add the globals, scaling already applied here.
1024 Features globalFeats;
1025 if (m_ljetsUseBTag)
1026 globalFeats = {nJets / 6.0f, nBJets90 / 2.0f, nBJets85 / 2.0f,
1027 nBJets77 / 2.0f, nBJets70 / 2.0f, nBJets65 / 2.0f};
1028 else
1029 globalFeats = {nJets / 6.0f};
1030 m_hyperGraph->addGlobal(globalFeats);
1031
1032 // Build graph edges and hyperedges
1033 m_hyperGraph->buildEdgeIndices();
1034 m_hyperGraph->buildHyperEdges(3);
1035
1036 // Add the edges
1037 // Loop over the edge indices
1038 for (const auto& edge : m_hyperGraph->getEdgeIndicesVector()) {
1039 // Get the source and target nodes
1040 int64_t source = edge.first;
1041 int64_t target = edge.second;
1042 // Get the features
1043 Features firstNodeFeats = m_hyperGraph->getNodeFeats(source);
1044 Features secondNodeFeats = m_hyperGraph->getNodeFeats(target);
1045
1046 // Calculate the edge features
1047 float dEta = secondNodeFeats[1] - firstNodeFeats[1];
1048 float dPhi = deltaPhi(secondNodeFeats[2], firstNodeFeats[2]);
1049 float dR = sqrt(dEta * dEta + dPhi * dPhi);
1050 ROOT::Math::PtEtaPhiEVector particle1;
1051 ROOT::Math::PtEtaPhiEVector particle2;
1052 particle1.SetCoordinates(firstNodeFeats[3], firstNodeFeats[1],
1053 firstNodeFeats[2], firstNodeFeats[0]);
1054 particle2.SetCoordinates(secondNodeFeats[3], secondNodeFeats[1],
1055 secondNodeFeats[2], secondNodeFeats[0]);
1056 float m = (particle1 + particle2).M();
1057
1058 Features edgeFeats = {dEta, dPhi, dR, log(m)};
1059 m_hyperGraph->addEdge(source, target, edgeFeats);
1060 }
1061
1062 // Scaling the node inputs
1063 for (std::size_t i{0}; i < static_cast<std::size_t>(m_hyperGraph->nNodes());
1064 i++) {
1065 Features& nodeFeats = m_hyperGraph->getNodeFeats(i);
1066 nodeFeats.at(0) = log(nodeFeats.at(0));
1067 nodeFeats.at(3) = log(nodeFeats.at(3));
1068 }
1069 return StatusCode::SUCCESS;
1070}

◆ configAthHistogramming()

StatusCode AthHistogramming::configAthHistogramming ( const ServiceHandle< ITHistSvc > & histSvc,
const std::string & prefix,
const std::string & rootDir,
const std::string & histNamePrefix,
const std::string & histNamePostfix,
const std::string & histTitlePrefix,
const std::string & histTitlePostfix )
protectedinherited

To be called by the derived classes to fill the internal configuration.

Definition at line 64 of file AthHistogramming.cxx.

68{
71 m_rootDir = rootDir;
72 m_histNamePrefix = histNamePrefix;
73 m_histNamePostfix = histNamePostfix;
74 m_histTitlePrefix = histTitlePrefix;
75 m_histTitlePostfix = histTitlePostfix;
76
77 return StatusCode::SUCCESS;
78}
ServiceHandle< ITHistSvc > m_histSvc
Pointer to the THistSvc (event store by default).

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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>

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ efficiency()

TEfficiency * AthHistogramming::efficiency ( const std::string & effName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered TEfficiency.

Definition at line 214 of file AthHistogramming.cxx.

215{
216 // Build a 32 bit hash out of the name
217 const hash_t effHash = this->hash(effName);
218
219 // See if this entry exists in the map
220 EffMap_t::const_iterator it = m_effMap.find( effHash );
221 if ( it == m_effMap.end() ) // It doesn't exist!
222 { // Let's see into the THistSvc if somebody else has registered the TEfficiency...
223 // Massage the final string to book things
224 std::string bookingString = buildBookingString(effName, tDir, stream ,false);
225
226 TEfficiency* effPointer{};
227 if ( !((histSvc()->getEfficiency(bookingString, effPointer)).isSuccess()) )
228 {
229 // Book things
230 std::string bookingString = buildBookingString( effName, tDir, stream, true );
231
232 if ( !((histSvc()->getEfficiency(bookingString, effPointer)).isSuccess()) )
233 {
234 m_msg << MSG::WARNING
235 << "Problem retrieving the TEfficiency with name (including pre- and post-fixes) "
236 << bookingString
237 << " or with name " << effName
238 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
239 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
240 return NULL;
241 }
242 // If we get to here, we actually found the TEfficiency in the THistSvc.
243 // So let's add it to the local cache map and return its pointer
244 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, effPointer ) );
245 return effPointer;
246 }
247 // If we get to here, we actually found the TEfficiency in the THistSvc.
248 // So let's add it to the local cache map and return its pointer
249 m_effMap.insert( m_effMap.end(), std::pair< const hash_t, TEfficiency* >( effHash, effPointer ) );
250 return effPointer;
251 }
252
253 // Return the pointer to the TEfficiency that we got from the local cache map
254 return it->second;
255}
std::pair< StatusCode, TEfficiency * > getEfficiency(ITHistSvc &svc, const std::string &name)

◆ endInputFile()

StatusCode EL::AnaAlgorithm::endInputFile ( )
protectedinherited

perform the action for the end of an input file

Ideally you don't use this, but instead rely on meta-data tools instead. However, there are enough people asking for it that I decided to implement it anyways.

Warning
To use this you have to call requestEndInputFile to use this.
If a file is split across multiple jobs this will be called more than once. This only happens for specific batch drivers and/or if it is explicitly configured by the user. With PROOF it could even happen multiple times within the same job, and while PROOF is no longer supported that behavior may come back if support for a similar framework is added in the future. As such, this method should not be used for accounting that relies to be called exactly once per file, take a look at fileExecute if you want something that is guaranteed to be executed exactly once per input file.
The execution order of endInputFile and fileExecute is currently unspecified.

Definition at line 361 of file AnaAlgorithm.cxx.

363 {
364 return StatusCode::SUCCESS;
365 }

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute() [1/2]

StatusCode EL::AnaAlgorithm::execute ( )
protectedinherited

execute this algorithm

Deprecated
Prefer method with EventContext.
Warning
Override only one of the two execute methods.

This gets called once on every event and is where the bulk of the processing ought to be happening.

Definition at line 314 of file AnaAlgorithm.cxx.

316 {
317 return StatusCode::SUCCESS;
318 }

◆ execute() [2/2]

StatusCode EventReco::RunHyPERAlg::execute ( const EventContext & ctx)
overridevirtual

execute this algorithm

Warning
Override only one of the two execute methods.

This gets called once on every event and is where the bulk of the processing ought to be happening.

Reimplemented from EL::AnaAlgorithm.

Definition at line 412 of file RunHyPERAlg.cxx.

412 {
413 auto invalidRecoParton = []() {
414 PtEtaPhiMVector vec;
415 vec.SetCoordinates(0.0, 0.0, 0.0, 0.0);
416 return vec;
417 };
418 // Loop over systematics
419 for (const auto& sys : m_systematicsList.systematicsVector()) {
420 // Check the event selection
421 const xAOD::EventInfo* evtInfo = nullptr;
422 ANA_CHECK(m_eventInfoHandle.retrieve(evtInfo, sys, ctx));
423
424 // If user sets DEBUG the idea is the user will see general things about the
425 // code running for all events. If user sets VERBOSE the idea is the user
426 // will see very detailed information for one specific event.
427 if (m_fullLogEventNumber.value() != 0) { // User wants to log a particular event.
428 if (evtInfo->eventNumber() == m_fullLogEventNumber.value()) {
429 this->msg().setLevel(MSG::VERBOSE);
430 g_hyper_msg_level = MSG::VERBOSE;
431 } else { // We don't want other events to pollute the log.
432 this->msg().setLevel(MSG::INFO);
433 g_hyper_msg_level = MSG::INFO;
434 }
435 }
436
437 ANA_MSG_DEBUG("Event number.... : " << evtInfo->eventNumber());
438
439 // Every CP::SysWriteDecorHandle must be locked before the output stream
440 // flushes, otherwise copyAuxStoreThinned warns about unlocked decorations.
441 // Invoked on every path that leaves this systematic iteration.
442 auto lockAllDecorations = [&]() {
444 m_hyper_TtbarAllHadronic_Top1_Indices.lock(*evtInfo, sys);
445 m_hyper_TtbarAllHadronic_Top1_Score.lock(*evtInfo, sys);
446 m_hyper_TtbarAllHadronic_Top2_Indices.lock(*evtInfo, sys);
447 m_hyper_TtbarAllHadronic_Top2_Score.lock(*evtInfo, sys);
448 m_hyper_TtbarAllHadronic_W1_Indices.lock(*evtInfo, sys);
449 m_hyper_TtbarAllHadronic_W1_Score.lock(*evtInfo, sys);
450 m_hyper_TtbarAllHadronic_W2_Indices.lock(*evtInfo, sys);
451 m_hyper_TtbarAllHadronic_W2_Score.lock(*evtInfo, sys);
452 if (!m_top_b_p4.empty()) m_top_b_p4.lock(*evtInfo, sys);
453 if (!m_topbar_bbar_p4.empty()) m_topbar_bbar_p4.lock(*evtInfo, sys);
454 if (!m_top_Wplus_decay0_p4.empty()) m_top_Wplus_decay0_p4.lock(*evtInfo, sys);
455 if (!m_top_Wplus_decay1_p4.empty()) m_top_Wplus_decay1_p4.lock(*evtInfo, sys);
456 if (!m_topbar_Wminus_decay0_p4.empty()) m_topbar_Wminus_decay0_p4.lock(*evtInfo, sys);
457 if (!m_topbar_Wminus_decay1_p4.empty()) m_topbar_Wminus_decay1_p4.lock(*evtInfo, sys);
458 }
460 m_hyper_TtbarLJets_Classification_Score.lock(*evtInfo, sys);
461 m_hyper_TtbarLJets_TopHad_Indices.lock(*evtInfo, sys);
462 m_hyper_TtbarLJets_TopLep_Indices.lock(*evtInfo, sys);
463 m_hyper_TtbarLJets_WHad_Indices.lock(*evtInfo, sys);
464 m_hyper_TtbarLJets_WLep_Indices.lock(*evtInfo, sys);
465 m_hyper_TtbarLJets_TopHad_Score.lock(*evtInfo, sys);
466 m_hyper_TtbarLJets_TopLep_Score.lock(*evtInfo, sys);
467 m_hyper_TtbarLJets_WHad_Score.lock(*evtInfo, sys);
468 m_hyper_TtbarLJets_WLep_Score.lock(*evtInfo, sys);
469 m_hyper_TtbarLJets_TopHad_IDs.lock(*evtInfo, sys);
470 m_hyper_TtbarLJets_TopLep_IDs.lock(*evtInfo, sys);
471 if (!m_toplep_b_p4.empty()) m_toplep_b_p4.lock(*evtInfo, sys);
472 if (!m_toplep_lep_p4.empty()) m_toplep_lep_p4.lock(*evtInfo, sys);
473 if (!m_tophad_b_p4.empty()) m_tophad_b_p4.lock(*evtInfo, sys);
474 if (!m_tophad_w_decay0_p4.empty()) m_tophad_w_decay0_p4.lock(*evtInfo, sys);
475 if (!m_tophad_w_decay1_p4.empty()) m_tophad_w_decay1_p4.lock(*evtInfo, sys);
476 }
479 m_hyper_TtbarDiLepton_Top1_Indices.lock(*evtInfo, sys);
480 m_hyper_TtbarDiLepton_Top2_Indices.lock(*evtInfo, sys);
481 m_hyper_TtbarDiLepton_Top1_Score.lock(*evtInfo, sys);
482 m_hyper_TtbarDiLepton_Top2_Score.lock(*evtInfo, sys);
483 m_hyper_TtbarDiLepton_Top1_IDs.lock(*evtInfo, sys);
484 m_hyper_TtbarDiLepton_Top2_IDs.lock(*evtInfo, sys);
485 m_hyper_TtbarDiLepton_HE_Score.lock(*evtInfo, sys);
486 if (!m_top_b_p4.empty()) m_top_b_p4.lock(*evtInfo, sys);
487 if (!m_topbar_bbar_p4.empty()) m_topbar_bbar_p4.lock(*evtInfo, sys);
488 if (!m_top_lep_p4.empty()) m_top_lep_p4.lock(*evtInfo, sys);
489 if (!m_topbar_lepbar_p4.empty()) m_topbar_lepbar_p4.lock(*evtInfo, sys);
490 }
491 };
492
493
494 // Default decoration values (topology dependent)
495 const HyPERTopology hyperTopology = m_hyperTopology;
496 if (hyperTopology == EventReco::HyPERTopology::TtbarAllHadronic) {
498 *evtInfo, std::vector<int>{-1, -1, -1}, sys);
499 m_hyper_TtbarAllHadronic_Top1_Score.set(*evtInfo, -1, sys);
501 *evtInfo, std::vector<int>{-1, -1, -1}, sys);
502 m_hyper_TtbarAllHadronic_Top2_Score.set(*evtInfo, -1, sys);
504 *evtInfo, std::vector<int>{-1, -1, -1}, sys);
505 m_hyper_TtbarAllHadronic_W1_Score.set(*evtInfo, -1, sys);
507 *evtInfo, std::vector<int>{-1, -1, -1}, sys);
508 m_hyper_TtbarAllHadronic_W2_Score.set(*evtInfo, -1, sys);
509 if (!m_top_b_p4.empty())
510 m_top_b_p4.set(*evtInfo, invalidRecoParton(), sys);
511 if (!m_topbar_bbar_p4.empty())
512 m_topbar_bbar_p4.set(*evtInfo, invalidRecoParton(), sys);
513 if (!m_top_Wplus_decay0_p4.empty())
514 m_top_Wplus_decay0_p4.set(*evtInfo, invalidRecoParton(), sys);
515 if (!m_top_Wplus_decay1_p4.empty())
516 m_top_Wplus_decay1_p4.set(*evtInfo, invalidRecoParton(), sys);
517 if (!m_topbar_Wminus_decay0_p4.empty())
518 m_topbar_Wminus_decay0_p4.set(*evtInfo, invalidRecoParton(), sys);
519 if (!m_topbar_Wminus_decay1_p4.empty())
520 m_topbar_Wminus_decay1_p4.set(*evtInfo, invalidRecoParton(), sys);
521 }
522 if (hyperTopology == EventReco::HyPERTopology::TtbarLJets) {
523 m_hyper_TtbarLJets_Classification_Score.set(*evtInfo, -1, sys);
525 std::vector<int>{-1, -1, -1}, sys);
527 std::vector<int>{-1, -1, -1}, sys);
528 m_hyper_TtbarLJets_WHad_Indices.set(*evtInfo, std::vector<int>{-1, -1},
529 sys);
530 m_hyper_TtbarLJets_WLep_Indices.set(*evtInfo, std::vector<int>{-1, -1},
531 sys);
532 m_hyper_TtbarLJets_TopHad_Score.set(*evtInfo, -1, sys);
533 m_hyper_TtbarLJets_TopLep_Score.set(*evtInfo, -1, sys);
534 m_hyper_TtbarLJets_WHad_Score.set(*evtInfo, -1, sys);
535 m_hyper_TtbarLJets_WLep_Score.set(*evtInfo, -1, sys);
536 m_hyper_TtbarLJets_TopHad_IDs.set(*evtInfo, std::vector<int>{-1, -1, -1},
537 sys);
538 m_hyper_TtbarLJets_TopLep_IDs.set(*evtInfo, std::vector<int>{-1, -1, -1},
539 sys);
540 if (!m_toplep_b_p4.empty())
541 m_toplep_b_p4.set(*evtInfo, invalidRecoParton(), sys);
542 if (!m_toplep_lep_p4.empty())
543 m_toplep_lep_p4.set(*evtInfo, invalidRecoParton(), sys);
544 if (!m_tophad_b_p4.empty())
545 m_tophad_b_p4.set(*evtInfo, invalidRecoParton(), sys);
546 if (!m_tophad_w_decay0_p4.empty())
547 m_tophad_w_decay0_p4.set(*evtInfo, invalidRecoParton(), sys);
548 if (!m_tophad_w_decay1_p4.empty())
549 m_tophad_w_decay1_p4.set(*evtInfo, invalidRecoParton(), sys);
550 }
551 if (hyperTopology == EventReco::HyPERTopology::TtbarDiLepton) {
552 m_hyper_TtbarDiLepton_Classification_Score.set(*evtInfo, -1, sys);
553 m_hyper_TtbarDiLepton_Top1_Indices.set(*evtInfo, std::vector<int>{-1, -1},
554 sys);
555 m_hyper_TtbarDiLepton_Top2_Indices.set(*evtInfo, std::vector<int>{-1, -1},
556 sys);
557 m_hyper_TtbarDiLepton_Top1_Score.set(*evtInfo, -1, sys);
558 m_hyper_TtbarDiLepton_Top2_Score.set(*evtInfo, -1, sys);
559 m_hyper_TtbarDiLepton_Top1_IDs.set(*evtInfo, std::vector<int>{-1, -1},
560 sys);
561 m_hyper_TtbarDiLepton_Top2_IDs.set(*evtInfo, std::vector<int>{-1, -1},
562 sys);
563 m_hyper_TtbarDiLepton_HE_Score.set(*evtInfo, -1, sys);
564 if (!m_top_b_p4.empty())
565 m_top_b_p4.set(*evtInfo, invalidRecoParton(), sys);
566 if (!m_topbar_bbar_p4.empty())
567 m_topbar_bbar_p4.set(*evtInfo, invalidRecoParton(), sys);
568 if (!m_top_lep_p4.empty())
569 m_top_lep_p4.set(*evtInfo, invalidRecoParton(), sys);
570 if (!m_topbar_lepbar_p4.empty())
571 m_topbar_lepbar_p4.set(*evtInfo, invalidRecoParton(), sys);
572 }
573
574 if (m_selection && !m_selection.getBool(*evtInfo, sys)) {
575 lockAllDecorations();
576 continue;
577 }
578
579 // Read the containers
580 const xAOD::ElectronContainer* electrons = nullptr;
581 ANA_CHECK(m_electronsHandle.retrieve(electrons, sys, ctx));
582 const xAOD::MuonContainer* muons = nullptr;
583 ANA_CHECK(m_muonsHandle.retrieve(muons, sys, ctx));
584 const xAOD::JetContainer* jets = nullptr;
585 ANA_CHECK(m_jetsHandle.retrieve(jets, sys, ctx));
586 const xAOD::MissingETContainer* met = nullptr;
587 ANA_CHECK(m_metHandle.retrieve(met, sys, ctx));
588
589 // Apply object-wise selection
590 ConstDataVector<xAOD::ElectronContainer> selected_electrons(
592 ConstDataVector<xAOD::MuonContainer> selected_muons(SG::VIEW_ELEMENTS);
593 ConstDataVector<xAOD::JetContainer> selected_jets(SG::VIEW_ELEMENTS);
594 std::vector<int> selected_jets_btag;
595
596 ANA_MSG_DEBUG("Building particle containers.");
597
598 ANA_MSG_DEBUG("Building electrons container.");
599 for (const xAOD::Electron* el : *electrons) {
600 if (m_electronSelection.getBool(*el, sys))
601 selected_electrons.push_back(el);
602 }
603
604 ANA_MSG_DEBUG("Building muons container.");
605 for (const xAOD::Muon* mu : *muons) {
606 if (m_muonSelection.getBool(*mu, sys))
607 selected_muons.push_back(mu);
608 }
609
610 ANA_MSG_DEBUG("Building jets container.");
611 for (const xAOD::Jet* jet : *jets) {
612 if (m_jetSelection.getBool(*jet, sys))
613 selected_jets.push_back(jet);
614 }
615
616 // Build the HyPER graph
617 m_hyperInputs.m_electrons = selected_electrons;
618 m_hyperInputs.m_muons = selected_muons;
619 m_hyperInputs.m_jets = selected_jets;
620 m_hyperInputs.m_met = met;
621 ANA_MSG_DEBUG("Building graph.");
622 ANA_CHECK(this->buildGraph());
623 ANA_MSG_DEBUG("Graph building successful.");
624
625 if (this->msg().level() == MSG::VERBOSE) {
626 ANA_MSG_INFO("Printing the graph...");
627 m_hyperGraph->printGraph();
628 }
629
630 // Parse the inputs to the HyPER algorithm
631 ANA_MSG_DEBUG("Building the ONNX inputs.");
632 m_hyperParser->buildONNXInputs(*m_hyperGraph, *m_hyperModel);
633 ANA_MSG_DEBUG("ONNX inputs building successful.");
634
635 // Run the HyPER algorithm
636 ANA_MSG_DEBUG("Evaluating model.");
637 unsigned int modelToUse;
638 // The model TRAINED on even should always be at position [0] in the
639 // m_session vector so, m_session[1] should be used for even events
640 modelToUse = evtInfo->eventNumber() % 2 == 0 ? 1 : 0;
641
642 ANA_MSG_DEBUG("Using model: " << modelToUse);
643 ANA_CHECK(m_hyperModel->evaluate(modelToUse));
644 ANA_MSG_DEBUG("Model evaluation successful.");
645
646 if (this->msg().level() == MSG::VERBOSE) {
647 ANA_MSG_INFO("Printing the ONNX inputs:");
648 m_hyperModel->printInputInfo(true);
649 ANA_MSG_INFO("Printing the ONNX outputs:");
650 m_hyperModel->printOutputInfo(true);
651 }
652
653 // Process the outputs
654 ANA_MSG_DEBUG("Extracting outputs from model.");
655 m_hyperParser->getONNXOutputs(*m_hyperModel);
656 ANA_MSG_DEBUG("Outputs extraction successful.");
657
658 ANA_MSG_DEBUG("Performing output reconstruction.");
659 m_hyperParser->reconstructOutputs(*m_hyperGraph);
660 ANA_MSG_DEBUG("Output reconstruction successful.");
661
662 // Print the inputs/outputs for PyTorch/TCT validation
663 if (m_fullLogEventNumber.value() != 0 &&
664 evtInfo->eventNumber() == m_fullLogEventNumber.value()) {
665 m_hyperGraph->printGraphInputsForValidation();
666 m_hyperParser->printOutputsForValidation();
667 }
668
669 // Write the outputs
670 ANA_MSG_DEBUG("Writing the outputs.");
671
672 if (hyperTopology == EventReco::HyPERTopology::TtbarAllHadronic) {
673 std::vector<std::string> recoLabels = m_hyperParser->getLabels();
674 std::vector<std::vector<int>> recoIndices = m_hyperParser->getIndices();
675 std::vector<float> recoScores = m_hyperParser->getScores();
676 // HyPER_Reco_Top1
677 std::size_t index = getIndexFromLabel(recoLabels, "HyPER_Reco_Top1");
678 std::vector<int> top1Indices(recoIndices[index]);
679 m_hyper_TtbarAllHadronic_Top1_Indices.set(*evtInfo, top1Indices, sys);
680 m_hyper_TtbarAllHadronic_Top1_Score.set(*evtInfo, recoScores[index], sys);
681 // HyPER_Reco_Top2
682 index = getIndexFromLabel(recoLabels, "HyPER_Reco_Top2");
683 std::vector<int> top2Indices(recoIndices[index]);
684 m_hyper_TtbarAllHadronic_Top2_Indices.set(*evtInfo, top2Indices, sys);
685 m_hyper_TtbarAllHadronic_Top2_Score.set(*evtInfo, recoScores[index], sys);
686 // HyPER_Reco_W1
687 index = getIndexFromLabel(recoLabels, "HyPER_Reco_W1");
688 std::vector<int> w1Indices(recoIndices[index]);
689 m_hyper_TtbarAllHadronic_W1_Indices.set(*evtInfo, w1Indices, sys);
690 m_hyper_TtbarAllHadronic_W1_Score.set(*evtInfo, recoScores[index], sys);
691 // HyPER_Reco_W2
692 index = getIndexFromLabel(recoLabels, "HyPER_Reco_W2");
693 std::vector<int> w2Indices(recoIndices[index]);
694 m_hyper_TtbarAllHadronic_W2_Indices.set(*evtInfo, w2Indices, sys);
695 m_hyper_TtbarAllHadronic_W2_Score.set(*evtInfo, recoScores[index], sys);
696 // Build the top 4-vectors
697 // Top1
698 PtEtaPhiMVector top_b_p4 = invalidRecoParton();
699 PtEtaPhiMVector top_Wplus_decay0_p4 = invalidRecoParton();
700 PtEtaPhiMVector top_Wplus_decay1_p4 = invalidRecoParton();
701 if (!m_top_b_p4.empty() && !m_top_Wplus_decay0_p4.empty() &&
702 !m_top_Wplus_decay1_p4.empty()) {
703 buildTopP4TtbarAllHadronic(top1Indices, w1Indices, top_b_p4,
704 top_Wplus_decay0_p4, top_Wplus_decay1_p4);
705 m_top_b_p4.set(*evtInfo, top_b_p4, sys);
706 m_top_Wplus_decay0_p4.set(*evtInfo, top_Wplus_decay0_p4, sys);
707 m_top_Wplus_decay1_p4.set(*evtInfo, top_Wplus_decay1_p4, sys);
708 }
709 // Top2
710 PtEtaPhiMVector topbar_bbar_p4 = invalidRecoParton();
711 PtEtaPhiMVector topbar_Wminus_decay0_p4 = invalidRecoParton();
712 PtEtaPhiMVector topbar_Wminus_decay1_p4 = invalidRecoParton();
713 if (!m_topbar_bbar_p4.empty() && !m_topbar_Wminus_decay0_p4.empty() &&
714 !m_topbar_Wminus_decay1_p4.empty()) {
715 buildTopP4TtbarAllHadronic(top2Indices, w2Indices, topbar_bbar_p4,
716 topbar_Wminus_decay0_p4,
717 topbar_Wminus_decay1_p4);
718 m_topbar_bbar_p4.set(*evtInfo, topbar_bbar_p4, sys);
719 m_topbar_Wminus_decay0_p4.set(*evtInfo, topbar_Wminus_decay0_p4, sys);
720 m_topbar_Wminus_decay1_p4.set(*evtInfo, topbar_Wminus_decay1_p4, sys);
721 }
722 }
723 if (hyperTopology == EventReco::HyPERTopology::TtbarLJets) {
724 std::vector<std::string> recoLabels = m_hyperParser->getLabels();
725 std::vector<std::vector<int>> recoIndices = m_hyperParser->getIndices();
726 std::vector<float> recoScores = m_hyperParser->getScores();
727 std::vector<std::vector<int>> recoIDs = m_hyperParser->getIds();
728 float class_score = m_hyperParser->getClassificationScore();
729 // Classification score
730 m_hyper_TtbarLJets_Classification_Score.set(*evtInfo, class_score, sys);
731 // HyPER_Reco_TopHad
732 std::size_t indexTopHad =
733 getIndexFromLabel(recoLabels, "HyPER_Reco_TopHad");
734 ANA_MSG_DEBUG("Index of HyPER_Reco_TopHad: " << indexTopHad);
735 std::vector<int> topHadIndices = recoIndices[indexTopHad];
736 m_hyper_TtbarLJets_TopHad_Indices.set(*evtInfo, topHadIndices, sys);
737 m_hyper_TtbarLJets_TopHad_Score.set(*evtInfo, recoScores[indexTopHad],
738 sys);
739 m_hyper_TtbarLJets_TopHad_IDs.set(*evtInfo, recoIDs[indexTopHad], sys);
740 // HyPER_Reco_TopLep
741 std::size_t indexTopLep =
742 getIndexFromLabel(recoLabels, "HyPER_Reco_TopLep");
743 ANA_MSG_DEBUG("Index of HyPER_Reco_TopLep: " << indexTopLep);
744 std::vector<int> topLepIndices = recoIndices[indexTopLep];
745 std::vector<int> topLepIDs = recoIDs[indexTopLep];
746 m_hyper_TtbarLJets_TopLep_Indices.set(*evtInfo, topLepIndices, sys);
747 m_hyper_TtbarLJets_TopLep_Score.set(*evtInfo, recoScores[indexTopLep],
748 sys);
749 m_hyper_TtbarLJets_TopLep_IDs.set(*evtInfo, topLepIDs, sys);
750 // HyPER_Reco_WHad
751 std::size_t indexWHad = getIndexFromLabel(recoLabels, "HyPER_Reco_WHad");
752 ANA_MSG_DEBUG("Index of HyPER_Reco_WHad: " << indexWHad);
753 std::vector<int> wHadIndices = recoIndices[indexWHad];
754 m_hyper_TtbarLJets_WHad_Indices.set(*evtInfo, wHadIndices, sys);
755 m_hyper_TtbarLJets_WHad_Score.set(*evtInfo, recoScores[indexWHad], sys);
756 // HyPER_Reco_WLep
757 std::size_t indexWLep = getIndexFromLabel(recoLabels, "HyPER_Reco_WLep");
758 ANA_MSG_DEBUG("Index of HyPER_Reco_WLep: " << indexWLep);
759 m_hyper_TtbarLJets_WLep_Indices.set(*evtInfo, recoIndices[indexWLep],
760 sys);
761 m_hyper_TtbarLJets_WLep_Score.set(*evtInfo, recoScores[indexWLep], sys);
762
763 // Build 4-vectors for TtbarLJets
764 PtEtaPhiMVector tophad_b_p4 = invalidRecoParton();
765 PtEtaPhiMVector tophad_w_decay0_p4 = invalidRecoParton();
766 PtEtaPhiMVector tophad_w_decay1_p4 = invalidRecoParton();
767 PtEtaPhiMVector toplep_b_p4 = invalidRecoParton();
768 PtEtaPhiMVector toplep_lep_p4 = invalidRecoParton();
769
770 buildTopP4TtbarLJets(topHadIndices, wHadIndices, topLepIndices, topLepIDs,
771 tophad_b_p4, tophad_w_decay0_p4, tophad_w_decay1_p4,
772 toplep_b_p4, toplep_lep_p4);
773
774 if (!m_tophad_b_p4.empty())
775 m_tophad_b_p4.set(*evtInfo, tophad_b_p4, sys);
776 if (!m_tophad_w_decay0_p4.empty())
777 m_tophad_w_decay0_p4.set(*evtInfo, tophad_w_decay0_p4, sys);
778 if (!m_tophad_w_decay1_p4.empty())
779 m_tophad_w_decay1_p4.set(*evtInfo, tophad_w_decay1_p4, sys);
780 if (!m_toplep_b_p4.empty())
781 m_toplep_b_p4.set(*evtInfo, toplep_b_p4, sys);
782 if (!m_toplep_lep_p4.empty())
783 m_toplep_lep_p4.set(*evtInfo, toplep_lep_p4, sys);
784 }
785 if (hyperTopology == EventReco::HyPERTopology::TtbarDiLepton) {
786 std::vector<std::string> recoLabels = m_hyperParser->getLabels();
787 std::vector<std::vector<int>> recoIndices = m_hyperParser->getIndices();
788 std::vector<float> recoScores = m_hyperParser->getScores();
789 std::vector<std::vector<int>> recoIDs = m_hyperParser->getIds();
790 float class_score = m_hyperParser->getClassificationScore();
791 PtEtaPhiMVector topBP4 = invalidRecoParton();
792 PtEtaPhiMVector topbarBbarP4 = invalidRecoParton();
793 PtEtaPhiMVector topLepP4 = invalidRecoParton();
794 PtEtaPhiMVector topbarLepbarP4 = invalidRecoParton();
795 // Classification score
796 m_hyper_TtbarDiLepton_Classification_Score.set(*evtInfo, class_score,
797 sys);
798 // HyPER_Reco_Top1
799 std::size_t index = getIndexFromLabel(recoLabels, "HyPER_Reco_Top1");
800 m_hyper_TtbarDiLepton_Top1_Indices.set(*evtInfo, recoIndices[index], sys);
801 m_hyper_TtbarDiLepton_Top1_Score.set(*evtInfo, recoScores[index], sys);
802 m_hyper_TtbarDiLepton_Top1_IDs.set(*evtInfo, recoIDs[index], sys);
803
804 PtEtaPhiMVector candidateBJetP4 = invalidRecoParton();
805 PtEtaPhiMVector candidateLeptonP4 = invalidRecoParton();
806 float analyserCharge = 0.;
807 if (buildDileptonPartialCandidate(recoIndices[index], recoIDs[index],
808 candidateBJetP4, candidateLeptonP4,
809 analyserCharge)) {
810 if (analyserCharge > 0.) {
811 topBP4 = candidateBJetP4;
812 topLepP4 = candidateLeptonP4;
813 } else if (analyserCharge < 0.) {
814 topbarBbarP4 = candidateBJetP4;
815 topbarLepbarP4 = candidateLeptonP4;
816 }
817 }
818
819 // HyPER_Reco_Top2
820 index = getIndexFromLabel(recoLabels, "HyPER_Reco_Top2");
821 m_hyper_TtbarDiLepton_Top2_Indices.set(*evtInfo, recoIndices[index], sys);
822 m_hyper_TtbarDiLepton_Top2_Score.set(*evtInfo, recoScores[index], sys);
823 m_hyper_TtbarDiLepton_Top2_IDs.set(*evtInfo, recoIDs[index], sys);
824
825 candidateBJetP4 = invalidRecoParton();
826 candidateLeptonP4 = invalidRecoParton();
827 analyserCharge = 0.;
828 if (buildDileptonPartialCandidate(recoIndices[index], recoIDs[index],
829 candidateBJetP4, candidateLeptonP4,
830 analyserCharge)) {
831 if (analyserCharge > 0.) {
832 topBP4 = candidateBJetP4;
833 topLepP4 = candidateLeptonP4;
834 } else if (analyserCharge < 0.) {
835 topbarBbarP4 = candidateBJetP4;
836 topbarLepbarP4 = candidateLeptonP4;
837 }
838 }
839
840 // HyPER_HE_Score
841 index = getIndexFromLabel(recoLabels, "HyPER_Reco_HE");
842 m_hyper_TtbarDiLepton_HE_Score.set(*evtInfo, recoScores[index], sys);
843
844 if (!m_top_b_p4.empty())
845 m_top_b_p4.set(*evtInfo, topBP4, sys);
846 if (!m_topbar_bbar_p4.empty())
847 m_topbar_bbar_p4.set(*evtInfo, topbarBbarP4, sys);
848 if (!m_top_lep_p4.empty())
849 m_top_lep_p4.set(*evtInfo, topLepP4, sys);
850 if (!m_topbar_lepbar_p4.empty())
851 m_topbar_lepbar_p4.set(*evtInfo, topbarLepbarP4, sys);
852 }
853
854 // Clear the graph and other relevant objects for the next event
855 ANA_MSG_DEBUG("Cleaning HyPER objects for next event.");
856 m_hyperGraph->clearGraph();
857 m_hyperModel->clearInputs();
858 m_hyperModel->clearOutputs();
859 m_hyperParser->clear();
860 m_hyperInputs.clear();
861 ANA_MSG_DEBUG("Clean successful.");
862
863 lockAllDecorations();
864 }
865 return StatusCode::SUCCESS;
866}
std::vector< size_t > vec
#define ANA_MSG_INFO(xmsg,...)
Macro printing info messages.
#define ANA_CHECK(EXP)
check whether the given expression was successful
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_b_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_lep_p4
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_WHad_Score
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_lepbar_p4
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_Top2_Indices
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_TopLep_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top1_IDs
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_Top2_Score
CP::SysReadSelectionHandle m_jetSelection
CP::SysReadSelectionHandle m_electronSelection
void buildTopP4TtbarLJets(const std::vector< int > &topHadIndices, const std::vector< int > &wHadIndices, const std::vector< int > &topLepIndices, const std::vector< int > &topLepIDs, PtEtaPhiMVector &tophad_b_p4, PtEtaPhiMVector &tophad_w_decay0_p4, PtEtaPhiMVector &tophad_w_decay1_p4, PtEtaPhiMVector &toplep_b_p4, PtEtaPhiMVector &toplep_lep_p4)
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_WHad_Indices
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_Wplus_decay1_p4
CP::SysReadHandle< xAOD::JetContainer > m_jetsHandle
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_Top1_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopHad_IDs
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopHad_Indices
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_TopHad_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_WLep_Score
CP::SysListHandle m_systematicsList
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_W2_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_WLep_Indices
CP::SysReadHandle< xAOD::EventInfo > m_eventInfoHandle
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_tophad_w_decay1_p4
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top1_Indices
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_toplep_lep_p4
HyPERTopology m_hyperTopology
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top2_IDs
CP::SysReadHandle< xAOD::MuonContainer > m_muonsHandle
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopLep_IDs
CP::SysReadHandle< xAOD::ElectronContainer > m_electronsHandle
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_Top1_Score
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarDiLepton_Top2_Indices
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_Wminus_decay0_p4
CP::SysReadHandle< xAOD::MissingETContainer > m_metHandle
CP::SysReadSelectionHandle m_muonSelection
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarLJets_TopLep_Indices
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_toplep_b_p4
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_W2_Indices
CP::SysWriteDecorHandle< std::vector< int > > m_hyper_TtbarAllHadronic_W1_Indices
Gaudi::Property< long unsigned int > m_fullLogEventNumber
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_bbar_p4
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_Top2_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_Top1_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_Classification_Score
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_tophad_w_decay0_p4
CP::SysWriteDecorHandle< float > m_hyper_TtbarDiLepton_HE_Score
CP::SysWriteDecorHandle< float > m_hyper_TtbarLJets_Classification_Score
std::unique_ptr< HyPERParser > m_hyperParser
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_tophad_b_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_topbar_Wminus_decay1_p4
CP::SysWriteDecorHandle< PtEtaPhiMVector > m_top_Wplus_decay0_p4
CP::SysReadSelectionHandle m_selection
CP::SysWriteDecorHandle< float > m_hyper_TtbarAllHadronic_W1_Score
StatusCode buildGraph()
These methods build the HyPER graph based on the user-input topology.
bool buildDileptonPartialCandidate(const std::vector< int > &indices, const std::vector< int > &ids, PtEtaPhiMVector &bJetP4, PtEtaPhiMVector &leptonP4, float &analyserCharge) const
uint64_t eventNumber() const
The current event's event number.
str index
Definition DeMoScan.py:362
std::size_t getIndexFromLabel(const std::vector< std::string > &vec, const std::string &label)
MSG::Level g_hyper_msg_level
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
EventInfo_v1 EventInfo
Definition of the latest event info version.
JetContainer_v1 JetContainer
Definition of the current "jet container version".
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
MsgStream & msg
Definition testRead.cxx:32

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ fileExecute()

StatusCode EL::AnaAlgorithm::fileExecute ( )
protectedinherited

perform the action exactly once for each file in the dataset

Ideally you don't use this, but instead rely on meta-data tools instead. However, there are enough people asking for it that I decided to implement it anyways.

Warning
To use this you have to call requestFileExecute to use this.
The user should not expect this to be called at any particular point in execution. If a file is split between multiple jobs this will be called in only one of these jobs, and not the others. It usually gets called before the first event in a file, but that is not guaranteed and relying on this is a bug.
The execution order of beginInputFile and fileExecute is currently unspecified.
fileExecute does not work with sub-file splitting in Athena, i.e. processing half the events of a file in one job the other half in another job. this should not normally happen, unless you do crazy things like run AthenaMP or explicitly select sub-file splitting in panda. in that case you are on your own.

Definition at line 345 of file AnaAlgorithm.cxx.

347 {
348 return StatusCode::SUCCESS;
349 }

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode EventReco::RunHyPERAlg::finalize ( )
overridevirtual

Definition at line 1308 of file RunHyPERAlg.cxx.

1308 {
1309 ANA_MSG_INFO("Finalizing RunHyPER");
1310 return StatusCode::SUCCESS;
1311}

◆ graph()

TGraph * AthHistogramming::graph ( const std::string & graphName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered TGraphs.

Definition at line 438 of file AthHistogramming.cxx.

439{
440 // Build a 32 bit hash out of the name
441 const hash_t graphHash = this->hash(graphName);
442
443 // See if this entry exists in the map
444 GraphMap_t::const_iterator it = m_graphMap.find( graphHash );
445 if ( it == m_graphMap.end() ) // It doesn't exist!
446 { // Let's see into the THistSvc if somebody else has registered the TGraph...
447
448 // Massage the final string to book things
449 std::string bookingString = buildBookingString( graphName, tDir, stream, false);
450
451 TGraph* graphPointer(nullptr);
452 if ( !((histSvc()->getGraph(bookingString, graphPointer)).isSuccess()) )
453 {
454 // Massage the final string to book things
455 std::string bookingString = buildBookingString( graphName, tDir, stream, true );
456
457 if ( !((histSvc()->getGraph(bookingString, graphPointer)).isSuccess()) )
458 {
459 m_msg << MSG::WARNING
460 << "Problem retrieving the TGraph with name (including pre- and post-fixes) "
461 << bookingString
462 << " or with name " << graphName
463 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
464 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
465 return nullptr;
466 }
467 // If we get to here, we actually found the TGraph in the THistSvc.
468 // So let's add it to the local cache map and return its pointer
469 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphPointer ) );
470 return graphPointer;
471 }
472 // If we get to here, we actually found the TGraph in the THistSvc.
473 // So let's add it to the local cache map and return its pointer
474 m_graphMap.insert( m_graphMap.end(), std::pair< const hash_t, TGraph* >( graphHash, graphPointer ) );
475 return graphPointer;
476 }
477
478
479 // Return the pointer to the TGraph that we got from the local cache map
480 return it->second;
481}
std::pair< StatusCode, TGraph * > getGraph(ITHistSvc &svc, const std::string &name)

◆ handle()

void EL::AnaAlgorithm::handle ( const Incident & inc)
inherited

receive the given incident

Guarantee
basic
Failures
incident handling errors

Definition at line 523 of file AnaAlgorithm.cxx.

525 {
526 if (inc.type() == IncidentType::BeginInputFile)
527 {
532 } else if (inc.type() == IncidentType::EndInputFile)
533 {
536 } else
537 {
538 ATH_MSG_WARNING( "Unknown incident type received: " << inc.type() );
539 }
540 }
#define ATH_MSG_WARNING(x,...)
#define ANA_CHECK_THROW(EXP)
check whether the given expression was successful, throwing an exception on failure
virtual::StatusCode endInputFile()
perform the action for the end of an input file
virtual::StatusCode fileExecute()
perform the action exactly once for each file in the dataset
bool m_hasBeginInputFile
the value of hasBeginInputFile
bool m_hasFileExecute
the value of hasFileExecute
bool m_hasEndInputFile
the value of hasEndInputFile
virtual::StatusCode beginInputFile()
perform the action for the beginning of an input file

◆ hash()

AthHistogramming::hash_t AthHistogramming::hash ( std::string_view histName) const
inlineprivateinherited

Method to calculate a 32-bit hash from a string.

Definition at line 422 of file AthHistogramming.h.

423{
424 const uint64_t hash64 = CxxUtils::crc64( std::string{histName} );
425 return (hash_t)(hash64 & 0xFFFFFFFF);
426}
uint64_t crc64(const CRCTable &table, const char *data, size_t data_len)
Find the CRC-64 of a string,.
Definition crc64.cxx:695
std::uint64_t hash64(const void *data, std::size_t size)
Passthrough to XXH3_64bits.
Definition XXH.cxx:9

◆ hist()

TH1 * AthHistogramming::hist ( std::string_view histName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered histograms of any type.

Definition at line 182 of file AthHistogramming.cxx.

183 {
184
185 const auto histBaseName = splitName(histName).second;
186 std::string bookingString = buildBookingString(histName, tDir, stream, false);
187
188 const hash_t histHash = this->hash(histBaseName);
189
190 HistMap_t::const_iterator it = m_histMap.find(histHash);
191 if (it == m_histMap.end()) {
192 TH1* histPointer(nullptr);
193
194 if (!histSvc()->getHist(bookingString, histPointer).isSuccess()) {
195 std::string prefixedBookingString = buildBookingString(histName, tDir, stream, true);
196 if (!histSvc()->getHist(prefixedBookingString, histPointer).isSuccess()) {
197 m_msg << MSG::WARNING
198 << "Problem retrieving the histogram with name (including pre- and post-fixes) "
199 << prefixedBookingString
200 << " or with name " << histName
201 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
202 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
203 return nullptr;
204 }
205 }
206
207 m_histMap.insert(m_histMap.end(), std::pair<const hash_t, TH1*>(histHash, histPointer));
208 return histPointer;
209 }
210
211 return it->second;
212}
std::pair< StatusCode, TH1 * > getHist(ITHistSvc &svc, const std::string &name, size_t index=0)

◆ hist2d()

TH2 * AthHistogramming::hist2d ( std::string_view histName,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the retrieval of registered 2-d histograms.

Definition at line 363 of file AthHistogramming.h.

364{
365 // Get the TH1 pointer
366 TH1* th1Pointer = this->hist(histName, tDir, stream);
367 if ( !th1Pointer )
368 {
369 m_msg << MSG::ERROR
370 << "Cannot get a 2-d histogram with name " << histName
371 << "... will probably seg-fault!" << endmsg;
372 return NULL;
373 }
374 // If the TH1 pointer is valid, simply return the dynamic_cast
375 return dynamic_cast<TH2*>( th1Pointer );
376}

◆ hist3d()

TH3 * AthHistogramming::hist3d ( std::string_view histName,
const std::string & tDir = "",
const std::string & stream = "" )
inlineprotectedinherited

Simplify the retrieval of registered 3-d histograms.

Definition at line 380 of file AthHistogramming.h.

381{
382 // Get the TH1 pointer
383 TH1* th1Pointer = this->hist(histName, tDir, stream);
384 if ( !th1Pointer )
385 {
386 m_msg << MSG::ERROR
387 << "Cannot get a 3-d histogram with name " << histName
388 << "... will probably seg-fault!" << endmsg;
389 return NULL;
390 }
391 // If the TH1 pointer is valid, simply return the dynamic_cast
392 return dynamic_cast<TH3*>( th1Pointer );
393}

◆ histSvc()

const ServiceHandle< ITHistSvc > & AthHistogramAlgorithm::histSvc ( ) const
inlineinherited

The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a pointer to the THistSvc.

Definition at line 113 of file AthHistogramAlgorithm.h.

114{
115 return m_histSvc;
116}
ServiceHandle< ITHistSvc > m_histSvc
Default constructor: AthHistogramAlgorithm();.

◆ initialize()

StatusCode EventReco::RunHyPERAlg::initialize ( )
overridevirtual

Definition at line 39 of file RunHyPERAlg.cxx.

39 {
40 ANA_MSG_INFO("Initializing RunHyPER " << name());
41 ANA_MSG_INFO(" --> topology: " << m_topology.value());
42 ANA_MSG_INFO(" --> btagger: " << m_btagger.value());
43 ANA_MSG_INFO(" --> debug level: " << static_cast<int>(this->msg().level()));
44 ANA_MSG_INFO(" --> full log event number: " << m_fullLogEventNumber.value());
45
46 // Retrieve the ONNX inference tools, one per cross-validation fold
49
50 // Load the b-tagging decoration
51 m_btagDecorName = "ftag_quantile_" + m_btagger.value();
52 m_bTagDecoAcc = std::make_unique<SG::ConstAccessor<int>>(m_btagDecorName);
53
54 // Parse topology
55 HyPERTopology hyperTopology = strToHyPERTopology(m_topology.value());
56 if (hyperTopology == EventReco::HyPERTopology::NotSelected) {
57 ANA_MSG_ERROR("Unrecognized HyPER topology: " << m_topology.value());
58 return StatusCode::FAILURE;
59 }
60 m_hyperTopology = hyperTopology;
61 m_ljetsUseBTag = (m_topology.value() == "TtbarLJets");
62
63 // Initialise object containers
75 // Intialise pre-selection
78
79 // Decorations (topology dependent)
80 if (hyperTopology == EventReco::HyPERTopology::TtbarAllHadronic) {
109 }
110 if (hyperTopology == EventReco::HyPERTopology::TtbarLJets) {
143 }
144 if (hyperTopology == EventReco::HyPERTopology::TtbarDiLepton) {
169 }
170
171 // Initialise systematics
172 ANA_CHECK(m_systematicsList.initialize());
173
174 // Initialise the correct HyPER model
175 if (hyperTopology == EventReco::HyPERTopology::TtbarLJets) {
176 ANA_MSG_INFO("Loading HyPER model.");
177 m_hyperModel = std::make_unique<EventReco::HyPERTtbarLJetsModel>(
179 ANA_MSG_INFO("Loaded TtbarLJets HyPER model!");
180
181 ANA_MSG_DEBUG("Initialising HyPERParser");
182 m_hyperParser = std::make_unique<EventReco::HyPERTtbarLJetsParser>();
183 ANA_MSG_DEBUG("Initialised HyPERParserTtbarLJets Parser");
184
185 } else if (hyperTopology == EventReco::HyPERTopology::TtbarAllHadronic) {
186 ANA_MSG_INFO("Loading HyPER model.");
187 m_hyperModel = std::make_unique<EventReco::HyPERTtbarAllHadronicModel>(
189 ANA_MSG_INFO("Loaded TtbarAllHadronic HyPER model!");
190
191 ANA_MSG_DEBUG("Initialising HyPERParser");
192 m_hyperParser = std::make_unique<EventReco::HyPERTtbarAllHadronicParser>();
193 ANA_MSG_DEBUG("Initialised HyPERParserTtbarAllHadronic Parser");
194 } else if (hyperTopology == EventReco::HyPERTopology::TtbarDiLepton) {
195 ANA_MSG_INFO("Loading HyPER model.");
196 m_hyperModel = std::make_unique<EventReco::HyPERTtbarDiLeptonModel>(
198 ANA_MSG_INFO("Loaded TtbarDiLepton HyPER model!");
199
200 ANA_MSG_DEBUG("Initialising HyPERParser");
201 m_hyperParser = std::make_unique<EventReco::HyPERTtbarDiLeptonParser>();
202 ANA_MSG_DEBUG("Initialised HyPERTtbarDiLepton Parser");
203 }
204
205 // Resolve the ONNX node names of the selected topology
206 ANA_CHECK(m_hyperModel->initialize());
207
208 // Initialisation of the HyPERGraph
209 ANA_MSG_DEBUG("Initialising HyPERGraph");
210 m_hyperGraph = std::make_unique<EventReco::HyPERGraph>();
211 ANA_MSG_DEBUG("Initialised HyPERGraph");
212
213 return StatusCode::SUCCESS;
214}
ToolHandle< AthOnnx::IOnnxRuntimeInferenceTool > m_onnxToolTrainedOnEven
Gaudi::Property< std::string > m_btagger
Gaudi::Property< std::string > m_topology
ToolHandle< AthOnnx::IOnnxRuntimeInferenceTool > m_onnxToolTrainedOnOdd
HyPERTopology strToHyPERTopology(const std::string &str)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ inputMetaStore() [1/2]

AnaAlgorithm::MetaStorePtr_t EL::AnaAlgorithm::inputMetaStore ( )
inherited

Definition at line 75 of file AnaAlgorithm.cxx.

76 {
77#ifdef XAOD_STANDALONE
78 return &m_inputMetaStore;
79#else
80 return m_inputMetaStore;
81#endif // XAOD_STANDALONE
82 }

◆ inputMetaStore() [2/2]

AnaAlgorithm::ConstMetaStorePtr_t EL::AnaAlgorithm::inputMetaStore ( ) const
inherited

Accessor for the input metadata store

Definition at line 66 of file AnaAlgorithm.cxx.

67 {
68#ifdef XAOD_STANDALONE
69 return &m_inputMetaStore;
70#else
71 return m_inputMetaStore;
72#endif // XAOD_STANDALONE
73 }

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::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< Gaudi::Algorithm > >::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.

◆ outputMetaStore() [1/2]

AnaAlgorithm::MetaStorePtr_t EL::AnaAlgorithm::outputMetaStore ( )
inherited

Definition at line 95 of file AnaAlgorithm.cxx.

96 {
97#ifdef XAOD_STANDALONE
98 return &m_outputMetaStore;
99#else
100 return m_outputMetaStore;
101#endif // XAOD_STANDALONE
102 }

◆ outputMetaStore() [2/2]

AnaAlgorithm::ConstMetaStorePtr_t EL::AnaAlgorithm::outputMetaStore ( ) const
inherited

Accessor for the output metadata store

Definition at line 86 of file AnaAlgorithm.cxx.

87 {
88#ifdef XAOD_STANDALONE
89 return &m_outputMetaStore;
90#else
91 return m_outputMetaStore;
92#endif // XAOD_STANDALONE
93 }

◆ print()

void EL::AnaAlgorithm::print ( ) const
protectedvirtualinherited

print the state of the algorithm

This is mostly to allow algorithms to add a little debugging information if they feel like it.

Definition at line 339 of file AnaAlgorithm.cxx.

341 {}

◆ 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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ requestBeginInputFile()

StatusCode EL::AnaAlgorithm::requestBeginInputFile ( )
inherited

register this algorithm to have an implementation of beginInputFile

Guarantee
strong
Failures
beginInputFile not supported

Definition at line 264 of file AnaAlgorithm.cxx.

266 {
267 m_hasBeginInputFile = true;
268
269#ifndef XAOD_STANDALONE
270 // Connect to the IncidentSvc:
271 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
272 ATH_CHECK( incSvc.retrieve() );
273
274 // Set up the right callback, but ensure we don't double-register
275 // if we are called twice
276 incSvc->removeListener( this, IncidentType::BeginInputFile );
277 incSvc->addListener( this, IncidentType::BeginInputFile, 0, true );
278#endif
279
280 return StatusCode::SUCCESS;
281 }
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ requestEndInputFile()

StatusCode EL::AnaAlgorithm::requestEndInputFile ( )
inherited

register this algorithm to have an implementation of endInputFile

Guarantee
strong
Failures
endInputFile not supported

Definition at line 285 of file AnaAlgorithm.cxx.

287 {
288 m_hasEndInputFile = true;
289
290#ifndef XAOD_STANDALONE
291 // Connect to the IncidentSvc:
292 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
293 ATH_CHECK( incSvc.retrieve() );
294
295 // Set up the right callback, but ensure we don't double-register
296 // if we are called twice
297 incSvc->removeListener( this, IncidentType::EndInputFile );
298 incSvc->addListener( this, IncidentType::EndInputFile, 0, true );
299#endif
300
301 return StatusCode::SUCCESS;
302 }

◆ requestFileExecute()

StatusCode EL::AnaAlgorithm::requestFileExecute ( )
inherited

register this algorithm to have an implementation of fileexecute

Guarantee
strong
Failures
fileExecute not supported

Definition at line 243 of file AnaAlgorithm.cxx.

245 {
246 m_hasFileExecute = true;
247
248#ifndef XAOD_STANDALONE
249 // Connect to the IncidentSvc:
250 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
251 ATH_CHECK( incSvc.retrieve() );
252
253 // Set up the right callback, but ensure we don't double-register
254 // if we are called twice
255 incSvc->removeListener( this, IncidentType::BeginInputFile );
256 incSvc->addListener( this, IncidentType::BeginInputFile, 0, true );
257#endif
258
259 return StatusCode::SUCCESS;
260 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthHistogramAlgorithm::sysInitialize ( )
virtualinherited

Initialization method invoked by the framework.

This method is responsible for any bookkeeping of initialization required by the framework itself. It will in turn invoke the initialize() method of the derived algorithm, and of any sub-algorithms which it creates.

Reimplemented from AthCommonAlgorithm< Gaudi::Algorithm >.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 75 of file AthHistogramAlgorithm.cxx.

76{
77 // ---- stolen from GaudiKernel/Algorithm::sysInitialize -------
78 // Bypass the initialization if the algorithm
79 // has already been initialized.
80 if ( Gaudi::StateMachine::INITIALIZED <= FSMState() ) return StatusCode::SUCCESS;
81
82 // Set the Algorithm's properties
83 bindPropertiesTo( serviceLocator()->getOptsSvc() );
84
85 // Bypass the initialization if the algorithm is disabled.
86 // Need to do this after bindPropertiesTo.
87 if ( !isEnabled( ) ) return StatusCode::SUCCESS;
88
89 // ---- stolen from GaudiKernel/Algorithm::sysInitialize ------- END ---
90
91
92 // Get the THistSvc
93 ATH_CHECK ( histSvc().retrieve() );
94
95 // Configure the underlying AthHistogramming helper
100
101 // Print some setup information into the log file
102 ATH_MSG_DEBUG ("Initializing " << name() << "...");
103 ATH_MSG_DEBUG (" using THistService = " << m_histSvc );
104 ATH_MSG_DEBUG (" using RootStreamName = " << m_prefix );
105 ATH_MSG_DEBUG (" using RootDirName = " << m_rootDir );
106 ATH_MSG_DEBUG (" using HistNamePrefix = " << m_histNamePrefix );
107 ATH_MSG_DEBUG (" using HistNamePostfix = " << m_histNamePostfix );
108 ATH_MSG_DEBUG (" using HistTitlePrefix = " << m_histTitlePrefix );
109 ATH_MSG_DEBUG (" using HistTitlePostfix = " << m_histTitlePostfix );
110
111
112 // re-direct to base class...
114}
#define ATH_MSG_DEBUG(x,...)
virtual StatusCode sysInitialize() override
const ServiceHandle< ITHistSvc > & histSvc() const
The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a...
std::string m_histNamePrefix
The prefix for the histogram THx name.
std::string m_prefix
Name of the ROOT output stream (file).
std::string m_histNamePostfix
The postfix for the histogram THx name.
std::string m_histTitlePostfix
The postfix for the histogram THx title.
std::string m_rootDir
Name of the ROOT directory.
std::string m_histTitlePrefix
The prefix for the histogram THx title.
StatusCode configAthHistogramming(const ServiceHandle< ITHistSvc > &histSvc, const std::string &prefix, const std::string &rootDir, const std::string &histNamePrefix, const std::string &histNamePostfix, const std::string &histTitlePrefix, const std::string &histTitlePostfix)
To be called by the derived classes to fill the internal configuration.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ tree()

TTree * AthHistogramming::tree ( const std::string & treeName,
const std::string & tDir = "",
const std::string & stream = "" )
protectedinherited

Simplify the retrieval of registered TTrees.

Definition at line 333 of file AthHistogramming.cxx.

334{
335 // Build a 32 bit hash out of the name
336 const hash_t treeHash = this->hash(treeName);
337 // See if this entry exists in the map
338 TreeMap_t::const_iterator it = m_treeMap.find( treeHash );
339 if ( it == m_treeMap.end() ) // It doesn't exist!
340 { // Let's see into the THistSvc if somebody else has registered the TTree...
341 // Massage the final string to book things
342 std::string bookingString = buildBookingString( treeName, tDir, stream);
343
344 TTree* treePointer(NULL);
345 if ( !((histSvc()->getTree(bookingString, treePointer)).isSuccess()) )
346 {
347 m_msg << MSG::WARNING
348 << "Problem retrieving the TTree with name " << treeName
349 << " in " << m_name << "... it doesn't exist, neither in the cached map nor in the THistSvc!"
350 << " Will return an NULL pointer... you have to handle it correctly!" << endmsg;
351 return NULL;
352 }
353 // If we get to here, we actually found the TTree in the THistSvc.
354 // So let's add it to the local cache map and return its pointer
355 m_treeMap.insert( m_treeMap.end(), std::pair< const hash_t, TTree* >( treeHash, treePointer ) );
356 return treePointer;
357 }
358
359 // Return the pointer to the TTree that we got from the local cache map
360 return it->second;
361}
std::pair< StatusCode, TTree * > getTree(ITHistSvc &svc, const std::string &name)

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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 }

Member Data Documentation

◆ m_bTagDecoAcc

std::unique_ptr<SG::ConstAccessor<int> > EventReco::RunHyPERAlg::m_bTagDecoAcc
private

Definition at line 374 of file RunHyPERAlg.h.

◆ m_btagDecorName

std::string EventReco::RunHyPERAlg::m_btagDecorName
private

Definition at line 126 of file RunHyPERAlg.h.

◆ m_btagger

Gaudi::Property<std::string> EventReco::RunHyPERAlg::m_btagger
private
Initial value:
{
this, "btagger", "GN2v01_Continuous",
"Name of the b-tagger and working point for jets. The "
"'ftag_quantile_' prefix is added internally."}

Definition at line 120 of file RunHyPERAlg.h.

120 {
121 this, "btagger", "GN2v01_Continuous",
122 "Name of the b-tagger and working point for jets. The "
123 "'ftag_quantile_' prefix is added internally."};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_effMap

EffMap_t AthHistogramming::m_effMap
privateinherited

The map of histogram names to their pointers.

Definition at line 202 of file AthHistogramming.h.

◆ m_electronSelection

CP::SysReadSelectionHandle EventReco::RunHyPERAlg::m_electronSelection
private
Initial value:
{
this, "electronSelection", "", "The selection on the input electrons."}

Definition at line 162 of file RunHyPERAlg.h.

162 {
163 this, "electronSelection", "", "The selection on the input electrons."};

◆ m_electronsHandle

CP::SysReadHandle<xAOD::ElectronContainer> EventReco::RunHyPERAlg::m_electronsHandle
private
Initial value:
{
this, "electrons", "", "The electron container to use."}

Definition at line 160 of file RunHyPERAlg.h.

160 {
161 this, "electrons", "", "The electron container to use."};

◆ m_eventInfoHandle

CP::SysReadHandle<xAOD::EventInfo> EventReco::RunHyPERAlg::m_eventInfoHandle
private
Initial value:
{
this, "eventInfo", "EventInfo",
"The EventInfo container to read selection decisions from."}

Definition at line 178 of file RunHyPERAlg.h.

178 {
179 this, "eventInfo", "EventInfo",
180 "The EventInfo container to read selection decisions from."};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_fullLogEventNumber

Gaudi::Property<long unsigned int> EventReco::RunHyPERAlg::m_fullLogEventNumber
private
Initial value:
{
this, "fullLogEventNumber", 0,
"Number of the event to log in full detail"}

Definition at line 146 of file RunHyPERAlg.h.

146 {
147 this, "fullLogEventNumber", 0,
148 "Number of the event to log in full detail"};

◆ m_graphMap

GraphMap_t AthHistogramming::m_graphMap
privateinherited

The map of TGraph names to their pointers.

Definition at line 216 of file AthHistogramming.h.

◆ m_hasBeginInputFile

bool EL::AnaAlgorithm::m_hasBeginInputFile {false}
privateinherited

the value of hasBeginInputFile

Definition at line 608 of file AnaAlgorithm.h.

608{false};

◆ m_hasEndInputFile

bool EL::AnaAlgorithm::m_hasEndInputFile {false}
privateinherited

the value of hasEndInputFile

Definition at line 612 of file AnaAlgorithm.h.

612{false};

◆ m_hasFileExecute

bool EL::AnaAlgorithm::m_hasFileExecute {false}
privateinherited

the value of hasFileExecute

Definition at line 604 of file AnaAlgorithm.h.

604{false};

◆ m_histMap

HistMap_t AthHistogramming::m_histMap
privateinherited

The map of histogram names to their pointers.

Definition at line 195 of file AthHistogramming.h.

◆ m_histNamePostfix

std::string AthHistogramAlgorithm::m_histNamePostfix
privateinherited

The postfix for the histogram THx name.

Definition at line 97 of file AthHistogramAlgorithm.h.

◆ m_histNamePrefix

std::string AthHistogramAlgorithm::m_histNamePrefix
privateinherited

The prefix for the histogram THx name.

Definition at line 94 of file AthHistogramAlgorithm.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> AthHistogramAlgorithm::m_histSvc
privateinherited

Default constructor: AthHistogramAlgorithm();.

a handle on the Hist/TTree registration service

Definition at line 83 of file AthHistogramAlgorithm.h.

◆ m_histTitlePostfix

std::string AthHistogramAlgorithm::m_histTitlePostfix
privateinherited

The postfix for the histogram THx title.

Definition at line 103 of file AthHistogramAlgorithm.h.

◆ m_histTitlePrefix

std::string AthHistogramAlgorithm::m_histTitlePrefix
privateinherited

The prefix for the histogram THx title.

Definition at line 100 of file AthHistogramAlgorithm.h.

◆ m_hyper_TtbarAllHadronic_Top1_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_Top1_Indices
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_Top1_Indices",
"TtbarAllHadronic_HyPER_Top1_Indices_%SYS%",
"Indices of the reconstructed top1 in the ttbar all-hadronic "
"topology"}

Definition at line 191 of file RunHyPERAlg.h.

191 {
192 this, "TtbarAllHadronic_HyPER_Top1_Indices",
193 "TtbarAllHadronic_HyPER_Top1_Indices_%SYS%",
194 "Indices of the reconstructed top1 in the ttbar all-hadronic "
195 "topology"};

◆ m_hyper_TtbarAllHadronic_Top1_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_Top1_Score
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_Top1_Score",
"TtbarAllHadronic_HyPER_Top1_Score_%SYS%",
"Score of the reconstructed top1 in the ttbar all-hadronic topology"}

Definition at line 211 of file RunHyPERAlg.h.

211 {
212 this, "TtbarAllHadronic_HyPER_Top1_Score",
213 "TtbarAllHadronic_HyPER_Top1_Score_%SYS%",
214 "Score of the reconstructed top1 in the ttbar all-hadronic topology"};

◆ m_hyper_TtbarAllHadronic_Top2_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_Top2_Indices
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_Top2_Indices",
"TtbarAllHadronic_HyPER_Top2_Indices_%SYS%",
"Indices of the reconstructed top2 in the ttbar all-hadronic "
"topology"}

Definition at line 197 of file RunHyPERAlg.h.

197 {
198 this, "TtbarAllHadronic_HyPER_Top2_Indices",
199 "TtbarAllHadronic_HyPER_Top2_Indices_%SYS%",
200 "Indices of the reconstructed top2 in the ttbar all-hadronic "
201 "topology"};

◆ m_hyper_TtbarAllHadronic_Top2_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_Top2_Score
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_Top2_Score",
"TtbarAllHadronic_HyPER_Top2_Score_%SYS%",
"Score of the reconstructed top2 in the ttbar all-hadronic topology"}

Definition at line 215 of file RunHyPERAlg.h.

215 {
216 this, "TtbarAllHadronic_HyPER_Top2_Score",
217 "TtbarAllHadronic_HyPER_Top2_Score_%SYS%",
218 "Score of the reconstructed top2 in the ttbar all-hadronic topology"};

◆ m_hyper_TtbarAllHadronic_W1_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_W1_Indices
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_W1_Indices",
"TtbarAllHadronic_HyPER_W1_Indices_%SYS%",
"Indices of the reconstructed W1 in the ttbar all-hadronic topology"}

Definition at line 202 of file RunHyPERAlg.h.

202 {
203 this, "TtbarAllHadronic_HyPER_W1_Indices",
204 "TtbarAllHadronic_HyPER_W1_Indices_%SYS%",
205 "Indices of the reconstructed W1 in the ttbar all-hadronic topology"};

◆ m_hyper_TtbarAllHadronic_W1_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_W1_Score
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_W1_Score",
"TtbarAllHadronic_HyPER_W1_Score_%SYS%",
"Score of the reconstructed W1 in the ttbar all-hadronic topology"}

Definition at line 219 of file RunHyPERAlg.h.

219 {
220 this, "TtbarAllHadronic_HyPER_W1_Score",
221 "TtbarAllHadronic_HyPER_W1_Score_%SYS%",
222 "Score of the reconstructed W1 in the ttbar all-hadronic topology"};

◆ m_hyper_TtbarAllHadronic_W2_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_W2_Indices
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_W2_Indices",
"TtbarAllHadronic_HyPER_W2_Indices_%SYS%",
"Indices of the reconstructed W2 in the ttbar all-hadronic topology"}

Definition at line 206 of file RunHyPERAlg.h.

206 {
207 this, "TtbarAllHadronic_HyPER_W2_Indices",
208 "TtbarAllHadronic_HyPER_W2_Indices_%SYS%",
209 "Indices of the reconstructed W2 in the ttbar all-hadronic topology"};

◆ m_hyper_TtbarAllHadronic_W2_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarAllHadronic_W2_Score
private
Initial value:
{
this, "TtbarAllHadronic_HyPER_W2_Score",
"TtbarAllHadronic_HyPER_W2_Score_%SYS%",
"Score of the reconstructed W2 in the ttbar all-hadronic topology"}

Definition at line 223 of file RunHyPERAlg.h.

223 {
224 this, "TtbarAllHadronic_HyPER_W2_Score",
225 "TtbarAllHadronic_HyPER_W2_Score_%SYS%",
226 "Score of the reconstructed W2 in the ttbar all-hadronic topology"};

◆ m_hyper_TtbarDiLepton_Classification_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Classification_Score
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Classification_Score",
"TtbarDiLepton_HyPER_Classification_Score_%SYS%",
"Classification score of the ttbar di-lepton topology"}

Definition at line 320 of file RunHyPERAlg.h.

320 {
321 this, "TtbarDiLepton_HyPER_Classification_Score",
322 "TtbarDiLepton_HyPER_Classification_Score_%SYS%",
323 "Classification score of the ttbar di-lepton topology"};

◆ m_hyper_TtbarDiLepton_HE_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_HE_Score
private
Initial value:
{
this, "TtbarDiLepton_HyPER_HE_Score",
"TtbarDiLepton_HyPER_HE_Score_%SYS%",
"HE score of the ttbar di-lepton topology"}

Definition at line 354 of file RunHyPERAlg.h.

354 {
355 this, "TtbarDiLepton_HyPER_HE_Score",
356 "TtbarDiLepton_HyPER_HE_Score_%SYS%",
357 "HE score of the ttbar di-lepton topology"};

◆ m_hyper_TtbarDiLepton_Top1_IDs

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Top1_IDs
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Top1_IDs",
"TtbarDiLepton_HyPER_Top1_IDs_%SYS%",
"IDs of the reconstructed top1 in the ttbar di-lepton topology"}

Definition at line 345 of file RunHyPERAlg.h.

345 {
346 this, "TtbarDiLepton_HyPER_Top1_IDs",
347 "TtbarDiLepton_HyPER_Top1_IDs_%SYS%",
348 "IDs of the reconstructed top1 in the ttbar di-lepton topology"};

◆ m_hyper_TtbarDiLepton_Top1_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Top1_Indices
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Top1_Indices",
"TtbarDiLepton_HyPER_Top1_Indices_%SYS%",
"Indices of the reconstructed top1 in the ttbar di-lepton "
"topology"}

Definition at line 325 of file RunHyPERAlg.h.

325 {
326 this, "TtbarDiLepton_HyPER_Top1_Indices",
327 "TtbarDiLepton_HyPER_Top1_Indices_%SYS%",
328 "Indices of the reconstructed top1 in the ttbar di-lepton "
329 "topology"};

◆ m_hyper_TtbarDiLepton_Top1_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Top1_Score
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Top1_Score",
"TtbarDiLepton_HyPER_Top1_Score_%SYS%",
"Score of the reconstructed top1 in the ttbar di-lepton topology"}

Definition at line 336 of file RunHyPERAlg.h.

336 {
337 this, "TtbarDiLepton_HyPER_Top1_Score",
338 "TtbarDiLepton_HyPER_Top1_Score_%SYS%",
339 "Score of the reconstructed top1 in the ttbar di-lepton topology"};

◆ m_hyper_TtbarDiLepton_Top2_IDs

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Top2_IDs
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Top2_IDs",
"TtbarDiLepton_HyPER_Top2_IDs_%SYS%",
"IDs of the reconstructed top2 in the ttbar di-lepton topology"}

Definition at line 349 of file RunHyPERAlg.h.

349 {
350 this, "TtbarDiLepton_HyPER_Top2_IDs",
351 "TtbarDiLepton_HyPER_Top2_IDs_%SYS%",
352 "IDs of the reconstructed top2 in the ttbar di-lepton topology"};

◆ m_hyper_TtbarDiLepton_Top2_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Top2_Indices
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Top2_Indices",
"TtbarDiLepton_HyPER_Top2_Indices_%SYS%",
"Indices of the reconstructed top2 in the ttbar di-lepton "
"topology"}

Definition at line 330 of file RunHyPERAlg.h.

330 {
331 this, "TtbarDiLepton_HyPER_Top2_Indices",
332 "TtbarDiLepton_HyPER_Top2_Indices_%SYS%",
333 "Indices of the reconstructed top2 in the ttbar di-lepton "
334 "topology"};

◆ m_hyper_TtbarDiLepton_Top2_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarDiLepton_Top2_Score
private
Initial value:
{
this, "TtbarDiLepton_HyPER_Top2_Score",
"TtbarDiLepton_HyPER_Top2_Score_%SYS%",
"Score of the reconstructed top2 in the ttbar di-lepton topology"}

Definition at line 340 of file RunHyPERAlg.h.

340 {
341 this, "TtbarDiLepton_HyPER_Top2_Score",
342 "TtbarDiLepton_HyPER_Top2_Score_%SYS%",
343 "Score of the reconstructed top2 in the ttbar di-lepton topology"};

◆ m_hyper_TtbarLJets_Classification_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarLJets_Classification_Score
private
Initial value:
{
this, "TtbarLJets_HyPER_Classification_Score",
"TtbarLJets_HyPER_Classification_Score_%SYS%",
"Classification score of the ttbar single lepton topology"}

Definition at line 248 of file RunHyPERAlg.h.

248 {
249 this, "TtbarLJets_HyPER_Classification_Score",
250 "TtbarLJets_HyPER_Classification_Score_%SYS%",
251 "Classification score of the ttbar single lepton topology"};

◆ m_hyper_TtbarLJets_TopHad_IDs

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarLJets_TopHad_IDs
private
Initial value:
{
this, "TtbarLJets_HyPER_TopHad_IDs", "TtbarLJets_HyPER_TopHad_IDs_%SYS%",
"IDs of the reconstructed hadronic top in the ttbar single lepton "
"topology"}

Definition at line 293 of file RunHyPERAlg.h.

293 {
294 this, "TtbarLJets_HyPER_TopHad_IDs", "TtbarLJets_HyPER_TopHad_IDs_%SYS%",
295 "IDs of the reconstructed hadronic top in the ttbar single lepton "
296 "topology"};

◆ m_hyper_TtbarLJets_TopHad_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarLJets_TopHad_Indices
private
Initial value:
{
this, "TtbarLJets_HyPER_TopHad_Indices",
"TtbarLJets_HyPER_TopHad_Indices_%SYS%",
"Indices of the reconstructed hadronic top in the ttbar single "
"lepton topology"}

Definition at line 253 of file RunHyPERAlg.h.

253 {
254 this, "TtbarLJets_HyPER_TopHad_Indices",
255 "TtbarLJets_HyPER_TopHad_Indices_%SYS%",
256 "Indices of the reconstructed hadronic top in the ttbar single "
257 "lepton topology"};

◆ m_hyper_TtbarLJets_TopHad_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarLJets_TopHad_Score
private
Initial value:
{
this, "TtbarLJets_HyPER_TopHad_Score",
"TtbarLJets_HyPER_TopHad_Score_%SYS%",
"Score of the reconstructed hadronic top in the ttbar single lepton "
"topology"}

Definition at line 274 of file RunHyPERAlg.h.

274 {
275 this, "TtbarLJets_HyPER_TopHad_Score",
276 "TtbarLJets_HyPER_TopHad_Score_%SYS%",
277 "Score of the reconstructed hadronic top in the ttbar single lepton "
278 "topology"};

◆ m_hyper_TtbarLJets_TopLep_IDs

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarLJets_TopLep_IDs
private
Initial value:
{
this, "TtbarLJets_HyPER_TopLep_IDs", "TtbarLJets_HyPER_TopLep_IDs_%SYS%",
"IDs of the reconstructed leptonic top in the ttbar single lepton "
"topology"}

Definition at line 297 of file RunHyPERAlg.h.

297 {
298 this, "TtbarLJets_HyPER_TopLep_IDs", "TtbarLJets_HyPER_TopLep_IDs_%SYS%",
299 "IDs of the reconstructed leptonic top in the ttbar single lepton "
300 "topology"};

◆ m_hyper_TtbarLJets_TopLep_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarLJets_TopLep_Indices
private
Initial value:
{
this, "TtbarLJets_HyPER_TopLep_Indices",
"TtbarLJets_HyPER_TopLep_Indices_%SYS%",
"Indices of the reconstructed leptonic top in the ttbar single "
"lepton topology"}

Definition at line 258 of file RunHyPERAlg.h.

258 {
259 this, "TtbarLJets_HyPER_TopLep_Indices",
260 "TtbarLJets_HyPER_TopLep_Indices_%SYS%",
261 "Indices of the reconstructed leptonic top in the ttbar single "
262 "lepton topology"};

◆ m_hyper_TtbarLJets_TopLep_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarLJets_TopLep_Score
private
Initial value:
{
this, "TtbarLJets_HyPER_TopLep_Score",
"TtbarLJets_HyPER_TopLep_Score_%SYS%",
"Score of the reconstructed leptonic top in the ttbar single lepton "
"topology"}

Definition at line 279 of file RunHyPERAlg.h.

279 {
280 this, "TtbarLJets_HyPER_TopLep_Score",
281 "TtbarLJets_HyPER_TopLep_Score_%SYS%",
282 "Score of the reconstructed leptonic top in the ttbar single lepton "
283 "topology"};

◆ m_hyper_TtbarLJets_WHad_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarLJets_WHad_Indices
private
Initial value:
{
this, "TtbarLJets_HyPER_WHad_Indices",
"TtbarLJets_HyPER_WHad_Indices_%SYS%",
"Indices of the reconstructed hadronic W in the ttbar single lepton "
"topology"}

Definition at line 263 of file RunHyPERAlg.h.

263 {
264 this, "TtbarLJets_HyPER_WHad_Indices",
265 "TtbarLJets_HyPER_WHad_Indices_%SYS%",
266 "Indices of the reconstructed hadronic W in the ttbar single lepton "
267 "topology"};

◆ m_hyper_TtbarLJets_WHad_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarLJets_WHad_Score
private
Initial value:
{
this, "TtbarLJets_HyPER_WHad_Score", "TtbarLJets_HyPER_WHad_Score_%SYS%",
"Score of the reconstructed hadronic W in the ttbar single lepton "
"topology"}

Definition at line 284 of file RunHyPERAlg.h.

284 {
285 this, "TtbarLJets_HyPER_WHad_Score", "TtbarLJets_HyPER_WHad_Score_%SYS%",
286 "Score of the reconstructed hadronic W in the ttbar single lepton "
287 "topology"};

◆ m_hyper_TtbarLJets_WLep_Indices

CP::SysWriteDecorHandle<std::vector<int> > EventReco::RunHyPERAlg::m_hyper_TtbarLJets_WLep_Indices
private
Initial value:
{
this, "TtbarLJets_HyPER_WLep_Indices",
"TtbarLJets_HyPER_WLep_Indices_%SYS%",
"Indices of the reconstructed leptonic W in the ttbar single lepton "
"topology"}

Definition at line 268 of file RunHyPERAlg.h.

268 {
269 this, "TtbarLJets_HyPER_WLep_Indices",
270 "TtbarLJets_HyPER_WLep_Indices_%SYS%",
271 "Indices of the reconstructed leptonic W in the ttbar single lepton "
272 "topology"};

◆ m_hyper_TtbarLJets_WLep_Score

CP::SysWriteDecorHandle<float> EventReco::RunHyPERAlg::m_hyper_TtbarLJets_WLep_Score
private
Initial value:
{
this, "TtbarLJets_HyPER_WLep_Score", "TtbarLJets_HyPER_WLep_Score_%SYS%",
"Score of the reconstructed leptonic W in the ttbar single lepton "
"topology"}

Definition at line 288 of file RunHyPERAlg.h.

288 {
289 this, "TtbarLJets_HyPER_WLep_Score", "TtbarLJets_HyPER_WLep_Score_%SYS%",
290 "Score of the reconstructed leptonic W in the ttbar single lepton "
291 "topology"};

◆ m_hyperGraph

std::unique_ptr<HyPERGraph> EventReco::RunHyPERAlg::m_hyperGraph
private

Definition at line 140 of file RunHyPERAlg.h.

◆ m_hyperInputs

InputsPack EventReco::RunHyPERAlg::m_hyperInputs {}
private

Definition at line 142 of file RunHyPERAlg.h.

142{};

◆ m_hyperModel

std::unique_ptr<HyPERModel> EventReco::RunHyPERAlg::m_hyperModel
private

Definition at line 138 of file RunHyPERAlg.h.

◆ m_hyperParser

std::unique_ptr<HyPERParser> EventReco::RunHyPERAlg::m_hyperParser
private

Definition at line 144 of file RunHyPERAlg.h.

◆ m_hyperTopology

HyPERTopology EventReco::RunHyPERAlg::m_hyperTopology {HyPERTopology::NotSelected}
private

Definition at line 151 of file RunHyPERAlg.h.

◆ m_inputMetaStore

MetaStore_t EL::AnaAlgorithm::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 569 of file AnaAlgorithm.h.

◆ m_jetSelection

CP::SysReadSelectionHandle EventReco::RunHyPERAlg::m_jetSelection
private
Initial value:
{this, "jetSelection", "",
"The selection on the input jets."}

Definition at line 172 of file RunHyPERAlg.h.

172 {this, "jetSelection", "",
173 "The selection on the input jets."};

◆ m_jetsHandle

CP::SysReadHandle<xAOD::JetContainer> EventReco::RunHyPERAlg::m_jetsHandle
private
Initial value:
{
this, "jets", "", "The jet container to use."}

Definition at line 170 of file RunHyPERAlg.h.

170 {
171 this, "jets", "", "The jet container to use."};

◆ m_ljetsUseBTag

bool EventReco::RunHyPERAlg::m_ljetsUseBTag {false}
private

Definition at line 153 of file RunHyPERAlg.h.

153{false};

◆ m_metHandle

CP::SysReadHandle<xAOD::MissingETContainer> EventReco::RunHyPERAlg::m_metHandle
private
Initial value:
{
this, "met", "", "The MET container to use."}

Definition at line 175 of file RunHyPERAlg.h.

175 {
176 this, "met", "", "The MET container to use."};

◆ m_msg

MsgStream AthHistogramming::m_msg
privateinherited

Cached Message Stream.

Definition at line 242 of file AthHistogramming.h.

◆ m_muonSelection

CP::SysReadSelectionHandle EventReco::RunHyPERAlg::m_muonSelection
private
Initial value:
{
this, "muonSelection", "", "The selection on the input muons."}

Definition at line 167 of file RunHyPERAlg.h.

167 {
168 this, "muonSelection", "", "The selection on the input muons."};

◆ m_muonsHandle

CP::SysReadHandle<xAOD::MuonContainer> EventReco::RunHyPERAlg::m_muonsHandle
private
Initial value:
{
this, "muons", "", "The muon container to use."}

Definition at line 165 of file RunHyPERAlg.h.

165 {
166 this, "muons", "", "The muon container to use."};

◆ m_name

std::string AthHistogramming::m_name
privateinherited

Instance name.

Definition at line 239 of file AthHistogramming.h.

◆ m_onnxToolTrainedOnEven

ToolHandle<AthOnnx::IOnnxRuntimeInferenceTool> EventReco::RunHyPERAlg::m_onnxToolTrainedOnEven
private
Initial value:
{
this, "onnxToolTrainedOnEven", "",
"ONNX inference tool holding the model trained on even-numbered events"}

Definition at line 130 of file RunHyPERAlg.h.

130 {
131 this, "onnxToolTrainedOnEven", "",
132 "ONNX inference tool holding the model trained on even-numbered events"};

◆ m_onnxToolTrainedOnOdd

ToolHandle<AthOnnx::IOnnxRuntimeInferenceTool> EventReco::RunHyPERAlg::m_onnxToolTrainedOnOdd
private
Initial value:
{
this, "onnxToolTrainedOnOdd", "",
"ONNX inference tool holding the model trained on odd-numbered events"}

Definition at line 133 of file RunHyPERAlg.h.

133 {
134 this, "onnxToolTrainedOnOdd", "",
135 "ONNX inference tool holding the model trained on odd-numbered events"};

◆ m_outputMetaStore

MetaStore_t EL::AnaAlgorithm::m_outputMetaStore
privateinherited

Object accessing the output metadata store.

Definition at line 573 of file AnaAlgorithm.h.

◆ m_prefix

std::string AthHistogramAlgorithm::m_prefix
privateinherited

Name of the ROOT output stream (file).

Definition at line 88 of file AthHistogramAlgorithm.h.

◆ m_rootDir

std::string AthHistogramAlgorithm::m_rootDir
privateinherited

Name of the ROOT directory.

Definition at line 91 of file AthHistogramAlgorithm.h.

◆ m_selection

CP::SysReadSelectionHandle EventReco::RunHyPERAlg::m_selection
private
Initial value:
{
this, "eventSelection", "",
"Name of the selection on which this HyPER instance is allowed to run."}

Definition at line 182 of file RunHyPERAlg.h.

182 {
183 this, "eventSelection", "",
184 "Name of the selection on which this HyPER instance is allowed to run."};

◆ m_streamName

std::string AthHistogramming::m_streamName
privateinherited

Name of the ROOT output stream (file).

Definition at line 220 of file AthHistogramming.h.

◆ m_systematicsList

CP::SysListHandle EventReco::RunHyPERAlg::m_systematicsList {this}
private

Definition at line 156 of file RunHyPERAlg.h.

156{this};

◆ m_top_b_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_top_b_p4
private
Initial value:
{
this, "top_b_p4", "",
"Visible top b-jet four-vector for the positive-charge lepton branch"}

Definition at line 359 of file RunHyPERAlg.h.

359 {
360 this, "top_b_p4", "",
361 "Visible top b-jet four-vector for the positive-charge lepton branch"};

◆ m_top_lep_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_top_lep_p4
private
Initial value:
{
this, "top_lep_p4", "",
"Top lepton four-vector for the positive-charge lepton branch"}

Definition at line 366 of file RunHyPERAlg.h.

366 {
367 this, "top_lep_p4", "",
368 "Top lepton four-vector for the positive-charge lepton branch"};

◆ m_top_Wplus_decay0_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_top_Wplus_decay0_p4
private
Initial value:
{
this, "top_Wplus_decay0_p4", "",
"Visible top W+ leading decay product four-vector associated to the top "
"quark"}

Definition at line 229 of file RunHyPERAlg.h.

229 {
230 this, "top_Wplus_decay0_p4", "",
231 "Visible top W+ leading decay product four-vector associated to the top "
232 "quark"};

◆ m_top_Wplus_decay1_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_top_Wplus_decay1_p4
private
Initial value:
{
this, "top_Wplus_decay1_p4", "",
"Visible top W+ subleading decay product four-vector associated to the "
"top quark"}

Definition at line 233 of file RunHyPERAlg.h.

233 {
234 this, "top_Wplus_decay1_p4", "",
235 "Visible top W+ subleading decay product four-vector associated to the "
236 "top quark"};

◆ m_topbar_bbar_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_topbar_bbar_p4
private
Initial value:
{
this, "topbar_bbar_p4", "",
"Visible anti-top bbar-jet four-vector for the negative-charge lepton "
"branch"}

Definition at line 362 of file RunHyPERAlg.h.

362 {
363 this, "topbar_bbar_p4", "",
364 "Visible anti-top bbar-jet four-vector for the negative-charge lepton "
365 "branch"};

◆ m_topbar_lepbar_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_topbar_lepbar_p4
private
Initial value:
{
this, "topbar_lepbar_p4", "",
"Anti-top lepton four-vector for the negative-charge lepton branch"}

Definition at line 369 of file RunHyPERAlg.h.

369 {
370 this, "topbar_lepbar_p4", "",
371 "Anti-top lepton four-vector for the negative-charge lepton branch"};

◆ m_topbar_Wminus_decay0_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_topbar_Wminus_decay0_p4
private
Initial value:
{
this, "topbar_Wminus_decay0_p4", "",
"Visible anti-top W- leading decay product four-vector associated to the "
"anti-top quark"}

Definition at line 237 of file RunHyPERAlg.h.

237 {
238 this, "topbar_Wminus_decay0_p4", "",
239 "Visible anti-top W- leading decay product four-vector associated to the "
240 "anti-top quark"};

◆ m_topbar_Wminus_decay1_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_topbar_Wminus_decay1_p4
private
Initial value:
{
this, "topbar_Wminus_decay1_p4", "",
"Visible anti-top W- subleading decay product four-vector associated to "
"the anti-top quark"}

Definition at line 241 of file RunHyPERAlg.h.

241 {
242 this, "topbar_Wminus_decay1_p4", "",
243 "Visible anti-top W- subleading decay product four-vector associated to "
244 "the anti-top quark"};

◆ m_tophad_b_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_tophad_b_p4
private
Initial value:
{
this, "tophad_b_p4", "",
"Visible tophad b-jet four-vector associated to the hadronic top quark"}

Definition at line 308 of file RunHyPERAlg.h.

308 {
309 this, "tophad_b_p4", "",
310 "Visible tophad b-jet four-vector associated to the hadronic top quark"};

◆ m_tophad_w_decay0_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_tophad_w_decay0_p4
private
Initial value:
{
this, "tophad_w_decay0_p4", "",
"Visible hadronic top W leading decay product four-vector"}

Definition at line 311 of file RunHyPERAlg.h.

311 {
312 this, "tophad_w_decay0_p4", "",
313 "Visible hadronic top W leading decay product four-vector"};

◆ m_tophad_w_decay1_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_tophad_w_decay1_p4
private
Initial value:
{
this, "tophad_w_decay1_p4", "",
"Visible hadronic top W subleading decay product four-vector"}

Definition at line 314 of file RunHyPERAlg.h.

314 {
315 this, "tophad_w_decay1_p4", "",
316 "Visible hadronic top W subleading decay product four-vector"};

◆ m_toplep_b_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_toplep_b_p4
private
Initial value:
{
this, "toplep_b_p4", "",
"Visible toplep b-jet four-vector associated to the leptonic top quark"}

Definition at line 302 of file RunHyPERAlg.h.

302 {
303 this, "toplep_b_p4", "",
304 "Visible toplep b-jet four-vector associated to the leptonic top quark"};

◆ m_toplep_lep_p4

CP::SysWriteDecorHandle<PtEtaPhiMVector> EventReco::RunHyPERAlg::m_toplep_lep_p4
private
Initial value:
{
this, "toplep_lep_p4", "",
"Lepton four-vector associated to the leptonic top quark"}

Definition at line 305 of file RunHyPERAlg.h.

305 {
306 this, "toplep_lep_p4", "",
307 "Lepton four-vector associated to the leptonic top quark"};

◆ m_topology

Gaudi::Property<std::string> EventReco::RunHyPERAlg::m_topology
private
Initial value:
{
this, "topology", "",
"HyPER topology. Choose between: 'TtbarLJets', 'TtbarLJetsNoBTag', "
"'TtbarAllHadronic' and 'TtbarDiLepton'."}

Definition at line 116 of file RunHyPERAlg.h.

116 {
117 this, "topology", "",
118 "HyPER topology. Choose between: 'TtbarLJets', 'TtbarLJetsNoBTag', "
119 "'TtbarAllHadronic' and 'TtbarDiLepton'."};

◆ m_treeMap

TreeMap_t AthHistogramming::m_treeMap
privateinherited

The map of TTree names to their pointers.

Definition at line 209 of file AthHistogramming.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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