ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
TrigDisappearingTrackHypoAlg Class Reference

Implements Hypo selection on triggering disappearing tracks. More...

#include <TrigDisappearingTrackHypoAlg.h>

Inheritance diagram for TrigDisappearingTrackHypoAlg:
Collaboration diagram for TrigDisappearingTrackHypoAlg:

Classes

struct  TMVA_pix3l_sct0
 TMVA reader and associated variables for pix3l_sct0. More...
 
struct  TMVA_pix3l_sct1p
 TMVA reader and associated variables for pix3l_sct1p. More...
 
struct  TMVA_pix4l_sct0
 TMVA reader and associated variables for pix4l_sct0. More...
 
struct  TMVA_pix4l_sct1p
 TMVA reader and associated variables for pix4l_sct1p. More...
 

Public Member Functions

 TrigDisappearingTrackHypoAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual StatusCode initialize () override
 
virtual StatusCode execute (const EventContext &context) const override
 
virtual StatusCode sysInitialize () override
 initialise this base class More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static StatusCode runtimeValidation (SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MsgStream &msg, bool onlyValidateOneStep=true, bool runTwoConversion=false)
 Executes all individual runtime tests. More...
 

Protected Member Functions

const SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > & decisionInput () const
 methods for derived classes to access handles of the base class input other read/write handles may be implemented by derived classes More...
 
const SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > & decisionOutput () const
 methods for derived classes to access handles of the base class output other read/write handles may be implemented by derived classes
More...
 
StatusCode hypoBaseOutputProcessing (SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl=MSG::DEBUG) const
 Base class function to be called once slice specific code has finished. Handles debug printing and validation. More...
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

StatusCode createCandidates (const EventContext &, const xAOD::TrigCompositeContainer *, xAOD::TrigCompositeContainer *) const
 
float bdt_eval_pix4l_sct0 (const EventContext &, float, float, float, float, float, float, float, float, int, float, float, int) const
 
float bdt_eval_pix4l_sct1p (const EventContext &, float, float, float, float, int, float, float, float, float, int, float, int) const
 
float bdt_eval_pix3l_sct0 (const EventContext &, float, float, float, float, float, float, float, float, float, float, int, int) const
 
float bdt_eval_pix3l_sct1p (const EventContext &, float, float, float, float, float, float, int, int, float, int, int, float, float, float, float) const
 
float BDTinput (float) const
 
StatusCode printDebugInformation (SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl) const
 Common base function to print information on chains passed by objects considered in the hypo. More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandleArray< TrigDisappearingTrackHypoToolm_hypoTools {this, "HypoTools", {}, "Tools to perfrom selection"}
 
SG::ReadHandleKey< xAOD::TrigCompositeContainerm_DisTrkCandKey {this, "DisTrkCand", "HLT_DisTrkCand", ""}
 
SG::WriteHandleKey< xAOD::TrigCompositeContainerm_DisTrkBDTSelKey {this, "DisTrkBDTSel","HLT_DisTrkBDTSel", ""}
 
ToolHandle< GenericMonitoringToolm_monTool { this, "MonTool", "", "Monitoring tool" }
 
SG::SlotSpecificObj< TMVA_pix4l_sct0 > m_tmva_pix4l_sct0_reader ATLAS_THREAD_SAFE
 
SG::SlotSpecificObj< TMVA_pix4l_sct1p > m_tmva_pix4l_sct1p_reader ATLAS_THREAD_SAFE
 
SG::SlotSpecificObj< TMVA_pix3l_sct0 > m_tmva_pix3l_sct0_reader ATLAS_THREAD_SAFE
 
SG::SlotSpecificObj< TMVA_pix3l_sct1p > m_tmva_pix3l_sct1p_reader ATLAS_THREAD_SAFE
 
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainerm_input { this, "HypoInputDecisions", "UNSPECIFIED_INPUT", "Input Decision (implicit)" }
 input decisions More...
 
SG::WriteHandleKey< TrigCompositeUtils::DecisionContainerm_output { this, "HypoOutputDecisions", "UNSPECIFIED_OUTPUT", "Ouput Decision" }
 output decisions More...
 
Gaudi::Property< bool > m_runtimeValidation { this, "RuntimeValidation", false, "Enable detailed runtime validation of HypoAlg output, and upstream Decisions." }
 Enabling of detailed validation checks for use during development. More...
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Runtime validation methods


enum  LogicalFlowCheckMode { kRequireOne, kRequireAll }
 
