ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
TrigTauRecMerged Class Reference

#include <TrigTauRecMerged.h>

Inheritance diagram for TrigTauRecMerged:
Collaboration diagram for TrigTauRecMerged:

Public Member Functions

 TrigTauRecMerged (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual StatusCode initialize () override
 
virtual StatusCode execute (const EventContext &ctx) const override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
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 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  TAUEFCALOMON {
  NoROIDescr =0, NoCellCont =1, EmptyCellCont =2, NoClustCont =3,
  NoClustKey =4, EmptyClustCont =5, NoJetAttach =6, NoHLTtauAttach =7,
  NoHLTtauDetAttach =8, NoHLTtauXdetAttach =9
}
 
enum  TAUEFTRKMON { NoTrkCont =0, NoVtxCont =1 }
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

template<class V >
StatusCode deepCopy (SG::WriteHandle< DataVector< V >> &writeHandle, const DataVector< V > *oldContainer) const
 
bool doCaloMVAStep () 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...
 

Private Attributes

const ToolHandleArray< ITauToolBasem_commonTools {this, "CommonTools", {}, "List of ITauToolBase common tools"}
 
const ToolHandleArray< ITauToolBasem_commonToolsBeforeTF {this, "CommonToolsBeforeTF", {}, "List of ITauToolBase common tools to execute before the Track Finder tools"}
 
const ToolHandleArray< ITauToolBasem_vertexFinderTools {this, "VertexFinderTools", {}, "Vertex Finder tools"}
 
const ToolHandleArray< ITauToolBasem_trackFinderTools {this, "TrackFinderTools", {}, "Track Finder tools"}
 
const ToolHandleArray< ITauToolBasem_vertexVarsTools {this, "VertexVarsTools", {}, "Vertex Variables tools"}
 
const ToolHandleArray< ITauToolBasem_idTools {this, "IDTools", {}, "Vertex Variables tools"}
 
const ToolHandle< GenericMonitoringToolm_monTool {this, "MonTool", "", "Monitoring tool"}
 
SG::ReadHandleKey< TrigRoiDescriptorCollectionm_roiInputKey {this, "InputRoIs", "", "Input RoI name"}
 
SG::ReadHandleKey< xAOD::CaloClusterContainerm_clustersInputKey {this, "InputCaloClusterContainer", "", "Caloclusters in view"}
 
SG::ReadHandleKey< xAOD::VertexContainerm_vertexInputKey {this, "InputVertexContainer", "", "Input vertex container"}
 
SG::ReadHandleKey< xAOD::TauJetContainerm_tauJetInputKey {this, "InputTauJetContainer", "", "Input TauJet container"}
 
SG::ReadHandleKey< xAOD::TauTrackContainerm_tauTrackInputKey {this, "InputTauTrackContainer", "", "Input TauTrack container" }
 
SG::WriteHandleKey< xAOD::JetContainerm_tauSeedOutputKey {this, "OutputJetSeed", "", "Output jets which are seeds for tau jets"}
 
SG::WriteHandleKey< xAOD::TauJetContainerm_tauJetOutputKey {this, "OutputTauJetContainer", "", "Output TauJet container"}
 
SG::WriteHandleKey< xAOD::TauTrackContainerm_tauTrackOutputKey {this, "OutputTauTrackContainer", "", "Output TauTrack container"}
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
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 24 of file TrigTauRecMerged.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ TAUEFCALOMON

Enumerator
NoROIDescr 
NoCellCont 
EmptyCellCont 
NoClustCont 
NoClustKey 
EmptyClustCont 
NoJetAttach 
NoHLTtauAttach 
NoHLTtauDetAttach 
NoHLTtauXdetAttach 

Definition at line 35 of file TrigTauRecMerged.h.

35  {
36  NoROIDescr=0,
37  NoCellCont=1,
38  EmptyCellCont=2,
39  NoClustCont=3,
40  NoClustKey=4,
42  NoJetAttach=6,
46  };

◆ TAUEFTRKMON

Enumerator
NoTrkCont 
NoVtxCont 

Definition at line 49 of file TrigTauRecMerged.h.

49  {
50  NoTrkCont=0,
51  NoVtxCont=1
52  };

Constructor & Destructor Documentation

◆ TrigTauRecMerged()

TrigTauRecMerged::TrigTauRecMerged ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 33 of file TrigTauRecMerged.cxx.

34  :AthReentrantAlgorithm(name, pSvcLocator)
35 {
36 
37 }

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ deepCopy()

template<class V >
StatusCode TrigTauRecMerged::deepCopy ( SG::WriteHandle< DataVector< V >> &  writeHandle,
const DataVector< V > *  oldContainer 
) const
private

Definition at line 84 of file TrigTauRecMerged.h.

84  {
85  if(!writeHandle.isValid()) {
86  ATH_MSG_FATAL("Provided with an invalid write handle");
87  return StatusCode::FAILURE;
88  }
89 
90  if(oldContainer){
91  for(const V* v : *oldContainer) {
92  // Build a new object in the new container
93  writeHandle->push_back(std::make_unique<V>());
94  // Copy across the aux store
95  *writeHandle->back() = *v;
96  }
97  }
98  return StatusCode::SUCCESS;
99 }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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; }

◆ doCaloMVAStep()

bool TrigTauRecMerged::doCaloMVAStep ( ) const
inlineprivate

Definition at line 80 of file TrigTauRecMerged.h.

80 { return m_tauJetInputKey.key().empty() && !m_clustersInputKey.key().empty(); }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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 TrigTauRecMerged::execute ( const EventContext &  ctx) const
overridevirtual

Definition at line 71 of file TrigTauRecMerged.cxx.

