Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
LVL1::eFEXegAlgo Class Reference

The eFEXegAlgo class calculates the egamma TOB variables: Reta, Rhad and Wstot. More...

#include <eFEXegAlgo.h>

Inheritance diagram for LVL1::eFEXegAlgo:
Collaboration diagram for LVL1::eFEXegAlgo:

Public Member Functions

 eFEXegAlgo (const std::string &type, const std::string &name, const IInterface *parent)
 Constructors. More...
 
virtual StatusCode initialize () override
 standard Athena-Algorithm method More...
 
virtual ~eFEXegAlgo ()
 Destructor. More...
 
virtual StatusCode safetyTest () const override
 
virtual void setup (int inputTable[3][3], int efex_id, int fpga_id, int central_eta) override
 
virtual void getReta (std::vector< unsigned int > &) override
 
virtual void getRhad (std::vector< unsigned int > &) override
 
virtual void getWstot (std::vector< unsigned int > &) override
 
virtual void getRealPhi (float &phi) override
 
virtual void getRealEta (float &eta) override
 
virtual std::unique_ptr< eFEXegTOBgeteFEXegTOB () override
 
virtual void getClusterCells (std::vector< unsigned int > &cellETs) override
 Return cell ET values used in cluster. More...
 
virtual unsigned int getET () override
 
virtual unsigned int dmCorrection (unsigned int ET, unsigned int layer) override
 
virtual void getWindowET (int layer, int jPhi, int SCID, unsigned int &) override
 
virtual bool hasSeed () const override
 
virtual unsigned int getSeed () const override
 
virtual unsigned int getUnD () const override
 
virtual void getCoreEMTowerET (unsigned int &et) override
 
virtual void getCoreHADTowerET (unsigned int &et) override
 
virtual void getSums (unsigned int seed, bool UnD, std::vector< unsigned int > &RetaSums, std::vector< unsigned int > &RhadSums, std::vector< unsigned int > &WstotSums) override
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

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

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void setSeed ()
 
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

bool m_seed_UnD = false
 
unsigned int m_seedID = 999
 
int m_eFEXegAlgoTowerID [3][3] {}
 
int m_efexid {}
 
int m_fpgaid {}
 
int m_central_eta {}
 
bool m_hasSeed {}
 
Gaudi::Property< bool > m_dmCorr {this, "dmCorr", false, "Enable dead material correctionst"}
 
Gaudi::Property< int > m_algoVersion {this, "algoVersion", 0, "AlgoVersion, part of the L1Menu spec"}
 
SG::ReadHandleKey< LVL1::eTowerContainerm_eTowerContainerKey {this, "MyETowers", "eTowerContainer", "Input container for eTowers"}
 
SG::ReadCondHandleKey< CondAttrListCollectionm_dmCorrectionsKey
 
std::mutex m_dmCorrectionsMutex
 
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
 

Static Private Attributes

static thread_local bool s_dmCorrectionsLoaded = false
 

Detailed Description

The eFEXegAlgo class calculates the egamma TOB variables: Reta, Rhad and Wstot.

Definition at line 30 of file eFEXegAlgo.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ eFEXegAlgo()

LVL1::eFEXegAlgo::eFEXegAlgo ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Constructors.

Definition at line 30 of file eFEXegAlgo.cxx.

30  :
32  {
33  declareInterface<IeFEXegAlgo>(this);
34  }

◆ ~eFEXegAlgo()

LVL1::eFEXegAlgo::~eFEXegAlgo ( )
virtual

Destructor.

Definition at line 37 of file eFEXegAlgo.cxx.

38  {
39  }

Member Function Documentation

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ dmCorrection()

unsigned int LVL1::eFEXegAlgo::dmCorrection ( unsigned int  ET,
unsigned int  layer 
)
overridevirtual

Check corrections are required and layer is valid, otherwise do nothing

Get correction factor Start by calculating RoI |eta| with range 0-24

Retrieve the factor from table (eventually from DB)

Calculate correction Factors are 7 bit words, highest bit corresponding to the most significant term in the correction (ET/2). So we'll work backwards from the top bit (bit 6) to implement it

And this should now be the corrected ET

Implements LVL1::IeFEXegAlgo.

Definition at line 355 of file eFEXegAlgo.cxx.