static StatusCode validateHasLinks (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
 Ensure all Decisions have the named ElementLink graph edges which they are required to by spec. More...
 
static StatusCode validateLogicalFlow (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, const LogicalFlowCheckMode mode)
 Ensure that all DecisionIDs have propagated correctly from their parent. More...
 
static StatusCode validateDuplicatedDecisionID (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
 Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects. More...
 
static StatusCode validateDecisionIDs (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
 Ensure that all present IDs correspond to configured chains. More...
 
static StatusCode validateParentLinking (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool runTwoConversion)
 Ensure that the Decision has at least one valid parent, unless it is a initial Decision from the HLTSeeding. More...
 
static StatusCode recursiveValidateGraph (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool onlyValidateOneStep, bool runTwoConversion, size_t callDepth, std::set< const TrigCompositeUtils::Decision * > &fullyExploredFrom)
 Execute all checks on one node in the graph, d, then recursive call self on all parent nodes up to L1. More...
 
static void printBangs (MsgStream &msg)
 Print header line. More...
 
static void printErrorHeader (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
 A problem was found, print common output data. More...
 

Detailed Description

Implements Hypo selection on triggering disappearing tracks.

Author
Kunihiro Nagano kunih.nosp@m.iro..nosp@m.nagan.nosp@m.o@ce.nosp@m.rn.ch - KEK

Definition at line 23 of file TrigDisappearingTrackHypoAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ LogicalFlowCheckMode

enum HypoBase::LogicalFlowCheckMode
privateinherited
Enumerator
kRequireOne 

Require all DecisionIDs to be present in at least one of my parent Decision objects.

kRequireAll 

Definition at line 52 of file HypoBase.h.

52  {
53  kRequireOne,
54  kRequireAll //<! Require all DecisionIDs to be present in all of my parent Decision objects
55  };

Constructor & Destructor Documentation

◆ TrigDisappearingTrackHypoAlg()

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

Definition at line 32 of file TrigDisappearingTrackHypoAlg.cxx.

33  :
34  ::HypoBase( name, pSvcLocator ) {}

Member Function Documentation

◆ bdt_eval_pix3l_sct0()

float TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct0 ( const EventContext &  context,
float  pt,
float  z0,
float  d0,
float  chi2ndof,
float  chi2ndof_pix,
float  trkiso3_dr01,
float  trkiso3_dr0201,
float  refit_pt,
float  refit_z0,
float  refit_d0,
int  n_pix,
int  n_bl 
) const
private

Definition at line 593 of file TrigDisappearingTrackHypoAlg.cxx.

597 {
598  auto& reader = *m_tmva_pix3l_sct0_reader.get(context);
599  reader.pt = BDTinput(pt);
600  reader.z0 = BDTinput(z0);
601  reader.d0 = BDTinput(d0);
602  reader.chi2ndof = BDTinput(chi2ndof);
603  reader.chi2ndof_pix = BDTinput(chi2ndof_pix);
604  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
605  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
606  reader.refit_pt = BDTinput(refit_pt);
607  reader.refit_z0 = BDTinput(refit_z0);
608  reader.refit_d0 = BDTinput(refit_d0);
609  reader.n_pix = BDTinput((float)n_pix);
610  reader.n_bl = BDTinput((float)n_bl);
611 
612  return reader.tmva->EvaluateMVA("BDT method");
613 }

◆ bdt_eval_pix3l_sct1p()

float TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct1p ( const EventContext &  context,
float  pt,
float  z0,
float  d0,
float  refit_pt,
float  refit_z0,
float  refit_d0,
int  n_pix,
int  n_sct,
float  refit_ptratio,
int  is_fail,
int  n_bl,
float  chi2ndof,
float  trkiso3_dr01,
float  trkiso3_dr0201,
float  refit_chi2ndof 
) const
private

Definition at line 615 of file TrigDisappearingTrackHypoAlg.cxx.

620 {
621  auto& reader = *m_tmva_pix3l_sct1p_reader.get(context);
622  reader.pt = BDTinput(pt);
623  reader.z0 = BDTinput(z0);
624  reader.d0 = BDTinput(d0);
625  reader.refit_pt = BDTinput(refit_pt);
626  reader.refit_z0 = BDTinput(refit_z0);
627  reader.refit_d0 = BDTinput(refit_d0);
628  reader.n_pix = BDTinput((float)n_pix);
629  reader.n_sct = BDTinput((float)n_sct);
630  reader.refit_ptratio = BDTinput(refit_ptratio);
631  reader.is_fail = BDTinput((float)is_fail);
632  reader.n_bl = BDTinput((float)n_bl);
633  reader.chi2ndof = BDTinput(chi2ndof);
634  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
635  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
636  reader.refit_chi2ndof = BDTinput(refit_chi2ndof);
637 
638  return reader.tmva->EvaluateMVA("BDT method");
639 }

◆ bdt_eval_pix4l_sct0()

float TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct0 ( const EventContext &  context,
float  pt,
float  z0,
float  d0,
float  trkiso3_dr01,
float  trkiso3_dr0201,
float  chi2ndof,
float  chi2ndof_pix,
float  refit_pt,
int  n_pix,
float  refit_ptratio,
float  refit_chi2ndof,
int  n_bl 
) const
private

Definition at line 549 of file TrigDisappearingTrackHypoAlg.cxx.

553 {
554  auto& reader = *m_tmva_pix4l_sct0_reader.get(context);
555  reader.pt = BDTinput(pt);
556  reader.z0 = BDTinput(z0);
557  reader.d0 = BDTinput(d0);
558  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
559  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
560  reader.chi2ndof = BDTinput(chi2ndof);
561  reader.chi2ndof_pix = BDTinput(chi2ndof_pix);
562  reader.refit_pt = BDTinput(refit_pt);
563  reader.n_pix = BDTinput((float)n_pix);
564  reader.refit_ptratio = BDTinput(refit_ptratio);
565  reader.refit_chi2ndof = BDTinput(refit_chi2ndof);
566  reader.n_bl = BDTinput((float)n_bl);
567 
568  return reader.tmva->EvaluateMVA("BDT method");
569 }

◆ bdt_eval_pix4l_sct1p()

float TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct1p ( const EventContext &  context,
float  pt,
float  refit_pt,
float  refit_z0,
float  refit_d0,
int  n_sct,
float  refit_ptratio,
float  refit_chi2ndof_ratio,
float  trkiso3_dr01,
float  trkiso3_dr0201,
int  is_fail,
float  chi2ndof_pix,
int  n_pix 
) const
private

Definition at line 571 of file TrigDisappearingTrackHypoAlg.cxx.

575 {
576  auto& reader = *m_tmva_pix4l_sct1p_reader.get(context);
577  reader.pt = BDTinput(pt);
578  reader.refit_pt = BDTinput(refit_pt);
579  reader.refit_z0 = BDTinput(refit_z0);
580  reader.refit_d0 = BDTinput(refit_d0);
581  reader.n_sct = BDTinput((float)n_sct);
582  reader.refit_ptratio = BDTinput(refit_ptratio);
583  reader.refit_chi2ndof_ratio = BDTinput(refit_chi2ndof_ratio);
584  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
585  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
586  reader.is_fail = BDTinput((float)is_fail);
587  reader.chi2ndof_pix = BDTinput(chi2ndof_pix);
588  reader.n_pix = BDTinput((float)n_pix);
589 
590  return reader.tmva->EvaluateMVA("BDT method");
591 }

◆ BDTinput()

float TrigDisappearingTrackHypoAlg::BDTinput ( float  var) const
inlineprivate

Definition at line 547 of file TrigDisappearingTrackHypoAlg.cxx.

547 { return ( std::abs(var) < 1e-5 ) ? 1e-5 : var; }

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ createCandidates()

StatusCode TrigDisappearingTrackHypoAlg::createCandidates ( const EventContext &  context,
const xAOD::TrigCompositeContainer disTrkCandContainer,
xAOD::TrigCompositeContainer disTrkBDTSelContainer 
) const
private

Definition at line 243 of file TrigDisappearingTrackHypoAlg.cxx.

245 {
246  // monitoring
247  std::vector<int> mnt_category;
248  auto mon_category = Monitored::Collection("category", mnt_category);
249  auto monDisTrk = Monitored::Group(m_monTool, mon_category);
250 
251  std::vector<float> mnt_cat1_pt;
252  std::vector<float> mnt_cat1_z0;
253  std::vector<float> mnt_cat1_d0;
254  std::vector<float> mnt_cat1_iso01;
255  std::vector<float> mnt_cat1_iso0201;
256  std::vector<float> mnt_cat1_chi2ndof;
257  std::vector<float> mnt_cat1_chi2ndof_pix;
258  std::vector<float> mnt_cat1_refit_pt;
259  std::vector<int> mnt_cat1_n_pix;
260  std::vector<float> mnt_cat1_refit_ptratio;
261  std::vector<float> mnt_cat1_refit_chi2ndof;
262  std::vector<int> mnt_cat1_n_bl;
263  std::vector<float> mnt_cat1_bdtscore;
264  auto mon_cat1_pt = Monitored::Collection("pix4_sct0_pt", mnt_cat1_pt);
265  auto mon_cat1_z0 = Monitored::Collection("pix4_sct0_z0", mnt_cat1_z0);
266  auto mon_cat1_d0 = Monitored::Collection("pix4_sct0_d0", mnt_cat1_d0);
267  auto mon_cat1_iso01 = Monitored::Collection("pix4_sct0_iso01", mnt_cat1_iso01);
268  auto mon_cat1_iso0201 = Monitored::Collection("pix4_sct0_iso0201", mnt_cat1_iso0201);
269  auto mon_cat1_chi2ndof = Monitored::Collection("pix4_sct0_chi2ndof", mnt_cat1_chi2ndof);
270  auto mon_cat1_chi2ndof_pix = Monitored::Collection("pix4_sct0_chi2ndof_pix", mnt_cat1_chi2ndof_pix);
271  auto mon_cat1_refit_pt = Monitored::Collection("pix4_sct0_refit_pt", mnt_cat1_refit_pt);
272  auto mon_cat1_n_pix = Monitored::Collection("pix4_sct0_n_pix", mnt_cat1_n_pix);
273  auto mon_cat1_refit_ptratio = Monitored::Collection("pix4_sct0_refit_ptratio", mnt_cat1_refit_ptratio);
274  auto mon_cat1_refit_chi2ndof = Monitored::Collection("pix4_sct0_refit_chi2ndof", mnt_cat1_refit_chi2ndof);
275  auto mon_cat1_n_bl = Monitored::Collection("pix4_sct0_n_bl", mnt_cat1_n_bl);
276  auto mon_cat1_bdtscore = Monitored::Collection("pix4_sct0_bdtscore", mnt_cat1_bdtscore);
277  auto monDisTrkCat1 = Monitored::Group(m_monTool, mon_cat1_pt, mon_cat1_z0, mon_cat1_d0, mon_cat1_iso01, mon_cat1_iso0201, mon_cat1_chi2ndof,
278  mon_cat1_chi2ndof_pix, mon_cat1_refit_pt, mon_cat1_n_pix, mon_cat1_refit_ptratio,
279  mon_cat1_refit_chi2ndof, mon_cat1_n_bl, mon_cat1_bdtscore);
280  //
281  std::vector<float> mnt_cat2_pt;
282  std::vector<float> mnt_cat2_refit_pt;
283  std::vector<float> mnt_cat2_refit_z0;
284  std::vector<float> mnt_cat2_refit_d0;
285  std::vector<int> mnt_cat2_n_sct;
286  std::vector<float> mnt_cat2_refit_ptratio;
287  std::vector<float> mnt_cat2_refit_chi2ndof_ratio;
288  std::vector<float> mnt_cat2_iso01;
289  std::vector<float> mnt_cat2_iso0201;
290  std::vector<float> mnt_cat2_chi2ndof_pix;
291  std::vector<int> mnt_cat2_n_pix;
292  std::vector<float> mnt_cat2_bdtscore;
293  auto mon_cat2_pt = Monitored::Collection("pix4_sct1p_pt", mnt_cat2_pt);
294  auto mon_cat2_refit_pt = Monitored::Collection("pix4_sct1p_refit_pt", mnt_cat2_refit_pt);
295  auto mon_cat2_refit_z0 = Monitored::Collection("pix4_sct1p_refit_z0", mnt_cat2_refit_z0);
296  auto mon_cat2_refit_d0 = Monitored::Collection("pix4_sct1p_refit_d0", mnt_cat2_refit_d0);
297  auto mon_cat2_n_sct = Monitored::Collection("pix4_sct1p_n_sct", mnt_cat2_n_sct);
298  auto mon_cat2_refit_ptratio = Monitored::Collection("pix4_sct1p_refit_ptratio", mnt_cat2_refit_ptratio);
299  auto mon_cat2_refit_chi2ndof_ratio = Monitored::Collection("pix4_sct1p_refit_chi2ndof_ratio", mnt_cat2_refit_chi2ndof_ratio);
300  auto mon_cat2_iso01 = Monitored::Collection("pix4_sct1p_iso01", mnt_cat2_iso01);
301  auto mon_cat2_iso0201 = Monitored::Collection("pix4_sct1p_iso0201", mnt_cat2_iso0201);
302  auto mon_cat2_chi2ndof_pix = Monitored::Collection("pix4_sct1p_chi2ndof_pix", mnt_cat2_chi2ndof_pix);
303  auto mon_cat2_n_pix = Monitored::Collection("pix4_sct1p_n_pix", mnt_cat2_n_pix);
304  auto mon_cat2_bdtscore = Monitored::Collection("pix4_sct1p_bdtscore", mnt_cat2_bdtscore);
305  auto monDisTrkCat2 = Monitored::Group(m_monTool, mon_cat2_pt, mon_cat2_refit_pt, mon_cat2_refit_z0, mon_cat2_refit_d0, mon_cat2_n_sct,
306  mon_cat2_refit_ptratio, mon_cat2_refit_chi2ndof_ratio, mon_cat2_iso01, mon_cat2_iso0201,
307  mon_cat2_chi2ndof_pix, mon_cat2_n_pix, mon_cat2_bdtscore);
308  //
309  std::vector<float> mnt_cat3_pt;
310  std::vector<float> mnt_cat3_z0;
311  std::vector<float> mnt_cat3_d0;
312  std::vector<float> mnt_cat3_chi2ndof;
313  std::vector<float> mnt_cat3_chi2ndof_pix;
314  std::vector<float> mnt_cat3_iso01;
315  std::vector<float> mnt_cat3_iso0201;
316  std::vector<float> mnt_cat3_refit_pt;
317  std::vector<float> mnt_cat3_refit_z0;
318  std::vector<float> mnt_cat3_refit_d0;
319  std::vector<int> mnt_cat3_n_pix;
320  std::vector<int> mnt_cat3_n_bl;
321  std::vector<float> mnt_cat3_bdtscore;
322  auto mon_cat3_pt = Monitored::Collection("pix3_sct0_pt", mnt_cat3_pt);
323  auto mon_cat3_z0 = Monitored::Collection("pix3_sct0_z0", mnt_cat3_z0);
324  auto mon_cat3_d0 = Monitored::Collection("pix3_sct0_d0", mnt_cat3_d0);
325  auto mon_cat3_chi2ndof = Monitored::Collection("pix3_sct0_chi2ndof", mnt_cat3_chi2ndof);
326  auto mon_cat3_chi2ndof_pix = Monitored::Collection("pix3_sct0_chi2ndof_pix", mnt_cat3_chi2ndof_pix);
327  auto mon_cat3_iso01 = Monitored::Collection("pix3_sct0_iso01", mnt_cat3_iso01);
328  auto mon_cat3_iso0201 = Monitored::Collection("pix3_sct0_iso0201", mnt_cat3_iso0201);
329  auto mon_cat3_refit_pt = Monitored::Collection("pix3_sct0_refit_pt", mnt_cat3_refit_pt);
330  auto mon_cat3_refit_z0 = Monitored::Collection("pix3_sct0_refit_z0", mnt_cat3_refit_z0);
331  auto mon_cat3_refit_d0 = Monitored::Collection("pix3_sct0_refit_d0", mnt_cat3_refit_d0);
332  auto mon_cat3_n_pix = Monitored::Collection("pix3_sct0_n_pix", mnt_cat3_n_pix);
333  auto mon_cat3_n_bl = Monitored::Collection("pix3_sct0_n_bl", mnt_cat3_n_bl);
334  auto mon_cat3_bdtscore = Monitored::Collection("pix3_sct0_bdtscore", mnt_cat3_bdtscore);
335  auto monDisTrkCat3 = Monitored::Group(m_monTool, mon_cat3_pt, mon_cat3_z0, mon_cat3_d0, mon_cat3_chi2ndof, mon_cat3_chi2ndof_pix,
336  mon_cat3_iso01, mon_cat3_iso0201, mon_cat3_refit_pt, mon_cat3_refit_z0, mon_cat3_refit_d0,
337  mon_cat3_n_pix, mon_cat3_n_bl, mon_cat3_bdtscore);
338  //
339  std::vector<float> mnt_cat4_pt;
340  std::vector<float> mnt_cat4_z0;
341  std::vector<float> mnt_cat4_d0;
342  std::vector<float> mnt_cat4_refit_pt;
343  std::vector<float> mnt_cat4_refit_z0;
344  std::vector<float> mnt_cat4_refit_d0;
345  std::vector<int> mnt_cat4_n_pix;
346  std::vector<int> mnt_cat4_n_sct;
347  std::vector<float> mnt_cat4_refit_ptratio;
348  std::vector<int> mnt_cat4_n_bl;
349  std::vector<float> mnt_cat4_chi2ndof;
350  std::vector<float> mnt_cat4_iso01;
351  std::vector<float> mnt_cat4_iso0201;
352  std::vector<float> mnt_cat4_refit_chi2ndof;
353  std::vector<float> mnt_cat4_bdtscore;
354  auto mon_cat4_pt = Monitored::Collection("pix3_sct1p_pt", mnt_cat4_pt);
355  auto mon_cat4_z0 = Monitored::Collection("pix3_sct1p_z0", mnt_cat4_z0);
356  auto mon_cat4_d0 = Monitored::Collection("pix3_sct1p_d0", mnt_cat4_d0);
357  auto mon_cat4_refit_pt = Monitored::Collection("pix3_sct1p_refit_pt", mnt_cat4_refit_pt);
358  auto mon_cat4_refit_z0 = Monitored::Collection("pix3_sct1p_refit_z0", mnt_cat4_refit_z0);
359  auto mon_cat4_refit_d0 = Monitored::Collection("pix3_sct1p_refit_d0", mnt_cat4_refit_d0);
360  auto mon_cat4_n_pix = Monitored::Collection("pix3_sct1p_n_pix", mnt_cat4_n_pix);
361  auto mon_cat4_n_sct = Monitored::Collection("pix3_sct1p_n_sct", mnt_cat4_n_sct);
362  auto mon_cat4_refit_ptratio = Monitored::Collection("pix3_sct1p_refit_ptratio", mnt_cat4_refit_ptratio);
363  auto mon_cat4_n_bl = Monitored::Collection("pix3_sct1p_n_bl", mnt_cat4_n_bl);
364  auto mon_cat4_chi2ndof = Monitored::Collection("pix3_sct1p_chi2ndof", mnt_cat4_chi2ndof);
365  auto mon_cat4_iso01 = Monitored::Collection("pix3_sct1p_iso01", mnt_cat4_iso01);
366  auto mon_cat4_iso0201 = Monitored::Collection("pix3_sct1p_iso0201", mnt_cat4_iso0201);
367  auto mon_cat4_refit_chi2ndof = Monitored::Collection("pix3_sct1p_refit_chi2ndof", mnt_cat4_refit_chi2ndof);
368  auto mon_cat4_bdtscore = Monitored::Collection("pix3_sct1p_bdtscore", mnt_cat4_bdtscore);
369  auto monDisTrkCat4 = Monitored::Group(m_monTool, mon_cat4_pt, mon_cat4_z0, mon_cat4_d0, mon_cat4_refit_pt, mon_cat4_refit_z0, mon_cat4_refit_d0,
370  mon_cat4_n_pix, mon_cat4_n_sct, mon_cat4_refit_ptratio, mon_cat4_n_bl, mon_cat4_chi2ndof,
371  mon_cat4_iso01, mon_cat4_iso0201, mon_cat4_refit_chi2ndof, mon_cat4_bdtscore);
372 
373  //
374 
375  const std::string prefixIn = "disTrkCand";
376  const std::string prefixOut = "disTrk";
377 
378  unsigned int i_cand=0;
379 
380  for ( const xAOD::TrigComposite* cand : *disTrkCandContainer ) {
381 
382  ATH_MSG_VERBOSE("===== i_cand: " << i_cand++ << " =====" );
383 
384  // category
385  int category = (int)cand->getDetail<int16_t>(prefixIn+"_category");
386  if( category<=0 || category>=5 ) {
387  ATH_MSG_VERBOSE("category is out of range = " << category);
388  continue;
389  }
390  mnt_category.push_back(category);
391 
392  // get values
393  float ptGeV = cand->getDetail<float>(prefixIn+"_pt");
394  float refit_ptGeV = cand->getDetail<float>(prefixIn+"_refit_pt");
395  ptGeV /= Gaudi::Units::GeV;
396  refit_ptGeV /= Gaudi::Units::GeV;
397  int is_fail = (int)cand->getDetail<int16_t>(prefixIn+"_is_fail");
398  float d0_wrtVtx = cand->getDetail<float>(prefixIn+"_d0_wrtVtx");
399  float z0_wrtVtx = cand->getDetail<float>(prefixIn+"_z0_wrtVtx");
400  float chi2 = cand->getDetail<float>(prefixIn+"_chi2");
401  float ndof = cand->getDetail<float>(prefixIn+"_ndof");
402  float chi2ndof = ( std::abs(ndof) > 1e-4 ) ? chi2 / ndof : 20;
403  int n_hits_pix = (int)cand->getDetail<int16_t>(prefixIn+"_n_hits_pix");
404  int n_hits_sct = (int)cand->getDetail<int16_t>(prefixIn+"_n_hits_sct");
405  int n_hits_bl = (int)cand->getDetail<int16_t>(prefixIn+"_n_hits_innermost");
406  float iso3_dr01 = cand->getDetail<float>(prefixIn+"_iso3_dr01");
407  iso3_dr01 /= Gaudi::Units::GeV;
408  float iso3_dr02 = cand->getDetail<float>(prefixIn+"_iso3_dr02");
409  iso3_dr02 /= Gaudi::Units::GeV;
410  float refit_ptratio = ( std::abs(ptGeV) > 1e-4 ) ? refit_ptGeV / ptGeV : 0;
411  float refit_d0_wrtVtx = cand->getDetail<float>(prefixIn+"_refit_d0_wrtVtx");
412  float refit_z0_wrtVtx = cand->getDetail<float>(prefixIn+"_refit_z0_wrtVtx");
413  float refit_chi2 = cand->getDetail<float>(prefixIn+"_refit_chi2");
414  float refit_ndof = cand->getDetail<float>(prefixIn+"_refit_ndof");
415  float refit_chi2ndof = ( std::abs(refit_ndof) > 1e-4 ) ? refit_chi2 / refit_ndof : 20;
416  float refit_chi2ndof_ratio = (std::abs(chi2ndof) > 1e-4 ) ? refit_chi2ndof / chi2ndof : 0;
417  float chi2_pix=0; float ndof_pix=0;
418  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_ibl");
419  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix1");
420  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix2");
421  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix3");
422  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_ibl");
423  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix1");
424  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix2");
425  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix3");
426  float chi2ndof_pix = ( std::abs(ndof_pix) > 1e-4 ) ? chi2_pix / ndof_pix : 0;
427 
428  // BDT score
429  float bdt_score = 0.0;
430  if( category==1 ) {
431  bdt_score = bdt_eval_pix4l_sct0(context, ptGeV, z0_wrtVtx, d0_wrtVtx, iso3_dr01, iso3_dr02-iso3_dr01, chi2ndof, chi2ndof_pix,
432  refit_ptGeV, n_hits_pix, refit_ptratio, refit_chi2ndof, n_hits_bl);
433  mnt_cat1_pt.push_back(ptGeV);
434  mnt_cat1_z0.push_back(z0_wrtVtx);
435  mnt_cat1_d0.push_back(d0_wrtVtx);
436  mnt_cat1_iso01.push_back(iso3_dr01);
437  mnt_cat1_iso0201.push_back(iso3_dr02-iso3_dr01);
438  mnt_cat1_chi2ndof.push_back(chi2ndof);
439  mnt_cat1_chi2ndof_pix.push_back(chi2ndof_pix);
440  mnt_cat1_refit_pt.push_back(refit_ptGeV);
441  mnt_cat1_n_pix.push_back(n_hits_pix);
442  mnt_cat1_refit_ptratio.push_back(refit_ptratio);
443  mnt_cat1_refit_chi2ndof.push_back(refit_chi2ndof);
444  mnt_cat1_n_bl.push_back(n_hits_bl);
445  mnt_cat1_bdtscore.push_back(bdt_score);
446  }
447  else if( category==2 ) {
448  bdt_score = bdt_eval_pix4l_sct1p(context, ptGeV, refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_sct, refit_ptratio,
449  refit_chi2ndof_ratio, iso3_dr01, iso3_dr02-iso3_dr01, is_fail, chi2ndof_pix, n_hits_pix);
450  mnt_cat2_pt.push_back(ptGeV);
451  mnt_cat2_refit_pt.push_back(refit_ptGeV);
452  mnt_cat2_refit_z0.push_back(refit_z0_wrtVtx);
453  mnt_cat2_refit_d0.push_back(refit_d0_wrtVtx);
454  mnt_cat2_n_sct.push_back(n_hits_sct);
455  mnt_cat2_refit_ptratio.push_back(refit_ptratio);
456  mnt_cat2_refit_chi2ndof_ratio.push_back(refit_chi2ndof_ratio);
457  mnt_cat2_iso01.push_back(iso3_dr01);
458  mnt_cat2_iso0201.push_back(iso3_dr02-iso3_dr01);
459  mnt_cat2_chi2ndof_pix.push_back(chi2ndof_pix);
460  mnt_cat2_n_pix.push_back(n_hits_pix);
461  mnt_cat2_bdtscore.push_back(bdt_score);
462  }
463  else if( category==3 ) {
464  bdt_score = bdt_eval_pix3l_sct0(context, ptGeV, z0_wrtVtx, d0_wrtVtx, chi2ndof, chi2ndof_pix, iso3_dr01, iso3_dr02-iso3_dr01,
465  refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_bl);
466  mnt_cat3_pt.push_back(ptGeV);
467  mnt_cat3_z0.push_back(z0_wrtVtx);
468  mnt_cat3_d0.push_back(d0_wrtVtx);
469  mnt_cat3_chi2ndof.push_back(chi2ndof);
470  mnt_cat3_chi2ndof_pix.push_back(chi2ndof_pix);
471  mnt_cat3_iso01.push_back(iso3_dr01);
472  mnt_cat3_iso0201.push_back(iso3_dr02-iso3_dr01);
473  mnt_cat3_refit_pt.push_back(refit_ptGeV);
474  mnt_cat3_refit_z0.push_back(refit_z0_wrtVtx);
475  mnt_cat3_refit_d0.push_back(refit_d0_wrtVtx);
476  mnt_cat3_n_pix.push_back(n_hits_pix);
477  mnt_cat3_n_bl.push_back(n_hits_bl);
478  mnt_cat3_bdtscore.push_back(bdt_score);
479  }
480  else if( category==4 ) {
481  bdt_score = bdt_eval_pix3l_sct1p(context, ptGeV, z0_wrtVtx, d0_wrtVtx, refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_sct,
482  refit_ptratio, is_fail, n_hits_bl, chi2ndof, iso3_dr01, iso3_dr02-iso3_dr01, refit_chi2ndof);
483  mnt_cat4_pt.push_back(ptGeV);
484  mnt_cat4_z0.push_back(z0_wrtVtx);
485  mnt_cat4_d0.push_back(d0_wrtVtx);
486  mnt_cat4_refit_pt.push_back(refit_ptGeV);
487  mnt_cat4_refit_z0.push_back(refit_z0_wrtVtx);
488  mnt_cat4_refit_d0.push_back(refit_d0_wrtVtx);
489  mnt_cat4_n_pix.push_back(n_hits_pix);
490  mnt_cat4_n_sct.push_back(n_hits_sct);
491  mnt_cat4_refit_ptratio.push_back(refit_ptratio);
492  mnt_cat4_n_bl.push_back(n_hits_bl);
493  mnt_cat4_chi2ndof.push_back(chi2ndof);
494  mnt_cat4_iso01.push_back(iso3_dr01);
495  mnt_cat4_iso0201.push_back(iso3_dr02-iso3_dr01);
496  mnt_cat4_refit_chi2ndof.push_back(refit_chi2ndof);
497  mnt_cat4_bdtscore.push_back(bdt_score);
498  }
499  ATH_MSG_VERBOSE("BDT score = " << bdt_score);
500 
501  // preselection
502  const float PRESEL_PT_GEV = 7.5;
503  const float PRESEL_BDT_SCORE_CAT3 = -0.4;
504  const float PRESEL_BDT_SCORE_CAT4 = -0.2;
505  if( ptGeV < PRESEL_PT_GEV && refit_ptGeV < PRESEL_PT_GEV ) continue;
506  if( category==3 && bdt_score < PRESEL_BDT_SCORE_CAT3 ) continue;
507  if( category==4 && bdt_score < PRESEL_BDT_SCORE_CAT4 ) continue;
508 
509  // create EDM object
511  distrk->makePrivateStore();
512  disTrkBDTSelContainer->push_back(distrk);
513 
514  distrk->setDetail<int16_t>(prefixOut+"_category", (int16_t)category);
515  distrk->setDetail<float>(prefixOut+"_pt", ptGeV*Gaudi::Units::GeV);
516  float eta = cand->getDetail<float>(prefixIn+"_eta");
517  float phi = cand->getDetail<float>(prefixIn+"_phi");
518  distrk->setDetail<float>(prefixOut+"_eta", eta);
519  distrk->setDetail<float>(prefixOut+"_phi", phi);
520  distrk->setDetail<float>(prefixOut+"_refit_pt", refit_ptGeV*Gaudi::Units::GeV);
521  distrk->setDetail<int16_t>(prefixOut+"_is_fail", is_fail);
522  distrk->setDetail<float>(prefixOut+"_d0_wrtVtx", d0_wrtVtx);
523  distrk->setDetail<float>(prefixOut+"_z0_wrtVtx", z0_wrtVtx);
524  distrk->setDetail<float>(prefixOut+"_chi2", chi2);
525  distrk->setDetail<float>(prefixOut+"_ndof", ndof);
526  distrk->setDetail<int16_t>(prefixOut+"_n_hits_pix", (int16_t)n_hits_pix);
527  distrk->setDetail<int16_t>(prefixOut+"_n_hits_sct", (int16_t)n_hits_sct);
528  distrk->setDetail<int16_t>(prefixOut+"_n_hits_innermost", (int16_t)n_hits_bl);
529  distrk->setDetail<float>(prefixOut+"_iso3_dr01", iso3_dr01*Gaudi::Units::GeV);
530  distrk->setDetail<float>(prefixOut+"_iso3_dr02", iso3_dr02*Gaudi::Units::GeV);
531  distrk->setDetail<float>(prefixOut+"_refit_d0_wrtVtx", refit_d0_wrtVtx);
532  distrk->setDetail<float>(prefixOut+"_refit_z0_wrtVtx", refit_z0_wrtVtx);
533  distrk->setDetail<float>(prefixOut+"_refit_chi2", refit_chi2);
534  distrk->setDetail<float>(prefixOut+"_refit_ndof", refit_ndof);
535  distrk->setDetail<float>(prefixOut+"_chi2ndof_pix", chi2ndof_pix);
536  distrk->setDetail<float>(prefixOut+"_bdtscore", bdt_score);
537 
538  ATH_MSG_VERBOSE("Created a new entry EDM" );
539  }
540 
541  return StatusCode::SUCCESS;
542 }

◆ decisionInput()

const SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > & HypoBase::decisionInput ( ) const
protectedinherited

methods for derived classes to access handles of the base class input other read/write handles may be implemented by derived classes

Definition at line 16 of file HypoBase.cxx.

16  {
17  return m_input;
18 }

◆ decisionOutput()

const SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > & HypoBase::decisionOutput ( ) const
protectedinherited

methods for derived classes to access handles of the base class output other read/write handles may be implemented by derived classes

Definition at line 20 of file HypoBase.cxx.

20  {
21  return m_output;
22 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode TrigDisappearingTrackHypoAlg::execute ( const EventContext &  context) const
overridevirtual

Definition at line 151 of file TrigDisappearingTrackHypoAlg.cxx.

152 {
153  // previous decisions
154  ATH_MSG_DEBUG( "Retrieving pervious decision: \"" << decisionInput().key() << "\"" );
155  auto previousDecisionsHandle = SG::makeHandle( decisionInput(), context );
156  ATH_CHECK( previousDecisionsHandle.isValid() );
157 
158  ATH_MSG_DEBUG( "Running with " << previousDecisionsHandle->size() << " previous decisions" );
159  if( previousDecisionsHandle->size()!=1 ) {
160  ATH_MSG_ERROR( "Previous decision handle size is not 1. It is" << previousDecisionsHandle->size() );
161  return StatusCode::FAILURE;
162  }
163  const Decision * previousDecision = previousDecisionsHandle->at(0);
164 
165  TrigCompositeUtils::DecisionIDContainer previousDecisionIDs;
166  TrigCompositeUtils::decisionIDs(previousDecision, previousDecisionIDs);
167  ATH_MSG_VERBOSE( "IDs of active legs:" );
168  for(auto decisionID: previousDecisionIDs) { ATH_MSG_VERBOSE( " " << decisionID ); }
169 
170  // new output decisions
171  ATH_MSG_DEBUG( "Creating new output decision handle" );
173  auto outputDecisions = outputHandle.ptr();
174 
175  // input disappearing track objects
176  auto DisTrkCandHandle = SG::makeHandle(m_DisTrkCandKey, context );
177  ATH_CHECK( DisTrkCandHandle.isValid() );
178  ATH_MSG_DEBUG( "DisTrkCand handle size: " << DisTrkCandHandle->size() );
179 
180  const xAOD::TrigCompositeContainer * disTrkCandContainer = DisTrkCandHandle.get();
181  if( disTrkCandContainer == nullptr ) {
182  ATH_MSG_ERROR( "ERROR Cannot get DisappearingTrks container" );
183  return StatusCode::FAILURE;
184  }
185 
186  // output EDM object
187  auto DisTrkBDTSelContainer = std::make_unique<xAOD::TrigCompositeContainer>();
188  auto DisTrkBDTSelContainerAux = std::make_unique<xAOD::TrigCompositeAuxContainer>();
189  DisTrkBDTSelContainer->setStore(DisTrkBDTSelContainerAux.get());
190 
191  xAOD::TrigCompositeContainer* disTrkContainer = DisTrkBDTSelContainer.get();
192 
193  // Prepare inputs to HypoTool
194  ATH_CHECK( createCandidates(context, disTrkCandContainer, disTrkContainer) );
195 
196  std::vector<TrigDisappearingTrackHypoTool::DisTrkHypoInfo> disTrkHypoInputs;
197 
198  for ( auto distrk : *disTrkContainer ) {
199  Decision* newDecision = TrigCompositeUtils::newDecisionIn( outputDecisions, previousDecision, TrigCompositeUtils::hypoAlgNodeName(), context);
200 
202  ATH_CHECK( distrkEL.isValid() );
203 
204  ATH_CHECK( newDecision->setObjectLink<xAOD::TrigCompositeContainer>(TrigCompositeUtils::featureString(), distrkEL) );
205 
206  TrigDisappearingTrackHypoTool::DisTrkHypoInfo hypoInfo{ newDecision, distrk, previousDecisionIDs };
207  disTrkHypoInputs.push_back( hypoInfo );
208  }
209 
210  // Loop over all hypoToolinputs and get their decisions
211  for ( auto & tool: m_hypoTools ) {
212  ATH_MSG_VERBOSE( "+++++ Now computing decision for " << tool->name() );
213  ATH_CHECK( tool->decide( disTrkHypoInputs ) );
214  }
215 
216  DecisionContainer::iterator it = outputDecisions->begin();
217  while(it != outputDecisions->end()) {
218  ATH_MSG_VERBOSE( "+++++ outputDecision: " << *it << " +++++" );
219  if ( allFailed( *it ) ) {
220  ATH_MSG_VERBOSE( "---> all failed, erasing" );
221  it = outputDecisions->erase(it);
222  } else {
223  ATH_MSG_VERBOSE( "---> not all failed" );
224  ++it;
225  }
226  }
227 
228  // record
230  ATH_CHECK( DisTrkBDTSelHandle.record( std::move( DisTrkBDTSelContainer ), std::move( DisTrkBDTSelContainerAux ) ) );
231  ATH_MSG_VERBOSE( "recorded DisTrkBDTSel object to SG" );
232 
233  //
234  ATH_CHECK( hypoBaseOutputProcessing(outputHandle) );
235 
236  //
237  return StatusCode::SUCCESS;
238 }

◆ 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 & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ hypoBaseOutputProcessing()

StatusCode HypoBase::hypoBaseOutputProcessing ( SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &  outputHandle,
MSG::Level  lvl = MSG::DEBUG 
) const
protectedinherited

Base class function to be called once slice specific code has finished. Handles debug printing and validation.

Definition at line 33 of file HypoBase.cxx.

33  {
34 
35  ATH_CHECK( printDebugInformation(outputHandle, lvl) );
36 
37  if (m_runtimeValidation) {
38  ATH_CHECK( runtimeValidation(outputHandle, msg()) );
39  }
40 
41  return StatusCode::SUCCESS;
42 }

◆ initialize()

StatusCode TrigDisappearingTrackHypoAlg::initialize ( )
overridevirtual

Definition at line 39 of file TrigDisappearingTrackHypoAlg.cxx.

40 {
41  CHECK( m_hypoTools.retrieve() );
42  CHECK( m_DisTrkCandKey.initialize() );
43  CHECK( m_DisTrkBDTSelKey.initialize());
44 
45  if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() );
46 
47  // --- declare variables to the reader
48  const std::string methodName = "BDT method";
49 
50  // pix4l_sct0
51  for (auto& reader : m_tmva_pix4l_sct0_reader) {
52  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
53  reader.tmva->AddVariable("pt", &reader.pt);
54  reader.tmva->AddVariable("z0", &reader.z0);
55  reader.tmva->AddVariable("d0", &reader.d0);
56  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
57  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
58  reader.tmva->AddVariable("chi2ndof", &reader.chi2ndof);
59  reader.tmva->AddVariable("chi2ndof_pix", &reader.chi2ndof_pix);
60  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
61  reader.tmva->AddVariable("n_pix", &reader.n_pix);
62  reader.tmva->AddVariable("refit_ptratio", &reader.refit_ptratio);
63  reader.tmva->AddVariable("refit_chi2ndof", &reader.refit_chi2ndof);
64  reader.tmva->AddVariable("n_bl", &reader.n_bl);
65 
66  const std::string tuningVer = "v21a";
67  const std::string weightfile = PathResolver::find_calib_file(
68  "TrigDisappearingTrackTriggerHypo/pix4l_sct0.BDT.weights." + tuningVer + ".xml");
69  ATH_MSG_DEBUG( "opening weightfile for Pix4l_SCT0 = " << weightfile );
70  reader.tmva->BookMVA(methodName, weightfile);
71  }
72 
73  // pix4l_sct1p
74  for (auto& reader : m_tmva_pix4l_sct1p_reader) {
75  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
76  reader.tmva->AddVariable("pt", &reader.pt);
77  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
78  reader.tmva->AddVariable("refit_z0", &reader.refit_z0);
79  reader.tmva->AddVariable("refit_d0", &reader.refit_d0);
80  reader.tmva->AddVariable("n_sct", &reader.n_sct);
81  reader.tmva->AddVariable("refit_ptratio", &reader.refit_ptratio);
82  reader.tmva->AddVariable("refit_chi2ndof_ratio", &reader.refit_chi2ndof_ratio);
83  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
84  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
85  reader.tmva->AddVariable("is_fail", &reader.is_fail);
86  reader.tmva->AddVariable("chi2ndof_pix", &reader.chi2ndof_pix);
87  reader.tmva->AddVariable("n_pix", &reader.n_pix);
88 
89  const std::string tuningVer = "v21b"; // "b" only for this category
90  const std::string weightfile = PathResolver::find_calib_file(
91  "TrigDisappearingTrackTriggerHypo/pix4l_sct1p.BDT.weights." + tuningVer + ".xml");
92  ATH_MSG_DEBUG( "opening weightfile for Pix4l_SCT1p = " << weightfile );
93  reader.tmva->BookMVA(methodName, weightfile);
94  }
95 
96  // pix3l_sct0
97  for (auto& reader : m_tmva_pix3l_sct0_reader) {
98  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
99  reader.tmva->AddVariable("pt", &reader.pt);
100  reader.tmva->AddVariable("z0", &reader.z0);
101  reader.tmva->AddVariable("d0", &reader.d0);
102  reader.tmva->AddVariable("chi2ndof", &reader.chi2ndof);
103  reader.tmva->AddVariable("chi2ndof_pix", &reader.chi2ndof_pix);
104  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
105  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
106  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
107  reader.tmva->AddVariable("refit_z0", &reader.refit_z0);
108  reader.tmva->AddVariable("refit_d0", &reader.refit_d0);
109  reader.tmva->AddVariable("n_pix", &reader.n_pix);
110  reader.tmva->AddVariable("n_bl", &reader.n_bl);
111 
112  const std::string tuningVer = "v21a";
113  const std::string weightfile = PathResolver::find_calib_file(
114  "TrigDisappearingTrackTriggerHypo/pix3l_sct0.BDT.weights." + tuningVer + ".xml");
115  ATH_MSG_DEBUG( "opening weightfile for Pix3l_SCT0 = " << weightfile );
116  reader.tmva->BookMVA(methodName, weightfile);
117  }
118 
119  // pix3l_sct1p
120  for (auto& reader : m_tmva_pix3l_sct1p_reader) {
121  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
122  reader.tmva->AddVariable("pt", &reader.pt);
123  reader.tmva->AddVariable("z0", &reader.z0);
124  reader.tmva->AddVariable("d0", &reader.d0);
125  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
126  reader.tmva->AddVariable("refit_z0", &reader.refit_z0);
127  reader.tmva->AddVariable("refit_d0", &reader.refit_d0);
128  reader.tmva->AddVariable("n_pix", &reader.n_pix);
129  reader.tmva->AddVariable("n_sct", &reader.n_sct);
130  reader.tmva->AddVariable("refit_ptratio", &reader.refit_ptratio);
131  reader.tmva->AddVariable("is_fail", &reader.is_fail);
132  reader.tmva->AddVariable("n_bl", &reader.n_bl);
133  reader.tmva->AddVariable("chi2ndof", &reader.chi2ndof);
134  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
135  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
136  reader.tmva->AddVariable("refit_chi2ndof", &reader.refit_chi2ndof);
137 
138  const std::string tuningVer = "v21a";
139  const std::string weightfile = PathResolver::find_calib_file(
140  "TrigDisappearingTrackTriggerHypo/pix3l_sct1p.BDT.weights." + tuningVer + ".xml");
141  ATH_MSG_DEBUG( "opening weightfile for Pix3l_SCT1p = " << weightfile );
142  reader.tmva->BookMVA(methodName, weightfile);
143  }
144 
145  return StatusCode::SUCCESS;
146 }

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

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

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

◆ printBangs()

void HypoBase::printBangs ( MsgStream &  msg)
staticprivateinherited

Print header line.

Definition at line 388 of file HypoBase.cxx.

388  {
389  msg << MSG::ERROR << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << endmsg;
390 }

◆ printDebugInformation()

StatusCode HypoBase::printDebugInformation ( SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &  outputHandle,
MSG::Level  lvl 
) const
privateinherited

Common base function to print information on chains passed by objects considered in the hypo.

Definition at line 404 of file HypoBase.cxx.

404  {
405  if (msgLvl(lvl)) {
406  msg() << lvl;
407  msg() << "Exiting with " << outputHandle->size() <<" Decision objects" << endmsg;
408  size_t count = 0;
409  for (const Decision* d : *outputHandle){
410  DecisionIDContainer objDecisions;
411  decisionIDs( d, objDecisions );
412  msg() << "Number of positive decisions for Decision object #" << count++ << ": " << objDecisions.size() << endmsg;
413  for (const TrigCompositeUtils::DecisionID id : objDecisions ) {
414  msg() << " --- Passes: " << HLT::Identifier( id ) << endmsg;
415  }
416  }
417  }
418  return StatusCode::SUCCESS;
419 }

◆ printErrorHeader()

void HypoBase::printErrorHeader ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg 
)
staticprivateinherited

A problem was found, print common output data.

Definition at line 393 of file HypoBase.cxx.

395 {
396  printBangs(msg);
397  msg << MSG::ERROR << "! RUNTIME TRIGGER NAVIGATION VALIDATION ERROR" << endmsg;
398  msg << MSG::ERROR << "! Caused by Decision with index:" << (*dEL)->index() << endmsg;
399  msg << MSG::ERROR << "! From collection:" << dEL.dataID() << endmsg;
400  msg << MSG::ERROR << "! " << **dEL << endmsg;
401 }

◆ recursiveValidateGraph()

StatusCode HypoBase::recursiveValidateGraph ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg,
bool  onlyValidateOneStep,
bool  runTwoConversion,
size_t  callDepth,
std::set< const TrigCompositeUtils::Decision * > &  fullyExploredFrom 
)
staticprivateinherited

Execute all checks on one node in the graph, d, then recursive call self on all parent nodes up to L1.

Definition at line 69 of file HypoBase.cxx.

75 {
76  if (onlyValidateOneStep && callDepth > 0) {
77  if ((*dEL)->name() == hypoAlgNodeName()) {
78  // Validation is called from HypoAlg nodes. So if we have reached the _previous_ HypoAlg node, then we have already
79  // validated back from here in the past. Can stop at this point.
80  return StatusCode::SUCCESS;
81  }
82  }
83 
84  // Check logical flow at this place in the graph
85  if ((*dEL)->name() == hypoAlgNodeName()) {
86  // Check that all Hypo Decisions produced here satisfy the more-strict all-parent logical flow
87  if ( validateLogicalFlow(dEL, msg, kRequireAll).isFailure() ) {
88  return StatusCode::FAILURE;
89  }
90  } else {
91  // (looser requirement of one-valid-parent-with-decision than we had when we knew that d corresponded to a HypoAlg output)
92  if ( validateLogicalFlow(dEL, msg, kRequireOne).isFailure() ) {
93  return StatusCode::FAILURE;
94  }
95  }
96 
97  // Check my IDs
98  if ( validateDecisionIDs(dEL, msg).isFailure() ) {
99  return StatusCode::FAILURE;
100  }
101  if ( validateDuplicatedDecisionID(dEL, msg).isFailure() ) {
102  return StatusCode::FAILURE;
103  }
104 
105  // Check my linking
106  if( validateParentLinking(dEL, msg, runTwoConversion).isFailure() ) {
107  return StatusCode::FAILURE;
108  }
109  if ( validateHasLinks(dEL, msg).isFailure() ) {
110  return StatusCode::FAILURE;
111  }
112 
113  // Continue upstream
114  const std::vector<ElementLink<DecisionContainer>> seeds = (*dEL)->objectCollectionLinks<DecisionContainer>(seedString());
115  for (const ElementLink<DecisionContainer>& seed : seeds) {
116  if (fullyExploredFrom.count( (*seed) ) == 1) {
117  continue; // Already fully explored from this seed and up
118  }
119  if ( not seed.isValid() ) {
120  msg << MSG::ERROR << "Invalid seed element link in recursiveValidateGraph" << endmsg;
121  return StatusCode::FAILURE;
122  }
123  if ( recursiveValidateGraph(seed, msg, onlyValidateOneStep, runTwoConversion, callDepth + 1, fullyExploredFrom).isFailure() ) {
124  return StatusCode::FAILURE;
125  }
126  }
127 
128  fullyExploredFrom.insert( *dEL );
129  return StatusCode::SUCCESS;
130 }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
366  }

◆ runtimeValidation()

StatusCode HypoBase::runtimeValidation ( SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &  outputHandle,
MsgStream &  msg,
bool  onlyValidateOneStep = true,
bool  runTwoConversion = false 
)
staticinherited

Executes all individual runtime tests.

Definition at line 45 of file HypoBase.cxx.

49 {
50  // Detailed checks on the output container of this HypoAlg
51  std::set<const Decision*> fullyExploredFrom; // Cache used to avoid exploring regions of the graph more than once
52  for (const Decision* d : *outputHandle) {
53  const DecisionContainer* dContainer = dynamic_cast<const DecisionContainer*>( d->container() );
54  const ElementLink<DecisionContainer> dEL = ElementLink<DecisionContainer>(*dContainer, d->index());
55  if (not dEL.isValid()) {
56  msg << MSG::ERROR << "Invalid seed element link in recursiveValidateGraph" << endmsg;
57  return StatusCode::FAILURE;
58  }
59  // Check that we can reach L1 along all navigation paths up from each Decision
60  // and validate these Decisions on the way up too.
61  if (recursiveValidateGraph(dEL, msg, onlyValidateOneStep, runTwoConversion, 0, fullyExploredFrom).isFailure()) {
62  return StatusCode::FAILURE;
63  }
64  }
65  return StatusCode::SUCCESS;
66 }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

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

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode HypoBase::sysInitialize ( )
overridevirtualinherited

initialise this base class

Reimplemented from AthReentrantAlgorithm.

Definition at line 24 of file HypoBase.cxx.

24  {
25  CHECK( AthReentrantAlgorithm::sysInitialize() ); // initialise base class
26  CHECK( m_input.initialize() );
27  ATH_MSG_DEBUG("HypoBase::sysInitialize() Will consume decision: " << m_input.key() );
28  CHECK( m_output.initialize() );
29  ATH_MSG_DEBUG("HypoBase::sysInitialize() And produce decision: " << m_output.key() );
30  return StatusCode::SUCCESS;
31 }

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

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

◆ validateDecisionIDs()

StatusCode HypoBase::validateDecisionIDs ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg 
)
staticprivateinherited