72 {
73  //-------------------------------------------------------------------------
74  // Initialize monitoring variables
75  //-------------------------------------------------------------------------
76 
77  // Common CaloOnly and Precision monitored variables:
78  auto n_taus = Monitored::Scalar<int>("nCand", 0);
79 
80  auto pT = Monitored::Scalar<float>("EtFinal", 0);
81  auto eta = Monitored::Scalar<float>("EtaEF", -99.9);
82  auto phi = Monitored::Scalar<float>("PhiEF", -99.9);
83 
84  auto etaRoI = Monitored::Scalar<float>("EtaL1", -99.9);
85  auto phiRoI = Monitored::Scalar<float>("PhiL1", -99.9);
86  auto dEta_RoI = Monitored::Scalar<float>("dEtaEFTau_RoI", -10);
87  auto dPhi_RoI = Monitored::Scalar<float>("dPhiEFTau_RoI", -10);
88 
89  auto mEflowApprox = Monitored::Scalar<float>("mEflowApprox", -99.9);
90  auto ptRatioEflowApprox = Monitored::Scalar<float>("ptRatioEflowApprox", -99.9);
91  auto pt_jetseed_log = Monitored::Scalar<float>("pt_jetseed_log", -99.9);
92  auto etaDetectorAxis = Monitored::Scalar<float>("etaDetectorAxis", -99.9);
93  auto ptDetectorAxis = Monitored::Scalar<float>("ptDetectorAxis", -99.9);
94  auto ptDetectorAxis_log = Monitored::Scalar<float>("ptDetectorAxis_log", -99.9);
95 
96  auto n_cells = Monitored::Scalar<int>("nRoI_EFTauCells", 0);
97  auto EMRadius = Monitored::Scalar<float>("EMRadius", -0.099);
98  auto HadRadius = Monitored::Scalar<float>("HadRadius", -0.099);
99  auto EtHad = Monitored::Scalar<float>("EtHad", -10);
100  auto EtEm = Monitored::Scalar<float>("EtEm", -10);
101  auto EMFrac = Monitored::Scalar<float>("EMFrac", -10);
102  auto IsoFrac = Monitored::Scalar<float>("IsoFrac", -1);
103  auto CentFrac = Monitored::Scalar<float>("centFrac", -10);
104 
105  auto clustersMeanCenterLambda = Monitored::Scalar<float>("clustersMeanCenterLambda", 0);
106  auto clustersMeanFirstEngDens = Monitored::Scalar<float>("clustersMeanFirstEngDens", 0);
107  auto clustersMeanEMProbability = Monitored::Scalar<float>("clustersMeanEMProbability", 0);
108  auto clustersMeanSecondLambda = Monitored::Scalar<float>("clustersMeanSecondLambda", 0);
109  auto clustersMeanPresamplerFrac = Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0);
110 
111  auto n_clusters = Monitored::Scalar<int>("RNN_clusternumber", 0);
112  std::vector<float> cluster_et_log, cluster_dEta, cluster_dPhi;
113  std::vector<float> cluster_log_SECOND_R, cluster_SECOND_LAMBDA, cluster_CENTER_LAMBDA;
114  auto mon_cluster_et_log = Monitored::Collection("cluster_et_log", cluster_et_log);
115  auto mon_cluster_dEta = Monitored::Collection("cluster_dEta", cluster_dEta);
116  auto mon_cluster_dPhi = Monitored::Collection("cluster_dPhi", cluster_dPhi);
117  auto mon_cluster_log_SECOND_R = Monitored::Collection("cluster_log_SECOND_R", cluster_log_SECOND_R);
118  auto mon_cluster_SECOND_LAMBDA = Monitored::Collection("cluster_SECOND_LAMBDA", cluster_SECOND_LAMBDA);
119  auto mon_cluster_CENTER_LAMBDA = Monitored::Collection("cluster_CENTER_LAMBDA", cluster_CENTER_LAMBDA);
120  std::vector<unsigned char> calo_errors;
121  auto mon_calo_errors = Monitored::Collection("calo_errors", calo_errors);
122 
123  // Precision monitored variables
124  auto n_core_tracks = Monitored::Scalar<int>("NTrk", -10);
125  auto n_wide_tracks = Monitored::Scalar<int>("nWideTrk", -10);
126 
127  auto ipSigLeadTrk = Monitored::Scalar<float>("ipSigLeadTrk", -1000);
128  auto trFlightPathSig = Monitored::Scalar<float>("trFlightPathSig", -10);
129  auto massTrkSys = Monitored::Scalar<float>("massTrkSys", -10);
130  auto dRmax = Monitored::Scalar<float>("dRmax", -10);
131  auto trkAvgDist = Monitored::Scalar<float>("TrkAvgDist", -1);
132  auto innerTrkAvgDist = Monitored::Scalar<float>("innerTrkAvgDist", -1);
133  auto etovPtLead = Monitored::Scalar<float>("EtovPtLead", -10);
134  auto PSSFraction = Monitored::Scalar<float>("PSSFraction", -999.9);
135  auto EMPOverTrkSysP = Monitored::Scalar<float>("EMPOverTrkSysP", -999.9);
136  auto ChPiEMEOverCaloEME = Monitored::Scalar<float>("ChPiEMEOverCaloEME", -999.9);
137  auto vertex_x = Monitored::Scalar<float>("vertex_x", -999.9);
138  auto vertex_y = Monitored::Scalar<float>("vertex_y", -999.9);
139  auto vertex_z = Monitored::Scalar<float>("vertex_z", -999.9);
140 
141  auto n_tracks = Monitored::Scalar<int>("RNN_tracknumber", 0);
142  std::vector<float> track_pt_log, track_dEta, track_dPhi;
143  std::vector<float> track_d0_abs_log, track_z0sinthetaTJVA_abs_log;
144  std::vector<float> track_nPixelHitsPlusDeadSensors, track_nSCTHitsPlusDeadSensors;
145  auto mon_track_pt_log = Monitored::Collection("track_pt_log", track_pt_log);
146  auto mon_track_dEta = Monitored::Collection("track_dEta", track_dEta);
147  auto mon_track_dPhi = Monitored::Collection("track_dPhi", track_dPhi);
148  auto mon_track_d0_abs_log = Monitored::Collection("track_d0_abs_log", track_d0_abs_log);
149  auto mon_track_z0sinthetaTJVA_abs_log = Monitored::Collection("track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
150  auto mon_track_nPixelHitsPlusDeadSensors = Monitored::Collection("track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
151  auto mon_track_nSCTHitsPlusDeadSensors = Monitored::Collection("track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
152  std::vector<unsigned char> track_errors;
153  auto mon_track_errors = Monitored::Collection("track_errors", track_errors);
154 
155  auto IDScore_0p = Monitored::Scalar<float>("RNNJetScore_0p", -999);
156  auto IDScoreSigTrans_0p = Monitored::Scalar<float>("RNNJetScoreSigTrans_0p", -999);
157  auto IDScore_1p = Monitored::Scalar<float>("RNNJetScore_1p", -999);
158  auto IDScoreSigTrans_1p = Monitored::Scalar<float>("RNNJetScoreSigTrans_1p", -999);
159  auto IDScore_mp = Monitored::Scalar<float>("RNNJetScore_mp", -999);
160  auto IDScoreSigTrans_mp = Monitored::Scalar<float>("RNNJetScoreSigTrans_mp", -999);
161 
162  auto monitorIt = Monitored::Group(m_monTool,
163  n_taus,
164  pT, eta, phi,
165  etaRoI, phiRoI, dEta_RoI, dPhi_RoI,
167  etaDetectorAxis, ptDetectorAxis, ptDetectorAxis_log,
168  n_cells,
169  EMRadius, HadRadius, EtHad, EtEm, EMFrac, IsoFrac, CentFrac,
170  clustersMeanCenterLambda, clustersMeanFirstEngDens, clustersMeanEMProbability,
171  clustersMeanSecondLambda, clustersMeanPresamplerFrac,
172  n_clusters, mon_cluster_et_log, mon_cluster_dEta, mon_cluster_dPhi,
173  mon_cluster_log_SECOND_R, mon_cluster_SECOND_LAMBDA, mon_cluster_CENTER_LAMBDA,
174  mon_calo_errors,
175  n_core_tracks, n_wide_tracks,
178  vertex_x, vertex_y, vertex_z,
179  n_tracks, mon_track_pt_log, mon_track_dEta, mon_track_dPhi,
180  mon_track_d0_abs_log, mon_track_z0sinthetaTJVA_abs_log,
181  mon_track_nPixelHitsPlusDeadSensors, mon_track_nSCTHitsPlusDeadSensors,
182  mon_track_errors,
183  IDScore_0p, IDScoreSigTrans_0p, IDScore_1p, IDScoreSigTrans_1p, IDScore_mp, IDScoreSigTrans_mp);
184 
185 
186  ATH_MSG_DEBUG("Executing TrigTauRecMerged");
187 
188  //-------------------------------------------------------------------------
189  // Main TauJet object:
190  //-------------------------------------------------------------------------
191  xAOD::TauJet* tau = nullptr;
192 
193  //-------------------------------------------------------------------------
194  // Retrieve RoI
195  //-------------------------------------------------------------------------
197  if(!roisHandle.isValid()) {
198  ATH_MSG_ERROR("No RoIHandle found");
199  return StatusCode::FAILURE;
200  }
201 
202  if(roisHandle->empty()) {
203  ATH_MSG_ERROR("Empty RoIHandle");
204  return StatusCode::FAILURE;
205  }
206 
207  const TrigRoiDescriptor *roiDescriptor = roisHandle->at(0);
208  if(roiDescriptor) {
209  ATH_MSG_DEBUG("RoI: " << *roiDescriptor);
210  } else {
211  ATH_MSG_ERROR("Failed to find TrigRoiDescriptor");
212  calo_errors.push_back(NoROIDescr);
213  return StatusCode::FAILURE;
214  }
215 
216 
217  //-------------------------------------------------------------------------
218  // Prepare Input/Output TauJet and TauTrack containers
219  //-------------------------------------------------------------------------
220 
221  // Main TauJet and TauTrack input containers
222  const xAOD::TauJetContainer *inputTauContainer = nullptr;
223  const xAOD::TauTrackContainer *inputTauTrackContainer = nullptr;
224 
225  // Get input TauJet and TauTrack containers from SG, if available
226  if(!doCaloMVAStep()) {
227  if(!m_tauJetInputKey.key().empty()) {
229  inputTauContainer = tauInputHandle.cptr();
230  ATH_MSG_DEBUG("Input TauJet Container size: " << inputTauContainer->size());
231  }
232 
233  if(!m_tauTrackInputKey.key().empty() && m_clustersInputKey.key().empty()) {
235  inputTauTrackContainer = tauTrackInputHandle.cptr();
236  ATH_MSG_DEBUG("Tau Track Container Size " << inputTauTrackContainer->size());
237  }
238  }
239 
240  // Create and register the output containers
241  // TauJetContainer:
242  std::unique_ptr<xAOD::TauJetContainer> outputContainer = std::make_unique<xAOD::TauJetContainer>();
243  std::unique_ptr<xAOD::TauJetAuxContainer> outputAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
244  outputContainer->setStore(outputAuxContainer.get());
245 
247  ATH_CHECK(outputTauHandle.record(std::move(outputContainer), std::move(outputAuxContainer)));
248 
249  ATH_CHECK(deepCopy(outputTauHandle, inputTauContainer));
250 
251  // TauTrackContainer:
252  std::unique_ptr<xAOD::TauTrackContainer> outputTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
253  std::unique_ptr<xAOD::TauTrackAuxContainer> outputTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
254  outputTrackContainer->setStore(outputTrackAuxContainer.get());
255 
257  ATH_CHECK(tauTrackHandle.record(std::move(outputTrackContainer), std::move(outputTrackAuxContainer)));
258 
259  ATH_CHECK(deepCopy(tauTrackHandle, inputTauTrackContainer));
260 
261 
262  // Now retrieve the main TauJet object, if available (the recently created copy of the input TauJet)
263  if(!doCaloMVAStep() && !outputTauHandle->empty()) {
264  tau = outputTauHandle->back();
265 
266  // Clear all previous TauTrack links (if any), since we will run the
267  // TauTrackFinder tool (and the associated InDet helpers) in the
268  // Presel and Precision steps, refilling the tracks
269  if(!m_tauTrackInputKey.key().empty()) tau->clearTauTrackLinks();
270  }
271 
272 
273  //-------------------------------------------------------------------------
274  // Calo-only reconstruction from clusters (CaloMVA step)
275  //-------------------------------------------------------------------------
276  if(doCaloMVAStep()) {
277  // Retrieve Calocluster container
279  ATH_CHECK(CCContainerHandle.isValid());
280 
281  const xAOD::CaloClusterContainer *RoICaloClusterContainer = CCContainerHandle.get();
282  if(RoICaloClusterContainer) {
283  ATH_MSG_DEBUG("CaloCluster container found of size: " << RoICaloClusterContainer->size());
284 
285  // If size is zero, don't stop just continue to produce empty TauJetCollection
286  if(RoICaloClusterContainer->empty()) calo_errors.push_back(NoClustCont);
287  } else {
288  ATH_MSG_ERROR("No CaloCluster container found");
289  calo_errors.push_back(NoClustCont);
290  return StatusCode::FAILURE;
291  }
292 
293  // Also create the seed-jet containers
294  std::unique_ptr<xAOD::JetContainer> jetContainer{std::make_unique<xAOD::JetContainer>()};
295  std::unique_ptr<xAOD::JetAuxContainer> jetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
296  jetContainer->setStore(jetAuxContainer.get());
297 
299  ATH_CHECK(outputTauSeedJetHandle.record(std::move(jetContainer), std::move(jetAuxContainer)));
300 
301  // And create the seed-jet object itself
302  outputTauSeedJetHandle->push_back(std::make_unique<xAOD::Jet>());
303  xAOD::Jet *jet = outputTauSeedJetHandle->back();
304 
305 
306  // Build the jet, also keep track of the kinematics by hand
307  // Eventually, want to use FastJet here?
308  // We are using calibrated clusters, we need to keep track of this
309  jet->setConstituentsSignalState(xAOD::JetConstitScale::CalibratedJetConstituent);
310  TLorentzVector cluster_p4, barycenter;
311  for(const xAOD::CaloCluster* cluster : *RoICaloClusterContainer) {
312  ATH_MSG_DEBUG("Cluster (e, eta, phi): (" << cluster->e() << ", " << cluster->eta() << ", " << cluster->phi() << ")");
313 
314  if(cluster->e() < 0) {
315  ATH_MSG_DEBUG("Negative energy cluster is rejected");
316  continue;
317  }
318 
319  cluster_p4.SetPtEtaPhiE(cluster->pt(), cluster->eta(), cluster->phi(), cluster->e());
320  jet->addConstituent(cluster);
321 
322  barycenter += cluster_p4;
323  }
324 
325  jet->setJetP4(xAOD::JetFourMom_t(barycenter.Pt(), barycenter.Eta(), barycenter.Phi(), barycenter.M()));
326  ATH_MSG_DEBUG("Built jet with eta: " << jet->eta() << ", phi: " << jet->phi() << ", pT: " << jet->pt() << ", E: "<< jet->e() );
327 
328 
329  // If we're running calo-clustering, that means we just started the HLT reco,
330  // and there's no input TauJet container to this step. Create one instead!
331  if(!tau) {
332  outputTauHandle->push_back(std::make_unique<xAOD::TauJet>());
333  tau = outputTauHandle->back();
334  tau->setROIWord(roiDescriptor->roiWord());
335  }
336 
337  // Using the new Jet collection, setup the tau candidate structure
338  tau->setJet(outputTauSeedJetHandle.ptr(), jet);
339 
340  // Fix eta, phi in case the jet's energy is negative
341  if(jet->e() <= 0) {
342  ATH_MSG_DEBUG("Changing (eta, phi) back to the RoI center due to energy: " << jet->e());
343  tau->setP4(tau->pt(), roiDescriptor->eta(), roiDescriptor->phi(), tau->m());
344  ATH_MSG_DEBUG("Roi: " << roiDescriptor->roiId() << ", tau eta: " << tau->eta() << ", tau phi: " << tau->phi() );
345  }
346  }
347 
348  // Check if jetLink is valid for all taus
349  ATH_CHECK(tau->jetLink().isValid());
350 
351  // Get Vertex Container
352  const xAOD::VertexContainer* RoIVxContainer = nullptr;
353  if(!m_vertexInputKey.key().empty()){
355 
356  if(!VertexContainerHandle.isValid()) {
357  ATH_MSG_DEBUG("No VertexContainer retrieved for the trigger element");
358  track_errors.push_back(NoVtxCont);
359  } else {
360  RoIVxContainer = VertexContainerHandle.get();
361  ATH_MSG_DEBUG("Size of VertexContainer: " << RoIVxContainer->size());
362  }
363  }
364 
365  ATH_MSG_DEBUG("roiDescriptor roiWord: " << roiDescriptor->roiWord() << ", saved in TauJet: " << tau->ROIWord());
366 
367  //-------------------------------------------------------------------------
368  // Loop over all booked tau tools:
369  // VertexFinderTools -> CommonToolsBeforeTF -> TrackFinderTools -> CommonTools -> VertexVarsTools -> IDTools
370  //-------------------------------------------------------------------------
371  StatusCode processStatus = StatusCode::SUCCESS;
372 
373  for(const auto& tool : m_vertexFinderTools) {
374  ATH_MSG_DEBUG("Starting Tool: " << tool->name());
375 
376  processStatus = tool->executeVertexFinder(*tau, RoIVxContainer);
377 
378  if(!processStatus.isFailure()) {
379  ATH_MSG_DEBUG(" " << tool->name() << " executed successfully");
380  } else {
381  ATH_MSG_DEBUG(" " << tool->name() << " execution failed");
382  break;
383  }
384  }
385 
386  for(const auto& tool : m_commonToolsBeforeTF) {
387  if(!processStatus.isFailure()) ATH_MSG_DEBUG("Starting Tool: " << tool->name());
388  else break;
389 
390  processStatus = tool->execute(*tau);
391 
392  if(!processStatus.isFailure()) {
393  ATH_MSG_DEBUG(" " << tool->name() << " executed successfully");
394  } else {
395  ATH_MSG_DEBUG(" " << tool->name() << " execution failed");
396  break;
397  }
398  }
399 
400  for(const auto& tool : m_trackFinderTools) {
401  if(!processStatus.isFailure()) ATH_MSG_DEBUG("Starting Tool: " << tool->name());
402  else break;
403 
404  processStatus = tool->executeTrackFinder(*tau, *tauTrackHandle);
405 
406  if(!processStatus.isFailure()) {
407  ATH_MSG_DEBUG(" " << tool->name() << " executed successfully");
408  } else {
409  ATH_MSG_DEBUG(" " << tool->name() << " execution failed");
410  break;
411  }
412  }
413 
414  for(const auto& tool : m_commonTools) {
415  if(!processStatus.isFailure()) ATH_MSG_DEBUG("Starting Tool: " << tool->name());
416  else break;
417 
418  processStatus = tool->execute(*tau);
419 
420  if(!processStatus.isFailure()) {
421  ATH_MSG_DEBUG(" " << tool->name() << " executed successfully");
422  } else {
423  ATH_MSG_DEBUG(" " << tool->name() << " execution failed");
424  break;
425  }
426  }
427 
428  // Dummy container passed to TauVertexVariables, not used in trigger though
429  xAOD::VertexContainer dummyVxCont;
430  for(const auto& tool : m_vertexVarsTools) {
431  if(!processStatus.isFailure()) ATH_MSG_DEBUG("Starting Tool: " << tool->name());
432  else break;
433 
434  processStatus = tool->executeVertexVariables(*tau, dummyVxCont);
435 
436  if(!processStatus.isFailure()) {
437  ATH_MSG_DEBUG(" " << tool->name() << " executed successfully");
438  } else {
439  ATH_MSG_DEBUG(" " << tool->name() << " execution failed");
440  break;
441  }
442  }
443 
444  for(const auto& tool : m_idTools) {
445  if(!processStatus.isFailure()) ATH_MSG_DEBUG("Starting Tool: " << tool->name());
446  else break;
447 
448  processStatus = tool->execute(*tau);
449 
450  if(!processStatus.isFailure()) {
451  ATH_MSG_DEBUG(" " << tool->name() << " executed successfully");
452  } else {
453  ATH_MSG_DEBUG(" " << tool->name() << " execution failed");
454  break;
455  }
456  }
457 
458  ATH_MSG_DEBUG("This tau has " << tau->allTracks() << " tracks linked");
459 
460  // Cleanup in case any of the tools failed (rejected Tau)
461  if(!processStatus.isSuccess()) {
462  ATH_MSG_DEBUG("The tau object has NOT been registered in the tau container");
463 
464  xAOD::TauJet* bad_tau = outputTauHandle->back();
465  ATH_MSG_DEBUG("Deleting " << bad_tau->nAllTracks() << " tracks associated with tau");
466  tauTrackHandle->erase(tauTrackHandle->end() - bad_tau->nAllTracks(), tauTrackHandle->end());
467 
468  outputTauHandle->pop_back();
469 
470  ATH_MSG_DEBUG("Clean up done after jet seed");
471  } else {
472  // Check that the seed-jet energy is positive
473  // Otherwise, try to salvage it by replacing the tau position with the RoI's
474  float fJetEnergy = (*tau->jetLink())->e();
475  ATH_MSG_DEBUG("Seed jet E: "<< fJetEnergy);
476 
477  if(fJetEnergy < 0.00001) {
478  ATH_MSG_DEBUG("Changing tau's (eta,phi) to RoI ones due to negative energy (PxPyPzE flips eta and phi)");
479  ATH_MSG_DEBUG("This is probably not needed anymore, method PxPyPzE has been corrected");
480  // TODO: Do we still need this??
481 
482  tau->setP4(tau->pt(), roiDescriptor->eta(), roiDescriptor->phi(), tau->m());
483 
484  ATH_MSG_DEBUG("Roi: " << roiDescriptor->roiId() << ", Tau eta: " << tau->eta() << ", phi: " << tau->phi() << ", pT: " << tau->pt());
485  }
486 
487 
488  //-------------------------------------------------------------------------
489  // Monitor tau variables
490  //-------------------------------------------------------------------------
491 
492  pT = tau->pt()/Gaudi::Units::GeV;
493  eta = tau->eta();
494  phi = tau->phi();
495 
496 
497  etaRoI = roiDescriptor->eta();
498  phiRoI = roiDescriptor->phi();
499  dEta_RoI = eta - roiDescriptor->eta();
500  dPhi_RoI = phi - roiDescriptor->phi();
501  if(dPhi_RoI < -M_PI) dPhi_RoI += 2.0*M_PI;
502  if(dPhi_RoI > M_PI) dPhi_RoI -= 2.0*M_PI;
503 
504 
505  float pre_mEflowApprox;
506  tau->detail(xAOD::TauJetParameters::mEflowApprox, pre_mEflowApprox);
507  mEflowApprox = std::log10(std::max(pre_mEflowApprox, 140.0f));
508 
509  float pre_ptRatioEflowApprox;
510  tau->detail(xAOD::TauJetParameters::ptRatioEflowApprox, pre_ptRatioEflowApprox);
511  ptRatioEflowApprox = std::min(pre_ptRatioEflowApprox, 4.0f);
512 
513  pt_jetseed_log = std::log10(tau->ptJetSeed());
514  etaDetectorAxis = tau->etaDetectorAxis();
516  ptDetectorAxis_log = std::log10(std::min(tau->ptDetectorAxis()/Gaudi::Units::GeV, 10000.0));
517 
518 
521  tau->detail(xAOD::TauJetParameters::hadRadius, HadRadius);
523  EtHad /= Gaudi::Units::GeV;
525  EtEm /= Gaudi::Units::GeV;
526 
527  float Et_raw = EtEm + EtHad;
528  if(Et_raw != 0) EMFrac = EtEm / Et_raw;
529 
532 
533 
534  // Monitor BRT variables
535  float tmp = 0;
536 
538  if(test) clustersMeanCenterLambda = tmp;
540  if(test) clustersMeanFirstEngDens = tmp;
542  if(test) clustersMeanEMProbability = tmp;
544  if(test) clustersMeanSecondLambda = tmp;
546  if(test) clustersMeanPresamplerFrac = tmp;
547 
548 
549  // Cluster variables monitoring
550  n_clusters = tau->clusters().size();
551  for(const auto& cluster : tau->clusters()) {
552  const xAOD::CaloCluster* cls = dynamic_cast<const xAOD::CaloCluster*>(cluster);
553 
554  cluster_et_log.push_back(std::log10(cls->et()));
555  cluster_dEta.push_back(cls->eta() - tau->eta());
556  cluster_dPhi.push_back(cls->p4().DeltaPhi(tau->p4()));
557 
558  double log_second_R = -999;
559  const bool success_SECOND_R = cls->retrieveMoment(xAOD::CaloCluster::MomentType::SECOND_R, log_second_R);
560  if(success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
561  cluster_log_SECOND_R.push_back(log_second_R);
562 
563  double second_lambda = -999;
564  const bool success_SECOND_LAMBDA = cls->retrieveMoment(xAOD::CaloCluster::MomentType::SECOND_LAMBDA, second_lambda);
565  if(success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
566  cluster_SECOND_LAMBDA.push_back(second_lambda);
567 
568  double center_lambda = -999;
569  const bool success_CENTER_LAMBDA = cls->retrieveMoment(xAOD::CaloCluster::MomentType::CENTER_LAMBDA, center_lambda);
570  if(success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1e-6);
571  cluster_CENTER_LAMBDA.push_back(center_lambda);
572  }
573 
574 
575  n_core_tracks = tau->nTracks();
576  n_wide_tracks = tau->nTracksIsolation();
578  if(tau->nTracks() > 0) ipSigLeadTrk = std::abs(tau->track(0)->d0SigTJVA()); // TODO: Is this needed?
589 
590  if(tau->vertexLink().isValid() && tau->vertex() && tau->vertex()->vertexType() != xAOD::VxType::NoVtx) {
591  vertex_x = tau->vertex()->x();
592  vertex_y = tau->vertex()->y();
593  vertex_z = tau->vertex()->z();
594  }
595 
596 
597  // Track variables monitoring
598  n_tracks = tau->allTracks().size();
599  for(const xAOD::TauTrack* track : tau->allTracks()) {
600  track_pt_log.push_back(std::log10(track->pt()));
601  track_dEta.push_back(track->eta() - tau->eta());
602  track_dPhi.push_back(track->p4().DeltaPhi(tau->p4()));
603  track_d0_abs_log.push_back(std::log10(std::abs(track->track()->d0()) + 1e-6));
604  track_z0sinthetaTJVA_abs_log.push_back(track->z0sinthetaTJVA());
605 
606  uint8_t pixel_hits, pixel_dead;
607  const bool success1_pixel_hits = track->track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
608  const bool success2_pixel_dead = track->track()->summaryValue(pixel_dead, xAOD::numberOfPixelDeadSensors);
609  float nPixelHitsPlusDeadSensor = -999;
610  if(success1_pixel_hits && success2_pixel_dead) nPixelHitsPlusDeadSensor = pixel_hits + pixel_dead;
611  track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
612 
613  uint8_t sct_hits, sct_dead;
614  const bool success1_sct_hits = track->track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
615  const bool success2_sct_dead = track->track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
616  float nSCTHitsPlusDeadSensors = -999;
617  if(success1_sct_hits && success2_sct_dead) nSCTHitsPlusDeadSensors = sct_hits + sct_dead;
618  track_nSCTHitsPlusDeadSensors.push_back(nSCTHitsPlusDeadSensors);
619  }
620 
621 
622  // ID scores monitoring
623 
625  if(tau->nTracks() == 0) IDScore_0p = tau->discriminant(xAOD::TauJetParameters::RNNJetScore);
626  else if (tau->nTracks() == 1) IDScore_1p = tau->discriminant(xAOD::TauJetParameters::RNNJetScore);
627  else IDScore_mp = tau->discriminant(xAOD::TauJetParameters::RNNJetScore);
628  }
629 
631  if(tau->nTracks() == 0) IDScoreSigTrans_0p = tau->discriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans);
632  else if (tau->nTracks() == 1) IDScoreSigTrans_1p = tau->discriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans);
633  else IDScoreSigTrans_mp = tau->discriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans);
634  }
635 
636 
637  ++n_taus;
638 
639 
640  ATH_MSG_DEBUG("Roi: " << roiDescriptor->roiId()
641  << ", Tau pT (GeV): " << pT << ", Tau eta: " << eta << ", Tau phi: " << phi
642  << ", wrt RoI dEta: " << dEta_RoI << ", dPhi: " << dPhi_RoI);
643  }
644 
645  //-------------------------------------------------------------------------
646  // All done, register the tau Container in TDS
647  //-------------------------------------------------------------------------
648 
649  ATH_MSG_DEBUG("Output TauJetContainer size: " << outputTauHandle->size());
650  ATH_MSG_DEBUG("Output TauJetTrackContainer size: " << tauTrackHandle->size());
651 
652  ATH_MSG_DEBUG("Recorded a tau container: " << outputTauHandle.name());
653  ATH_MSG_DEBUG("The tau object has been registered in the tau container");
654 
655  return StatusCode::SUCCESS;
656 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ initialize()