355  {
357  if ( !m_dmCorr || layer > 2 ) return ET;
358 
361  int efexEta = m_efexid%3;
362  int ieta = 0;
363  if (efexEta == 2) { // Rightmost eFEX
364  // m_central_eta has range 1-4 or 1-5
365  ieta = 8 + m_fpgaid*4 + m_central_eta - 1;
366  }
367  else if (efexEta == 1 && m_fpgaid > 1) { // central eFEX, eta > 0
368  // m_central_eta has range 1-4
369  ieta = (m_fpgaid-2)*4 + m_central_eta - 1;
370  }
371  else if (efexEta == 1) { // central eFEX, eta < 0
372  // m_central_eta had range 1-4
373  ieta = (1-m_fpgaid)*4 + (4-m_central_eta);
374  }
375  else { // Leftmost eFEX
376  // m_central_eta has range 0-4 or 1-4
377  ieta = 8 + 4*(3-m_fpgaid) + (4-m_central_eta);
378  }
379 
380  if (!s_dmCorrectionsLoaded) {
381  std::lock_guard<std::mutex> lk(m_dmCorrectionsMutex); // ensure only one thread tries to load corrections
382  if (!m_dmCorrectionsKey.empty()) {
383  // replace s_corrections values with values from database ... only try this once
385  if (dmCorrections.isValid()) {
386  if(dmCorrections->size()==0 && Gaudi::Hive::currentContext().eventID().time_stamp()>1672527600) { // not an error for data before 2023 (will include MC21 and MC23a)
387  ATH_MSG_ERROR("No dead material corrections found in conditions database for this event in folder " << m_dmCorrectionsKey.key());
388  throw std::runtime_error("No dead material corrections found in database for this event");
389  }
390  for (auto itr = dmCorrections->begin(); itr != dmCorrections->end(); ++itr) {
391  if (itr->first < 25 || itr->first >= 50) continue;
392  s_corrections[0][itr->first - 25] = itr->second["EmPS"].data<int>();
393  s_corrections[1][itr->first - 25] = itr->second["EmFR"].data<int>();
394  s_corrections[2][itr->first - 25] = itr->second["EmMD"].data<int>();
395  ATH_MSG_DEBUG("DM Correction for etaIdx=" << (itr->first - 25) << " : [" << s_corrections[0][itr->first - 25] << ","
396  << s_corrections[1][itr->first - 25] << "," << s_corrections[2][itr->first - 25] << "]" );
397  }
398  }
399  ATH_MSG_INFO("Loaded DM Corrections from database");
400  }
401  s_dmCorrectionsLoaded = true;
402  }
403 
405  unsigned int factor = s_corrections[layer][ieta];
406 
412  unsigned int correction = ET;
413  for (int bit = 6; bit >= 0; bit--) {
414  correction /= 2;
415  if (factor & (1<<bit))
416  ET += correction;
417  }
419  return ET;
420  }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getClusterCells()

void LVL1::eFEXegAlgo::getClusterCells ( std::vector< unsigned int > &  cellETs)
overridevirtual

Return cell ET values used in cluster.

Placed in its own function to allow other classes to access these

Implements LVL1::IeFEXegAlgo.

Definition at line 276 of file eFEXegAlgo.cxx.

276  {
277 
278  int phiUpDownID = 0;
279  if (m_seed_UnD) phiUpDownID = 2;
280 
281  // Initialise results vector
282  cellETs.resize(16,0);
283  // Fill vector with 2 PS cells, 6 L1, 6 L2, 2 L3
284  // Presampler
285  getWindowET(0, 1, 0, cellETs[0]);
286  getWindowET(0, phiUpDownID, 0, cellETs[1]);
287  // central phi Layer 1
288  getWindowET(1, 1, m_seedID, cellETs[2]);
289  getWindowET(1, 1, m_seedID - 1, cellETs[3]);
290  getWindowET(1, 1, m_seedID + 1, cellETs[4]);
291  // top/bottom phi Layer 1
292  getWindowET(1, phiUpDownID, m_seedID, cellETs[5]);
293  getWindowET(1, phiUpDownID, m_seedID - 1, cellETs[6]);
294  getWindowET(1, phiUpDownID, m_seedID + 1, cellETs[7]);
295  // central phi Layer 2
296  getWindowET(2, 1, m_seedID, cellETs[8]);
297  getWindowET(2, 1, m_seedID - 1, cellETs[9]);
298  getWindowET(2, 1, m_seedID + 1, cellETs[10]);
299  // top/bottom phi Layer 2
300  getWindowET(2, phiUpDownID, m_seedID, cellETs[11]);
301  getWindowET(2, phiUpDownID, m_seedID - 1, cellETs[12]);
302  getWindowET(2, phiUpDownID, m_seedID + 1, cellETs[13]);
303  // Layer 3
304  getWindowET(3, 1, 0, cellETs[14]);
305  getWindowET(3, phiUpDownID, 0, cellETs[15]);
306 
307  return;
308 
309  }

