ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
DiTauRecTools::DiTauIDVarCalculator Class Referenceabstract

#include <DiTauIDVarCalculator.h>

Inheritance diagram for DiTauRecTools::DiTauIDVarCalculator:
Collaboration diagram for DiTauRecTools::DiTauIDVarCalculator:

Public Member Functions

virtual void print () const =0
 Print the state of the tool. More...
 
virtual void print () const
 Print the state of the tool. More...
 
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 sysInitialize () override
 Perform system initialization for an algorithm. 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
 

Protected Member Functions

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

virtual StatusCode initialize () override
 Dummy implementation of the initialisation function. More...
 
virtual StatusCode calculateIDVariables (const xAOD::DiTauJet &xDiTau)
 
virtual StatusCode execute (const xAOD::DiTauJet &xDiTau) override
 Declare the interface that the class provides. More...
 
float ditau_pt (const xAOD::DiTauJet &xDiTau) const
 
float f_core (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float f_subjet (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float f_subjets (const xAOD::DiTauJet &xDiTau) const
 
float f_track (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float R_max (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
int n_tracks (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
int n_othertrack (const xAOD::DiTauJet &xDiTau) const
 
float R_track (const xAOD::DiTauJet &xDiTau) const
 
float R_track_all (const xAOD::DiTauJet &xDiTau) const
 
float R_track_core (const xAOD::DiTauJet &xDiTau) const
 
float R_isotrack (const xAOD::DiTauJet &xDiTau) const
 
float R_core (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float R_tracks (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float mass_track (const xAOD::DiTauJet &xDiTau) const
 
float mass_track_core (const xAOD::DiTauJet &xDiTau) const
 
float mass_core (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float mass_track_all (const xAOD::DiTauJet &xDiTau) const
 
float mass_tracks (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float E_frac (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float R_subjets (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float d0_leadtrack (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float f_isotracks (const xAOD::DiTauJet &xDiTau) const
 
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...
 

Static Private Member Functions

static float n_subjets (const xAOD::DiTauJet &xDiTau)
 
static int n_track (const xAOD::DiTauJet &xDiTau)
 
static int n_isotrack (const xAOD::DiTauJet &xDiTau)
 
static StatusCode decorNtracks (const xAOD::DiTauJet &xDiTau)
 

Private Attributes

Gaudi::Property< float > m_dDefault {this, "DefaultValue", -1234}
 
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
 

Detailed Description

Definition at line 30 of file DiTauIDVarCalculator.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ calculateIDVariables()

StatusCode DiTauIDVarCalculator::calculateIDVariables ( const xAOD::DiTauJet xDiTau)
privatevirtual

Definition at line 45 of file DiTauIDVarCalculator.cxx.

45  {
46  return execute(xDiTau);
47 }

◆ d0_leadtrack()

float DiTauIDVarCalculator::d0_leadtrack ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 920 of file DiTauIDVarCalculator.cxx.

921 {
922  double pt_leadtrk = 0;
923  double d0 = m_dDefault;
924  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
925  if (!trackLinksAcc.isAvailable(xDiTau) )
926  {
927  ATH_MSG_WARNING("Track links not available");
928  }
929 
930  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
931  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
932  return m_dDefault;
933  }
934 
935  TLorentzVector tlvSubjet;
936  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
937  xDiTau.subjetEta(iSubjet),
938  xDiTau.subjetPhi(iSubjet),
939  xDiTau.subjetE(iSubjet) );
940 
941  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
942 
943  TLorentzVector tlvTrack;
944 
945  static const SG::ConstAccessor<float> R_coreAcc("R_core");
946  for (auto &xTrack: xTracks)
947  {
948  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
949  (*xTrack)->eta(),
950  (*xTrack)->phi(),
951  (*xTrack)->e() );
952 
953  if (tlvTrack.DeltaR(tlvSubjet) < R_coreAcc(xDiTau))
954  {
955  if (tlvTrack.Pt() > pt_leadtrk)
956  {
957  pt_leadtrk = tlvTrack.Pt();
958  d0 = (*xTrack)->d0();
959  }
960  }
961  }
962  return d0;
963 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

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

◆ decorNtracks()

StatusCode DiTauIDVarCalculator::decorNtracks ( const xAOD::DiTauJet xDiTau)
staticprivate

Definition at line 993 of file DiTauIDVarCalculator.cxx.

994 {
995  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
996  if (!trackLinksAcc.isAvailable(xDiTau) )
997  {
998  Warning("decorNtracks()", "Track links not available.");
999  return StatusCode::FAILURE;
1000  }
1001 
1002  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
1003  int nSubjets = n_subjetsAcc(xDiTau);
1004 
1005  static const SG::ConstAccessor<float> R_subjetAcc("R_subjet");
1006  float Rsubjet = R_subjetAcc(xDiTau);
1007  std::vector<int> nTracks(nSubjets, 0);
1008 
1009  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
1010  for (const auto &xTrack: xTracks)
1011  {
1012  double dRmin = 1111;
1013  double itrmin = -1;
1014 
1015  for (int i=0; i<nSubjets; ++i)
1016  {
1017  TLorentzVector tlvSubjet = TLorentzVector();
1018  tlvSubjet.SetPtEtaPhiE(xDiTau.subjetPt(i),
1019  xDiTau.subjetEta(i),
1020  xDiTau.subjetPhi(i),
1021  xDiTau.subjetE(i));
1022  double dR = tlvSubjet.DeltaR((*xTrack)->p4());
1023 
1024 
1025  if ((dR < Rsubjet) && (dR < dRmin))
1026  {
1027  dRmin = dR;
1028  itrmin = i;
1029  }
1030  } // loop over subjets
1031  if (itrmin > -1) nTracks[itrmin]++;
1032  } // loop over tracks
1033 
1034  static const SG::Decorator< std::vector<int> > n_tracksDec("n_tracks");
1035  n_tracksDec(xDiTau) = nTracks;
1036 
1037  return StatusCode::SUCCESS;
1038 }

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ ditau_pt()

float DiTauIDVarCalculator::ditau_pt ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 150 of file DiTauIDVarCalculator.cxx.

151 {
152  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
153  if (n_subjetsAcc(xDiTau) < 2 ) {
154  return m_dDefault;
155  }
156 
157  return xDiTau.subjetPt(0)+xDiTau.subjetPt(1);
158 }

◆ E_frac()

float DiTauIDVarCalculator::E_frac ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 880 of file DiTauIDVarCalculator.cxx.

881 {
882  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
883  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
884  return m_dDefault;
885  }
886 
887  return xDiTau.subjetE(iSubjet) / xDiTau.subjetE(0);
888 }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::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 DiTauIDVarCalculator::execute ( const xAOD::DiTauJet xDiTau)
overrideprivatevirtual

Declare the interface that the class provides.

Implements DiTauRecTools::IDiTauToolBase.

Definition at line 49 of file DiTauIDVarCalculator.cxx.

50 {
51 
52  ATH_MSG_DEBUG("Calculate DiTau ID variables");
53 
54  static const SG::Decorator< int > n_subjetsDec("n_subjets");
55  n_subjetsDec(xDiTau) = n_subjets(xDiTau);
56  ATH_CHECK( decorNtracks(xDiTau) );
57 
58  static const SG::Decorator< float > ditau_ptDec("ditau_pt");
59  static const SG::Decorator< float > f_core_leadDec("f_core_lead");
60  static const SG::Decorator< float > f_core_sublDec("f_core_subl");
61  static const SG::Decorator< float > f_subjet_leadDec("f_subjet_lead");
62  static const SG::Decorator< float > f_subjet_sublDec("f_subjet_subl");
63  static const SG::Decorator< float > f_subjetsDec("f_subjets");
64  static const SG::Decorator< float > f_track_leadDec("f_track_lead");
65  static const SG::Decorator< float > f_track_sublDec("f_track_subl");
66  static const SG::Decorator< float > R_max_leadDec("R_max_lead");
67  static const SG::Decorator< float > R_max_sublDec("R_max_subl");
68  static const SG::Decorator< int > n_trackDec("n_track");
69  static const SG::Decorator< int > n_tracks_leadDec("n_tracks_lead");
70  static const SG::Decorator< int > n_tracks_sublDec("n_tracks_subl");
71  static const SG::Decorator< int > n_isotrackDec("n_isotrack");
72  static const SG::Decorator< float > R_trackDec("R_track");
73  static const SG::Decorator< float > R_track_coreDec("R_track_core");
74  static const SG::Decorator< float > R_track_allDec("R_track_all");
75  static const SG::Decorator< float > R_isotrackDec("R_isotrack");
76  static const SG::Decorator< float > R_core_leadDec("R_core_lead");
77  static const SG::Decorator< float > R_core_sublDec("R_core_subl");
78  static const SG::Decorator< float > R_tracks_leadDec("R_tracks_lead");
79  static const SG::Decorator< float > R_tracks_sublDec("R_tracks_subl");
80  static const SG::Decorator< float > M_trackDec("m_track");
81  static const SG::Decorator< float > M_track_coreDec("m_track_core");
82  static const SG::Decorator< float > M_core_leadDec("m_core_lead");
83  static const SG::Decorator< float > M_core_sublDec("m_core_subl");
84  static const SG::Decorator< float > M_track_allDec("m_track_all");
85  static const SG::Decorator< float > M_tracks_leadDec("m_tracks_lead");
86  static const SG::Decorator< float > M_tracks_sublDec("m_tracks_subl");
87  static const SG::Decorator< float > E_frac_sublDec("E_frac_subl");
88  static const SG::Decorator< float > E_frac_subsublDec("E_frac_subsubl");
89  static const SG::Decorator< float > R_subjets_sublDec("R_subjets_subl");
90  static const SG::Decorator< float > R_subjets_subsublDec("R_subjets_subsubl");
91  static const SG::Decorator< float > d0_leadtrack_leadDec("d0_leadtrack_lead");
92  static const SG::Decorator< float > d0_leadtrack_sublDec("d0_leadtrack_subl");
93  static const SG::Decorator< float > f_isotracksDec("f_isotracks");
94 
95  ditau_ptDec(xDiTau) = ditau_pt(xDiTau);
96  f_core_leadDec(xDiTau) = f_core(xDiTau, 0);
97  f_core_sublDec(xDiTau) = f_core(xDiTau, 1);
98  f_subjet_leadDec(xDiTau) = f_subjet(xDiTau, 0);
99  f_subjet_sublDec(xDiTau) = f_subjet(xDiTau, 1);
100  f_subjetsDec(xDiTau) = f_subjets(xDiTau);
101  f_track_leadDec(xDiTau) = f_track(xDiTau, 0);
102  f_track_sublDec(xDiTau) = f_track(xDiTau, 1);
103  R_max_leadDec(xDiTau) = R_max(xDiTau, 0);
104  R_max_sublDec(xDiTau) = R_max(xDiTau, 1);
105  n_trackDec(xDiTau) = n_track(xDiTau);
106  n_tracks_leadDec(xDiTau) = n_tracks(xDiTau, 0);
107  n_tracks_sublDec(xDiTau) = n_tracks(xDiTau, 1);
108  n_isotrackDec(xDiTau) = n_isotrack(xDiTau);
109  R_trackDec(xDiTau) = R_track(xDiTau);
110  R_track_coreDec(xDiTau) = R_track_core(xDiTau);
111  R_track_allDec(xDiTau) = R_track_all(xDiTau);
112  R_isotrackDec(xDiTau) = R_isotrack(xDiTau);
113  R_core_leadDec(xDiTau) = R_core(xDiTau, 0);
114  R_core_sublDec(xDiTau) = R_core(xDiTau, 1);
115  R_tracks_leadDec(xDiTau) = R_tracks(xDiTau, 0);
116  R_tracks_sublDec(xDiTau) = R_tracks(xDiTau, 1);
117  M_trackDec(xDiTau) = mass_track(xDiTau);
118  M_track_coreDec(xDiTau) = mass_track_core(xDiTau);
119  M_core_leadDec(xDiTau) = mass_core(xDiTau, 0);
120  M_core_sublDec(xDiTau) = mass_core(xDiTau, 1);
121  M_track_allDec(xDiTau) = mass_track_all(xDiTau);
122  M_tracks_leadDec(xDiTau) = mass_tracks(xDiTau, 0);
123  M_tracks_sublDec(xDiTau) = mass_tracks(xDiTau, 1);
124  E_frac_sublDec(xDiTau) = E_frac(xDiTau,1);
125  E_frac_subsublDec(xDiTau) = E_frac(xDiTau, 2);
126  R_subjets_sublDec(xDiTau) = R_subjets(xDiTau, 1);
127  R_subjets_subsublDec(xDiTau) = R_subjets(xDiTau, 2);
128  d0_leadtrack_leadDec(xDiTau) = d0_leadtrack(xDiTau, 0);
129  d0_leadtrack_sublDec(xDiTau) = d0_leadtrack(xDiTau, 1);
130  f_isotracksDec(xDiTau) = f_isotracks(xDiTau);
131 
132  return StatusCode::SUCCESS;
133 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ f_core()

float DiTauIDVarCalculator::f_core ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 162 of file DiTauIDVarCalculator.cxx.

163 {
164  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
165  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
166  return m_dDefault;
167  }
168 
169  return xDiTau.fCore(iSubjet);
170 }

◆ f_isotracks()

float DiTauIDVarCalculator::f_isotracks ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 966 of file DiTauIDVarCalculator.cxx.

967 {
968  double iso_pt = 0;
969  static const SG::ConstAccessor<TrackParticleLinks_t> isoTrackLinksAcc("isoTrackLinks");
970  if (!isoTrackLinksAcc.isAvailable(xDiTau) )
971  {
972  ATH_MSG_WARNING("Track links not available");
973  }
974 
975  TrackParticleLinks_t xIsoTracks = xDiTau.isoTrackLinks();
976 
977  TLorentzVector tlvIsoTrack;
978 
979  for (const auto& xIsoTrack: xIsoTracks)
980  {
981  tlvIsoTrack.SetPtEtaPhiE( (*xIsoTrack)->pt(),
982  (*xIsoTrack)->eta(),
983  (*xIsoTrack)->phi(),
984  (*xIsoTrack)->e() );
985 
986  iso_pt += tlvIsoTrack.Pt();
987  }
988 
989  return iso_pt / xDiTau.pt();
990 }

◆ f_subjet()

float DiTauIDVarCalculator::f_subjet ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 174 of file DiTauIDVarCalculator.cxx.

175 {
176  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
177  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
178  return m_dDefault;
179  }
180 
181  return xDiTau.subjetPt(iSubjet) / xDiTau.pt();
182 }

◆ f_subjets()

float DiTauIDVarCalculator::f_subjets ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 186 of file DiTauIDVarCalculator.cxx.

187 {
188  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
189  if (n_subjetsAcc(xDiTau) < 2 ) {
190  return m_dDefault;
191  }
192 
193  return (xDiTau.subjetPt(0) + xDiTau.subjetPt(1))/ xDiTau.pt();
194 }

◆ f_track()

float DiTauIDVarCalculator::f_track ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 198 of file DiTauIDVarCalculator.cxx.

199 {
200  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
201  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
202  return m_dDefault;
203  }
204 
205  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
206  if (!trackLinksAcc.isAvailable(xDiTau) )
207  {
208  ATH_MSG_WARNING("Link not available");
209  }
210 
211  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
212 
213  TLorentzVector tlvSubjet;
214  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
215  xDiTau.subjetEta(iSubjet),
216  xDiTau.subjetPhi(iSubjet),
217  xDiTau.subjetE(iSubjet) );
218 
219  TLorentzVector tlvTrack;
220  TLorentzVector tlvLeadTrack;
221  tlvLeadTrack.SetPtEtaPhiE( 0,0,0, 0);
222 
223  for (const auto &xTrack: xTracks)
224  {
225  if (!xTrack)
226  {
227  ATH_MSG_ERROR("Could not read Track");
228  continue;
229  }
230  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
231  (*xTrack)->eta(),
232  (*xTrack)->phi(),
233  (*xTrack)->e() );
234 
235  if ( tlvSubjet.DeltaR(tlvTrack) < 0.2 )
236  {
237  if (tlvLeadTrack.Pt() < tlvTrack.Pt())
238  {
239  tlvLeadTrack = tlvTrack;
240  }
241  }
242  }
243 
244  return tlvLeadTrack.Pt() / tlvSubjet.Pt();
245 }

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getProperty()

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

Get one of the tool's properties.

◆ initialize()

StatusCode DiTauIDVarCalculator::initialize ( )
overrideprivatevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 34 of file DiTauIDVarCalculator.cxx.

35 {
36  ATH_MSG_INFO( "Initializing DiTauIDVarCalculator" );
37 
38  return StatusCode::SUCCESS;
39 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ mass_core()

float DiTauIDVarCalculator::mass_core ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 703 of file DiTauIDVarCalculator.cxx.

704 {
705 
706  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
707  if (!trackLinksAcc.isAvailable(xDiTau) )
708  {
709  ATH_MSG_WARNING("Link not available");
710  }
711 
712  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
713  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
714  return m_dDefault;
715  }
716 
717  TLorentzVector tlvallTracks;
718 
719 
720  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
721 
722  TLorentzVector tlvSubjet;
723  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
724  xDiTau.subjetEta(iSubjet),
725  xDiTau.subjetPhi(iSubjet),
726  xDiTau.subjetE(iSubjet) );
727 
728  TLorentzVector tlvTrack;
729 
730  static const SG::ConstAccessor<float> R_coreAcc("R_core");
731  for (const auto& xTrack: xTracks)
732  {
733  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
734  (*xTrack)->eta(),
735  (*xTrack)->phi(),
736  (*xTrack)->e() );
737  if ( tlvSubjet.DeltaR(tlvTrack) < R_coreAcc(xDiTau) )
738  {
739  //ATH_MSG_DEBUG("smaller");
740  tlvallTracks += tlvTrack;
741  }
742  }
743 
744  if (tlvallTracks.M() < 0)
745  {
746  return m_dDefault;
747  }
748 
749  return tlvallTracks.M();
750 }

◆ mass_track()

float DiTauIDVarCalculator::mass_track ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 799 of file DiTauIDVarCalculator.cxx.

800 {
801 
802  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
803  if (!trackLinksAcc.isAvailable(xDiTau) )
804  {
805  ATH_MSG_WARNING("Link not available");
806  }
807 
808  TLorentzVector tlvallTracks;
809 
810  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
811 
812  TLorentzVector tlvTrack;
813 
814  for (const auto& xTrack: xTracks)
815  {
816  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
817  (*xTrack)->eta(),
818  (*xTrack)->phi(),
819  (*xTrack)->e() );
820 
821  tlvallTracks += tlvTrack;
822  }
823 
824  if (tlvallTracks.M() < 0)
825  {
826  return m_dDefault;
827  }
828  return tlvallTracks.M();
829 }

◆ mass_track_all()

float DiTauIDVarCalculator::mass_track_all ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 831 of file DiTauIDVarCalculator.cxx.

832 {
833 
834  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
835  if (!trackLinksAcc.isAvailable(xDiTau) )
836  {
837  ATH_MSG_WARNING("Link not available");
838  }
839 
840  TLorentzVector tlvallTracks;
841 
842  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
843 
844  TLorentzVector tlvTrack;
845 
846  for (const auto& xTrack: xTracks)
847  {
848  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
849  (*xTrack)->eta(),
850  (*xTrack)->phi(),
851  (*xTrack)->e() );
852 
853  tlvallTracks += tlvTrack;
854  }
855 
856 
857  TrackParticleLinks_t xIsoTracks = xDiTau.isoTrackLinks();
858 
859  TLorentzVector tlvIsoTrack;
860 
861  for (const auto& xIsoTrack: xIsoTracks)
862  {
863  tlvIsoTrack.SetPtEtaPhiE( (*xIsoTrack)->pt(),
864  (*xIsoTrack)->eta(),
865  (*xIsoTrack)->phi(),
866  (*xIsoTrack)->e() );
867 
868  tlvallTracks += tlvIsoTrack;
869  }
870 
871  if (tlvallTracks.M() < 0)
872  {
873  return m_dDefault;
874  }
875 
876  return tlvallTracks.M();
877 }

◆ mass_track_core()

float DiTauIDVarCalculator::mass_track_core ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 651 of file DiTauIDVarCalculator.cxx.

652 {
653 
654  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
655  if (!trackLinksAcc.isAvailable(xDiTau) )
656  {
657  ATH_MSG_WARNING("Link not available");
658  }
659 
660  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
661  if (n_subjetsAcc(xDiTau) < 2) {
662  return m_dDefault;
663  }
664 
665  TLorentzVector tlvallTracks;
666 
667  static const SG::ConstAccessor<float> R_coreAcc("R_core");
668  for (int i = 0; i<=1; i++)
669  {
670 
671  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
672 
673  TLorentzVector tlvSubjet;
674  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(i),
675  xDiTau.subjetEta(i),
676  xDiTau.subjetPhi(i),
677  xDiTau.subjetE(i) );
678 
679  TLorentzVector tlvTrack;
680 
681  for (const auto& xTrack: xTracks)
682  {
683  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
684  (*xTrack)->eta(),
685  (*xTrack)->phi(),
686  (*xTrack)->e() );
687  if ( tlvSubjet.DeltaR(tlvTrack) < R_coreAcc(xDiTau) )
688  {
689  //ATH_MSG_DEBUG("smaller");
690  tlvallTracks += tlvTrack;
691  }
692  }
693  }
694  if (tlvallTracks.M() < 0)
695  {
696  return m_dDefault;
697  }
698 
699  return tlvallTracks.M();
700 }