StatusCode TrigTauRecMerged::initialize ( )
overridevirtual

Definition at line 39 of file TrigTauRecMerged.cxx.

40 {
41  ATH_MSG_DEBUG("Initialize");
42 
43  if(m_commonTools.begin() == m_commonTools.end()) {
44  ATH_MSG_ERROR("No tools given for this algorithm");
45  return StatusCode::FAILURE;
46  }
47 
48  for(const auto& tool : m_commonTools) ATH_CHECK(tool.retrieve());
49  for(const auto& tool : m_commonToolsBeforeTF) ATH_CHECK(tool.retrieve());
50  for(const auto& tool : m_vertexFinderTools) ATH_CHECK(tool.retrieve());
51  for(const auto& tool : m_trackFinderTools) ATH_CHECK(tool.retrieve());
52  for(const auto& tool : m_vertexVarsTools) ATH_CHECK(tool.retrieve());
53  for(const auto& tool : m_idTools) ATH_CHECK(tool.retrieve());
54 
55  if(!m_monTool.name().empty()) ATH_CHECK(m_monTool.retrieve());
56 
57  ATH_MSG_DEBUG("Initialising handle keys");
63 
65  ATH_CHECK(m_tauJetOutputKey.initialize());
66  ATH_CHECK(m_tauTrackOutputKey.initialize());
67 
68  return StatusCode::SUCCESS;
69 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ 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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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_clustersInputKey

SG::ReadHandleKey<xAOD::CaloClusterContainer> TrigTauRecMerged::m_clustersInputKey {this, "InputCaloClusterContainer", "", "Caloclusters in view"}
private

Definition at line 69 of file TrigTauRecMerged.h.

◆ m_commonTools

const ToolHandleArray<ITauToolBase> TrigTauRecMerged::m_commonTools {this, "CommonTools", {}, "List of ITauToolBase common tools"}
private

Definition at line 57 of file TrigTauRecMerged.h.

◆ m_commonToolsBeforeTF

const ToolHandleArray<ITauToolBase> TrigTauRecMerged::m_commonToolsBeforeTF {this, "CommonToolsBeforeTF", {}, "List of ITauToolBase common tools to execute before the Track Finder tools"}
private

Definition at line 58 of file TrigTauRecMerged.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_idTools

const ToolHandleArray<ITauToolBase> TrigTauRecMerged::m_idTools {this, "IDTools", {}, "Vertex Variables tools"}
private

Definition at line 62 of file TrigTauRecMerged.h.

◆ m_monTool

const ToolHandle< GenericMonitoringTool > TrigTauRecMerged::m_monTool {this, "MonTool", "", "Monitoring tool"}
private

Definition at line 65 of file TrigTauRecMerged.h.

◆ m_roiInputKey

SG::ReadHandleKey<TrigRoiDescriptorCollection> TrigTauRecMerged::m_roiInputKey {this, "InputRoIs", "", "Input RoI name"}
private

Definition at line 68 of file TrigTauRecMerged.h.

◆ m_tauJetInputKey

SG::ReadHandleKey<xAOD::TauJetContainer> TrigTauRecMerged::m_tauJetInputKey {this, "InputTauJetContainer", "", "Input TauJet container"}
private

Definition at line 71 of file TrigTauRecMerged.h.

◆ m_tauJetOutputKey

SG::WriteHandleKey<xAOD::TauJetContainer> TrigTauRecMerged::m_tauJetOutputKey {this, "OutputTauJetContainer", "", "Output TauJet container"}
private

Definition at line 76 of file TrigTauRecMerged.h.

◆ m_tauSeedOutputKey

SG::WriteHandleKey<xAOD::JetContainer> TrigTauRecMerged::m_tauSeedOutputKey {this, "OutputJetSeed", "", "Output jets which are seeds for tau jets"}
private

Definition at line 75 of file TrigTauRecMerged.h.

◆ m_tauTrackInputKey

SG::ReadHandleKey<xAOD::TauTrackContainer> TrigTauRecMerged::m_tauTrackInputKey {this, "InputTauTrackContainer", "", "Input TauTrack container" }
private

Definition at line 72 of file TrigTauRecMerged.h.

◆ m_tauTrackOutputKey

SG::WriteHandleKey<xAOD::TauTrackContainer> TrigTauRecMerged::m_tauTrackOutputKey {this, "OutputTauTrackContainer", "", "Output TauTrack container"}
private

Definition at line 77 of file TrigTauRecMerged.h.

◆ m_trackFinderTools

const ToolHandleArray<ITauToolBase> TrigTauRecMerged::m_trackFinderTools {this, "TrackFinderTools", {}, "Track Finder tools"}
private

Definition at line 60 of file TrigTauRecMerged.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertexFinderTools

const ToolHandleArray<ITauToolBase> TrigTauRecMerged::m_vertexFinderTools {this, "VertexFinderTools", {}, "Vertex Finder tools"}
private

Definition at line 59 of file TrigTauRecMerged.h.

◆ m_vertexInputKey

SG::ReadHandleKey<xAOD::VertexContainer> TrigTauRecMerged::m_vertexInputKey {this, "InputVertexContainer", "", "Input vertex container"}
private

Definition at line 70 of file TrigTauRecMerged.h.

◆ m_vertexVarsTools

const ToolHandleArray<ITauToolBase> TrigTauRecMerged::m_vertexVarsTools {this, "VertexVarsTools", {}, "Vertex Variables tools"}
private

Definition at line 61 of file TrigTauRecMerged.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
TrigTauRecMerged::NoClustKey
@ NoClustKey
Definition: TrigTauRecMerged.h:40
xAOD::Vertex_v1::x
float x() const
Returns the x position.
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
xAOD::TauJetParameters::RNNJetScoreSigTrans
@ RNNJetScoreSigTrans
RNN score which is signal transformed/flattened.
Definition: TauDefs.h:92
TrigTauRecMerged::m_vertexInputKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexInputKey
Definition: TrigTauRecMerged.h:70
TauGNNUtils::Variables::Cluster::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:840
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
TrigTauRecMerged::m_clustersInputKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clustersInputKey
Definition: TrigTauRecMerged.h:69
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
TrigTauRecMerged::NoClustCont
@ NoClustCont
Definition: TrigTauRecMerged.h:39
max
#define max(a, b)
Definition: cfImp.cxx:41
TrigTauRecMerged::m_idTools
const ToolHandleArray< ITauToolBase > m_idTools
Definition: TrigTauRecMerged.h:62
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
TrigTauRecMerged::NoJetAttach
@ NoJetAttach
Definition: TrigTauRecMerged.h:42
TrigTauRecMerged::m_commonTools
const ToolHandleArray< ITauToolBase > m_commonTools
Definition: TrigTauRecMerged.h:57
xAOD::TauJetParameters::trFlightPathSig
@ trFlightPathSig
Definition: TauDefs.h:163
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
TrigTauRecMerged::NoROIDescr
@ NoROIDescr
Definition: TrigTauRecMerged.h:36
xAOD::TauJet_v3::discriminant
double discriminant(TauJetParameters::TauID discID) const
Get value of discriminant.
Definition: TauJet_v3.cxx:253
xAOD::TauJet_v3::nAllTracks
size_t nAllTracks() const
Definition: TauJet_v3.cxx:554
xAOD::TauTrack_v1::d0SigTJVA
float d0SigTJVA() const
Definition: TauTrack_v1.cxx:129
xAOD::TauJet_v3::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
xAOD::TauJet_v3::etaDetectorAxis
double etaDetectorAxis() const
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
xAOD::TauJetParameters::ClustersMeanSecondLambda
@ ClustersMeanSecondLambda
Definition: TauDefs.h:315
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TrigTauRecMerged::m_vertexFinderTools
const ToolHandleArray< ITauToolBase > m_vertexFinderTools
Definition: TrigTauRecMerged.h:59
xAOD::TauJet_v3::clearTauTrackLinks
void clearTauTrackLinks()
Remove all tracks from the tau.
Definition: TauJet_v3.cxx:567
xAOD::TauJet_v3::m
virtual double m() const
The invariant mass of the particle.
xAOD::TauJet_v3::nTracks
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
Definition: TauJet_v3.cxx:526
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
AllowedVariables::nSCTHitsPlusDeadSensors
@ nSCTHitsPlusDeadSensors
Definition: AsgElectronSelectorTool.cxx:58
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TrigRoiDescriptor::roiWord
virtual unsigned int roiWord() const override final
Definition: TrigRoiDescriptor.h:135
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
CaloClusterListBadChannel.cls
cls
Definition: CaloClusterListBadChannel.py:8
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD::TauJetParameters::ClustersMeanPresamplerFrac
@ ClustersMeanPresamplerFrac
Definition: TauDefs.h:316
xAOD::TauJetParameters::mEflowApprox
@ mEflowApprox
Definition: TauDefs.h:292
xAOD::TauJet_v3::hasDiscriminant
bool hasDiscriminant(TauJetParameters::TauID discID) const
Check if class contains requested discriminant.
Definition: TauJet_v3.cxx:242
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
TrigRoiDescriptor
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
Definition: TrigRoiDescriptor.h:56
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:147
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TrigTauRecMerged::m_tauTrackOutputKey
SG::WriteHandleKey< xAOD::TauTrackContainer > m_tauTrackOutputKey
Definition: TrigTauRecMerged.h:77
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
xAOD::TauJet_v3::ptJetSeed
double ptJetSeed() const
xAOD::TauJet_v3::ptDetectorAxis
double ptDetectorAxis() const
xAOD::TauJetParameters::ptRatioEflowApprox
@ ptRatioEflowApprox
Definition: TauDefs.h:293
xAOD::Vertex_v1::vertexType
VxType::VertexType vertexType() const
The type of the vertex.
xAOD::VxType::NoVtx
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Definition: TrackingPrimitives.h:570
xAOD::TauJetParameters::hadRadius
@ hadRadius
Get hadron calorimeter radius.
Definition: TauDefs.h:192
xAOD::TauJet_v3::setP4
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
Definition: TauJet_v3.cxx:172
xAOD::TauJetParameters::ipSigLeadTrk
@ ipSigLeadTrk
Definition: TauDefs.h:160
TrigTauRecMerged::deepCopy
StatusCode deepCopy(SG::WriteHandle< DataVector< V >> &writeHandle, const DataVector< V > *oldContainer) const
Definition: TrigTauRecMerged.h:84
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
xAOD::TauJet_v3::clusters
std::vector< const IParticle * > clusters() const
Definition: TauJet_v3.cxx:585
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
xAOD::TauJetParameters::centFrac
@ centFrac
Get centrality fraction.
Definition: TauDefs.h:200
xAOD::TauJetParameters::dRmax
@ dRmax
Get maximal dR of tracks associated to calo-seeded tau.
Definition: TauDefs.h:226
TauGNNUtils::Variables::Track::pt_jetseed_log
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:492
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
xAOD::TauJet_v3::ROIWord
unsigned int ROIWord() const
the ROIWord, in case TauJet is used in EF trigger
xAOD::TauJet_v3::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
xAOD::TauJet_v3::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
xAOD::TauJetParameters::etHadAtEMScale
@ etHadAtEMScale
Get Hadronic energy at EM scale.
Definition: TauDefs.h:196
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TrigTauRecMerged::m_vertexVarsTools
const ToolHandleArray< ITauToolBase > m_vertexVarsTools
Definition: TrigTauRecMerged.h:61
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
SG::ReadHandle::get
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrigTauRecMerged::EmptyClustCont
@ EmptyClustCont
Definition: TrigTauRecMerged.h:41
xAOD::TauJetParameters::trkAvgDist
@ trkAvgDist
Get calibrated EM transverse energy (DEPRECATED since r19)
Definition: TauDefs.h:214
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
xAOD::TauJet_v3::jetLink
const JetLink_t & jetLink() const
xAOD::TauJet_v3::track
const TauTrack * track(size_t i, TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged, int *container_index=0) const
Get the pointer to a given tauTrack associated with this tau /*container index needed by trackNonCons...
Definition: TauJet_v3.cxx:450
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::TauJetParameters::etOverPtLeadTrk
@ etOverPtLeadTrk
Definition: TauDefs.h:158
hist_file_dump.f
f
Definition: hist_file_dump.py:135
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::Vertex_v1::z
float z() const
Returns the z position.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TauGNNUtils::Variables::Cluster::SECOND_LAMBDA
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:835
TrigTauRecMerged::NoHLTtauAttach
@ NoHLTtauAttach
Definition: TrigTauRecMerged.h:43
xAOD::CalibratedJetConstituent
@ CalibratedJetConstituent
Definition: JetTypes.h:22
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
DataVector::back
const T * back() const
Access the last element in the collection as an rvalue.
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::TauJetParameters::massTrkSys
@ massTrkSys
Definition: TauDefs.h:161
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
min
#define min(a, b)
Definition: cfImp.cxx:40
xAOD::TauJet_v3::setJet
void setJet(const xAOD::JetContainer *cont, const xAOD::Jet *jet)
Definition: TauJet_v3.cxx:683
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition: JetTypes.h:17
TrigTauRecMerged::m_tauJetOutputKey
SG::WriteHandleKey< xAOD::TauJetContainer > m_tauJetOutputKey
Definition: TrigTauRecMerged.h:76
xAOD::TauJet_v3::detail
bool detail(TauJetParameters::Detail detail, int &value) const
Set veto flag.
Definition: TauJet_v3.cxx:292
SG::WriteHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrigTauRecMerged::m_roiInputKey
SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roiInputKey
Definition: TrigTauRecMerged.h:68
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
TrigTauRecMerged::NoHLTtauDetAttach
@ NoHLTtauDetAttach
Definition: TrigTauRecMerged.h:44
TrigTauRecMerged::NoVtxCont
@ NoVtxCont
Definition: TrigTauRecMerged.h:51
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
xAOD::TauJetParameters::ClustersMeanEMProbability
@ ClustersMeanEMProbability
Definition: TauDefs.h:313
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
xAOD::TauJetParameters::ClustersMeanCenterLambda
@ ClustersMeanCenterLambda
Definition: TauDefs.h:312
TauGNNUtils::Variables::Cluster::SECOND_R
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:830
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
TrigTauRecMerged::m_trackFinderTools
const ToolHandleArray< ITauToolBase > m_trackFinderTools
Definition: TrigTauRecMerged.h:60
TrigRoiDescriptor::roiId
virtual unsigned int roiId() const override final
these quantities probably don't need to be used any more
Definition: TrigRoiDescriptor.h:133
TrigTauRecMerged::NoCellCont
@ NoCellCont
Definition: TrigTauRecMerged.h:37
xAOD::TauJetParameters::RNNJetScore
@ RNNJetScore
RNN score for Jet rejection (not transformed)
Definition: TauDefs.h:90
python.PyAthena.v
v
Definition: PyAthena.py:154
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
TrigTauRecMerged::m_tauTrackInputKey
SG::ReadHandleKey< xAOD::TauTrackContainer > m_tauTrackInputKey
Definition: TrigTauRecMerged.h:72
a
TList * a
Definition: liststreamerinfos.cxx:10
xAOD::TauJetParameters::numCells
@ numCells
Definition: TauDefs.h:171
xAOD::TauJetParameters::innerTrkAvgDist
@ innerTrkAvgDist
Definition: TauDefs.h:287
h
xAOD::TauJet_v3::setROIWord
void setROIWord(unsigned int)
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
xAOD::TauJet_v3::vertex
const Vertex * vertex() const
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::TauJetParameters::ChPiEMEOverCaloEME
@ ChPiEMEOverCaloEME
Definition: TauDefs.h:278
RoiDescriptor::phi
virtual double phi() const override final
Methods to retrieve data members.
Definition: RoiDescriptor.h:100
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:273
xAOD::TauTrack_v1
Definition: TauTrack_v1.h:27
TrigTauRecMerged::NoTrkCont
@ NoTrkCont
Definition: TrigTauRecMerged.h:50
xAOD::TauJet_v3::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: TauJet_v3.cxx:97
TrigTauRecMerged::NoHLTtauXdetAttach
@ NoHLTtauXdetAttach
Definition: TrigTauRecMerged.h:45
TrigTauRecMerged::EmptyCellCont
@ EmptyCellCont
Definition: TrigTauRecMerged.h:38
xAOD::Vertex_v1::y
float y() const
Returns the y position.
xAOD::TauJetParameters::ClustersMeanFirstEngDens
@ ClustersMeanFirstEngDens
Definition: TauDefs.h:314
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
xAOD::TauJetParameters::isolFrac
@ isolFrac
Get isolation fraction.
Definition: TauDefs.h:198
RoiDescriptor::eta
virtual double eta() const override final
Definition: RoiDescriptor.h:101
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
TrigTauRecMerged::m_commonToolsBeforeTF
const ToolHandleArray< ITauToolBase > m_commonToolsBeforeTF
Definition: TrigTauRecMerged.h:58
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:266
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
TauGNNUtils::Variables::ptDetectorAxis
bool ptDetectorAxis(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:343
xAOD::TauJet_v3::nTracksIsolation
size_t nTracksIsolation() const
Definition: TauJet_v3.cxx:536
TrigTauRecMerged::m_tauJetInputKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_tauJetInputKey
Definition: TrigTauRecMerged.h:71
xAOD::TauJetParameters::PSSFraction
@ PSSFraction
Definition: TauDefs.h:277
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
xAOD::TauJetParameters::EMRadius
@ EMRadius
Get E_T radius.
Definition: TauDefs.h:190
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
TrigTauRecMerged::m_monTool
const ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigTauRecMerged.h:65
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
TrigTauRecMerged::doCaloMVAStep
bool doCaloMVAStep() const
Definition: TrigTauRecMerged.h:80
xAOD::TauJet_v3::allTracks
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
Definition: TauJet_v3.cxx:514
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
xAOD::TauJet_v3::vertexLink
const VertexLink_t & vertexLink() const
xAOD::TauJetParameters::EMPOverTrkSysP
@ EMPOverTrkSysP
Definition: TauDefs.h:279
TrigTauRecMerged::m_tauSeedOutputKey
SG::WriteHandleKey< xAOD::JetContainer > m_tauSeedOutputKey
Definition: TrigTauRecMerged.h:75
xAOD::TauJetParameters::etEMAtEMScale
@ etEMAtEMScale
Get EM energy at EM scale.
Definition: TauDefs.h:194
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >