ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
DiTauRecTools::DiTauIDVarCalculator Class Referenceabstract

#include <DiTauIDVarCalculator.h>

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

Public Member Functions

virtual void print () const =0
 Print the state of the tool. More...
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

enum  DecayChannel { HadHad, HadEl, HadMu, Default }
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

virtual StatusCode initialize () override
 Dummy implementation of the initialisation function. More...
 
virtual StatusCode calculateIDVariables (const xAOD::DiTauJet &xDiTau)
 
virtual StatusCode execute (const xAOD::DiTauJet &xDiTau) override
 Declare the interface that the class provides. More...
 
virtual std::string getDecayMode () override
 
virtual StatusCode calculateHadHadIDVariables (const xAOD::DiTauJet &xDiTau)
 
float ditau_pt (const xAOD::DiTauJet &xDiTau) const
 
float f_core (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float f_subjet (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float f_subjets (const xAOD::DiTauJet &xDiTau) const
 
float f_track (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float R_max (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
int n_tracks (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
int n_othertrack (const xAOD::DiTauJet &xDiTau) const
 
float R_track (const xAOD::DiTauJet &xDiTau) const
 
float R_track_all (const xAOD::DiTauJet &xDiTau) const
 
float R_track_core (const xAOD::DiTauJet &xDiTau) const
 
float R_isotrack (const xAOD::DiTauJet &xDiTau) const
 
float R_core (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float R_tracks (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float mass_track (const xAOD::DiTauJet &xDiTau) const
 
float mass_track_core (const xAOD::DiTauJet &xDiTau) const
 
float mass_core (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float mass_track_all (const xAOD::DiTauJet &xDiTau) const
 
float mass_tracks (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float E_frac (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float R_subjets (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float d0_leadtrack (const xAOD::DiTauJet &xDiTau, int iSubjet) const
 
float f_isotracks (const xAOD::DiTauJet &xDiTau) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Static Private Member Functions

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

Private Attributes

std::string m_sDiTauContainerName
 
std::string m_DiTauContainerNameAux
 
std::string m_sTruthTauContainerName
 
std::string m_sDecayChannel
 
DecayChannel m_eDecayChannel
 
float m_dDefault
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 40 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 Enumeration Documentation

◆ DecayChannel

Enumerator
HadHad 
HadEl 
HadMu 
Default 

Definition at line 102 of file DiTauIDVarCalculator.h.

102 { HadHad, HadEl, HadMu, Default };

Member Function Documentation

◆ calculateHadHadIDVariables()

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

Definition at line 90 of file DiTauIDVarCalculator.cxx.

91 {
92  ATH_MSG_DEBUG("Calculate DiTau ID variables");
93 
94  xDiTau.auxdecor< int >("n_subjets") = n_subjets(xDiTau);
95  ATH_CHECK( decorNtracks(xDiTau) );
96  xDiTau.auxdecor< float >( "ditau_pt") = ditau_pt(xDiTau);
97  xDiTau.auxdecor< float >( "f_core_lead" ) = f_core(xDiTau, 0);
98  xDiTau.auxdecor< float >( "f_core_subl" ) = f_core(xDiTau, 1);
99  xDiTau.auxdecor< float >( "f_subjet_lead" ) = f_subjet(xDiTau, 0);
100  xDiTau.auxdecor< float >( "f_subjet_subl" ) = f_subjet(xDiTau, 1);
101  xDiTau.auxdecor< float >( "f_subjets") = f_subjets(xDiTau);
102  xDiTau.auxdecor< float >( "f_track_lead") = f_track(xDiTau, 0);
103  xDiTau.auxdecor< float >( "f_track_subl") = f_track(xDiTau, 1);
104  xDiTau.auxdecor< float >( "R_max_lead") = R_max(xDiTau, 0);
105  xDiTau.auxdecor< float >( "R_max_subl") = R_max(xDiTau, 1);
106  xDiTau.auxdecor< int >( "n_track" ) = n_track(xDiTau);
107  xDiTau.auxdecor< int >( "n_tracks_lead" ) = n_tracks(xDiTau, 0);
108  xDiTau.auxdecor< int >( "n_tracks_subl" ) = n_tracks(xDiTau, 1);
109  xDiTau.auxdecor< int >( "n_isotrack" ) = n_isotrack(xDiTau);
110  xDiTau.auxdecor< float >( "R_track" ) = R_track(xDiTau);
111  xDiTau.auxdecor< float >( "R_track_core" ) = R_track_core(xDiTau);
112  xDiTau.auxdecor< float >( "R_track_all" ) = R_track_all(xDiTau);
113  xDiTau.auxdecor< float >( "R_isotrack" ) = R_isotrack(xDiTau);
114  xDiTau.auxdecor< float >( "R_core_lead" ) = R_core(xDiTau, 0);
115  xDiTau.auxdecor< float >( "R_core_subl" ) = R_core(xDiTau, 1);
116  xDiTau.auxdecor< float >( "R_tracks_lead" ) = R_tracks(xDiTau, 0);
117  xDiTau.auxdecor< float >( "R_tracks_subl" ) = R_tracks(xDiTau, 1);
118  xDiTau.auxdecor< float >( "m_track" ) = mass_track(xDiTau);
119  xDiTau.auxdecor< float >( "m_track_core" ) = mass_track_core(xDiTau);
120  xDiTau.auxdecor< float >( "m_core_lead" ) = mass_core(xDiTau, 0);
121  xDiTau.auxdecor< float >( "m_core_subl" ) = mass_core(xDiTau, 1);
122  xDiTau.auxdecor< float >( "m_track_all" ) = mass_track_all(xDiTau);
123  xDiTau.auxdecor< float >( "m_tracks_lead" ) = mass_tracks(xDiTau, 0);
124  xDiTau.auxdecor< float >( "m_tracks_subl" ) = mass_tracks(xDiTau, 1);
125  xDiTau.auxdecor< float >( "E_frac_subl" ) = E_frac(xDiTau,1);
126  xDiTau.auxdecor< float >( "E_frac_subsubl") = E_frac(xDiTau, 2);
127  xDiTau.auxdecor< float >( "R_subjets_subl") = R_subjets(xDiTau, 1);
128  xDiTau.auxdecor< float >( "R_subjets_subsubl") = R_subjets(xDiTau, 2);
129  xDiTau.auxdecor< float >( "d0_leadtrack_lead") = d0_leadtrack(xDiTau, 0);
130  xDiTau.auxdecor< float >( "d0_leadtrack_subl") = d0_leadtrack(xDiTau, 1);
131  xDiTau.auxdecor< float >( "f_isotracks" ) = f_isotracks(xDiTau);
132 
133  return StatusCode::SUCCESS;
134 }

◆ calculateIDVariables()

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

Definition at line 74 of file DiTauIDVarCalculator.cxx.

74  {
75  return execute(xDiTau);
76 }

◆ d0_leadtrack()

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

Definition at line 887 of file DiTauIDVarCalculator.cxx.

888 {
889  double pt_leadtrk = 0;
890  double d0 = m_dDefault;
891  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
892  {
893  ATH_MSG_WARNING("Track links not available");
894  }
895 
896  if ( iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
897  return m_dDefault;
898  }
899 
900  TLorentzVector tlvSubjet;
901  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
902  xDiTau.subjetEta(iSubjet),
903  xDiTau.subjetPhi(iSubjet),
904  xDiTau.subjetE(iSubjet) );
905 
906  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
907 
908  TLorentzVector tlvTrack;
909 
910  for (auto &xTrack: xTracks)
911  {
912  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
913  (*xTrack)->eta(),
914  (*xTrack)->phi(),
915  (*xTrack)->e() );
916 
917  if (tlvTrack.DeltaR(tlvSubjet) < xDiTau.auxdata< float >("R_core"))
918  {
919  if (tlvTrack.Pt() > pt_leadtrk)
920  {
921  pt_leadtrk = tlvTrack.Pt();
922  d0 = (*xTrack)->d0();
923  }
924  }
925  }
926  return d0;
927 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ decorNtracks()

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

Definition at line 956 of file DiTauIDVarCalculator.cxx.

957 {
958  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
959  {
960  Warning("decorNtracks()", "Track links not available.");
961  return StatusCode::FAILURE;
962  }
963 
964  int nSubjets = xDiTau.auxdata<int>("n_subjets");
965 
966  float Rsubjet = xDiTau.auxdata<float>("R_subjet");
967  std::vector<int> nTracks(nSubjets, 0);
968 
969  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
970  for (const auto &xTrack: xTracks)
971  {
972  double dRmin = 1111;
973  double itrmin = -1;
974 
975  for (int i=0; i<nSubjets; ++i)
976  {
977  TLorentzVector tlvSubjet = TLorentzVector();
978  tlvSubjet.SetPtEtaPhiE(xDiTau.subjetPt(i),
979  xDiTau.subjetEta(i),
980  xDiTau.subjetPhi(i),
981  xDiTau.subjetE(i));
982  double dR = tlvSubjet.DeltaR((*xTrack)->p4());
983 
984 
985  if ((dR < Rsubjet) && (dR < dRmin))
986  {
987  dRmin = dR;
988  itrmin = i;
989  }
990  } // loop over subjets
991  if (itrmin > -1) nTracks[itrmin]++;
992  } // loop over tracks
993 
994  xDiTau.auxdecor< std::vector<int> >("n_tracks") = nTracks;
995 
996  return StatusCode::SUCCESS;
997 }

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

156 {
157  if (xDiTau.auxdata<int>("n_subjets") < 2 ) {
158  return m_dDefault;
159  }
160 
161  return xDiTau.subjetPt(0)+xDiTau.subjetPt(1);
162 }

◆ E_frac()

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

Definition at line 850 of file DiTauIDVarCalculator.cxx.

851 {
852  if ( iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
853  return m_dDefault;
854  }
855 
856  return xDiTau.subjetE(iSubjet) / xDiTau.subjetE(0);
857 }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode DiTauIDVarCalculator::execute ( const xAOD::DiTauJet xDiTau)
overrideprivatevirtual

Declare the interface that the class provides.

Implements DiTauRecTools::IDiTauToolBase.

Definition at line 78 of file DiTauIDVarCalculator.cxx.

79 {
80  switch(m_eDecayChannel) {
81  case(DecayChannel::HadHad):
82  return calculateHadHadIDVariables(xDiTau);
83  break;
84  default:
85  return StatusCode::FAILURE;
86  }
87  return StatusCode::FAILURE;
88 }

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

167 {
168  if (iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
169  return m_dDefault;
170  }
171 
172  return xDiTau.fCore(iSubjet);
173 }

◆ f_isotracks()

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

Definition at line 930 of file DiTauIDVarCalculator.cxx.

931 {
932  double iso_pt = 0;
933  if (!xDiTau.isAvailable< TrackParticleLinks_t >("isoTrackLinks") )
934  {
935  ATH_MSG_WARNING("Track links not available");
936  }
937 
938  TrackParticleLinks_t xIsoTracks = xDiTau.isoTrackLinks();
939 
940  TLorentzVector tlvIsoTrack;
941 
942  for (const auto& xIsoTrack: xIsoTracks)
943  {
944  tlvIsoTrack.SetPtEtaPhiE( (*xIsoTrack)->pt(),
945  (*xIsoTrack)->eta(),
946  (*xIsoTrack)->phi(),
947  (*xIsoTrack)->e() );
948 
949  iso_pt += tlvIsoTrack.Pt();
950  }
951 
952  return iso_pt / xDiTau.pt();
953 }

◆ f_subjet()

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

Definition at line 177 of file DiTauIDVarCalculator.cxx.

178 {
179  if (iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
180  return m_dDefault;
181  }
182 
183  return xDiTau.subjetPt(iSubjet) / xDiTau.pt();
184 }

◆ f_subjets()

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

Definition at line 188 of file DiTauIDVarCalculator.cxx.

189 {
190  if (xDiTau.auxdata<int>("n_subjets") < 2 ) {
191  return m_dDefault;
192  }
193 
194  return (xDiTau.subjetPt(0) + xDiTau.subjetPt(1))/ xDiTau.pt();
195 }

◆ f_track()

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

Definition at line 199 of file DiTauIDVarCalculator.cxx.

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

◆ getDecayMode()

std::string DiTauIDVarCalculator::getDecayMode ( )
overrideprivatevirtual

Implements DiTauRecTools::IDiTauToolBase.

Definition at line 136 of file DiTauIDVarCalculator.cxx.

136  {
137  return m_sDecayChannel;
138 }

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

57 {
58  ATH_MSG_INFO( "Initializing DiTauIDVarCalculator" );
60  if(m_sDecayChannel == "HadHad")
61  m_eDecayChannel = DecayChannel::HadHad;
63  ATH_MSG_ERROR( "No Valid DecayChannel initialized. Valid options are: HadHad" );
64  return StatusCode::FAILURE;
65  }
66 
67  return StatusCode::SUCCESS;
68 }

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

681 {
682 
683  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
684  {
685  ATH_MSG_WARNING("Link not available");
686  }
687 
688  if ( iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
689  return m_dDefault;
690  }
691 
692  TLorentzVector tlvallTracks;
693 
694 
695  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
696 
697  TLorentzVector tlvSubjet;
698  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
699  xDiTau.subjetEta(iSubjet),
700  xDiTau.subjetPhi(iSubjet),
701  xDiTau.subjetE(iSubjet) );
702 
703  TLorentzVector tlvTrack;
704 
705  for (const auto& xTrack: xTracks)
706  {
707  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
708  (*xTrack)->eta(),
709  (*xTrack)->phi(),
710  (*xTrack)->e() );
711  if ( tlvSubjet.DeltaR(tlvTrack) < xDiTau.auxdata< float >("R_core") )
712  {
713  //ATH_MSG_DEBUG("smaller");
714  tlvallTracks += tlvTrack;
715  }
716  }
717 
718  if (tlvallTracks.M() < 0)
719  {
720  return m_dDefault;
721  }
722 
723  return tlvallTracks.M();
724 }

◆ mass_track()

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

Definition at line 771 of file DiTauIDVarCalculator.cxx.

772 {
773 
774  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
775  {
776  ATH_MSG_WARNING("Link not available");
777  }
778 
779  TLorentzVector tlvallTracks;
780 
781  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
782 
783  TLorentzVector tlvTrack;
784 
785  for (const auto& xTrack: xTracks)
786  {
787  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
788  (*xTrack)->eta(),
789  (*xTrack)->phi(),
790  (*xTrack)->e() );
791 
792  tlvallTracks += tlvTrack;
793  }
794 
795  if (tlvallTracks.M() < 0)
796  {
797  return m_dDefault;
798  }
799  return tlvallTracks.M();
800 }

◆ mass_track_all()

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

Definition at line 802 of file DiTauIDVarCalculator.cxx.

803 {
804 
805  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
806  {
807  ATH_MSG_WARNING("Link not available");
808  }
809 
810  TLorentzVector tlvallTracks;
811 
812  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
813 
814  TLorentzVector tlvTrack;
815 
816  for (const auto& xTrack: xTracks)
817  {
818  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
819  (*xTrack)->eta(),
820  (*xTrack)->phi(),
821  (*xTrack)->e() );
822 
823  tlvallTracks += tlvTrack;
824  }
825 
826 
827  TrackParticleLinks_t xIsoTracks = xDiTau.isoTrackLinks();
828 
829  TLorentzVector tlvIsoTrack;
830 
831  for (const auto& xIsoTrack: xIsoTracks)
832  {
833  tlvIsoTrack.SetPtEtaPhiE( (*xIsoTrack)->pt(),
834  (*xIsoTrack)->eta(),
835  (*xIsoTrack)->phi(),
836  (*xIsoTrack)->e() );
837 
838  tlvallTracks += tlvIsoTrack;
839  }
840 
841  if (tlvallTracks.M() < 0)
842  {
843  return m_dDefault;
844  }
845 
846  return tlvallTracks.M();
847 }

◆ mass_track_core()

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

Definition at line 631 of file DiTauIDVarCalculator.cxx.

632 {
633 
634  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
635  {
636  ATH_MSG_WARNING("Link not available");
637  }
638 
639  if (xDiTau.auxdata<int>("n_subjets") < 2) {
640  return m_dDefault;
641  }
642 
643  TLorentzVector tlvallTracks;
644 
645  for (int i = 0; i<=1; i++)
646  {
647 
648  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
649 
650  TLorentzVector tlvSubjet;
651  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(i),
652  xDiTau.subjetEta(i),
653  xDiTau.subjetPhi(i),
654  xDiTau.subjetE(i) );
655 
656  TLorentzVector tlvTrack;
657 
658  for (const auto& xTrack: xTracks)
659  {
660  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
661  (*xTrack)->eta(),
662  (*xTrack)->phi(),
663  (*xTrack)->e() );
664  if ( tlvSubjet.DeltaR(tlvTrack) < xDiTau.auxdata< float >("R_core") )
665  {
666  //ATH_MSG_DEBUG("smaller");
667  tlvallTracks += tlvTrack;
668  }
669  }
670  }
671  if (tlvallTracks.M() < 0)
672  {
673  return m_dDefault;
674  }
675 
676  return tlvallTracks.M();
677 }

◆ mass_tracks()

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

Definition at line 727 of file DiTauIDVarCalculator.cxx.

728 {
729 
730  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
731  {
732  ATH_MSG_WARNING("Link not available");
733  }
734 
735  if ( iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
736  return m_dDefault;
737  }
738 
739  TLorentzVector tlvallTracks;
740 
741  TrackParticleLinks_t xTracks = xDiTau.trackLinks();
742 
743  TLorentzVector tlvSubjet;
744  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
745  xDiTau.subjetEta(iSubjet),
746  xDiTau.subjetPhi(iSubjet),
747  xDiTau.subjetE(iSubjet) );
748 
749  TLorentzVector tlvTrack;
750 
751  for (const auto& xTrack: xTracks)
752  {
753  tlvTrack.SetPtEtaPhiE( (*xTrack)->pt(),
754  (*xTrack)->eta(),
755  (*xTrack)->phi(),
756  (*xTrack)->e() );
757  if ( tlvSubjet.DeltaR(tlvTrack) < 0.2 )
758  {
759  tlvallTracks += tlvTrack;
760  }
761  }
762 
763  if (tlvallTracks.M() < 0)
764  {
765  return m_dDefault;
766  }
767 
768  return tlvallTracks.M();
769 }

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

336 {
337  return xDiTau.nIsoTracks();
338 }

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

144 {
145  int nSubjet = 0;
146  while (xDiTau.subjetPt(nSubjet) > 0. )
147  {
148  nSubjet++;
149  }
150 
151  return nSubjet;
152 }

◆ n_track()

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

Definition at line 286 of file DiTauIDVarCalculator.cxx.

287 {
288  return xDiTau.nTracks();
289 }

◆ n_tracks()

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

Definition at line 292 of file DiTauIDVarCalculator.cxx.

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

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

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

◆ R_isotrack()

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

Definition at line 580 of file DiTauIDVarCalculator.cxx.

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

◆ R_max()

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

Definition at line 248 of file DiTauIDVarCalculator.cxx.

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

◆ R_subjets()

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

Definition at line 860 of file DiTauIDVarCalculator.cxx.

861 {
862 
863  if ( iSubjet < 0 || iSubjet >= xDiTau.auxdata<int>("n_subjets")) {
864  return m_dDefault;
865  }
866 
867  if (!xDiTau.isAvailable< TrackParticleLinks_t >("trackLinks") )
868  {
869  ATH_MSG_WARNING("Track links not available");
870  }
871 
872  TLorentzVector tlvLeadSubjet;
873  tlvLeadSubjet.SetPtEtaPhiE( xDiTau.subjetPt(0),
874  xDiTau.subjetEta(0),
875  xDiTau.subjetPhi(0),
876  xDiTau.subjetE(0) );
877 
878  TLorentzVector tlvSubjet;
879  tlvSubjet.SetPtEtaPhiE( xDiTau.subjetPt(iSubjet),
880  xDiTau.subjetEta(iSubjet),
881  xDiTau.subjetPhi(iSubjet),
882  xDiTau.subjetE(iSubjet) );
883  return tlvLeadSubjet.DeltaR(tlvSubjet);
884 }

◆ R_track()

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

Definition at line 485 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_all()

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

Definition at line 533 of file DiTauIDVarCalculator.cxx.

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

◆ R_track_core()

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

Definition at line 435 of file DiTauIDVarCalculator.cxx.

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

◆ R_tracks()

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

Definition at line 341 of file DiTauIDVarCalculator.cxx.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

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

Perform system initialization for an algorithm.

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

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

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_dDefault

float DiTauRecTools::DiTauIDVarCalculator::m_dDefault
private

Definition at line 104 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_DiTauContainerNameAux

std::string DiTauRecTools::DiTauIDVarCalculator::m_DiTauContainerNameAux
private

Definition at line 99 of file DiTauIDVarCalculator.h.

◆ m_eDecayChannel

DecayChannel DiTauRecTools::DiTauIDVarCalculator::m_eDecayChannel
private

Definition at line 103 of file DiTauIDVarCalculator.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_sDecayChannel

std::string DiTauRecTools::DiTauIDVarCalculator::m_sDecayChannel
private

Definition at line 101 of file DiTauIDVarCalculator.h.

◆ m_sDiTauContainerName

std::string DiTauRecTools::DiTauIDVarCalculator::m_sDiTauContainerName
private

Definition at line 98 of file DiTauIDVarCalculator.h.

◆ m_sTruthTauContainerName

std::string DiTauRecTools::DiTauIDVarCalculator::m_sTruthTauContainerName
private

Definition at line 100 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:248
DiTauRecTools::DiTauIDVarCalculator::ditau_pt
float ditau_pt(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:155
xAOD::DiTauJet_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
MCP::SystVariation::Default
@ Default
Definition: EnumDef.h:72
DiTauRecTools::DiTauIDVarCalculator::f_core
float f_core(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:166
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::DiTauJet_v1::fCore
float fCore(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:168
DiTauRecTools::DiTauIDVarCalculator::R_track
float R_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:485
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DiTauRecTools::DiTauIDVarCalculator::f_isotracks
float f_isotracks(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:930
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
DiTauRecTools::DiTauIDVarCalculator::mass_track_all
float mass_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:802
DiTauRecTools::DiTauIDVarCalculator::m_sDiTauContainerName
std::string m_sDiTauContainerName
Definition: DiTauIDVarCalculator.h:98
xAOD::DiTauJet_v1::subjetPhi
float subjetPhi(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:112
DiTauRecTools::DiTauIDVarCalculator::n_track
static int n_track(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:286
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:341
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:887
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
DiTauRecTools::DiTauIDVarCalculator::m_DiTauContainerNameAux
std::string m_DiTauContainerNameAux
Definition: DiTauIDVarCalculator.h:99
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
DiTauRecTools::DiTauIDVarCalculator::R_subjets
float R_subjets(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:860
DiTauRecTools::DiTauIDVarCalculator::n_isotrack
static int n_isotrack(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:335
DiTauRecTools::DiTauIDVarCalculator::R_isotrack
float R_isotrack(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:580
SG::AuxElement::auxdecor
Decorator< T, ALLOC >::reference_type auxdecor(const std::string &name) const
Fetch an aux decoration, as a non-const reference.
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
xAOD::DiTauJet_v1::subjetE
float subjetE(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:122
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
DiTauRecTools::DiTauIDVarCalculator::R_core
float R_core(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:389
DiTauRecTools::DiTauIDVarCalculator::HadMu
@ HadMu
Definition: DiTauIDVarCalculator.h:102
DiTauRecTools::DiTauIDVarCalculator::R_track_all
float R_track_all(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:533
DiTauRecTools::DiTauIDVarCalculator::mass_track
float mass_track(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:771
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
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:680
DiTauRecTools::DiTauIDVarCalculator::m_sDecayChannel
std::string m_sDecayChannel
Definition: DiTauIDVarCalculator.h:101
lumiFormat.i
int i
Definition: lumiFormat.py:92
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrackParticleLinks_t
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Definition: DiTauIDVarCalculator.cxx:36
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:631
python.xAODType.dummy
dummy
Definition: xAODType.py:4
DiTauRecTools::DiTauIDVarCalculator::E_frac
float E_frac(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:850
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
DiTauRecTools::DiTauIDVarCalculator::m_dDefault
float m_dDefault
Definition: DiTauIDVarCalculator.h:104
DiTauRecTools::DiTauIDVarCalculator::f_subjet
float f_subjet(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:177
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
DiTauRecTools::DiTauIDVarCalculator::calculateHadHadIDVariables
virtual StatusCode calculateHadHadIDVariables(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:90
xAOD::DiTauJet_v1::subjetEta
float subjetEta(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:102
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
xAOD::DiTauJet_v1::nIsoTracks
size_t nIsoTracks() const
Definition: DiTauJet_v1.cxx:290
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::DiTauJet_v1::nTracks
size_t nTracks() const
Definition: DiTauJet_v1.cxx:258
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
DiTauRecTools::DiTauIDVarCalculator::R_track_core
float R_track_core(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:435
DiTauRecTools::DiTauIDVarCalculator::f_track
float f_track(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:199
xAOD::IParticle::isAvailable
bool isAvailable(const std::string &name, const std::string &clsname="") const
Check if a user property is available for reading or not.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:131
DiTauRecTools::DiTauIDVarCalculator::HadHad
@ HadHad
Definition: DiTauIDVarCalculator.h:102
a
TList * a
Definition: liststreamerinfos.cxx:10
h
DiTauRecTools::DiTauIDVarCalculator::m_eDecayChannel
DecayChannel m_eDecayChannel
Definition: DiTauIDVarCalculator.h:103
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DiTauRecTools::DiTauIDVarCalculator::decorNtracks
static StatusCode decorNtracks(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:956
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
xAOD::IParticle::auxdata
T & auxdata(const std::string &name, const std::string &clsname="")
Fetch an aux data variable, as a non-const reference.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:96
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
DiTauRecTools::DiTauIDVarCalculator::f_subjets
float f_subjets(const xAOD::DiTauJet &xDiTau) const
Definition: DiTauIDVarCalculator.cxx:188
xAOD::DiTauJet_v1::isoTrackLinks
const TrackParticleLinks_t & isoTrackLinks() const
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
xAOD::DiTauJet_v1::subjetPt
float subjetPt(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:92
DiTauRecTools::DiTauIDVarCalculator::n_tracks
int n_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:292
xAOD::DiTauJet_v1::trackLinks
const TrackParticleLinks_t & trackLinks() const
Default
DiTauRecTools::DiTauIDVarCalculator::n_subjets
static float n_subjets(const xAOD::DiTauJet &xDiTau)
Definition: DiTauIDVarCalculator.cxx:143
SG::DataProxy
Definition: DataProxy.h:44
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
DiTauRecTools::DiTauIDVarCalculator::execute
virtual StatusCode execute(const xAOD::DiTauJet &xDiTau) override
Declare the interface that the class provides.
Definition: DiTauIDVarCalculator.cxx:78
fitman.k
k
Definition: fitman.py:528
DiTauRecTools::DiTauIDVarCalculator::HadEl
@ HadEl
Definition: DiTauIDVarCalculator.h:102
DiTauRecTools::DiTauIDVarCalculator::mass_tracks
float mass_tracks(const xAOD::DiTauJet &xDiTau, int iSubjet) const
Definition: DiTauIDVarCalculator.cxx:727