◆ mass_tracks()

float DiTauIDVarCalculator::mass_tracks ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 753 of file DiTauIDVarCalculator.cxx.

754 {
755 
756  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
757  if (!trackLinksAcc.isAvailable(xDiTau) )
758  {
759  ATH_MSG_WARNING("Link not available");
760  }
761 
762  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
763  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
764  return m_dDefault;
765  }
766 
767  TLorentzVector tlvallTracks;
768 
769  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
770 
771  TLorentzVector tlvSubjet;
772  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
773  xDiTau.subjetEta(iSubjet),
774  xDiTau.subjetPhi(iSubjet),
775  xDiTau.subjetE(iSubjet) );
776 
777  TLorentzVector tlvTrack;
778 
779  for (const auto& xTrack: xTracks)
780  {
781  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
782  (*xTrack)->eta(),
783  (*xTrack)->phi(),
784  (*xTrack)->e() );
785  if ( tlvSubjet.DeltaR(tlvTrack) < 0.2 )
786  {
787  tlvallTracks += tlvTrack;
788  }
789  }
790 
791  if (tlvallTracks.M() < 0)
792  {
793  return m_dDefault;
794  }
795 
796  return tlvallTracks.M();
797 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ n_isotrack()

int DiTauIDVarCalculator::n_isotrack ( const xAOD::DiTauJet xDiTau)
staticprivate