Ensure that all present IDs correspond to configured chains.

Definition at line 207 of file HypoBase.cxx.

209 {
210  // All numeric IDs must correspond to a know, configured, HLT chain
211  DecisionIDContainer decisionIDSet;
212  decisionIDs(*dEL, decisionIDSet);
213  for (const DecisionID id : decisionIDSet) {
214  const std::string chain = HLT::Identifier( id ).name();
215  if (!isChainId(chain) and !isLegId(chain)) {
216  printErrorHeader(dEL, msg);
217  msg << MSG::ERROR << "! Decision contains an ID which does not correspond to a configured chain or a configured chain-leg: " << HLT::Identifier( id ) << endmsg;
218  msg << MSG::ERROR << "! SOLUTION: Locate the producer of the collection, investigate how this bad ID could have been added." << endmsg;
219  printBangs(msg);
220  return StatusCode::FAILURE;
221  }
222  }
223  return StatusCode::SUCCESS;
224 }

◆ validateDuplicatedDecisionID()

StatusCode HypoBase::validateDuplicatedDecisionID ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg 
)
staticprivateinherited

Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects.

Definition at line 227 of file HypoBase.cxx.

229 {
230  // Persistent vector storage does not guarantee against duplicate entries
231  DecisionIDContainer decisionIDSet;
232  decisionIDs(*dEL, decisionIDSet);
233  if (decisionIDSet.size() != (*dEL)->decisions().size()) {
234  printErrorHeader(dEL, msg);
235  msg << MSG::ERROR << "! Decision contains duplicate DecisionIDs." << endmsg;
236  msg << MSG::ERROR << "! SOLUTION: If combining DecisionIDs from multiple parents, de-duplicate the internal std::vector<DecisionID> of 'Decision* d' with:" << endmsg;
237  msg << MSG::ERROR << "! TrigCompositeUtils::insertDecisionIDs(DecisionIDContainer(), d);" << endmsg;
238  printBangs(msg);
239  return StatusCode::FAILURE;
240  }
241  return StatusCode::SUCCESS;
242 }

