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 T , class U , class V >
StatusCode deepCopy (T *&containerOut, U *&containerStoreOut, const V *dummyContainerType, const T *&oldContainer)
 
template<class W , class V , class T >
StatusCode deepCopy (W &writeHandle, const V *dummyContainerType, const T *&oldContainer) 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, "ComTools", {}, "List of ITauToolBase tools"}
 internal tool store More...
 
const ToolHandleArray< ITauToolBasem_vertexFinderTools {this, "VFTools", {}, "Vertex Finder tools"}
 
const ToolHandleArray< ITauToolBasem_trackFinderTools {this, "TFTools", {}, "Track Finder tools"}
 
const ToolHandleArray< ITauToolBasem_vertexVarsTools {this, "VVTools", {}, "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,"RoIInputKey","InputRoI","Input RoI name"}
 
SG::ReadHandleKey< xAOD::CaloClusterContainerm_clustersKey { this, "clustersKey", "CaloClusters", "caloclusters in view" }
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_tracksKey { this, "Key_trackPartInputContainer", "InDetTrackParticles", "input track particle container key"}
 
SG::ReadHandleKey< xAOD::VertexContainerm_vertexKey { this, "Key_vertexInputContainer", "HLT_IDVertex_Tau", "input vertex container key"}
 
SG::ReadHandleKey< xAOD::TauJetContainerm_trigTauJetKey { this, "Key_trigTauJetInputContainer", "HLT_taujet", "input taujet container" }
 
SG::ReadHandleKey< xAOD::TauTrackContainerm_trigTauTrackInKey { this, "Key_trigTauTrackInputContainer", "HLT_tautrack_input", "input tautrack container" }
 
SG::WriteHandleKey< xAOD::JetContainerm_trigtauSeedOutKey { this,"Key_trigJetSeedOutputKey","HLT_jet_seed","Key for output jets which are seed for tau jets"}
 
SG::WriteHandleKey< xAOD::TauJetContainerm_trigtauRecOutKey {this,"Key_trigTauJetOutputContainer","HLT_taujet","Output taujet container"}
 
SG::WriteHandleKey< xAOD::TauTrackContainerm_trigtauTrkOutKey {this,"Key_trigTauTrackOutputContainer","HLT_tautrack","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 41 of file TrigTauRecMerged.h.

41  {
42  NoROIDescr=0,
43  NoCellCont=1,
44  EmptyCellCont=2,
45  NoClustCont=3,
46  NoClustKey=4,
48  NoJetAttach=6,
52  };

◆ TAUEFTRKMON

Enumerator
NoTrkCont 
NoVtxCont 

Definition at line 54 of file TrigTauRecMerged.h.

54  {
55  NoTrkCont=0,
56  NoVtxCont=1
57  };

Constructor & Destructor Documentation

◆ TrigTauRecMerged()

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

Definition at line 34 of file TrigTauRecMerged.cxx.

35  :AthReentrantAlgorithm(name, pSvcLocator)
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() [1/2]

template<class T , class U , class V >
StatusCode TrigTauRecMerged::deepCopy ( T *&  containerOut,
U *&  containerStoreOut,
const V *  dummyContainerType,
const T *&  oldContainer 
)
private

◆ deepCopy() [2/2]

template<class W , class V , class T >
StatusCode TrigTauRecMerged::deepCopy ( W &  writeHandle,
const V *  dummyContainerType,
const T *&  oldContainer 
) const
private

Definition at line 87 of file TrigTauRecMerged.h.

89  {
90  if(!writeHandle.isValid()){
91  ATH_MSG_FATAL("Provided with an invalid write handle ");
92  return StatusCode::FAILURE;
93  }
94  if(oldContainer != nullptr){
95  for( const V* v : *oldContainer ){
96  V* newV = new V();
97  // Put objects into new container
98  writeHandle->push_back(newV);
99  // Copy across aux store
100  *newV = *v;
101  }
102  }
103  return StatusCode::SUCCESS;
104  }

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

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

87 {
88  ATH_MSG_DEBUG("Execution");
89 
90  // variables to initialize and keep values for monitoring variables
91  std::vector<unsigned char> calo_errors(0);
92  std::vector<unsigned char> track_errors(0);
93  //std::vector<const xAOD::CaloCluster *> clusters;
94  std::vector<float> cluster_et_log(0);
95  std::vector<float> cluster_dEta(0);
96  std::vector<float> cluster_dPhi(0);
97  std::vector<float> cluster_log_SECOND_R(0);
98  std::vector<float> cluster_SECOND_LAMBDA(0);
99  std::vector<float> cluster_CENTER_LAMBDA(0);
100  std::vector<float> track_pt_log(0);
101  std::vector<float> track_dEta(0);
102  std::vector<float> track_dPhi(0);
103  std::vector<float> track_z0sinthetaTJVA_abs_log(0);
104  std::vector<float> track_d0_abs_log(0);
105  std::vector<float> track_nIBLHitsAndExp(0);
106  std::vector<float> track_nPixelHitsPlusDeadSensors(0);
107  std::vector<float> track_nSCTHitsPlusDeadSensors(0);
108 
109  auto nCells = Monitored::Scalar<int>("nRoI_EFTauCells", 0);
110  auto nTracks = Monitored::Scalar<int>("nRoI_EFTauTracks", -10);
111  auto dEta = Monitored::Scalar<float>("dEtaEFTau_RoI", -10.);
112  auto dPhi = Monitored::Scalar<float>("dPhiEFTau_RoI", -10.);
113  auto emRadius = Monitored::Scalar<float>("EMRadius", -0.099);
114  auto hadRadius = Monitored::Scalar<float>("HadRadius", -0.099);
115  auto EtFinal = Monitored::Scalar<float>("EtFinal", 0.);
116  auto Et = Monitored::Scalar<float>("Et", 0.);
117  auto EtHad = Monitored::Scalar<float>("EtHad",-10.);
118  auto EtEm = Monitored::Scalar<float>("EtEm",-10.);
119  auto EMFrac = Monitored::Scalar<float>("EMFrac",-10.);
120  auto IsoFrac = Monitored::Scalar<float>("IsoFrac",-1.);
121  auto centFrac = Monitored::Scalar<float>("centFrac",-10.);
122  auto nWideTrk = Monitored::Scalar<int>("nWideTrk",-10);
123  auto ipSigLeadTrk = Monitored::Scalar<float>("ipSigLeadTrk",-1000.);
124  auto trFlightPathSig = Monitored::Scalar<float>("trFlightPathSig",-10.);
125  auto massTrkSys = Monitored::Scalar<float>("massTrkSys",-10.);
126  auto dRmax = Monitored::Scalar<float>("dRmax",-10.);
127  auto numTrack = Monitored::Scalar<int>("NTrk", -10);
128  auto trkAvgDist = Monitored::Scalar<float>("TrkAvgDist",-1.0);
129  auto etovPtLead = Monitored::Scalar<float>("EtovPtLead",-10.);
130  auto PSSFraction = Monitored::Scalar<float>("PSSFraction",-999.9);
131  auto EMPOverTrkSysP = Monitored::Scalar<float>("EMPOverTrkSysP",-999.9);
132  auto ChPiEMEOverCaloEME = Monitored::Scalar<float>("ChPiEMEOverCaloEME",-999.9);
133  auto SumPtTrkFrac = Monitored::Scalar<float>("SumPtTrkFrac",-999.9);
134  auto innerTrkAvgDist = Monitored::Scalar<float>("innerTrkAvgDist",-1.0);
135  auto Ncand = Monitored::Scalar<int>("nCand",0);
136  auto EtaL1 = Monitored::Scalar<float>("EtaL1",-99.9);
137  auto PhiL1 = Monitored::Scalar<float>("PhiL1",-99.9);
138  auto EtaEF = Monitored::Scalar<float>("EtaEF",-99.9);
139  auto PhiEF = Monitored::Scalar<float>("PhiEF",-99.9);
140  auto mEflowApprox = Monitored::Scalar<float>("mEflowApprox", -99.9);
141  auto ptRatioEflowApprox = Monitored::Scalar<float>("ptRatioEflowApprox", -99.9);
142  auto pt_jetseed_log = Monitored::Scalar<float>("pt_jetseed_log",-99.9);
143  auto ptDetectorAxis = Monitored::Scalar<float>("ptDetectorAxis",-99.9);
144  auto etaDetectorAxis = Monitored::Scalar<float>("etaDetectorAxis",-99.9);
145  auto ptDetectorAxis_log = Monitored::Scalar<float>("ptDetectorAxis_log",-99.9);
146  auto RNN_tracknumber = Monitored::Scalar<int>("RNN_tracknumber",0);
147  auto RNN_clusternumber = Monitored::Scalar<int>("RNN_clusternumber",0);
148  auto RNNJetScore_0p = Monitored::Scalar<float>("RNNJetScore_0p",-999);
149  auto RNNJetScoreSigTrans_0p = Monitored::Scalar<float>("RNNJetScoreSigTrans_0p",-999);
150  auto RNNJetScore_1p = Monitored::Scalar<float>("RNNJetScore_1p",-999);
151  auto RNNJetScoreSigTrans_1p = Monitored::Scalar<float>("RNNJetScoreSigTrans_1p",-999);
152  auto RNNJetScore_mp = Monitored::Scalar<float>("RNNJetScore_mp",-999);
153  auto RNNJetScoreSigTrans_mp = Monitored::Scalar<float>("RNNJetScoreSigTrans_mp",-999);
154  auto EF_vertex_x = Monitored::Scalar<float>("vertex_x", -999.9);
155  auto EF_vertex_y = Monitored::Scalar<float>("vertex_y", -999.9);
156  auto EF_vertex_z = Monitored::Scalar<float>("vertex_z", -999.9);
157 
158  auto EF_calo_errors = Monitored::Collection("calo_errors",calo_errors);
159  auto EF_track_errors = Monitored::Collection("track_errors",track_errors);
160 
161  auto Cluster_et_log = Monitored::Collection("cluster_et_log", cluster_et_log);
162  auto Cluster_dEta = Monitored::Collection("cluster_dEta", cluster_dEta);
163  auto Cluster_dPhi = Monitored::Collection("cluster_dPhi", cluster_dPhi);
164  auto Cluster_log_SECOND_R = Monitored::Collection("cluster_log_SECOND_R", cluster_log_SECOND_R);
165  auto Cluster_SECOND_LAMBDA = Monitored::Collection("cluster_SECOND_LAMBDA", cluster_SECOND_LAMBDA);
166  auto Cluster_CENTER_LAMBDA = Monitored::Collection("cluster_CENTER_LAMBDA", cluster_CENTER_LAMBDA);
167 
168  auto Track_pt_log = Monitored::Collection("track_pt_log", track_pt_log);
169  auto Track_dEta = Monitored::Collection("track_dEta", track_dEta);
170  auto Track_dPhi = Monitored::Collection("track_dPhi", track_dPhi);
171  auto Track_z0sinthetaTJVA_abs_log = Monitored::Collection("track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
172  auto Track_d0_abs_log = Monitored::Collection("track_d0_abs_log", track_d0_abs_log);
173  auto Track_nIBLHitsAndExp = Monitored::Collection("track_nIBLHitsAndExp", track_nIBLHitsAndExp);
174  auto Track_nPixelHitsPlusDeadSensors = Monitored::Collection("track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
175  auto Track_nSCTHitsPlusDeadSensors = Monitored::Collection("track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
176 
177  auto clustersMeanCenterLambda = Monitored::Scalar<float>("clustersMeanCenterLambda",0.0);
178  auto clustersMeanFirstEngDens = Monitored::Scalar<float>("clustersMeanFirstEngDens",0.0);
179  auto clustersMeanEMProbability = Monitored::Scalar<float>("clustersMeanEMProbability",0.0);
180  auto clustersMeanSecondLambda = Monitored::Scalar<float>("clustersMeanSecondLambda",0.0);
181  auto clustersMeanPresamplerFrac = Monitored::Scalar<float>("clustersMeanPresamplerFrac",0.0);
182 
183  auto monitorIt = Monitored::Group( m_monTool, nCells, nTracks, dEta, dPhi, emRadius, hadRadius,
184  EtFinal, Et, EtHad, EtEm, EMFrac, IsoFrac, centFrac, nWideTrk, ipSigLeadTrk, trFlightPathSig, massTrkSys,
186  innerTrkAvgDist, Ncand, EtaL1, PhiL1, EtaEF, PhiEF, mEflowApprox, ptRatioEflowApprox, pt_jetseed_log,
187  ptDetectorAxis, etaDetectorAxis, ptDetectorAxis_log, RNN_clusternumber, RNNJetScore_0p, RNNJetScoreSigTrans_0p,
188  RNNJetScore_1p, RNNJetScoreSigTrans_1p,RNNJetScore_mp,RNNJetScoreSigTrans_mp,Cluster_et_log, Cluster_dEta, Cluster_dPhi, Cluster_log_SECOND_R,
189  Cluster_SECOND_LAMBDA, Cluster_CENTER_LAMBDA, RNN_tracknumber, EF_vertex_x, EF_vertex_y, EF_vertex_z, EF_calo_errors, EF_track_errors, Track_pt_log, Track_dEta, Track_dPhi, Track_z0sinthetaTJVA_abs_log, Track_d0_abs_log, Track_nIBLHitsAndExp,
190  Track_nPixelHitsPlusDeadSensors, Track_nSCTHitsPlusDeadSensors, clustersMeanCenterLambda, clustersMeanFirstEngDens, clustersMeanEMProbability, clustersMeanSecondLambda, clustersMeanPresamplerFrac);
191 
192 
193  // Retrieve store.
194  ATH_MSG_DEBUG("Executing TrigTauRecMerged");
195 
196  // Get RoiDescriptor
198  if ( not roisHandle.isValid() ) {
199  ATH_MSG_ERROR("No roisHandle found");
200  return StatusCode::FAILURE;
201  }
202 
203  if(roisHandle->empty()){
204  ATH_MSG_ERROR("RoIHandle size = Zero");
205  return StatusCode::FAILURE;
206  }
207  const TrigRoiDescriptor *roiDescriptor = roisHandle->at(0);
208 
209  if ( roiDescriptor != nullptr ) {
210  ATH_MSG_DEBUG(" RoI " << *roiDescriptor);
211  }
212  else {
213  ATH_MSG_ERROR("Failed to find RoiDescriptor ");
214  calo_errors.push_back(NoROIDescr);
215  return StatusCode::FAILURE;
216  }
217 
218  // get TauJetContainer from SG
219  const xAOD::TauJetContainer *pTauContainer = nullptr;
220  const xAOD::TauTrackContainer *pTauTrackContainer = nullptr;
221 
222  if (!m_trigTauJetKey.key().empty() && m_clustersKey.key().empty()) {
224  pTauContainer = tauInputHandle.cptr();
225  ATH_MSG_DEBUG("Input TauJet Container size: " << pTauContainer->size());
226  }
227 
228  if (!m_trigTauTrackInKey.key().empty() && m_clustersKey.key().empty()) {
230  pTauTrackContainer = tauTrackInputHandle.cptr();
231  ATH_MSG_DEBUG("Tau Track Container Size " << pTauTrackContainer->size());
232  }
233 
234  // Make new container which is deep copy of that
235  std::unique_ptr<xAOD::TauJetContainer> pContainer = std::make_unique<xAOD::TauJetContainer>();
236  std::unique_ptr<xAOD::TauJetAuxContainer> pAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
237  pContainer->setStore(pAuxContainer.get());
238 
239  // Write final taujets container
241  ATH_CHECK(outputTauHandle.record(std::move(pContainer),std::move(pAuxContainer)));
242 
243  xAOD::TauJet* tau(nullptr);
244  xAOD::TauJet* p_tau(nullptr);
245 
246  ATH_CHECK(deepCopy(outputTauHandle, tau, pTauContainer));
247  if(!outputTauHandle->empty()) p_tau = outputTauHandle->back();
248 
249  std::unique_ptr<xAOD::TauTrackContainer> pTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
250  std::unique_ptr<xAOD::TauTrackAuxContainer> pTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
251  pTrackContainer->setStore(pTrackAuxContainer.get());
252 
254  ATH_MSG_DEBUG(" write: " << tauTrackHandle.key() << " = " << "..." );
255  ATH_CHECK(tauTrackHandle.record(std::move(pTrackContainer), std::move(pTrackAuxContainer)));
256 
257  xAOD::TauTrack* tautrack(nullptr);
258 
259  ATH_CHECK(deepCopy(tauTrackHandle, tautrack, pTauTrackContainer));
260 
261  if(!m_trigTauTrackInKey.key().empty() && m_clustersKey.key().empty()){
262  p_tau->clearTauTrackLinks();
263  }
264 
265  const xAOD::CaloClusterContainer *RoICaloClusterContainer = nullptr;
266 
267  if(!m_clustersKey.key().empty()){
268  // Retrieve Calocluster container
270  CHECK( CCContainerHandle.isValid() );
271 
272  RoICaloClusterContainer = CCContainerHandle.get();
273 
274  if(RoICaloClusterContainer != nullptr) {
275  ATH_MSG_DEBUG( "CaloCluster container found of size: " << RoICaloClusterContainer->size());
276  //If size is zero, don't stop just continue to produce empty TauJetCollection
277  if(RoICaloClusterContainer->empty()) {
278  calo_errors.push_back(NoClustCont);
279  }
280  }
281  else {
282  ATH_MSG_ERROR( "no CaloCluster container found " );
283  calo_errors.push_back(NoClustCont);
284  return StatusCode::FAILURE;
285  }
286 
287  if(p_tau==nullptr){
288  p_tau = new xAOD::TauJet();
289  outputTauHandle->push_back(p_tau);
290  p_tau->setROIWord(roiDescriptor->roiWord());
291  }
292 
293  std::unique_ptr<xAOD::JetContainer> theJetContainer{std::make_unique<xAOD::JetContainer>()};
294  std::unique_ptr<xAOD::JetAuxContainer> theJetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
295 
296  theJetContainer->setStore(theJetAuxContainer.get());
297 
298  xAOD::Jet *aJet = new xAOD::Jet;
299 
300  theJetContainer->push_back(aJet);
301 
302  // Build the jet, also keep track of the kinematics by hand
303  // We are using calibrated clusters, we need to keep track of this
305 
306  // Make a minimal effort to speed things up ;)
307  // Eventually, want to use FastJet here?
308  TLorentzVector myCluster;
309  TLorentzVector TauBarycenter(0., 0., 0., 0.);
310 
312  for (clusterIt=RoICaloClusterContainer->begin(); clusterIt != RoICaloClusterContainer->end(); ++clusterIt) {
313  ATH_MSG_DEBUG(" Cluster (e, eta, phi) : ("<< (*clusterIt)->e() << " , " <<(*clusterIt)->eta()<<" , "<<(*clusterIt)->phi()<< " )");
314 
315  if((*clusterIt)->e() < 0)
316  {
317  ATH_MSG_DEBUG(" Negative energy cluster is rejected");
318  continue;
319  }
320 
321  myCluster.SetPtEtaPhiE((*clusterIt)->pt(), (*clusterIt)->eta(), (*clusterIt)->phi(), (*clusterIt)->e());
322  aJet->addConstituent(*clusterIt);
323 
324  TauBarycenter += myCluster;
325  }
326 
327  aJet->setJetP4(xAOD::JetFourMom_t(TauBarycenter.Pt(), TauBarycenter.Eta(), TauBarycenter.Phi(), TauBarycenter.M() ) );
328 
329  ATH_MSG_DEBUG("jet formed"<< aJet->eta() <<" , " << aJet->phi() <<" , " << aJet->pt() << " , "<< aJet->e() );
330 
331  //-------------------------------------------------------------------------
332  // using Jet collection
333  // setup tau candidate structure
334  //-------------------------------------------------------------------------
335 
336  p_tau->setJet(theJetContainer.get(), aJet);
337 
338  if(aJet->e()<=0) {
339  ATH_MSG_DEBUG( "Roi: changing eta due to energy " << aJet->e() );
340  p_tau->setP4(p_tau->pt(), roiDescriptor->eta(), roiDescriptor->phi(), p_tau->m());
341  ATH_MSG_DEBUG( "Roi: " << roiDescriptor->roiId() << " Tau eta: " << p_tau->eta() << " Tau phi: " << p_tau->phi() );
342  }
343 
344  // Save Outputs
346  CHECK( outTauSeedHandle.record( std::move( theJetContainer ), std::move( theJetAuxContainer ) ) );
347  }
348 
349  //Check if jetLink is valid for all taus
350  CHECK(p_tau->jetLink().isValid());
351 
352  // get TrackContainer
353  if(!m_tracksKey.key().empty()){
355 
356  const xAOD::TrackParticleContainer *RoITrackParticleContainer = nullptr;
357 
358  if ( !TPContainerHandle.isValid() ) {
359  ATH_MSG_DEBUG(" No Track container found.");
360  track_errors.push_back(NoTrkCont);
361  }
362  else {
363  RoITrackParticleContainer = TPContainerHandle.get();
364  ATH_MSG_DEBUG(" Size of vector Track container is " << RoITrackParticleContainer->size());
365  if(RoITrackParticleContainer != nullptr) nTracks = RoITrackParticleContainer->size();
366  }
367  }
368 
369  const xAOD::VertexContainer* RoIVxContainer = nullptr;
370 
371  // get Vertex Container
372  if(!m_vertexKey.key().empty()){
374 
375  if( !VertexContainerHandle.isValid() ) {
376  ATH_MSG_DEBUG(" No VxContainers retrieved for the trigger element");
377  track_errors.push_back(NoVtxCont);
378  }
379  else {
380  RoIVxContainer = VertexContainerHandle.get();
381  ATH_MSG_DEBUG(" Size of vector Vertex container " << RoIVxContainer->size());
382  }
383  }
384 
385  ATH_MSG_DEBUG(" roidescriptor roiword " << roiDescriptor->roiWord() << " saved " << p_tau->ROIWord() );
386 
387  //-------------------------------------------------------------------------
388  // loop over booked tau tools
389  //-------------------------------------------------------------------------
390 
391  StatusCode processStatus = StatusCode::SUCCESS;
392 
393  // dummy container passed to TauVertexVariables, not used in trigger though
394  xAOD::VertexContainer dummyVxCont;
395 
396  for (const auto& tool: m_vertexFinderTools){
397  ATH_MSG_DEBUG("Starting Tool: " << tool->name() );
398 
399  processStatus = tool->executeVertexFinder(*p_tau,RoIVxContainer);
400 
401  if ( !processStatus.isFailure() ) {
402  ATH_MSG_DEBUG(" "<< tool->name() << " executed successfully ");
403  } else {
404  ATH_MSG_DEBUG(" "<< tool->name() << " execution failed ");
405  break;
406  }
407 
408  }
409 
410  if ( !processStatus.isFailure() ) {
411  ATH_MSG_DEBUG("Starting Tool: " << m_commonTools[0]->name() );
412  processStatus = m_commonTools[0]->execute( *p_tau);
413  }
414 
415  for (const auto& tool: m_trackFinderTools){
416 
417  if( !processStatus.isFailure() ) ATH_MSG_DEBUG("Starting Tool: " << tool->name() );
418  else break;
419 
420  processStatus = tool->executeTrackFinder(*p_tau, *tauTrackHandle);
421 
422  if ( !processStatus.isFailure() ) {
423  ATH_MSG_DEBUG(" "<< tool->name() << " executed successfully ");
424  } else {
425  ATH_MSG_DEBUG(" "<< tool->name() << " execution failed ");
426  break;
427  }
428 
429  }
430 
431  for (unsigned int i=1; i< m_commonTools.size(); i++) {
432 
433  if( !processStatus.isFailure() ) ATH_MSG_DEBUG("Starting Tool: " << m_commonTools[i]->name() );
434  else break;
435 
436  processStatus = m_commonTools[i]->execute(*p_tau);
437 
438  if ( !processStatus.isFailure() ) {
439  ATH_MSG_DEBUG(" "<< m_commonTools[i]->name() << " executed successfully ");
440  } else {
441  ATH_MSG_DEBUG(" "<< m_commonTools[i]->name() << " execution failed ");
442  break;
443  }
444 
445  }
446 
447  for (const auto& tool: m_vertexVarsTools){
448 
449  if( !processStatus.isFailure() ) ATH_MSG_DEBUG("Starting Tool: " << tool->name() );
450  else break;
451 
452  processStatus = tool->executeVertexVariables(*p_tau, dummyVxCont);
453 
454  if ( !processStatus.isFailure() ) {
455  ATH_MSG_DEBUG(" "<< tool->name() << " executed successfully ");
456  } else {
457  ATH_MSG_DEBUG(" "<< tool->name() << " execution failed ");
458  break;
459  }
460 
461  }
462 
463  for (const auto& tool: m_idTools) {
464 
465  if( !processStatus.isFailure() ) ATH_MSG_DEBUG("Starting Tool: " << tool->name() );
466  else break;
467 
468  processStatus = tool->execute(*p_tau);
469 
470  if ( !processStatus.isFailure() ) {
471  ATH_MSG_DEBUG(" "<< tool->name() << " executed successfully ");
472  } else {
473  ATH_MSG_DEBUG(" "<< tool->name() << " execution failed ");
474  break;
475  }
476 
477  }
478 
479  ATH_MSG_DEBUG("This tau has " << p_tau->allTracks() << " tracks linked");
480 
481  //check status
482  if ( !processStatus.isSuccess() ) { // some problem
483  ATH_MSG_DEBUG("The tau object has NOT been registered in the tau container");
484 
485  xAOD::TauJet* bad_tau = outputTauHandle->back();
486  ATH_MSG_DEBUG("Deleting " << bad_tau->nAllTracks() << " tracks associated with tau");
487  tauTrackHandle->erase(tauTrackHandle->end()-bad_tau->nAllTracks(), tauTrackHandle->end());
488 
489  outputTauHandle->pop_back();
490 
491  ATH_MSG_DEBUG("Clean up done after jet seed");
492  }
493  else {
494 
495  float fJetEnergy = (*p_tau->jetLink())->e();
496  ATH_MSG_DEBUG("Roi: jet e "<< fJetEnergy);
497 
498  if( fJetEnergy < 0.00001 ) {
499  ATH_MSG_DEBUG("Roi: changing eta phi to L1 ones due to energy negative (PxPyPzE flips eta and phi)");
500  ATH_MSG_DEBUG("Roi: this is probably not needed anymore, method PxPyPzE has been corrected");
501 
502  p_tau->setP4(p_tau->pt(), roiDescriptor->eta(), roiDescriptor->phi(), p_tau->m());
503 
504  ATH_MSG_DEBUG("Roi: " << roiDescriptor->roiId()
505  << " Tau eta: " << p_tau->eta()
506  << " Tau phi: " << p_tau->phi()
507  << " Tau pT : "<< p_tau->pt());
508  }
509 
510  // get tau detail variables for Monitoring
511 
512  numTrack = p_tau->nTracks();
513  nWideTrk = p_tau->nTracksIsolation();
515  p_tau->detail(xAOD::TauJetParameters::nChargedTracks, nTracks);
517  p_tau->detail(xAOD::TauJetParameters::etOverPtLeadTrk, etovPtLead);
520  p_tau->detail(xAOD::TauJetParameters::isolFrac, IsoFrac);
524  p_tau->detail(xAOD::TauJetParameters::dRmax, dRmax);
526 
532 
534  p_tau->detail(xAOD::TauJetParameters::etEMAtEMScale, EtEm);
535  EtEm /= Gaudi::Units::GeV;
536  p_tau->detail(xAOD::TauJetParameters::etHadAtEMScale, EtHad);
537  EtHad /= Gaudi::Units::GeV;
538  Et = EtEm + EtHad;
539  EtFinal = p_tau->pt()/Gaudi::Units::GeV;
540 
541  EtaEF = p_tau->eta();
542  PhiEF = p_tau->phi();
543 
544  if( Et !=0) EMFrac = EtEm/ Et ;
545 
546  EtaL1 = roiDescriptor->eta();
547  PhiL1 = roiDescriptor->phi();
548  dEta = EtaEF - roiDescriptor->eta();
549  dPhi = PhiEF - roiDescriptor->phi();
550  if(dPhi<-M_PI) dPhi += 2.0*M_PI;
551  if(dPhi>M_PI) dPhi -= 2.0*M_PI;
552 
553 
554  float pre_mEflowApprox;
555  p_tau->detail(xAOD::TauJetParameters::mEflowApprox, pre_mEflowApprox);
556  mEflowApprox = std::log10(std::max(pre_mEflowApprox, 140.0f));
557 
558  float pre_ptRatioEflowApprox;
559  p_tau->detail(xAOD::TauJetParameters::ptRatioEflowApprox, pre_ptRatioEflowApprox);
560  ptRatioEflowApprox = std::min(pre_ptRatioEflowApprox, 4.0f);
561 
562  pt_jetseed_log = std::log10(p_tau->ptJetSeed());
563 
564  ptDetectorAxis = std::min(p_tau->ptDetectorAxis() / 1000.0, 10000.0);
565  ptDetectorAxis_log = std::log10(std::min(p_tau->ptDetectorAxis() / 1000.0, 10000.0));
566 
567  etaDetectorAxis = p_tau->etaDetectorAxis();
568 
569  if( p_tau->nTracks() > 0 ) {
570  ipSigLeadTrk = std::abs(p_tau->track(0)->d0SigTJVA());
571  }
572 
573  // track variables monitoring
574  for( auto track : p_tau->allTracks()){
575 
576  RNN_tracknumber += 1;
577  track_pt_log.push_back(std::log10( track->pt()));
578  track_dEta.push_back(track->eta()- p_tau->eta());
579  track_dPhi.push_back(track->p4().DeltaPhi(p_tau->p4()));
580  track_z0sinthetaTJVA_abs_log.push_back(track->z0sinthetaTJVA());
581  track_d0_abs_log.push_back(std::log10( std::abs(track->track()->d0()) + 1e-6));
582 
583  uint8_t inner_pixel_hits, inner_pixel_exp;
584  const auto success1_innerPixel_hits = track->track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
585  const auto success2_innerPixel_exp = track->track()->summaryValue(inner_pixel_exp, xAOD::expectInnermostPixelLayerHit);
586  float nIBLHitsAndExp = -999;
587  if (success1_innerPixel_hits && success2_innerPixel_exp) {nIBLHitsAndExp=inner_pixel_exp ? inner_pixel_hits : 1.;};
588  track_nIBLHitsAndExp.push_back(nIBLHitsAndExp);
589 
590  uint8_t pixel_hits, pixel_dead;
591  const auto success1_pixel_hits = track->track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
592  const auto success2_pixel_dead = track->track()->summaryValue(pixel_dead, xAOD::numberOfPixelDeadSensors);
593  float nPixelHitsPlusDeadSensor = -999;
594  if (success1_pixel_hits && success2_pixel_dead) {nPixelHitsPlusDeadSensor=pixel_hits + pixel_dead;};
595  track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
596 
597  uint8_t sct_hits, sct_dead;
598  const auto success1_sct_hits = track->track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
599  const auto success2_sct_dead = track->track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
600  float nSCTHitsPlusDeadSensors = -999;
601  if (success1_sct_hits && success2_sct_dead) {nSCTHitsPlusDeadSensors=sct_hits + sct_dead;};
602  track_nSCTHitsPlusDeadSensors.push_back(nSCTHitsPlusDeadSensors);
603  }
604 
605  RNN_clusternumber = p_tau->clusters().size();
606 
607  // cluster variables monitoring
608  for ( auto cluster : p_tau->clusters()){
609 
610  auto cls = dynamic_cast<const xAOD::CaloCluster*>(cluster);
611 
612  cluster_et_log.push_back(std::log10( cls->et()));
613  cluster_dEta.push_back( cls->eta()- p_tau->eta());
614  cluster_dPhi.push_back( cls ->p4().DeltaPhi(p_tau->p4()));
615 
616  double log_second_R = -999.;
617  const auto success_SECOND_R = cls->retrieveMoment(xAOD::CaloCluster::MomentType::SECOND_R,log_second_R);
618  if (success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
619  cluster_log_SECOND_R.push_back(log_second_R);
620 
621  double second_lambda = -999.;
622  const auto success_SECOND_LAMBDA = cls->retrieveMoment(xAOD::CaloCluster::MomentType::SECOND_LAMBDA, second_lambda);
623  if (success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
624  cluster_SECOND_LAMBDA.push_back(second_lambda);
625 
626  double center_lambda = -999.;
627  const auto success_CENTER_LAMBDA = cls->retrieveMoment(xAOD::CaloCluster::MomentType::CENTER_LAMBDA, center_lambda);
628  if (success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1e-6);
629  cluster_CENTER_LAMBDA.push_back(center_lambda);
630  }
631 
632  // monitoring tau vertex
633  if( p_tau->vertexLink().isValid() && p_tau->vertex() && p_tau->vertex()->vertexType() != xAOD::VxType::NoVtx ){
634  EF_vertex_x = p_tau->vertex()->x();
635  EF_vertex_y = p_tau->vertex()->y();
636  EF_vertex_z = p_tau->vertex()->z();
637  }
638 
639  ATH_MSG_DEBUG(" Roi: " << roiDescriptor->roiId()
640  << " Tau being saved eta: " << EtaEF << " Tau phi: " << PhiEF
641  << " wrt L1 dEta "<< dEta<<" dPhi "<<dPhi
642  << " Tau Et (GeV): "<< EtFinal);
643 
644  // monitor RNN score
645  if(p_tau->hasDiscriminant(xAOD::TauJetParameters::RNNJetScore)){
646  if(p_tau->nTracks() == 0){
647  RNNJetScore_0p = p_tau->discriminant(xAOD::TauJetParameters::RNNJetScore);
648  } else if (p_tau->nTracks() == 1) {
649  RNNJetScore_1p = p_tau->discriminant(xAOD::TauJetParameters::RNNJetScore);
650  } else {
651  RNNJetScore_mp = p_tau->discriminant(xAOD::TauJetParameters::RNNJetScore);
652  }
653  }
654 
655  if(p_tau->hasDiscriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans)){
656  if(p_tau->nTracks() == 0){
657  RNNJetScoreSigTrans_0p = p_tau->discriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans);
658  } else if (p_tau->nTracks() == 1){
659  RNNJetScoreSigTrans_1p = p_tau->discriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans);
660  } else {
661  RNNJetScoreSigTrans_mp = p_tau->discriminant(xAOD::TauJetParameters::RNNJetScoreSigTrans);
662  }
663  }
664 
665  // monitor BRT variables
666 
667  // use dummy variable to temporarily store results retrieved from tau EDM before final assignment
668  float avariable = 0.;
669 
670  bool test = p_tau->detail(xAOD::TauJetParameters::ClustersMeanCenterLambda, avariable);
671  if(test) clustersMeanCenterLambda = avariable;
672 
673  test = p_tau->detail(xAOD::TauJetParameters::ClustersMeanFirstEngDens, avariable);
674  if(test) clustersMeanFirstEngDens = avariable;
675 
676  test = p_tau->detail(xAOD::TauJetParameters::ClustersMeanEMProbability, avariable);
677  if(test) clustersMeanEMProbability = avariable;
678 
679  test = p_tau->detail(xAOD::TauJetParameters::ClustersMeanSecondLambda, avariable);
680  if(test) clustersMeanSecondLambda = avariable;
681 
682  test = p_tau->detail(xAOD::TauJetParameters::ClustersMeanPresamplerFrac, avariable);
683  if(test) clustersMeanPresamplerFrac = avariable;
684 
685  ++Ncand;
686  }
687 
688  //-------------------------------------------------------------------------
689  // all done, register the tau Container in TDS.
690  //-------------------------------------------------------------------------
691 
692  ATH_MSG_DEBUG("Output TauJetContainer size:"<< outputTauHandle->size());
693  ATH_MSG_DEBUG("Output TauJetTrackContainer size:"<< tauTrackHandle->size());
694 
695 
696  ATH_MSG_DEBUG("Recorded a tau container: HLT_TrigTauRecMerged");
697  ATH_MSG_DEBUG("the tau object has been registered in the tau container");
698 
699  return StatusCode::SUCCESS;
700 }

◆ 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("TrigTauRecMerged::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) {
49  ATH_CHECK( tool.retrieve() );
50  }
51 
52  for(const auto& tool : m_vertexFinderTools) {
53  ATH_CHECK( tool.retrieve() );
54  }
55 
56  for(const auto& tool : m_trackFinderTools) {
57  ATH_CHECK( tool.retrieve() );
58  }
59 
60  for(const auto& tool : m_vertexVarsTools) {
61  ATH_CHECK( tool.retrieve() );
62  }
63 
64  for(const auto& tool : m_idTools) {
65  ATH_CHECK( tool.retrieve() );
66  }
67 
68  if ( not m_monTool.name().empty() ) {
69  ATH_CHECK( m_monTool.retrieve() );
70  }
71 
72  ATH_MSG_DEBUG("Initialising Handle Keys");
79  ATH_CHECK(m_trigtauSeedOutKey.initialize());
80  ATH_CHECK(m_trigtauRecOutKey.initialize());
81  ATH_CHECK(m_trigtauTrkOutKey.initialize());
82 
83  return StatusCode::SUCCESS;
84 }

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

SG::ReadHandleKey< xAOD::CaloClusterContainer > TrigTauRecMerged::m_clustersKey { this, "clustersKey", "CaloClusters", "caloclusters in view" }
private

Definition at line 73 of file TrigTauRecMerged.h.

◆ m_commonTools

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

internal tool store

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

◆ m_monTool

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

Definition at line 69 of file TrigTauRecMerged.h.

◆ m_roIInputKey

SG::ReadHandleKey< TrigRoiDescriptorCollection > TrigTauRecMerged::m_roIInputKey { this,"RoIInputKey","InputRoI","Input RoI name"}
private

Definition at line 72 of file TrigTauRecMerged.h.

◆ m_trackFinderTools

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

Definition at line 62 of file TrigTauRecMerged.h.

◆ m_tracksKey

SG::ReadHandleKey< xAOD::TrackParticleContainer > TrigTauRecMerged::m_tracksKey { this, "Key_trackPartInputContainer", "InDetTrackParticles", "input track particle container key"}
private

Definition at line 74 of file TrigTauRecMerged.h.

◆ m_trigTauJetKey

SG::ReadHandleKey< xAOD::TauJetContainer> TrigTauRecMerged::m_trigTauJetKey { this, "Key_trigTauJetInputContainer", "HLT_taujet", "input taujet container" }
private

Definition at line 76 of file TrigTauRecMerged.h.

◆ m_trigtauRecOutKey

SG::WriteHandleKey< xAOD::TauJetContainer > TrigTauRecMerged::m_trigtauRecOutKey {this,"Key_trigTauJetOutputContainer","HLT_taujet","Output taujet container"}
private

Definition at line 80 of file TrigTauRecMerged.h.

◆ m_trigtauSeedOutKey

SG::WriteHandleKey< xAOD::JetContainer > TrigTauRecMerged::m_trigtauSeedOutKey { this,"Key_trigJetSeedOutputKey","HLT_jet_seed","Key for output jets which are seed for tau jets"}
private

Definition at line 79 of file TrigTauRecMerged.h.

◆ m_trigTauTrackInKey

SG::ReadHandleKey< xAOD::TauTrackContainer> TrigTauRecMerged::m_trigTauTrackInKey { this, "Key_trigTauTrackInputContainer", "HLT_tautrack_input", "input tautrack container" }
private

Definition at line 77 of file TrigTauRecMerged.h.

◆ m_trigtauTrkOutKey

SG::WriteHandleKey< xAOD::TauTrackContainer > TrigTauRecMerged::m_trigtauTrkOutKey {this,"Key_trigTauTrackOutputContainer","HLT_tautrack","Output tautrack container"}
private

Definition at line 81 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, "VFTools", {}, "Vertex Finder tools"}
private

Definition at line 61 of file TrigTauRecMerged.h.

◆ m_vertexKey

SG::ReadHandleKey< xAOD::VertexContainer> TrigTauRecMerged::m_vertexKey { this, "Key_vertexInputContainer", "HLT_IDVertex_Tau", "input vertex container key"}
private

Definition at line 75 of file TrigTauRecMerged.h.

◆ m_vertexVarsTools

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

Definition at line 63 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:
TrigTauRecMerged::NoClustKey
@ NoClustKey
Definition: TrigTauRecMerged.h:46
xAOD::TauJetParameters::RNNJetScoreSigTrans
@ RNNJetScoreSigTrans
RNN score which is signal transformed/flattened.
Definition: TauDefs.h:92
TauGNNUtils::Variables::Cluster::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:826
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
TrigTauRecMerged::NoClustCont
@ NoClustCont
Definition: TrigTauRecMerged.h:45
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
TrigTauRecMerged::m_idTools
const ToolHandleArray< ITauToolBase > m_idTools
Definition: TrigTauRecMerged.h:64
TrigTauRecMerged::NoJetAttach
@ NoJetAttach
Definition: TrigTauRecMerged.h:48
TrigTauRecMerged::m_commonTools
const ToolHandleArray< ITauToolBase > m_commonTools
internal tool store
Definition: TrigTauRecMerged.h:60
xAOD::TauJetParameters::trFlightPathSig
@ trFlightPathSig
Definition: TauDefs.h:163
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
TrigTauRecMerged::NoROIDescr
@ NoROIDescr
Definition: TrigTauRecMerged.h:42
xAOD::TauJet_v3::nAllTracks
size_t nAllTracks() const
Definition: TauJet_v3.cxx:554
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:61
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
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
TrigTauRecMerged::m_clustersKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clustersKey
Definition: TrigTauRecMerged.h:73
xAOD::TauJetParameters::ClustersMeanPresamplerFrac
@ ClustersMeanPresamplerFrac
Definition: TauDefs.h:316
xAOD::TauJetParameters::mEflowApprox
@ mEflowApprox
Definition: TauDefs.h:292
xAOD::Jet_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: Jet_v1.cxx:54
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
xAOD::expectInnermostPixelLayerHit
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
Definition: TrackingPrimitives.h:236
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:146
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
xAOD::TauJetParameters::ptRatioEflowApprox
@ ptRatioEflowApprox
Definition: TauDefs.h:293
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::TauJetParameters::ipSigLeadTrk
@ ipSigLeadTrk
Definition: TauDefs.h:160
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
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
xAOD::Jet_v1::setJetP4
void setJetP4(const JetFourMom_t &p4)
Definition: Jet_v1.cxx:171
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:490
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
TrigTauRecMerged::m_trigtauSeedOutKey
SG::WriteHandleKey< xAOD::JetContainer > m_trigtauSeedOutKey
Definition: TrigTauRecMerged.h:79
xAOD::TauJetParameters::etHadAtEMScale
@ etHadAtEMScale
Get Hadronic energy at EM scale.
Definition: TauDefs.h:196
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:63
TrigTauRecMerged::m_trigtauRecOutKey
SG::WriteHandleKey< xAOD::TauJetContainer > m_trigtauRecOutKey
Definition: TrigTauRecMerged.h:80
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
xAOD::nCells
setRawEt setRawPhi nCells
Definition: TrigCaloCluster_v1.cxx:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
TrigTauRecMerged::m_vertexKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexKey
Definition: TrigTauRecMerged.h:75
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
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:47
xAOD::TauJetParameters::trkAvgDist
@ trkAvgDist
Get calibrated EM transverse energy (DEPRECATED since r19)
Definition: TauDefs.h:214
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:530
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
xAOD::TauJetParameters::nChargedTracks
@ nChargedTracks
Definition: TauDefs.h:322
xAOD::Jet_v1::setConstituentsSignalState
void setConstituentsSignalState(JetConstitScale t)
Set the state at which constituents were when this jet was found. This function is called by jet buil...
Definition: Jet_v1.cxx:141
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::TauJetParameters::etOverPtLeadTrk
@ etOverPtLeadTrk
Definition: TauDefs.h:158
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::TauJet
TauJet_v3 TauJet
Definition of the current "tau version".
Definition: Event/xAOD/xAODTau/xAODTau/TauJet.h:17
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:821
TrigTauRecMerged::NoHLTtauAttach
@ NoHLTtauAttach
Definition: TrigTauRecMerged.h:49
xAOD::CalibratedJetConstituent
@ CalibratedJetConstituent
Definition: JetTypes.h:22
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?
TrigTauRecMerged::m_roIInputKey
SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roIInputKey
Definition: TrigTauRecMerged.h:72
TauJetParameters::emRadius
@ emRadius
Definition: TauJetParameters.h:149
xAOD::Jet_v1::addConstituent
void addConstituent(const ElementLink< IParticleContainer > &link, float weight=1.0)
Add a constituent directly in the ElementLink format.
Definition: Jet_v1.cxx:111
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
xAOD::Jet_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: Jet_v1.cxx:49
min
#define min(a, b)
Definition: cfImp.cxx:40
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
TrigTauRecMerged::NoHLTtauDetAttach
@ NoHLTtauDetAttach
Definition: TrigTauRecMerged.h:50
TrigTauRecMerged::NoVtxCont
@ NoVtxCont
Definition: TrigTauRecMerged.h:56
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
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:816
TrigTauRecMerged::m_trigTauJetKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_trigTauJetKey
Definition: TrigTauRecMerged.h:76
TrigTauRecMerged::m_trackFinderTools
const ToolHandleArray< ITauToolBase > m_trackFinderTools
Definition: TrigTauRecMerged.h:62
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:43
xAOD::TauJetParameters::RNNJetScore
@ RNNJetScore
RNN score for Jet rejection (not transformed)
Definition: TauDefs.h:90
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.PyAthena.v
v
Definition: PyAthena.py:157
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
xAOD::TauJetParameters::numCells
@ numCells
Definition: TauDefs.h:171
xAOD::TauJetParameters::innerTrkAvgDist
@ innerTrkAvgDist
Definition: TauDefs.h:287
h
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
TauGNNUtils::Variables::Track::nSCTHitsPlusDeadSensors
bool nSCTHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:573
TrigTauRecMerged::m_trigTauTrackInKey
SG::ReadHandleKey< xAOD::TauTrackContainer > m_trigTauTrackInKey
Definition: TrigTauRecMerged.h:77
xAOD::Jet_v1::e
virtual double e() const
The total energy of the particle.
Definition: Jet_v1.cxx:63
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:55
TrigTauRecMerged::NoHLTtauXdetAttach
@ NoHLTtauXdetAttach
Definition: TrigTauRecMerged.h:51
TrigTauRecMerged::EmptyCellCont
@ EmptyCellCont
Definition: TrigTauRecMerged.h:44
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:616
xAOD::TauJetParameters::isolFrac
@ isolFrac
Get isolation fraction.
Definition: TauDefs.h:198
RoiDescriptor::eta
virtual double eta() const override final
Definition: RoiDescriptor.h:101
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
TrigTauRecMerged::deepCopy
StatusCode deepCopy(T *&containerOut, U *&containerStoreOut, const V *dummyContainerType, const T *&oldContainer)
TrigTauRecMerged::m_trigtauTrkOutKey
SG::WriteHandleKey< xAOD::TauTrackContainer > m_trigtauTrkOutKey
Definition: TrigTauRecMerged.h:81
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.
xAOD::TauJetParameters::SumPtTrkFrac
@ SumPtTrkFrac
Definition: TauDefs.h:289
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:341
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:525
xAOD::TauJetParameters::PSSFraction
@ PSSFraction
Definition: TauDefs.h:277
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
xAOD::Jet_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition: Jet_v1.cxx:44
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx: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:69
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::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
xAOD::TauJetParameters::EMPOverTrkSysP
@ EMPOverTrkSysP
Definition: TauDefs.h:279
TauGNNUtils::Variables::Track::nIBLHitsAndExp
bool nIBLHitsAndExp(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:557
xAOD::TauJetParameters::etEMAtEMScale
@ etEMAtEMScale
Get EM energy at EM scale.
Definition: TauDefs.h:194
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
TrigTauRecMerged::m_tracksKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_tracksKey
Definition: TrigTauRecMerged.h:74
ServiceHandle< ICondSvc >