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 27 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 36 of file DiTauIDVarCalculator.cxx.

36  {
37  return execute(xDiTau);
38 }

◆ d0_leadtrack()

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

Definition at line 907 of file DiTauIDVarCalculator.cxx.

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

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

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

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

142 {
143  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
144  if (n_subjetsAcc(xDiTau) < 2 ) {
145  return m_dDefault;
146  }
147 
148  return xDiTau.subjetPt(0)+xDiTau.subjetPt(1);
149 }

◆ E_frac()

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

Definition at line 867 of file DiTauIDVarCalculator.cxx.

868 {
869  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
870  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
871  return m_dDefault;
872  }
873 
874  return xDiTau.subjetE(iSubjet) / xDiTau.subjetE(0);
875 }

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

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

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

154 {
155  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
156  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
157  return m_dDefault;
158  }
159 
160  return xDiTau.fCore(iSubjet);
161 }

◆ f_isotracks()

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

Definition at line 952 of file DiTauIDVarCalculator.cxx.

953 {
954  double iso_pt = 0;
955  static const SG::ConstAccessor<TrackParticleLinks_t> isoTrackLinksAcc("isoTrackLinks");
956  if (!isoTrackLinksAcc.isAvailable(xDiTau) )
957  {
958  ATH_MSG_WARNING("Track links not available");
959  }
960 
961  TrackParticleLinks_t xIsoTracks = xDiTau.isoTrackLinks();
962 
963  TLorentzVector tlvIsoTrack;
964 
965  for (const auto& xIsoTrack: xIsoTracks)
966  {
967  tlvIsoTrack.SetPtEtaPhiE( (*xIsoTrack)->pt(),
968  (*xIsoTrack)->eta(),
969  (*xIsoTrack)->phi(),
970  (*xIsoTrack)->e() );
971 
972  iso_pt += tlvIsoTrack.Pt();
973  }
974 
975  return iso_pt / xDiTau.pt();
976 }

◆ f_subjet()

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

Definition at line 165 of file DiTauIDVarCalculator.cxx.

166 {
167  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
168  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
169  return m_dDefault;
170  }
171 
172  return xDiTau.subjetPt(iSubjet) / xDiTau.pt();
173 }

◆ f_subjets()

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

Definition at line 177 of file DiTauIDVarCalculator.cxx.

178 {
179  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
180  if (n_subjetsAcc(xDiTau) < 2 ) {
181  return m_dDefault;
182  }
183 
184  return (xDiTau.subjetPt(0) + xDiTau.subjetPt(1))/ xDiTau.pt();
185 }

◆ f_track()

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

Definition at line 189 of file DiTauIDVarCalculator.cxx.

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

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

26 {
27  ATH_MSG_INFO( "Initializing DiTauIDVarCalculator" );
28 
29  return StatusCode::SUCCESS;
30 }

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

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

◆ mass_track()

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

Definition at line 786 of file DiTauIDVarCalculator.cxx.

787 {
788 
789  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
790  if (!trackLinksAcc.isAvailable(xDiTau) )
791  {
792  ATH_MSG_WARNING("Link not available");
793  }
794 
795  TLorentzVector tlvallTracks;
796 
797  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
798 
799  TLorentzVector tlvTrack;
800 
801  for (const auto& xTrack: xTracks)
802  {
803  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
804  (*xTrack)->eta(),
805  (*xTrack)->phi(),
806  (*xTrack)->e() );
807 
808  tlvallTracks += tlvTrack;
809  }
810 
811  if (tlvallTracks.M() < 0)
812  {
813  return m_dDefault;
814  }
815  return tlvallTracks.M();
816 }

◆ mass_track_all()

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

Definition at line 818 of file DiTauIDVarCalculator.cxx.

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

◆ mass_track_core()

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

Definition at line 640 of file DiTauIDVarCalculator.cxx.

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

◆ mass_tracks()

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

Definition at line 740 of file DiTauIDVarCalculator.cxx.

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

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

333 {
334  return xDiTau.nIsoTracks();
335 }

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

130 {
131  int nSubjet = 0;
132  while (xDiTau.subjetPt(nSubjet) > 0. )
133  {
134  nSubjet++;
135  }
136 
137  return nSubjet;
138 }

◆ n_track()

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

Definition at line 280 of file DiTauIDVarCalculator.cxx.

281 {
282  return xDiTau.nTracks();
283 }

◆ n_tracks()

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

Definition at line 286 of file DiTauIDVarCalculator.cxx.

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

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

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

