ATLAS Offline Software
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

float m_dDefault
 
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 29 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 46 of file DiTauIDVarCalculator.cxx.

46  {
47  return execute(xDiTau);
48 }

◆ d0_leadtrack()

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

Definition at line 921 of file DiTauIDVarCalculator.cxx.

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

◆ 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 994 of file DiTauIDVarCalculator.cxx.

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

◆ 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 151 of file DiTauIDVarCalculator.cxx.

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

◆ E_frac()

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

Definition at line 881 of file DiTauIDVarCalculator.cxx.

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

◆ 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 50 of file DiTauIDVarCalculator.cxx.

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

◆ 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 163 of file DiTauIDVarCalculator.cxx.

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

◆ f_isotracks()

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

Definition at line 967 of file DiTauIDVarCalculator.cxx.

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

◆ f_subjet()

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

Definition at line 175 of file DiTauIDVarCalculator.cxx.

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

◆ f_subjets()

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

Definition at line 187 of file DiTauIDVarCalculator.cxx.

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

◆ f_track()

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

Definition at line 199 of file DiTauIDVarCalculator.cxx.

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

◆ 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 35 of file DiTauIDVarCalculator.cxx.

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

◆ 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 704 of file DiTauIDVarCalculator.cxx.

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

◆ mass_track()

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

Definition at line 800 of file DiTauIDVarCalculator.cxx.

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

◆ mass_track_all()

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

Definition at line 832 of file DiTauIDVarCalculator.cxx.

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

◆ mass_track_core()

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

Definition at line 652 of file DiTauIDVarCalculator.cxx.

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

◆ mass_tracks()

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

Definition at line 754 of file DiTauIDVarCalculator.cxx.

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

◆ 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 342 of file DiTauIDVarCalculator.cxx.

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

◆ 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 139 of file DiTauIDVarCalculator.cxx.

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

◆ n_track()

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

Definition at line 290 of file DiTauIDVarCalculator.cxx.

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

◆ n_tracks()

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

Definition at line 296 of file DiTauIDVarCalculator.cxx.

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

◆ 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 398 of file DiTauIDVarCalculator.cxx.

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

◆ R_isotrack()

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

Definition at line 599 of file DiTauIDVarCalculator.cxx.

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

◆ R_max()

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

Definition at line 250 of file DiTauIDVarCalculator.cxx.

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

◆ R_subjets()

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

Definition at line 892 of file DiTauIDVarCalculator.cxx.

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

◆ R_track()

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

Definition at line 500 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_all()

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

Definition at line 550 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_core()

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

Definition at line 447 of file DiTauIDVarCalculator.cxx.

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

◆ R_tracks()

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

Definition at line 348 of file DiTauIDVarCalculator.cxx.

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

◆ 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

float DiTauRecTools::DiTauIDVarCalculator::m_dDefault
private

Definition at line 83 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:250
DiTauRecTools::DiTauIDVarCalculator::ditau_pt
float ditau_pt(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:151
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:163
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
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:500
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:967
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:832
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:290
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:348
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:921
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:892
DiTauRecTools::DiTauIDVarCalculator::n_isotrack
static int n_isotrack(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:342
DiTauRecTools::DiTauIDVarCalculator::R_isotrack
float R_isotrack(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:599
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:398
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
DiTauRecTools::DiTauIDVarCalculator::R_track_all
float R_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:550
DiTauRecTools::DiTauIDVarCalculator::mass_track
float mass_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:800
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:704
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:652
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:881
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::m_dDefault
float m_dDefault
Definition: DiTauIDVarCalculator.h:83
DiTauRecTools::DiTauIDVarCalculator::f_subjet
float f_subjet(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:175
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:228
DiTauRecTools::DiTauIDVarCalculator::R_track_core
float R_track_core(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:447
DiTauRecTools::DiTauIDVarCalculator::f_track
float f_track(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:199
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:994
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:623
DiTauRecTools::DiTauIDVarCalculator::f_subjets
float f_subjets(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:187
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:296
xAOD::DiTauJet_v1::trackLinks
const TrackParticleLinks_t & trackLinks() const
DiTauRecTools::DiTauIDVarCalculator::n_subjets
static float n_subjets(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:139
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:50
fitman.k
k
Definition: fitman.py:528
DiTauRecTools::DiTauIDVarCalculator::mass_tracks
float mass_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:754