◆ validateHasLinks()

StatusCode HypoBase::validateHasLinks ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg 
)
staticprivateinherited

Ensure all Decisions have the named ElementLink graph edges which they are required to by spec.

Definition at line 336 of file HypoBase.cxx.

338 {
339  const std::string& name = (*dEL)->name();
340  if (name == hypoAlgNodeName()) {
341 
342  // Check that I have a "feature"
343  if ((*dEL)->hasObjectLink( featureString() )) {
344  return StatusCode::SUCCESS;
345  }
346  printErrorHeader(dEL, msg);
347  msg << MSG::ERROR << "! Decision has no '" << featureString() << "' ElementLink." << endmsg;
348  msg << MSG::ERROR << "! Every Decision created by a HypoAlg must correspond to some physics object, and be linked to the object." << endmsg;
349  msg << MSG::ERROR << "! SOLUTION: Ensure that all produced Decision objects are assigned their feature:" << endmsg;
350  msg << MSG::ERROR << "! SOLUTION: decision->setObjectLink<MY_FEATURE_CONTANER_TYPE>(featureString(), MY_FEATURE_ELEMENT_LINK);" << endmsg;
351  printBangs(msg);
352  return StatusCode::FAILURE;
353 
354  } else if (name == inputMakerNodeName()) {
355 
356  // This requirement is dropped for empty input makers to avoid unnecessary graph clutter.
357  bool exempt = false;
358  if ((*dEL)->hasDetail<int32_t>("isEmpty") and (*dEL)->getDetail<int32_t>("isEmpty") == 1) {
359  exempt = true;
360  }
361 
362  if (not (*dEL)->hasObjectLink( roiString() ) and not exempt) {
363  printErrorHeader(dEL, msg);
364  msg << MSG::ERROR << "! Decision has no '" << roiString() << "' ElementLink." << endmsg;
365  msg << MSG::ERROR << "! Every Decision created by a InputMaker must link to the ROI which reconstruction will run on for that Decision object in this Step." << endmsg;
366  msg << MSG::ERROR << "! It can be the FullScan ROI created by the HLTSeeding (FSNOSEED) if no other suitable ROI exists." << endmsg;
367  msg << MSG::ERROR << "! SOLUTION: Check the configuration of InputMakerForRoI or EventViewCreatorAlgorithm responsible for creating this Decision Object" << endmsg;
368  msg << MSG::ERROR << "! SOLUTION: The algorithm must have an ROITool which must attach an '"<< roiString() <<"' link to each Decision Object" << endmsg;
369  printBangs(msg);
370  }
371 
372  } else if (name == hltSeedingNodeName()) {
373 
374  if (not (*dEL)->hasObjectLink( initialRoIString() )) {
375  printErrorHeader(dEL, msg);
376  msg << MSG::ERROR << "! Decision has no '" << initialRoIString() << "' ElementLink." << endmsg;
377  msg << MSG::ERROR << "! Every Decision created by the HLTSeeding must link to the initial ROI which caused it to be created." << endmsg;
378  msg << MSG::ERROR << "! This includes the Decision Object created to represent the Full-Scan/NoSeed (FSNOSEED) ROI." << endmsg;
379  msg << MSG::ERROR << "! SOLUTION: Check the configuration of the HLTSeeding tool responsible for creating this Decision Object" << endmsg;
380  printBangs(msg);
381  }
382 
383  }
384  return StatusCode::SUCCESS;
385 }