◆ R_isotrack()

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

Definition at line 587 of file DiTauIDVarCalculator.cxx.

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

◆ R_max()

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

Definition at line 240 of file DiTauIDVarCalculator.cxx.

241 {
242  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
243  if (iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
244  return m_dDefault;
245  }
246 
247  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
248 
249  TLorentzVector tlvSubjet;
250  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
251  xDiTau.subjetEta(iSubjet),
252  xDiTau.subjetPhi(iSubjet),
253  xDiTau.subjetE(iSubjet) );
254 
255  TLorentzVector tlvTrack;
256  TLorentzVector tlvRmaxTrack;
257  double Rmax = 0;
258 
259  for (const auto &xTrack: xTracks)
260  {
261  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
262  (*xTrack)->eta(),
263  (*xTrack)->phi(),
264  (*xTrack)->e() );
265 
266  if ( tlvSubjet.DeltaR(tlvTrack) < m_Rsubjet )
267  {
268  if (tlvTrack.DeltaR(tlvSubjet) > Rmax)
269  {
270  Rmax = tlvTrack.DeltaR(tlvSubjet);
271  }
272  }
273  }
274 
275  return Rmax;
276 }

◆ R_subjets()

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

Definition at line 878 of file DiTauIDVarCalculator.cxx.

879 {
880 
881  static const SG::ConstAccessor<int> n_subjetsAcc("n_subjets");
882  if ( iSubjet < 0 || iSubjet >= n_subjetsAcc(xDiTau)) {
883  return m_dDefault;
884  }
885 
886  static const SG::ConstAccessor<TrackParticleLinks_t> trackLinksAcc("trackLinks");
887  if (!trackLinksAcc.isAvailable(xDiTau) )
888  {
889  ATH_MSG_WARNING("Track links not available");
890  }
891 
892  TLorentzVector tlvLeadSubjet;
893  tlvLeadSubjet.SetPtEtaPhiE( xDiTau.subjetPt(0),
894  xDiTau.subjetEta(0),
895  xDiTau.subjetPhi(0),
896  xDiTau.subjetE(0) );
897 
898  TLorentzVector tlvSubjet;
899  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
900  xDiTau.subjetEta(iSubjet),
901  xDiTau.subjetPhi(iSubjet),
902  xDiTau.subjetE(iSubjet) );
903  return tlvLeadSubjet.DeltaR(tlvSubjet);
904 }

◆ R_track()

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

Definition at line 488 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_all()

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

Definition at line 538 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_core()

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

Definition at line 436 of file DiTauIDVarCalculator.cxx.

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

◆ R_tracks()

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

Definition at line 338 of file DiTauIDVarCalculator.cxx.

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

◆ 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 52 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 54 of file DiTauIDVarCalculator.h.

◆ m_Rsubjet

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

Definition at line 53 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:240
DiTauRecTools::DiTauIDVarCalculator::ditau_pt
float ditau_pt(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:141
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:54
DiTauRecTools::DiTauIDVarCalculator::f_core
float f_core(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:153
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:488
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:979
DiTauRecTools::DiTauIDVarCalculator::f_isotracks
float f_isotracks(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:952
DiTauRecTools::DiTauIDVarCalculator::mass_track_all
float mass_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:818
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:280
DiTauRecTools::DiTauIDVarCalculator::m_dDefault
Gaudi::Property< float > m_dDefault
Definition: DiTauIDVarCalculator.h:52
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:338
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:907
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:40
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:878
DiTauRecTools::DiTauIDVarCalculator::n_isotrack
static int n_isotrack(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:332
DiTauRecTools::DiTauIDVarCalculator::m_Rsubjet
Gaudi::Property< float > m_Rsubjet
Definition: DiTauIDVarCalculator.h:53
DiTauRecTools::DiTauIDVarCalculator::R_isotrack
float R_isotrack(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:587
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:388
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
DiTauRecTools::DiTauIDVarCalculator::R_track_all
float R_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:538
DiTauRecTools::DiTauIDVarCalculator::mass_track
float mass_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:786
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:691
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:640
DiTauRecTools::DiTauIDVarCalculator::E_frac
float E_frac(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:867
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:165
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:436
DiTauRecTools::DiTauIDVarCalculator::f_track
float f_track(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:189
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:177
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:286
xAOD::DiTauJet_v1::trackLinks
const TrackParticleLinks_t & trackLinks() const
DiTauRecTools::DiTauIDVarCalculator::n_subjets
static float n_subjets(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:129
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:740