◆ getCoreEMTowerET()

void LVL1::eFEXegAlgo::getCoreEMTowerET ( unsigned int &  et)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 73 of file eFEXegAlgo.cxx.

73  {
74 
76 
77  const LVL1::eTower * tmpTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[1][1]);
78  et = tmpTower->getLayerTotalET(0) + tmpTower->getLayerTotalET(1) + tmpTower->getLayerTotalET(2) + tmpTower->getLayerTotalET(3);
79  }

◆ getCoreHADTowerET()

void LVL1::eFEXegAlgo::getCoreHADTowerET ( unsigned int &  et)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 81 of file eFEXegAlgo.cxx.

81  {
82 
84 
85  const LVL1::eTower * tmpTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[1][1]);
86  et = tmpTower->getLayerTotalET(4);
87  }

◆ geteFEXegTOB()

std::unique_ptr< eFEXegTOB > LVL1::eFEXegAlgo::geteFEXegTOB ( )
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 423 of file eFEXegAlgo.cxx.

423  {
424 
425  std::unique_ptr<eFEXegTOB> out = std::make_unique<eFEXegTOB>();
426  out->setET(getET());
427 
428  std::vector<unsigned int> temvector;
429  getWstot(temvector);
430  // For wstot, num and den seem switched around, but this is because the 'numerator' and 'denominator'
431  // mean different things at different points in the processing chain
432  // When the threshold comparison is done in the SetIsoWP function, we actually check Den/Num
433  out->setWstotNum(temvector[1]);
434  out->setWstotDen(temvector[0]);
435  getRhad(temvector);
436  out->setRhadEM(temvector[0]);
437  out->setRhadHad(temvector[1]);
438  getReta(temvector);
439  out->setRetaCore(temvector[0]);
440  out->setRetaEnv(temvector[1]);
441  out->setSeedUnD(m_seed_UnD);
442  out->setSeed(m_seedID);
443  return out;
444  }

◆ getET()

unsigned int LVL1::eFEXegAlgo::getET ( )
overridevirtual

Get cells used in cluster

Layer sums including dead material corrections

Final ET sum

Implements LVL1::IeFEXegAlgo.

Definition at line 311 of file eFEXegAlgo.cxx.

311  {
312 
314  std::vector<unsigned int> clusterCells;
315  getClusterCells(clusterCells);
316 
317 
319  unsigned int PS_ET = 0;
320 
321  if(m_algoVersion==0) {
322  PS_ET = dmCorrection(clusterCells[0], 0)
323  + dmCorrection(clusterCells[1], 0);
324  } else {
325  // 2025 algoVersion only uses 1 PS scell, except at most extreme eta values
326  PS_ET = dmCorrection(clusterCells[0], 0);
327  if ( ((m_efexid%3) == 0 && m_fpgaid == 0) || ((m_efexid%3) == 2 && m_fpgaid == 3)) {
328  PS_ET += dmCorrection(clusterCells[1], 0);
329  }
330  }
331  unsigned int L1_ET = dmCorrection(clusterCells[2], 1)
332  + dmCorrection(clusterCells[3], 1)
333  + dmCorrection(clusterCells[4], 1)
334  + dmCorrection(clusterCells[5], 1)
335  + dmCorrection(clusterCells[6], 1)
336  + dmCorrection(clusterCells[7], 1);
337  unsigned int L2_ET = dmCorrection(clusterCells[8], 2)
338  + dmCorrection(clusterCells[9], 2)
339  + dmCorrection(clusterCells[10], 2)
340  + dmCorrection(clusterCells[11], 2)
341  + dmCorrection(clusterCells[12], 2)
342  + dmCorrection(clusterCells[13], 2);
343  unsigned int L3_ET = clusterCells[14] + clusterCells[15];
344 
346  unsigned int totET = PS_ET + L1_ET + L2_ET + L3_ET;
347 
348  // overflow handling
349  if (totET > 0xffff) totET = 0xffff;
350 
351  return totET;
352 
353  }

◆ getRealEta()