◆ validateLogicalFlow()

StatusCode HypoBase::validateLogicalFlow ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg,
const LogicalFlowCheckMode  mode 
)
staticprivateinherited

Ensure that all DecisionIDs have propagated correctly from their parent.

Definition at line 245 of file HypoBase.cxx.

248 {
249  // Do not need to validate for L1 Decisions as these have no parents
250  if ((*dEL)->name() == hltSeedingNodeName()) {
251  return StatusCode::SUCCESS;
252  }
253 
254  // Get all my passed DecisionIDs
255  DecisionIDContainer decisionIDSet;
256  decisionIDs(*dEL, decisionIDSet);
257  const std::vector<ElementLink<DecisionContainer>> seeds = (*dEL)->objectCollectionLinks<DecisionContainer>(seedString());
258  for (const DecisionID id : decisionIDSet) {
259  // For each chain that I'm passing, check how many of my parents were also passing the chain
260  size_t parentsWithDecision = 0;
261  for (const ElementLink<DecisionContainer>& seed : seeds) {
262  if ( not seed.isValid() ) {
263  msg << MSG::ERROR << "Invalid seed element link in recursiveValidateGraph" << endmsg;
264  return StatusCode::FAILURE;
265  }
266  DecisionIDContainer seedIDSet;
267  decisionIDs(*seed, seedIDSet);
268  // Id may be a chain-ID (represents a whole chain) or a leg-ID (represents just a single leg of a multi-leg chain)
269  // Is ID is in this parent's set of passed IDs?
270  // Or, (if ID is a leg-ID) is the chain-ID of leg-ID in the parent's set of passed IDs?
271  if (passed(id, seedIDSet) or passed(getIDFromLeg(id).numeric(), seedIDSet)) {
272  ++parentsWithDecision;
273  }
274  else{ // Or, for each of the seed IDs, if the seed ID is a leg-ID, is the seed chain-ID of the seed leg-ID the same as ID?
275  for (auto sid: seedIDSet){
276  if (getIDFromLeg(sid).numeric() == id){
277  ++parentsWithDecision;
278  break;
279  }
280  }
281  }
282  }
283 
284  if (mode == kRequireOne && parentsWithDecision == 0) {
285  // InputMakers may merge multiple of their input collections in order to run reconstruction on a common set of ROI (for example)
286  // So the DecisionIDs may have come from any one or more of the inputs. But zero is not allowed.
287  printErrorHeader(dEL, msg);
288  msg << MSG::ERROR << "! This Decision object is not respecting logical flow of DecisionIDs for chain: " << HLT::Identifier( id ) << endmsg;
289  msg << MSG::ERROR << "! This chain's DecisionID can not be found in any parents of this Decision object:" << endmsg;
290  size_t seed_n = 0;
291  for (const ElementLink<DecisionContainer>& seed : seeds) {
292  msg << MSG::ERROR << "! Index:" << (*seed)->index() << " from collection:" << seed.dataID() << endmsg;
293  msg << MSG::ERROR << "! " << **seed << endmsg;
294  DecisionIDContainer objDecisions;
295  decisionIDs(*seed, objDecisions);
296  for (const TrigCompositeUtils::DecisionID id : objDecisions ) {
297  msg << "! --- Passing in parent #" << seed_n << ": " << HLT::Identifier( id ) << endmsg;
298  }
299  ++seed_n;
300  }
301  msg << MSG::ERROR << "! SOLUTION: Ensure that the producer of this Decision object only adds DecisionIDs"
302  " which were present in at least one of its parents." << endmsg;
303  printBangs(msg);
304  return StatusCode::FAILURE;
305  } else if (mode == kRequireAll && parentsWithDecision != seeds.size()) {
306  // HypoAlgs may form a new physics object from multiple objects in the previous step
307  // (think a BPhysics object whose parents are two Decisions which each correspond to a different L1 MU RoI,
308  // both ROI need to be in active state for the chain, if the chain's HypoTool considers the BPhysics object)
309  // This case requires *all* of the physics objects which are being combined together to be active for the chain
310  // in order to preserve logical flow
311  printErrorHeader(dEL, msg);
312  msg << MSG::ERROR << "! This Decision object is not respecting logical flow of DecisionIDs for chain: " << HLT::Identifier( id ) << endmsg;
313  msg << MSG::ERROR << "! As this Decision object represents the output of a HypoAlg, it must respect logical flow on all "
314  << seeds.size() << " of its parent(s):" << endmsg;
315  size_t seed_n = 0;
316  for (const ElementLink<DecisionContainer>& seed : seeds) {
317  msg << MSG::ERROR << "! Index:" << (*seed)->index() << " from collection:" << seed.dataID() << endmsg;
318  msg << MSG::ERROR << "! " << **seed << endmsg;
319  DecisionIDContainer objDecisions;
320  decisionIDs(*seed, objDecisions);
321  for (const TrigCompositeUtils::DecisionID id : objDecisions ) {
322  msg << "! --- Passing in parent #" << seed_n << ": " << HLT::Identifier( id ) << endmsg;
323  }
324  ++seed_n;
325  }
326  msg << MSG::ERROR << "! SOLUTION: Ensure that the HypoTool responsible for " << HLT::Identifier( id )
327  << " in this HypoAlg only runs if this ID is present in all parent decisions." << endmsg;
328  printBangs(msg);
329  return StatusCode::FAILURE;
330  }
331  }
332  return StatusCode::SUCCESS;
333 }