Definition at line 341 of file DiTauIDVarCalculator.cxx.

342 {
343  return xDiTau.nIsoTracks();
344 }

◆ n_othertrack()

int DiTauRecTools::DiTauIDVarCalculator::n_othertrack ( const xAOD::DiTauJet xDiTau) const
private

◆ n_subjets()

float DiTauIDVarCalculator::n_subjets ( const xAOD::DiTauJet xDiTau)
staticprivate

Definition at line 138 of file DiTauIDVarCalculator.cxx.

139 {
140  int nSubjet = 0;
141  while (xDiTau.subjetPt(nSubjet) > 0. )
142  {
143  nSubjet++;
144  }
145 
146  return nSubjet;
147 }

◆ n_track()

int DiTauIDVarCalculator::n_track ( const xAOD::DiTauJet xDiTau)
staticprivate

Definition at line 289 of file DiTauIDVarCalculator.cxx.

290 {
291  return xDiTau.nTracks();
292 }

◆ n_tracks()

int DiTauIDVarCalculator::n_tracks ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 295 of file DiTauIDVarCalculator.cxx.

296 {
297  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
298  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
299  return m_dDefault;
300  }
301 
302  static const SG::ConstAccessor<std::vector<int> > n_tracksAcc("n_tracks");
303  if (!n_tracksAcc.isAvailable(xDiTau))
304  {
305  ATH_MSG_DEBUG("n_tracks decoration not available. Try with track links.");
306 
307  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
308  if (!trackLinksAcc.isAvailable(xDiTau) )
309  {
310  ATH_MSG_WARNING("Track links not available. Return 0.");
311  return (int)m_dDefault;
312  }
313 
314  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
315 
316  TLorentzVector tlvSubjet;
317  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
318  xDiTau.subjetEta(iSubjet),
319  xDiTau.subjetPhi(iSubjet),
320  xDiTau.subjetE(iSubjet) );
321 
322  TLorentzVector tlvTrack;
323  int nTracks = 0;
324  for (const auto &xTrack: xTracks)
325  {
326  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
327  (*xTrack)->eta(),
328  (*xTrack)->phi(),
329  (*xTrack)->e() );
330  if ( tlvSubjet.DeltaR(tlvTrack) < 0.2 ) nTracks++;
331  }
332 
333  return nTracks;
334  }
335 
336  return n_tracksAcc(xDiTau).at(iSubjet);
337 
338 }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print() [1/2]

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

