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 doCaloReconstruction () 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"}
 
Gaudi::Property< std::map< std::string, std::pair< std::string, std::string > > > m_monitoredIdScores {this, "MonitoredIDScores", {}, "Pairs of the TauID score and signal-transformed scores for each TauID algorithm to be monitored"}
 
std::map< std::string, std::pair< SG::AuxElement::ConstAccessor< float >, SG::AuxElement::ConstAccessor< float > > > m_monitoredIdAccessors
 
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 25 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 36 of file TrigTauRecMerged.h.

36  {
37  NoROIDescr=0,
38  NoCellCont=1,
39  EmptyCellCont=2,
40  NoClustCont=3,
41  NoClustKey=4,
43  NoJetAttach=6,
47  };

◆ TAUEFTRKMON

Enumerator
NoTrkCont 
NoVtxCont 

Definition at line 50 of file TrigTauRecMerged.h.

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

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 87 of file TrigTauRecMerged.h.

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

◆ 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; }

◆ doCaloReconstruction()

bool TrigTauRecMerged::doCaloReconstruction ( ) const
inlineprivate

Definition at line 83 of file TrigTauRecMerged.h.

83 { 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 81 of file TrigTauRecMerged.cxx.

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

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

41 {
42  ATH_MSG_DEBUG("Initialize");
43 
44  if(m_commonTools.begin() == m_commonTools.end()) {
45  ATH_MSG_ERROR("No tools given for this algorithm");
46  return StatusCode::FAILURE;
47  }
48 
49  for(const auto& tool : m_commonTools) ATH_CHECK(tool.retrieve());
50  for(const auto& tool : m_commonToolsBeforeTF) ATH_CHECK(tool.retrieve());
51  for(const auto& tool : m_vertexFinderTools) ATH_CHECK(tool.retrieve());
52  for(const auto& tool : m_trackFinderTools) ATH_CHECK(tool.retrieve());
53  for(const auto& tool : m_vertexVarsTools) ATH_CHECK(tool.retrieve());
54  for(const auto& tool : m_idTools) ATH_CHECK(tool.retrieve());
55 
56  if(!m_monTool.name().empty()) ATH_CHECK(m_monTool.retrieve());
57 
58  ATH_MSG_DEBUG("Initialising handle keys");
64 
66  ATH_CHECK(m_tauJetOutputKey.initialize());
67  ATH_CHECK(m_tauTrackOutputKey.initialize());
68 
69  for(const auto& [key, p] : m_monitoredIdScores) {
70  m_monitoredIdAccessors.emplace(
71  key,
73  );
74  }
75 
76 
77  return StatusCode::SUCCESS;
78 }

◆ 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 72 of file TrigTauRecMerged.h.

◆ m_commonTools

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

Definition at line 58 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 59 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 63 of file TrigTauRecMerged.h.

◆ m_monitoredIdAccessors

std::map<std::string, std::pair<SG::AuxElement::ConstAccessor<float>, SG::AuxElement::ConstAccessor<float> > > TrigTauRecMerged::m_monitoredIdAccessors
private

Definition at line 68 of file TrigTauRecMerged.h.

◆ m_monitoredIdScores

Gaudi::Property<std::map<std::string, std::pair<std::string, std::string> > > TrigTauRecMerged::m_monitoredIdScores {this, "MonitoredIDScores", {}, "Pairs of the TauID score and signal-transformed scores for each TauID algorithm to be monitored"}
private

Definition at line 67 of file TrigTauRecMerged.h.

◆ m_monTool

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

Definition at line 66 of file TrigTauRecMerged.h.

◆ m_roiInputKey

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

Definition at line 71 of file TrigTauRecMerged.h.

◆ m_tauJetInputKey

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

Definition at line 74 of file TrigTauRecMerged.h.

◆ m_tauJetOutputKey

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

Definition at line 79 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 78 of file TrigTauRecMerged.h.

◆ m_tauTrackInputKey

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

Definition at line 75 of file TrigTauRecMerged.h.

◆ m_tauTrackOutputKey

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

Definition at line 80 of file TrigTauRecMerged.h.

◆ m_trackFinderTools

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

Definition at line 61 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 60 of file TrigTauRecMerged.h.

◆ m_vertexInputKey

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

Definition at line 73 of file TrigTauRecMerged.h.

◆ m_vertexVarsTools

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

Definition at line 62 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:41
xAOD::Vertex_v1::x
float x() const
Returns the x position.
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
TrigTauRecMerged::m_vertexInputKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexInputKey
Definition: TrigTauRecMerged.h:73
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_monitoredIdScores
Gaudi::Property< std::map< std::string, std::pair< std::string, std::string > > > m_monitoredIdScores
Definition: TrigTauRecMerged.h:67
TrigTauRecMerged::m_clustersInputKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clustersInputKey
Definition: TrigTauRecMerged.h:72
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
TrigTauRecMerged::NoClustCont
@ NoClustCont
Definition: TrigTauRecMerged.h:40
TrigTauRecMerged::m_idTools
const ToolHandleArray< ITauToolBase > m_idTools
Definition: TrigTauRecMerged.h:63
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
TrigTauRecMerged::NoJetAttach
@ NoJetAttach
Definition: TrigTauRecMerged.h:43
TrigTauRecMerged::m_commonTools
const ToolHandleArray< ITauToolBase > m_commonTools
Definition: TrigTauRecMerged.h:58
xAOD::TauJetParameters::trFlightPathSig
@ trFlightPathSig
Definition: TauDefs.h:163
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
TrigTauRecMerged::NoROIDescr
@ NoROIDescr
Definition: TrigTauRecMerged.h:37
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
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
TrigTauRecMerged::doCaloReconstruction
bool doCaloReconstruction() const
Definition: TrigTauRecMerged.h:83
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
TrigTauRecMerged::m_vertexFinderTools
const ToolHandleArray< ITauToolBase > m_vertexFinderTools
Definition: TrigTauRecMerged.h:60
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::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
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:147
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TrigTauRecMerged::m_monTool
const ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigTauRecMerged.h:66
TrigTauRecMerged::m_tauTrackOutputKey
SG::WriteHandleKey< xAOD::TauTrackContainer > m_tauTrackOutputKey
Definition: TrigTauRecMerged.h:80
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:87
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:29
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:62
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:42
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:44
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:794
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
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:79
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:71
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
TrigTauRecMerged::NoHLTtauDetAttach
@ NoHLTtauDetAttach
Definition: TrigTauRecMerged.h:45
TrigTauRecMerged::NoVtxCont
@ NoVtxCont
Definition: TrigTauRecMerged.h:52
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
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:61
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:38
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:75
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
ref
const boost::regex ref(r_ef)
xAOD::TauTrack_v1
Definition: TauTrack_v1.h:27
TrigTauRecMerged::NoTrkCont
@ NoTrkCont
Definition: TrigTauRecMerged.h:51
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:46
TrigTauRecMerged::EmptyCellCont
@ EmptyCellCont
Definition: TrigTauRecMerged.h:39
xAOD::Vertex_v1::y
float y() const
Returns the y position.
TrigTauRecMerged::m_monitoredIdAccessors
std::map< std::string, std::pair< SG::AuxElement::ConstAccessor< float >, SG::AuxElement::ConstAccessor< float > > > m_monitoredIdAccessors
Definition: TrigTauRecMerged.h:68
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:59
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:74
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.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
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:78
xAOD::TauJetParameters::etEMAtEMScale
@ etEMAtEMScale
Get EM energy at EM scale.
Definition: TauDefs.h:194
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37