◆ validateParentLinking()

StatusCode HypoBase::validateParentLinking ( const ElementLink< TrigCompositeUtils::DecisionContainer > &  dEL,
MsgStream &  msg,
bool  runTwoConversion 
)
staticprivateinherited

Ensure that the Decision has at least one valid parent, unless it is a initial Decision from the HLTSeeding.

Definition at line 133 of file HypoBase.cxx.

136 {
137  const std::vector<ElementLink<DecisionContainer>> seeds = (*dEL)->objectCollectionLinks<DecisionContainer>(seedString());
138  // All Decision object must have at least one parent, unless they are the initial set of objects created by the HLTSeeding
139  const std::string& name = (*dEL)->name();
140  if (seeds.size() == 0 && name != hltSeedingNodeName()) {
141  printErrorHeader(dEL, msg);
142  msg << MSG::ERROR << "! Decision has zero parents. This is only allowed for the initial Decisions created by the HLTSeeding." << endmsg;
143  msg << MSG::ERROR << "! SOLUTION: Attach parent Decision(s) with TrigCompositeUtils::linkToPrevious" << endmsg;
144  printBangs(msg);
145  return StatusCode::FAILURE;
146  }
147 
148  if (name == hltSeedingNodeName()) {
149  if (seeds.size() > 0) {
150  printErrorHeader(dEL, msg);
151  msg << MSG::ERROR << "! Decision has parents. This is not allowed for the initial Decisions created by the HLTSeeding." << endmsg;
152  msg << MSG::ERROR << "! SOLUTION: Check HLTSeeding, no where should it be adding a parent link." << endmsg;
153  printBangs(msg);
154  return StatusCode::FAILURE;
155  }
156  return StatusCode::SUCCESS;
157  }
158 
159  static const std::set<std::string> expectedParentsFilter = {hypoAlgNodeName(), comboHypoAlgNodeName(), hltSeedingNodeName()};
160  static const std::set<std::string> expectedParentsInputMaker = {filterNodeName()};
161  static const std::set<std::string> expectedParentsHypoAlg = {inputMakerNodeName()};
162  static const std::set<std::string> expectedParentsComboHypoAlg = {hypoAlgNodeName(), inputMakerNodeName(), hltSeedingNodeName()}; // TODO check hltSeedingNodeName(), needed for newJO
163  static const std::set<std::string> expectedParentsSummaryFilter = {hypoAlgNodeName(), comboHypoAlgNodeName(), hltSeedingNodeName()};
164  static const std::set<std::string> expectedParentsSummaryPassed = {"SF"}; // TODO change to summaryFilterNodeName() when merged
165 
166  const std::set<std::string>* expectedParentsPtr = nullptr;
167  if (name == filterNodeName()) {
168  expectedParentsPtr = &expectedParentsFilter;
169  } else if (name == inputMakerNodeName() and !runTwoConversion) {
170  expectedParentsPtr = &expectedParentsInputMaker;
171  } else if (name == inputMakerNodeName() and runTwoConversion) {
172  expectedParentsPtr = &expectedParentsFilter; // We don't have Filter nodes in the R2->R3 conversion
173  } else if (name == hypoAlgNodeName()) {
174  expectedParentsPtr = &expectedParentsHypoAlg;
175  } else if (name == comboHypoAlgNodeName()) {
176  expectedParentsPtr = &expectedParentsComboHypoAlg;
177  } else if (name == "SF") { // TODO change to summaryFilterNodeName() when merged
178  expectedParentsPtr = &expectedParentsSummaryFilter;
179  } else if (name == "HLTPassRaw") { // TODO change to summaryPassNodeNameString() when merged
180  expectedParentsPtr = &expectedParentsSummaryPassed;
181  } else {
182  printErrorHeader(dEL, msg);
183  msg << MSG::ERROR << "! Invalid Node name '" << name << "'." << endmsg;
184  msg << MSG::ERROR << "! SOLUTION: Find the alg which made a node with this name. Allowed named may be found in TrigCompositeUtils.h, See:'Constant string literals used within the HLT'." << endmsg;
185  printBangs(msg);
186  return StatusCode::FAILURE;
187  }
188 
189  for (const ElementLink<DecisionContainer>& seed : seeds) {
190  if (expectedParentsPtr->count( (*seed)->name() ) == 0) {
191  printErrorHeader(dEL, msg);
192  msg << MSG::ERROR << "! Invalid linking from node with name '" << name << "' to one with name '"<< (*seed)->name() << "'." << endmsg;
193  msg << MSG::ERROR << "! Allowed seed names are:" << endmsg;
194  for (const std::string& allowed : *expectedParentsPtr) {
195  msg << MSG::ERROR << "! " << allowed << endmsg;
196  }
197  msg << MSG::ERROR << "! SOLUTION: Find where this invalid parent was added and correct it." << endmsg;
198  printBangs(msg);
199  return StatusCode::FAILURE;
200  }
201  }
202 
203  return StatusCode::SUCCESS;
204 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/4]