◆ print() [2/2]

virtual void asg::IAsgTool::print ( ) const
pure virtualinherited

◆ R_core()

float DiTauIDVarCalculator::R_core ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 397 of file DiTauIDVarCalculator.cxx.

398 {
399  double R_sum = 0;
400  double pt = 0;
401 
402  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
403  if (!trackLinksAcc.isAvailable(xDiTau) )
404  {
405  ATH_MSG_WARNING("Link not available");
406  }
407  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
408  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
409  return m_dDefault;
410  }
411 
412  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
413 
414  TLorentzVector tlvSubjet;
415  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
416  xDiTau.subjetEta(iSubjet),
417  xDiTau.subjetPhi(iSubjet),
418  xDiTau.subjetE(iSubjet) );
419 
420  TLorentzVector tlvTrack;
421 
422  static const SG::ConstAccessor<float> R_coreAcc("R_core");
423  for (const auto& xTrack: xTracks)
424  {
425  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
426  (*xTrack)->eta(),
427  (*xTrack)->phi(),
428  (*xTrack)->e() );
429 
430  if ( tlvSubjet.DeltaR(tlvTrack) < R_coreAcc(xDiTau) )
431  {
432  R_sum += tlvSubjet.DeltaR(tlvTrack)*tlvTrack.Pt();
433  pt += tlvTrack.Pt();
434  }
435  }
436 
437  if (pt == 0)
438  {
439  return m_dDefault;
440  }
441 
442  return R_sum / pt;
443 }