void LVL1::eFEXegAlgo::getRealEta ( float &  eta)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 96 of file eFEXegAlgo.cxx.

96  {
97 
99 
100  eta = eTowerContainer->findTower(m_eFEXegAlgoTowerID[1][1])->eta() * eTowerContainer->findTower(m_eFEXegAlgoTowerID[1][1])->getPosNeg();
101 
102  }

◆ getRealPhi()

void LVL1::eFEXegAlgo::getRealPhi ( float &  phi)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 89 of file eFEXegAlgo.cxx.

89  {
90 
92  phi = eTowerContainer->findTower(m_eFEXegAlgoTowerID[1][1])->phi();
93 
94  }

◆ getReta()

void LVL1::eFEXegAlgo::getReta ( std::vector< unsigned int > &  retavec)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 104 of file eFEXegAlgo.cxx.

104  {
105 
106  unsigned int coresum = 0; // 3x2 L2 sum : core
107  unsigned int totalsum = 0; // 7x3 L2 sum : total
108  unsigned int envsum = 0; // total - core : env
109 
110  retavec.clear(); // clear the output vector before starting
111 
112  // window limits
113  int iTotalStart = m_seedID-3;
114  int iTotalEnd = m_seedID+3;
115  int iCoreStart = m_seedID-1;
116  int iCoreEnd = m_seedID+1;
117  int phiStart = -999;
118  int phiEnd = -99;
119  if (m_seed_UnD) {
120  phiStart = 1;
121  phiEnd = 2;
122  } else {
123  phiStart = 0;
124  phiEnd = 1;
125  }
126 
127  // 3x2 and 7x3 L2 sum
128  for (int i=iTotalStart; i<=iTotalEnd; ++i) { // eta
129  for(int j=0; j<=2; ++j) { // phi
130  if (i>=iCoreStart && i <= iCoreEnd && j>=phiStart && j<=phiEnd) {
131  unsigned int tmp_et; getWindowET(2,j,i,tmp_et);
132  coresum += tmp_et;
133  }
134 
135  unsigned int tmptot_et; getWindowET(2,j,i,tmptot_et);
136  totalsum += tmptot_et;
137  }
138  }
139 
140  // get environment
141  envsum = totalsum - coresum;
142 
143  // Overflow handling
144  if (coresum > 0xffff) coresum = 0xffff;
145  if (envsum > 0xffff) envsum = 0xffff;
146 
147  // Return results
148  retavec.push_back(coresum);
149  retavec.push_back(envsum);
150 
151  }

◆ getRhad()

void LVL1::eFEXegAlgo::getRhad ( std::vector< unsigned int > &  rhadvec)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 153 of file eFEXegAlgo.cxx.

153  {
154 
155  unsigned int hadsum = 0; // 3x3 Towers Had
156  unsigned int emsum = 0; // (1x3 + 3x3 + 3x3 + 1x3) SCs EM
157 
158  rhadvec.clear(); // clear the output vector before starting
159 
160  int iCoreStart = m_seedID-1;
161  int iCoreEnd = m_seedID+1;
162 
164 
165  if(m_algoVersion==0) {
166  // 3x3 Towers Had ; 1x3 L0 + 1x3 L3 EM
167  for (int i=0; i<3; ++i) { // phi
168  for (int j=0; j<=2; ++j) { // eta
169  if (((m_efexid%3 == 0) && (m_fpgaid == 0) && (m_central_eta == 0) && (j == 0)) || ((m_efexid%3 == 2) && (m_fpgaid == 3) && (m_central_eta == 5) && (j == 2))) {
170  continue;
171  } else {
172  const eTower * tTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[i][j]);
173  hadsum += tTower->getLayerTotalET(4);
174  if (j==1) {
175  emsum += ( tTower->getLayerTotalET(0) + tTower->getLayerTotalET(3) );
176  }
177  }
178  }
179  }
180 
181  // 3x3 SCs L1 and L2 sum
182  for (int i=iCoreStart; i<=iCoreEnd; ++i) { // eta
183  for(int j=0; j<=2; ++j) { // phi
184  unsigned int tmp_et_a, tmp_et_b;
185  getWindowET(1,j,i,tmp_et_a);
186  getWindowET(2,j,i,tmp_et_b);
187  emsum += ( tmp_et_a + tmp_et_b );
188  }
189  }
190  } else {
191 
192  // see slide 4 of https://indico.cern.ch/event/1513502/contributions/6389265/attachments/3019474/5326755/Rate%20Reduction%20Methods%20Overview.pdf
193  // for updated definition of rhad sum (introduced for 2025)
194 
195  // EM cluster depends on UnD flag
196  int phi2 = (m_seed_UnD > 0 ? 2 : 0);
197 
198  // 3x3 Towers Had + EM3; 1x2 L0
199  for (int i = 0; i < 3; ++i) { // phi
200  for (int j = 0; j <= 2; ++j) { // eta
201  if (((m_efexid % 3 == 0) && (m_fpgaid == 0) && (m_central_eta == 0) && (j == 0)) ||
202  ((m_efexid % 3 == 2) && (m_fpgaid == 3) && (m_central_eta == 5) && (j == 2))) {
203  continue;
204  } else {
205  const eTower *tTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[i][j]);
206  hadsum += tTower->getLayerTotalET(4) + tTower->getLayerTotalET(3);
207  // For PS add central tower + UnD phi neighbour
208  if (j == 1 && (i == 1 || i == phi2)) {
209  emsum += (tTower->getLayerTotalET(0));
210  }
211  }
212  }
213  }
214 
215  // 3x2 SCs L1 and L2 sum, so phi range depends on UnD flag
216  int phiStart = 0;
217  int phiEnd = 1;
218  if (m_seed_UnD > 0) {
219  phiStart = 1;
220  phiEnd = 2;
221  }
222  for (int i = iCoreStart; i <= iCoreEnd; ++i) { // eta
223  for (int j = phiStart; j <= phiEnd; ++j) { // phi
224  unsigned int tmp_et_a, tmp_et_b;
225  getWindowET(1, j, i, tmp_et_a);
226  getWindowET(2, j, i, tmp_et_b);
227  emsum += (tmp_et_a + tmp_et_b);
228  }
229  }
230  }
231  // Overflow handling
232  if (emsum > 0xffff) emsum = 0xffff;
233  if (hadsum > 0xffff) hadsum = 0xffff;
234 
235  // Return results
236  rhadvec.push_back(emsum);
237  rhadvec.push_back(hadsum);
238 
239  }

◆ getSeed()

virtual unsigned int LVL1::eFEXegAlgo::getSeed ( ) const
inlineoverridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 56 of file eFEXegAlgo.h.

56 {return m_seedID;};

◆ getSums()

void LVL1::eFEXegAlgo::getSums ( unsigned int  seed,
bool  UnD,
std::vector< unsigned int > &  RetaSums,
std::vector< unsigned int > &  RhadSums,
std::vector< unsigned int > &  WstotSums 
)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 491 of file eFEXegAlgo.cxx.

495  {
496  // Set seed parameters to supplied values
497  m_seed_UnD = UnD;
498  m_seedID = seed;
499  m_hasSeed = true;
500 
501  // Now just call the 3 discriminant calculation methods
502  getReta(RetaSums);
503  getRhad(RhadSums);
504  getWstot(WstotSums);
505 
506  }

◆ getUnD()

virtual unsigned int LVL1::eFEXegAlgo::getUnD ( ) const
inlineoverridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 57 of file eFEXegAlgo.h.

57 {return m_seed_UnD;};

◆ getWindowET()

void LVL1::eFEXegAlgo::getWindowET ( int  layer,
int  jPhi,
int  SCID,
unsigned int &  outET 
)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 446 of file eFEXegAlgo.cxx.

446  {
447 
449 
450  if (SCID<0) { // left towers in eta
451  if ((m_efexid%3 == 0) && (m_fpgaid == 0) && (m_central_eta == 0)) {
452  outET = 0;
453  } else {
454  int etaID = 4+SCID;
455  const eTower * tmpTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[jPhi][0]);
456  if (layer==1 || layer==2) {
457  outET = tmpTower->getET(layer,etaID);
458  } else if (layer==0 || layer==3 || layer==4) {
459  outET = tmpTower->getLayerTotalET(layer);
460  }
461  }
462  } else if (SCID>=0 && SCID<4) { // central towers in eta
463  const eTower * tmpTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[jPhi][1]);
464  if (layer==1 || layer==2) {
465  outET = tmpTower->getET(layer,SCID);
466  } else if (layer==0 || layer==3 || layer==4) {
467  outET = tmpTower->getLayerTotalET(layer);
468  }
469  } else if (SCID>=4){ // right towers in eta
470  if ((m_efexid%3 == 2) && (m_fpgaid == 3) && (m_central_eta == 5)) {
471  outET = 0;
472  } else {
473  int etaID = SCID-4;
474  const eTower * tmpTower = eTowerContainer->findTower(m_eFEXegAlgoTowerID[jPhi][2]);
475  if (layer==1 || layer==2) {
476  outET = tmpTower->getET(layer,etaID);
477  } else if (layer==0 || layer==3 || layer==4) {
478  outET = tmpTower->getLayerTotalET(layer);
479  }
480  }
481  }
482 
483  // overflow handling
484  if (outET > 0xffff) outET = 0xffff;
485 
486  }