SG::SlotSpecificObj<TMVA_pix4l_sct0> m_tmva_pix4l_sct0_reader TrigDisappearingTrackHypoAlg::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 65 of file TrigDisappearingTrackHypoAlg.h.

◆ ATLAS_THREAD_SAFE [2/4]

SG::SlotSpecificObj<TMVA_pix4l_sct1p> m_tmva_pix4l_sct1p_reader TrigDisappearingTrackHypoAlg::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 83 of file TrigDisappearingTrackHypoAlg.h.

◆ ATLAS_THREAD_SAFE [3/4]

SG::SlotSpecificObj<TMVA_pix3l_sct0> m_tmva_pix3l_sct0_reader TrigDisappearingTrackHypoAlg::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 101 of file TrigDisappearingTrackHypoAlg.h.

◆ ATLAS_THREAD_SAFE [4/4]

SG::SlotSpecificObj<TMVA_pix3l_sct1p> m_tmva_pix3l_sct1p_reader TrigDisappearingTrackHypoAlg::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 122 of file TrigDisappearingTrackHypoAlg.h.

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

SG::WriteHandleKey<xAOD::TrigCompositeContainer> TrigDisappearingTrackHypoAlg::m_DisTrkBDTSelKey {this, "DisTrkBDTSel","HLT_DisTrkBDTSel", ""}
private

Definition at line 36 of file TrigDisappearingTrackHypoAlg.h.

◆ m_DisTrkCandKey

SG::ReadHandleKey< xAOD::TrigCompositeContainer > TrigDisappearingTrackHypoAlg::m_DisTrkCandKey {this, "DisTrkCand", "HLT_DisTrkCand", ""}
private

Definition at line 35 of file TrigDisappearingTrackHypoAlg.h.

◆ 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 AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_hypoTools

ToolHandleArray< TrigDisappearingTrackHypoTool > TrigDisappearingTrackHypoAlg::m_hypoTools {this, "HypoTools", {}, "Tools to perfrom selection"}
private

Definition at line 34 of file TrigDisappearingTrackHypoAlg.h.

◆ m_input

SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> HypoBase::m_input { this, "HypoInputDecisions", "UNSPECIFIED_INPUT", "Input Decision (implicit)" }
privateinherited

input decisions

Definition at line 101 of file HypoBase.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> TrigDisappearingTrackHypoAlg::m_monTool { this, "MonTool", "", "Monitoring tool" }
private

Definition at line 40 of file TrigDisappearingTrackHypoAlg.h.

◆ m_output

SG::WriteHandleKey<TrigCompositeUtils::DecisionContainer> HypoBase::m_output { this, "HypoOutputDecisions", "UNSPECIFIED_OUTPUT", "Ouput Decision" }
privateinherited

output decisions

Definition at line 103 of file HypoBase.h.

◆ m_runtimeValidation

Gaudi::Property<bool> HypoBase::m_runtimeValidation { this, "RuntimeValidation", false, "Enable detailed runtime validation of HypoAlg output, and upstream Decisions." }
privateinherited

Enabling of detailed validation checks for use during development.

Definition at line 105 of file HypoBase.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:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
PathResolver::find_calib_file
static std::string find_calib_file(const std::string &logical_file_name)
Definition: PathResolver.cxx:384
IDTPM::ndof
float ndof(const U &p)
Definition: TrackParametersHelper.h:142
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
TrigDisappearingTrackHypoAlg::createCandidates
StatusCode createCandidates(const EventContext &, const xAOD::TrigCompositeContainer *, xAOD::TrigCompositeContainer *) const
Definition: TrigDisappearingTrackHypoAlg.cxx:243
xAOD::TrigComposite_v1::setDetail
bool setDetail(const std::string &name, const TYPE &value)
Set an TYPE detail on the object.
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
TrigCompositeUtils::DecisionID
unsigned int DecisionID
Definition: TrigComposite_v1.h:27
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
TrigCompositeUtils::hltSeedingNodeName
const std::string & hltSeedingNodeName()
Definition: TrigCompositeUtilsRoot.cxx:894
xAOD::TrigComposite
TrigComposite_v1 TrigComposite
Declare the latest version of the class.
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:16
TrigCompositeUtils::newDecisionIn
Decision * newDecisionIn(DecisionContainer *dc, const std::string &name)
Helper method to create a Decision object, place it in the container and return a pointer to it.
Definition: TrigCompositeUtilsRoot.cxx:46
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
hist_file_dump.d
d
Definition: hist_file_dump.py:137
TrigDisappearingTrackHypoAlg::m_DisTrkCandKey
SG::ReadHandleKey< xAOD::TrigCompositeContainer > m_DisTrkCandKey
Definition: TrigDisappearingTrackHypoAlg.h:35
TrigCompositeUtils::hypoAlgNodeName
const std::string & hypoAlgNodeName()
Definition: TrigCompositeUtilsRoot.cxx:906
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
python.TrigCompositeUtils.isLegId
def isLegId(chainName)
Definition: DecisionHandling/python/TrigCompositeUtils.py:18
skel.it
it
Definition: skel.GENtoEVGEN.py:423
test_pyathena.pt
pt
Definition: test_pyathena.py:11
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
HypoBase::decisionInput
const SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > & decisionInput() const
methods for derived classes to access handles of the base class input other read/write handles may be...
Definition: HypoBase.cxx:16
HypoBase::printBangs
static void printBangs(MsgStream &msg)
Print header line.
Definition: HypoBase.cxx:388
TrigCompositeUtils::comboHypoAlgNodeName
const std::string & comboHypoAlgNodeName()
Definition: TrigCompositeUtilsRoot.cxx:910
TrigCompositeUtils::createAndStore
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
Definition: TrigCompositeUtilsRoot.cxx:30
TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct1p
float bdt_eval_pix4l_sct1p(const EventContext &, float, float, float, float, int, float, float, float, float, int, float, int) const
Definition: TrigDisappearingTrackHypoAlg.cxx:572
HypoBase::kRequireAll
@ kRequireAll
Definition: HypoBase.h:54
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TrigDisappearingTrackHypoAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigDisappearingTrackHypoAlg.h:40
TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct0
float bdt_eval_pix4l_sct0(const EventContext &, float, float, float, float, float, float, float, float, int, float, float, int) const
Definition: TrigDisappearingTrackHypoAlg.cxx:550
xAOD::int16_t
setScaleOne setStatusOne setSaturated int16_t
Definition: gFexGlobalRoI_v1.cxx:55
HypoBase::decisionOutput
const SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > & decisionOutput() const
methods for derived classes to access handles of the base class output other read/write handles may b...
Definition: HypoBase.cxx:20
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TrigDisappearingTrackHypoTool::DisTrkHypoInfo
Definition: TrigDisappearingTrackHypoTool.h:30
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
HypoBase::recursiveValidateGraph
static StatusCode recursiveValidateGraph(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool onlyValidateOneStep, bool runTwoConversion, size_t callDepth, std::set< const TrigCompositeUtils::Decision * > &fullyExploredFrom)
Execute all checks on one node in the graph, d, then recursive call self on all parent nodes up to L1...
Definition: HypoBase.cxx:69
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
HypoBase::validateDuplicatedDecisionID
static StatusCode validateDuplicatedDecisionID(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects.
Definition: HypoBase.cxx:227
TrigCompositeUtils::initialRoIString
const std::string & initialRoIString()
Definition: TrigCompositeUtilsRoot.cxx:870
HypoBase::hypoBaseOutputProcessing
StatusCode hypoBaseOutputProcessing(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl=MSG::DEBUG) const
Base class function to be called once slice specific code has finished. Handles debug printing and va...
Definition: HypoBase.cxx:33
HypoBase::m_runtimeValidation
Gaudi::Property< bool > m_runtimeValidation
Enabling of detailed validation checks for use during development.
Definition: HypoBase.h:105
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ReweightUtils.category
category
Definition: ReweightUtils.py:15
HypoBase::m_input
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > m_input
input decisions
Definition: HypoBase.h:101
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
TrigDisappearingTrackHypoAlg::BDTinput
float BDTinput(float) const
Definition: TrigDisappearingTrackHypoAlg.cxx:547
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Preparation.mode
mode
Definition: Preparation.py:95
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
HypoBase::validateLogicalFlow
static StatusCode validateLogicalFlow(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, const LogicalFlowCheckMode mode)
Ensure that all DecisionIDs have propagated correctly from their parent.
Definition: HypoBase.cxx:245
HypoBase::validateDecisionIDs
static StatusCode validateDecisionIDs(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure that all present IDs correspond to configured chains.
Definition: HypoBase.cxx:207
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:52
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
HLT::Identifier
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:20
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
TrigCompositeUtils::featureString
const std::string & featureString()
Definition: TrigCompositeUtilsRoot.cxx:886
TrigCompositeUtils::isChainId
bool isChainId(const HLT::Identifier &chainIdentifier)
Recognise whether the HLT identifier corresponds to a whole chain.
Definition: TrigCompositeUtilsRoot.cxx:212
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrigCompositeUtils::Decision
xAOD::TrigComposite Decision
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:20
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
TrigDisappearingTrackHypoAlg::m_hypoTools
ToolHandleArray< TrigDisappearingTrackHypoTool > m_hypoTools
Definition: TrigDisappearingTrackHypoAlg.h:34
TrigCompositeUtils::filterNodeName
const std::string & filterNodeName()
Definition: TrigCompositeUtilsRoot.cxx:898
TrigDisappearingTrackHypoAlg::m_DisTrkBDTSelKey
SG::WriteHandleKey< xAOD::TrigCompositeContainer > m_DisTrkBDTSelKey
Definition: TrigDisappearingTrackHypoAlg.h:36
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
TrigCompositeUtils::seedString
const std::string & seedString()
Definition: TrigCompositeUtilsRoot.cxx:890
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
TrigCompositeUtils::DecisionIDContainer
std::set< DecisionID > DecisionIDContainer
Definition: TrigComposite_v1.h:28
h
HypoBase::printDebugInformation
StatusCode printDebugInformation(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl) const
Common base function to print information on chains passed by objects considered in the hypo.
Definition: HypoBase.cxx:404
HypoBase::validateParentLinking
static StatusCode validateParentLinking(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool runTwoConversion)
Ensure that the Decision has at least one valid parent, unless it is a initial Decision from the HLTS...
Definition: HypoBase.cxx:133
HypoBase::HypoBase
HypoBase(const std::string &name, ISvcLocator *pSvcLocator)
constructor, to be called by sub-class constructors
Definition: HypoBase.cxx:10
TrigCompositeUtils::allFailed
bool allFailed(const Decision *d)
return true if there is no positive decision stored
Definition: TrigCompositeUtilsRoot.cxx:103
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct0
float bdt_eval_pix3l_sct0(const EventContext &, float, float, float, float, float, float, float, float, float, float, int, int) const
Definition: TrigDisappearingTrackHypoAlg.cxx:594
TrigCompositeUtils::decisionIDs
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
Definition: TrigCompositeUtilsRoot.cxx:67
HLT::Identifier::name
std::string name() const
reports human redable name if it is enabled or, empty string
Definition: HLTIdentifier.cxx:14
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
HypoBase::m_output
SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_output
output decisions
Definition: HypoBase.h:103
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
TrigCompositeUtils::roiString
const std::string & roiString()
Definition: TrigCompositeUtilsRoot.cxx:878
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
HypoBase::runtimeValidation
static StatusCode runtimeValidation(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MsgStream &msg, bool onlyValidateOneStep=true, bool runTwoConversion=false)
Executes all individual runtime tests.
Definition: HypoBase.cxx:45
TrigCompositeUtils::getIDFromLeg
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
Definition: TrigCompositeUtilsRoot.cxx:180
collisions.reader
reader
read the goodrunslist xml file(s)
Definition: collisions.py:22
HypoBase::validateHasLinks
static StatusCode validateHasLinks(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure all Decisions have the named ElementLink graph edges which they are required to by spec.
Definition: HypoBase.cxx:336
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
HypoBase::printErrorHeader
static void printErrorHeader(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
A problem was found, print common output data.
Definition: HypoBase.cxx:393
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
HypoBase::kRequireOne
@ kRequireOne
Require all DecisionIDs to be present in at least one of my parent Decision objects.
Definition: HypoBase.h:53
TrigCompositeUtils::inputMakerNodeName
const std::string & inputMakerNodeName()
Definition: TrigCompositeUtilsRoot.cxx:902
fitman.k
k
Definition: fitman.py:528
TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct1p
float bdt_eval_pix3l_sct1p(const EventContext &, float, float, float, float, float, float, int, int, float, int, int, float, float, float, float) const
Definition: TrigDisappearingTrackHypoAlg.cxx:616
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37