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, V, H > &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) const
 
virtual StatusCode execute (const xAOD::DiTauJet &xDiTau) const 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
 
StatusCode decorNtracks (const xAOD::DiTauJet &xDiTau) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &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)
 

Private Attributes

Gaudi::Property< float > m_dDefault {this, "DefaultValue", -1234}
 
Gaudi::Property< float > m_Rsubjet {this, "R_subjet", 0.2}
 
Gaudi::Property< float > m_Rcore {this, "R_core", 0.1}
 
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) const
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 916 of file DiTauIDVarCalculator.cxx.

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

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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) const
private

Definition at line 988 of file DiTauIDVarCalculator.cxx.

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

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

877 {
878  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
879  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
880  return m_dDefault;
881  }
882 
883  return xDiTau.subjetE(iSubjet) / xDiTau.subjetE(0);
884 }

◆ 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) const
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 961 of file DiTauIDVarCalculator.cxx.

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

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

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

◆ mass_track()

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

Definition at line 795 of file DiTauIDVarCalculator.cxx.

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

◆ mass_track_all()

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

Definition at line 827 of file DiTauIDVarCalculator.cxx.

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

◆ mass_track_core()

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

Definition at line 649 of file DiTauIDVarCalculator.cxx.

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

◆ mass_tracks()

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

Definition at line 749 of file DiTauIDVarCalculator.cxx.

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

◆ 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  for (const auto& xTrack: xTracks)
423  {
424  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
425  (*xTrack)->eta(),
426  (*xTrack)->phi(),
427  (*xTrack)->e() );
428 
429  if ( tlvSubjet.DeltaR(tlvTrack) < m_Rcore )
430  {
431  R_sum += tlvSubjet.DeltaR(tlvTrack)*tlvTrack.Pt();
432  pt += tlvTrack.Pt();
433  }
434  }
435 
436  if (pt == 0)
437  {
438  return m_dDefault;
439  }
440 
441  return R_sum / pt;
442 }

◆ R_isotrack()

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

Definition at line 596 of file DiTauIDVarCalculator.cxx.

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

◆ 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 
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) < m_Rsubjet )
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 887 of file DiTauIDVarCalculator.cxx.

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

◆ R_track()

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

Definition at line 497 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_all()

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

Definition at line 547 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_core()

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

Definition at line 445 of file DiTauIDVarCalculator.cxx.

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

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

Gaudi::Property<float> DiTauRecTools::DiTauIDVarCalculator::m_Rcore {this, "R_core", 0.1}
private

Definition at line 57 of file DiTauIDVarCalculator.h.

◆ m_Rsubjet

Gaudi::Property<float> DiTauRecTools::DiTauIDVarCalculator::m_Rsubjet {this, "R_subjet", 0.2}
private

Definition at line 56 of file DiTauIDVarCalculator.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::m_Rcore
Gaudi::Property< float > m_Rcore
Definition: DiTauIDVarCalculator.h:57
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:407
xAOD::DiTauJet_v1::fCore
float fCore(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:167
DiTauRecTools::DiTauIDVarCalculator::R_track
float R_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:497
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DiTauRecTools::DiTauIDVarCalculator::decorNtracks
StatusCode decorNtracks(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:988
DiTauRecTools::DiTauIDVarCalculator::f_isotracks
float f_isotracks(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:961
DiTauRecTools::DiTauIDVarCalculator::mass_track_all
float mass_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:827
xAOD::DiTauJet_v1::subjetPhi
float subjetPhi(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:111
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:916
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
DiTauRecTools::DiTauIDVarCalculator::execute
virtual StatusCode execute(const xAOD::DiTauJet &xDiTau) const override
Declare the interface that the class provides.
Definition: DiTauIDVarCalculator.cxx:49
TrackParticleLinks_t
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Definition: src/DiTauOnnxDiscriminantTool.cxx:16
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:887
DiTauRecTools::DiTauIDVarCalculator::n_isotrack
static int n_isotrack(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:341
DiTauRecTools::DiTauIDVarCalculator::m_Rsubjet
Gaudi::Property< float > m_Rsubjet
Definition: DiTauIDVarCalculator.h:56
DiTauRecTools::DiTauIDVarCalculator::R_isotrack
float R_isotrack(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:596
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
xAOD::DiTauJet_v1::subjetE
float subjetE(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:121
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:547
DiTauRecTools::DiTauIDVarCalculator::mass_track
float mass_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:795
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
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:209
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:700
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
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
CalibDbCompareRT.dummy
dummy
Definition: CalibDbCompareRT.py:59
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:649
DiTauRecTools::DiTauIDVarCalculator::E_frac
float E_frac(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:876
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:101
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
xAOD::DiTauJet_v1::nIsoTracks
size_t nIsoTracks() const
Definition: DiTauJet_v1.cxx:256
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:224
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:445
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
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:801
xAOD::DiTauJet_v1::subjetPt
float subjetPt(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:91
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
fitman.k
k
Definition: fitman.py:528
DiTauRecTools::DiTauIDVarCalculator::mass_tracks
float mass_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:749