◆ getWstot()

void LVL1::eFEXegAlgo::getWstot ( std::vector< unsigned int > &  output)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 241 of file eFEXegAlgo.cxx.

241  {
242  unsigned int numer = 0;
243  unsigned int den = 0;
244 
245  output.clear(); // clear the output vector before starting
246 
247  int iStart = m_seedID - 2;
248  int iEnd = m_seedID + 2;
249 
250  for (int i = iStart; i <= iEnd; ++i) { // eta
251  int diff = i - m_seedID;
252  unsigned int weight = diff*diff;
253  for (int j = 0; j <= 2; ++j) { // phi
254  unsigned int eT;
255  getWindowET(1, j, i, eT);
256  // NB need to be careful as numer and den are defined such that wstot=numer/den,
257  // but in the firmware (and therefore this bitwise code) we actually
258  // check that den/numer < Threshold
259  numer += eT*weight;
260  den += eT;
261  }
262  }
263 
264  // Overflow handling
265  //if (den > 0xffff) den = 0xffff; - commented out so that denom can overflow, will then automatically pass all thresholds (see eFEXFPGA::SetIsoWP)
266  if (numer > 0xffff) numer = 0xffff;
267 
268  // Return results
269  output.push_back(den);
270  output.push_back(numer);
271 
272  }

◆ hasSeed()

virtual bool LVL1::eFEXegAlgo::hasSeed ( ) const
inlineoverridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 55 of file eFEXegAlgo.h.

55 {return m_hasSeed;};

◆ initialize()

StatusCode LVL1::eFEXegAlgo::initialize ( )
overridevirtual

standard Athena-Algorithm method

Definition at line 41 of file eFEXegAlgo.cxx.

41  {
42 
45 
46  return StatusCode::SUCCESS;
47  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & LVL1::IeFEXegAlgo::interfaceID ( )
inlinestaticinherited

Definition at line 53 of file IeFEXegAlgo.h.

54  {
55  return IID_IeFEXegAlgo;
56  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ safetyTest()

StatusCode LVL1::eFEXegAlgo::safetyTest ( ) const
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 50 of file eFEXegAlgo.cxx.

50  {
51 
53  if(!eTowerContainer.isValid()){
54  ATH_MSG_FATAL("Could not retrieve container " << m_eTowerContainerKey.key() );
55  return StatusCode::FAILURE;
56  }
57 
58  return StatusCode::SUCCESS;
59  }

◆ setSeed()

void LVL1::eFEXegAlgo::setSeed ( )
private

Definition at line 510 of file eFEXegAlgo.cxx.

510  {
511 
512  m_hasSeed = false;
513  m_seed_UnD = false;
514  unsigned int tmpID = 999;
515  unsigned int maxET = 0;
516 
517  for (int i=0; i<4 ; ++i) {
518  int iSeedL = i-1;
519  int iSeedR = i+1;
520 
521  // eta ID of candidate seed
522  unsigned int cETUp;
523  getWindowET(2,2,i,cETUp);
524  unsigned int iSeedET;
525  getWindowET(2,1,i, iSeedET);
526  unsigned int cETDown;
527  getWindowET(2,0,i, cETDown);
528 
529  // left of candidate seed
530  unsigned int lETUp;
531  getWindowET(2,2,iSeedL,lETUp);
532  unsigned int lET;
533  getWindowET(2,1,iSeedL,lET);
534  unsigned int lETDown;
535  getWindowET(2,0,iSeedL,lETDown);
536 
537  // right of candidate seed
538  unsigned int rETUp;
539  getWindowET(2,2,iSeedR,rETUp);
540  unsigned int rET;
541  getWindowET(2,1,iSeedR,rET);
542  unsigned int rETDown;
543  getWindowET(2,0,iSeedR,rETDown);
544 
545  // greater or equal than for left and down cells, greater than for right and up ones
546  if (iSeedET>=lET && iSeedET>rET
547  && iSeedET>=lETUp && iSeedET>cETUp && iSeedET>rETUp
548  && iSeedET>=lETDown && iSeedET>=cETDown && iSeedET>rETDown) {
549  if (iSeedET>=maxET) { // if two maxima exist and have the same ET, keep the one to the right
550  maxET = iSeedET;
551  tmpID = i;
552  }
553  }
554  }
555 
556  if(tmpID!=999) {
557  m_seedID = tmpID;
558  m_hasSeed = true;
559  unsigned int tmp_et_up, tmp_et_down;
560  getWindowET(2,2,m_seedID,tmp_et_up);
561  getWindowET(2,0,m_seedID,tmp_et_down);
562  if (tmp_et_up >= tmp_et_down) {
563  m_seed_UnD = true; // go up if energy greater or equal to bottom
564  }
565  }
566  }

◆ setup()

void LVL1::eFEXegAlgo::setup ( int  inputTable[3][3],
int  efex_id,
int  fpga_id,
int  central_eta 
)
overridevirtual

Implements LVL1::IeFEXegAlgo.

Definition at line 61 of file eFEXegAlgo.cxx.

61  {
62 
63  std::copy(&inputTable[0][0], &inputTable[0][0] + 9, &m_eFEXegAlgoTowerID[0][0]);
64 
65  m_efexid = efex_id;
66  m_fpgaid = fpga_id;
67  m_central_eta = central_eta;
68 
69  setSeed();
70 
71  }

◆ sysInitialize()

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

Perform system initialization for an algorithm.

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

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

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_algoVersion

Gaudi::Property<int> LVL1::eFEXegAlgo::m_algoVersion {this, "algoVersion", 0, "AlgoVersion, part of the L1Menu spec"}
private

Definition at line 76 of file eFEXegAlgo.h.

◆ m_central_eta

int LVL1::eFEXegAlgo::m_central_eta {}
private

Definition at line 71 of file eFEXegAlgo.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_dmCorr

Gaudi::Property<bool> LVL1::eFEXegAlgo::m_dmCorr {this, "dmCorr", false, "Enable dead material correctionst"}
private

Definition at line 75 of file eFEXegAlgo.h.

◆ m_dmCorrectionsKey

SG::ReadCondHandleKey<CondAttrListCollection> LVL1::eFEXegAlgo::m_dmCorrectionsKey
private
Initial value:
{this,"DMCorrectionsKey","",
"Key to dead material corrections (AttrListCollection)"}

Definition at line 82 of file eFEXegAlgo.h.

◆ m_dmCorrectionsMutex

std::mutex LVL1::eFEXegAlgo::m_dmCorrectionsMutex
private

Definition at line 85 of file eFEXegAlgo.h.

◆ m_eFEXegAlgoTowerID

int LVL1::eFEXegAlgo::m_eFEXegAlgoTowerID[3][3] {}
private

Definition at line 68 of file eFEXegAlgo.h.

◆ m_efexid

int LVL1::eFEXegAlgo::m_efexid {}
private

Definition at line 69 of file eFEXegAlgo.h.

◆ m_eTowerContainerKey

SG::ReadHandleKey<LVL1::eTowerContainer> LVL1::eFEXegAlgo::m_eTowerContainerKey {this, "MyETowers", "eTowerContainer", "Input container for eTowers"}
private

Definition at line 79 of file eFEXegAlgo.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fpgaid

int LVL1::eFEXegAlgo::m_fpgaid {}
private

Definition at line 70 of file eFEXegAlgo.h.

◆ m_hasSeed

bool LVL1::eFEXegAlgo::m_hasSeed {}
private

Definition at line 72 of file eFEXegAlgo.h.

◆ m_seed_UnD

bool LVL1::eFEXegAlgo::m_seed_UnD = false
private

Definition at line 66 of file eFEXegAlgo.h.

◆ m_seedID

unsigned int LVL1::eFEXegAlgo::m_seedID = 999
private

Definition at line 67 of file eFEXegAlgo.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ s_dmCorrectionsLoaded

bool thread_local LVL1::eFEXegAlgo::s_dmCorrectionsLoaded = false
staticprivate

Definition at line 84 of file eFEXegAlgo.h.


The documentation for this class was generated from the following files:
LVL1::eFEXegAlgo::m_hasSeed
bool m_hasSeed
Definition: eFEXegAlgo.h:72
eTowerContainer
Container class for eTower.
test_pyathena.eta
eta
Definition: test_pyathena.py:10
LVL1::eFEXegAlgo::dmCorrection
virtual unsigned int dmCorrection(unsigned int ET, unsigned int layer) override
Definition: eFEXegAlgo.cxx:355
et
Extra patterns decribing particle interation process.
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
LVL1::eFEXegAlgo::m_efexid
int m_efexid
Definition: eFEXegAlgo.h:69
LVL1::eFEXegAlgo::m_seed_UnD
bool m_seed_UnD
Definition: eFEXegAlgo.h:66
LVL1::eFEXegAlgo::getRhad
virtual void getRhad(std::vector< unsigned int > &) override
Definition: eFEXegAlgo.cxx:153
LVL1::eTower
The eTower class is an interface object for eFEX trigger algorithms The purposes are twofold:
Definition: eTower.h:38
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LVL1::eFEXegAlgo::m_eTowerContainerKey
SG::ReadHandleKey< LVL1::eTowerContainer > m_eTowerContainerKey
Definition: eFEXegAlgo.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LVL1::eFEXegAlgo::m_dmCorrectionsMutex
std::mutex m_dmCorrectionsMutex
Definition: eFEXegAlgo.h:85
LVL1::eFEXegAlgo::m_central_eta
int m_central_eta
Definition: eFEXegAlgo.h:71
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
mc.diff
diff
Definition: mc.SFGenPy8_MuMu_DD.py:14
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
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
LVL1::eFEXegAlgo::m_seedID
unsigned int m_seedID
Definition: eFEXegAlgo.h:67
LVL1::eFEXegAlgo::getReta
virtual void getReta(std::vector< unsigned int > &) override
Definition: eFEXegAlgo.cxx:104
LVL1::eFEXegAlgo::m_algoVersion
Gaudi::Property< int > m_algoVersion
Definition: eFEXegAlgo.h:76
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
LVL1::eFEXegAlgo::getET
virtual unsigned int getET() override
Definition: eFEXegAlgo.cxx:311
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
tools.zlumi_mc_cf.correction
def correction(mu, runmode, campaign, run=None)
Definition: zlumi_mc_cf.py:4
LVL1::eFEXegAlgo::setSeed
void setSeed()
Definition: eFEXegAlgo.cxx:510
LVL1::eFEXegAlgo::getClusterCells
virtual void getClusterCells(std::vector< unsigned int > &cellETs) override
Return cell ET values used in cluster.
Definition: eFEXegAlgo.cxx:276
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LVL1::eFEXegAlgo::m_dmCorr
Gaudi::Property< bool > m_dmCorr
Definition: eFEXegAlgo.h:75
LVL1::eFEXegAlgo::getWindowET
virtual void getWindowET(int layer, int jPhi, int SCID, unsigned int &) override
Definition: eFEXegAlgo.cxx:446
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
IDTPM::eT
float eT(const U &p)
Accessor utility function for getting the value of Tranverse energy.
Definition: TrackParametersHelper.h:122
lumiFormat.i
int i
Definition: lumiFormat.py:85
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::eFEXegAlgo::m_eFEXegAlgoTowerID
int m_eFEXegAlgoTowerID[3][3]
Definition: eFEXegAlgo.h:68
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::eFEXegAlgo::getWstot
virtual void getWstot(std::vector< unsigned int > &) override
Definition: eFEXegAlgo.cxx:241
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
LVL1::eTower::getLayerTotalET
int getLayerTotalET(unsigned int layer) const
Get total ET sum of all cells in a given layer in MeV.
Definition: eTower.cxx:249
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
merge.output
output
Definition: merge.py:17
LVL1::eFEXegAlgo::m_dmCorrectionsKey
SG::ReadCondHandleKey< CondAttrListCollection > m_dmCorrectionsKey
Definition: eFEXegAlgo.h:82
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LVL1::eFEXegAlgo::s_dmCorrectionsLoaded
static thread_local bool s_dmCorrectionsLoaded
Definition: eFEXegAlgo.h:84
a
TList * a
Definition: liststreamerinfos.cxx:10
h
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
calibdata.copy
bool copy
Definition: calibdata.py:27
LVL1::eFEXegAlgo::m_fpgaid
int m_fpgaid
Definition: eFEXegAlgo.h:70
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528