◆ R_isotrack()

float DiTauIDVarCalculator::R_isotrack ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 598 of file DiTauIDVarCalculator.cxx.

599 {
600  double R_sum = 0;
601  double pt = 0;
602 
603  static const SG::ConstAccessor<TrackParticleLinks_t> isoTrackLinksAcc("isoTrackLinks");
604  if (!isoTrackLinksAcc.isAvailable(xDiTau) )
605  {
606  ATH_MSG_WARNING("Link not available");
607  }
608 
609  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
610  if (n_subjetsAcc(xDiTau) < 2) {
611  return m_dDefault;
612  }
613 
614  for (int i = 0; i<=1; i++)
615  {
616 
617  TrackParticleLinks_t xIsoTracks = xDiTau.isoTrackLinks();
618 
619  TLorentzVector tlvSubjet;
620  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(i),
621  xDiTau.subjetEta(i),
622  xDiTau.subjetPhi(i),
623  xDiTau.subjetE(i) );
624 
625  TLorentzVector tlvIsoTrack;
626 
627  for (const auto& xIsoTrack: xIsoTracks)
628  {
629  tlvIsoTrack.SetPtEtaPhiE( (*xIsoTrack)->pt(),
630  (*xIsoTrack)->eta(),
631  (*xIsoTrack)->phi(),
632  (*xIsoTrack)->e() );
633 
634  if (tlvSubjet.DeltaR(tlvIsoTrack) < 0.4)
635  {
636  R_sum += tlvSubjet.DeltaR(tlvIsoTrack)*tlvIsoTrack.Pt();
637  pt += tlvIsoTrack.Pt();
638  }
639  }
640  }
641 
642  if (pt == 0)
643  {
644  return m_dDefault;
645  }
646 
647  return R_sum / pt;
648 }

◆ R_max()

float DiTauIDVarCalculator::R_max ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 249 of file DiTauIDVarCalculator.cxx.

250 {
251  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
252  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
253  return m_dDefault;
254  }
255 
256  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
257 
258  TLorentzVector tlvSubjet;
259  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
260  xDiTau.subjetEta(iSubjet),
261  xDiTau.subjetPhi(iSubjet),
262  xDiTau.subjetE(iSubjet) );
263 
264  TLorentzVector tlvTrack;
265  TLorentzVector tlvRmaxTrack;
266  double Rmax = 0;
267  static const SG::ConstAccessor<float> R_subjetAcc("R_subjet");
268  for (const auto &xTrack: xTracks)
269  {
270  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
271  (*xTrack)->eta(),
272  (*xTrack)->phi(),
273  (*xTrack)->e() );
274 
275  if ( tlvSubjet.DeltaR(tlvTrack) < R_subjetAcc(xDiTau) )
276  {
277  if (tlvTrack.DeltaR(tlvSubjet) > Rmax)
278  {
279  Rmax = tlvTrack.DeltaR(tlvSubjet);
280  }
281  }
282  }
283 
284  return Rmax;
285 }

◆ R_subjets()

float DiTauIDVarCalculator::R_subjets ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 891 of file DiTauIDVarCalculator.cxx.

892 {
893 
894  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
895  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
896  return m_dDefault;
897  }
898 
899  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
900  if (!trackLinksAcc.isAvailable(xDiTau) )
901  {
902  ATH_MSG_WARNING("Track links not available");
903  }
904 
905  TLorentzVector tlvLeadSubjet;
906  tlvLeadSubjet.SetPtEtaPhiE( xDiTau.subjetPt(0),
907  xDiTau.subjetEta(0),
908  xDiTau.subjetPhi(0),
909  xDiTau.subjetE(0) );
910 
911  TLorentzVector tlvSubjet;
912  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
913  xDiTau.subjetEta(iSubjet),
914  xDiTau.subjetPhi(iSubjet),
915  xDiTau.subjetE(iSubjet) );
916  return tlvLeadSubjet.DeltaR(tlvSubjet);
917 }

◆ R_track()

float DiTauIDVarCalculator::R_track ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 499 of file DiTauIDVarCalculator.cxx.

500 {
501  double R_sum = 0;
502  double pt = 0;
503 
504  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
505  if (!trackLinksAcc.isAvailable(xDiTau) )
506  {
507  ATH_MSG_WARNING("Link not available");
508  }
509  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
510  if (n_subjetsAcc(xDiTau) < 2) {
511  return m_dDefault;
512  }
513 
514  for (int i = 0; i<=1; i++)
515  {
516 
517  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
518 
519  TLorentzVector tlvSubjet;
520  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(i),
521  xDiTau.subjetEta(i),
522  xDiTau.subjetPhi(i),
523  xDiTau.subjetE(i) );
524 
525  TLorentzVector tlvTrack;
526 
527  for (const auto& xTrack: xTracks)
528  {
529  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
530  (*xTrack)->eta(),
531  (*xTrack)->phi(),
532  (*xTrack)->e() );
533 
534  if (tlvSubjet.DeltaR(tlvTrack) < 0.2)
535  {
536  R_sum += tlvSubjet.DeltaR(tlvTrack)*tlvTrack.Pt();
537  pt += tlvTrack.Pt();
538  }
539  }
540  }
541  if (pt == 0)
542  {
543  return m_dDefault;
544  }
545 
546  return R_sum / pt;
547 }

◆ R_track_all()

float DiTauIDVarCalculator::R_track_all ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 549 of file DiTauIDVarCalculator.cxx.

550 {
551  double R_sum = 0;
552  double pt = 0;
553 
554  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
555  if (!trackLinksAcc.isAvailable(xDiTau) )
556  {
557  ATH_MSG_WARNING("Link not available");
558  }
559 
560  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
561  for (int i = 0; i<n_subjetsAcc(xDiTau); i++)
562  {
563 
564  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
565 
566  TLorentzVector tlvSubjet;
567  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(i),
568  xDiTau.subjetEta(i),
569  xDiTau.subjetPhi(i),
570  xDiTau.subjetE(i) );
571 
572  TLorentzVector tlvTrack;
573 
574  for (const auto& xTrack: xTracks)
575  {
576  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
577  (*xTrack)->eta(),
578  (*xTrack)->phi(),
579  (*xTrack)->e() );
580 
581  if (tlvSubjet.DeltaR(tlvTrack) <= 0.2)
582  {
583  R_sum += tlvSubjet.DeltaR(tlvTrack)*tlvTrack.Pt();
584  pt += tlvTrack.Pt();
585  }
586  }
587  }
588 
589  if (pt == 0)
590  {
591  return m_dDefault;
592  }
593 
594  return R_sum / pt;
595 }

◆ R_track_core()

float DiTauIDVarCalculator::R_track_core ( const xAOD::DiTauJet xDiTau) const
private

Definition at line 446 of file DiTauIDVarCalculator.cxx.

447 {
448  double R_sum = 0;
449  double pt = 0;
450 
451  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
452  if (!trackLinksAcc.isAvailable(xDiTau) )
453  {
454  ATH_MSG_WARNING("Link not available");
455  }
456  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
457  if (n_subjetsAcc(xDiTau) < 2) {
458  return m_dDefault;
459  }
460 
461 
462  for (int i = 0; i<=1; i++)
463  {
464 
465  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
466 
467  TLorentzVector tlvSubjet;
468  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(i),
469  xDiTau.subjetEta(i),
470  xDiTau.subjetPhi(i),
471  xDiTau.subjetE(i) );
472 
473  TLorentzVector tlvTrack;
474 
475  static const SG::ConstAccessor<float> R_coreAcc("R_core");
476  for (const auto& xTrack: xTracks)
477  {
478  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
479  (*xTrack)->eta(),
480  (*xTrack)->phi(),
481  (*xTrack)->e() );
482  if ( tlvSubjet.DeltaR(tlvTrack) < R_coreAcc(xDiTau) )
483  {
484  //ATH_MSG_DEBUG("smaller");
485  R_sum += tlvSubjet.DeltaR(tlvTrack)*tlvTrack.Pt();
486  pt += tlvTrack.Pt();
487  }
488  }
489  }
490  if (pt == 0)
491  {
492  return m_dDefault;
493  }
494 
495  return R_sum / pt;
496 }

◆ R_tracks()

float DiTauIDVarCalculator::R_tracks ( const xAOD::DiTauJet xDiTau,
int  iSubjet 
) const
private

Definition at line 347 of file DiTauIDVarCalculator.cxx.

348 {
349  double R_sum = 0;
350  double pt = 0;
351 
352  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
353  if (!trackLinksAcc.isAvailable(xDiTau) )
354  {
355  ATH_MSG_WARNING("Link not available");
356  }
357 
358  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
359  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
360  return m_dDefault;
361  }
362 
363  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
364 
365  TLorentzVector tlvSubjet;
366  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
367  xDiTau.subjetEta(iSubjet),
368  xDiTau.subjetPhi(iSubjet),
369  xDiTau.subjetE(iSubjet) );
370 
371  TLorentzVector tlvTrack;
372 
373  for (const auto& xTrack: xTracks)
374  {
375  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
376  (*xTrack)->eta(),
377  (*xTrack)->phi(),
378  (*xTrack)->e() );
379 
380  if ( tlvSubjet.DeltaR(tlvTrack) < 0.2 )
381  {
382  //ATH_MSG_DEBUG("smaller");
383  R_sum += tlvSubjet.DeltaR(tlvTrack)*tlvTrack.Pt();
384  pt += tlvTrack.Pt();
385  }
386  }
387 
388  if (pt == 0)
389  {
390  return m_dDefault;
391  }
392 
393  return R_sum / pt;
394 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_dDefault

Gaudi::Property<float> DiTauRecTools::DiTauIDVarCalculator::m_dDefault {this, "DefaultValue", -1234}
private

Definition at line 55 of file DiTauIDVarCalculator.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
DiTauRecTools::DiTauIDVarCalculator::R_max
float R_max(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:249
DiTauRecTools::DiTauIDVarCalculator::ditau_pt
float ditau_pt(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:150
xAOD::DiTauJet_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
DiTauRecTools::DiTauIDVarCalculator::f_core
float f_core(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:162
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:402
xAOD::DiTauJet_v1::fCore
float fCore(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:168
DiTauRecTools::DiTauIDVarCalculator::R_track
float R_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:499
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DiTauRecTools::DiTauIDVarCalculator::f_isotracks
float f_isotracks(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:966
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
DiTauRecTools::DiTauIDVarCalculator::mass_track_all
float mass_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:831
xAOD::DiTauJet_v1::subjetPhi
float subjetPhi(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:112
DiTauRecTools::DiTauIDVarCalculator::n_track
static int n_track(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:289
DiTauRecTools::DiTauIDVarCalculator::m_dDefault
Gaudi::Property< float > m_dDefault
Definition: DiTauIDVarCalculator.h:55
test_pyathena.pt
pt
Definition: test_pyathena.py:11
DiTauRecTools::DiTauIDVarCalculator::R_tracks
float R_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:347
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
DiTauRecTools::DiTauIDVarCalculator::d0_leadtrack
float d0_leadtrack(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:920
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
DiTauRecTools::DiTauIDVarCalculator::R_subjets
float R_subjets(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:891
DiTauRecTools::DiTauIDVarCalculator::n_isotrack
static int n_isotrack(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:341
DiTauRecTools::DiTauIDVarCalculator::R_isotrack
float R_isotrack(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:598
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
xAOD::DiTauJet_v1::subjetE
float subjetE(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:122
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
DiTauRecTools::DiTauIDVarCalculator::R_core
float R_core(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:397
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
DiTauRecTools::DiTauIDVarCalculator::R_track_all
float R_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:549
DiTauRecTools::DiTauIDVarCalculator::mass_track
float mass_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:799
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DiTauRecTools::DiTauIDVarCalculator::mass_core
float mass_core(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:703
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
lumiFormat.i
int i
Definition: lumiFormat.py:85
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrackParticleLinks_t
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Definition: DiTauIDVarCalculator.cxx:20
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
DiTauRecTools::DiTauIDVarCalculator::mass_track_core
float mass_track_core(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:651
python.xAODType.dummy
dummy
Definition: xAODType.py:4
DiTauRecTools::DiTauIDVarCalculator::E_frac
float E_frac(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:880
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
DiTauRecTools::DiTauIDVarCalculator::f_subjet
float f_subjet(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:174
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::DiTauJet_v1::subjetEta
float subjetEta(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:102
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
xAOD::DiTauJet_v1::nIsoTracks
size_t nIsoTracks() const
Definition: DiTauJet_v1.cxx:290
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::DiTauJet_v1::nTracks
size_t nTracks() const
Definition: DiTauJet_v1.cxx:258
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DiTauRecTools::DiTauIDVarCalculator::R_track_core
float R_track_core(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:446
DiTauRecTools::DiTauIDVarCalculator::f_track
float f_track(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:198
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DiTauRecTools::DiTauIDVarCalculator::decorNtracks
static StatusCode decorNtracks(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:993
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
DiTauRecTools::DiTauIDVarCalculator::f_subjets
float f_subjets(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:186
xAOD::DiTauJet_v1::isoTrackLinks
const TrackParticleLinks_t & isoTrackLinks() const
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::DiTauJet_v1::subjetPt
float subjetPt(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:92
DiTauRecTools::DiTauIDVarCalculator::n_tracks
int n_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:295
xAOD::DiTauJet_v1::trackLinks
const TrackParticleLinks_t & trackLinks() const
DiTauRecTools::DiTauIDVarCalculator::n_subjets
static float n_subjets(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:138
SG::DataProxy
Definition: DataProxy.h:45
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
DiTauRecTools::DiTauIDVarCalculator::execute
virtual StatusCode execute(const xAOD::DiTauJet &xDiTau) override
Declare the interface that the class provides.
Definition: DiTauIDVarCalculator.cxx:49
fitman.k
k
Definition: fitman.py:528
DiTauRecTools::DiTauIDVarCalculator::mass_tracks
float mass_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:753