ATLAS Offline Software
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::jFEXForwardElecAlgo Class Reference

#include <jFEXForwardElecAlgo.h>

Inheritance diagram for LVL1::jFEXForwardElecAlgo:
Collaboration diagram for LVL1::jFEXForwardElecAlgo:

Public Member Functions

 jFEXForwardElecAlgo (const std::string &type, const std::string &name, const IInterface *parent)
 Constructors. More...
 
virtual StatusCode initialize () override
 standard Athena-Algorithm method More...
 
virtual ~jFEXForwardElecAlgo ()
 Destructor. More...
 
virtual StatusCode safetyTest () override
 Standard methods. More...
 
virtual StatusCode reset () override
 
virtual void setup (int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) override
 
virtual std::unordered_map< uint, jFEXForwardElecInfocalculateEDM () override
 
virtual void setFPGAEnergy (std::unordered_map< int, std::vector< int > > etmapEM, std::unordered_map< int, std::vector< int > > etmapHAD) 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, V, H > &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

virtual std::array< float, 2 > getEtaPhi (uint) override
 
virtual std::array< int, 2 > getEtEmHad (uint) const override
 
bool getEMSat (unsigned int ttID)
 
bool isValidSeed (uint seedTTID) const
 
void findAndFillNextTT (jFEXForwardElecInfo &elCluster, int neta, int nphi)
 
StatusCode ReadfromFile (const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadHandleKey< LVL1::jTowerContainerm_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "jTower input container"}
 
SG::ReadHandle< jTowerContainerm_jTowerContainer
 
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
 
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
 
int m_jFEXalgoTowerID [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
 
int m_jfex
 
int m_fpga
 
const int m_Edge_dR2 = std::round( (std::pow(2*M_PI/32,2)) * 1e5 )
 
const int m_Edge_dR3 = std::round( (std::pow(3*M_PI/32,2)) * 1e5 )
 
const int m_Edge_dR4 = std::round( (std::pow(4*M_PI/32,2)) * 1e5 )
 
Gaudi::Property< std::string > m_IsoMapStr {this, "IsoMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_iso.dat", "Contains Trigger towers in (forward) EM layer used for isolation"}
 
Gaudi::Property< std::string > m_Frac1MapStr {this, "Frac1Map", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_frac.dat", "Contains Trigger towers in FCal layer2 used for hadronic fraction 1 discriminant"}
 
Gaudi::Property< std::string > m_Frac2MapStr {this, "Frac2Map", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_frac2.dat", "Contains Trigger towers in FCal layer3 used for hadronic fraction 2 discriminant"}
 
Gaudi::Property< std::string > m_SearchGTauStr {this, "SearchGTauMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGTau.dat" , "Contains Trigger tower to find local max (greater than)"}
 
Gaudi::Property< std::string > m_SearchGeTauStr {this, "SearchGeTauMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGeTau.dat", "Contains Trigger tower to find local max (greater or equal than)"}
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SeedRingMap
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_1stRingMap
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_IsoMap
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac1Map
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac2Map
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGTauMap
 
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGeTauMap
 
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 constexpr float m_2PI = 2*M_PI
 
static constexpr float m_TT_Size_phi = M_PI/32
 

Detailed Description

Definition at line 25 of file jFEXForwardElecAlgo.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

◆ jFEXForwardElecAlgo()

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

Constructors.

Definition at line 28 of file jFEXForwardElecAlgo.cxx.

28  : AthAlgTool(type, name, parent) {
29  declareInterface<IjFEXForwardElecAlgo>(this);
30  }

◆ ~jFEXForwardElecAlgo()

LVL1::jFEXForwardElecAlgo::~jFEXForwardElecAlgo ( )
virtual

Destructor.

Definition at line 33 of file jFEXForwardElecAlgo.cxx.

33  {
34  }

Member Function Documentation

◆ calculateEDM()

std::unordered_map< uint, LVL1::jFEXForwardElecInfo > LVL1::jFEXForwardElecAlgo::calculateEDM ( )
overridevirtual

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 231 of file jFEXForwardElecAlgo.cxx.

231  {
232  std::unordered_map<uint, LVL1::jFEXForwardElecInfo> clusterList;
233  std::vector<int> lower_centre_neta;
234  std::vector<int> upper_centre_neta;
235 
236  //check if we are in module 0 or 5 and assign corrrect eta FEXAlgoSpace parameters
237  if(m_jfex == 0) {
238  //Module 0
239  lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta, // 28
242 
243  upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta, // 37
246  }
247  else {
248  //Module 5
249  lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta, // 8
252 
253  upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta, // 17
256  }
257 
258  //define phi FEXAlgoSpace parameters
261 
262  //loop over different EM/FCAL1 eta phi core fpga regions with different granularities. These are potential seed towers for electron clusters
263  for(uint region = 0; region<3; region++) {
264  for(int nphi = lower_centre_nphi[region]; nphi < upper_centre_nphi[region]; nphi++) {
265  for(int neta = lower_centre_neta[region]; neta < upper_centre_neta[region]; neta++) {
266 
267  // ignore seeds for |eta| < 2.3 or from the first FCAL eta bin
268  if (m_jfex == 0 && neta >= FEXAlgoSpaceDefs::jFEX_algoSpace_C_FwdEl_start) continue;
269  if (m_jfex == 5 && neta <= FEXAlgoSpaceDefs::jFEX_algoSpace_A_FwdEl_start) continue;
270  if (m_jfex == 0 && neta == FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL1_1st) continue;
271  if (m_jfex == 5 && neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL1_1st) continue;
272 
273  // define ttID (only FCAL1 in the third region) which will be the key for class in map, ignore tower ID = 0
274  uint ttID = m_jFEXalgoTowerID[nphi][neta];
275  if(ttID == 0) continue;
276  //check if seed candidate is actual seed (passes local maximum criteria)
277  if(!isValidSeed(ttID)) continue;
278 
279  //gather some first, basic information for resulting cluster/TOB
280  jFEXForwardElecInfo elCluster;
281  elCluster.setup(m_jfex, ttID, neta, nphi);
282  const auto [centreTT_eta, centreTT_phi] = getEtaPhi(ttID);
283  const auto [centreTT_EtEM, centreTT_EtHad] = getEtEmHad(ttID);
284  elCluster.setCoreTTfPhi(centreTT_phi);
285  elCluster.setCoreTTfEta(centreTT_eta);
286  elCluster.setCoreTTEtEM(centreTT_EtEM);
287  elCluster.setCoreTTSatEM(getEMSat(ttID));
288  elCluster.setNextTTEtEM(0);
289  elCluster.setNextTTID(0);
290  elCluster.setTTEtEMiso(0);
291 
292  //find "NextTT", i.e., highest ET neighbour
293  findAndFillNextTT(elCluster, neta, nphi);
294 
295  // sum up EM isolation using the isolation map and remove cluster ET
296  {
297  int sumEtEM = 0;
298  auto it_iso_map = m_IsoMap.find(ttID);
299  if(it_iso_map != m_IsoMap.end()) {
300  for(const auto& gtt : it_iso_map->second){
301  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
302  sumEtEM += tmp_EtEM;
303  }
304  elCluster.setTTEtEMiso(sumEtEM-elCluster.getNextTTEtEM());
305  } else {
306  ATH_MSG_ERROR("Could not find TT" << ttID << " in jEM isolation map file.");
307  }
308  }
309 
310  if(fabs(centreTT_eta) < 3.2) {
311  // for non-FCal positions only Frac1 is meaningful and has a "trivial" mapping
312  elCluster.setTTEtHad1(centreTT_EtHad);
313  elCluster.setTTEtHad2(0);
314  } else {
315  // sum up Et for hadronic fraction 1
316  {
317  int sumEtHad1 = 0;
318  auto it_frac1_map = m_Frac1Map.find(ttID);
319  if(it_frac1_map != m_Frac1Map.end()) {
320  for(const auto& gtt : it_frac1_map->second){
321  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
322  sumEtHad1 += tmp_EtHad;
323  }
324  elCluster.setTTEtHad1(sumEtHad1);
325  } else {
326  ATH_MSG_ERROR("Could not find TT" << ttID << " in jEM frac1 map file.");
327  }
328  }
329 
330  // sum up Et for hadronic fraction 2 (only FCal!)
331  {
332  int sumEtHad2 = 0;
333  auto it_frac2_map = m_Frac2Map.find(ttID);
334  if(it_frac2_map != m_Frac2Map.end()) {
335  for(const auto& gtt : it_frac2_map->second) {
336  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
337  sumEtHad2 += tmp_EtHad;
338  }
339  elCluster.setTTEtHad2(sumEtHad2);
340  } else {
341  ATH_MSG_ERROR("Could not find TT" << ttID << " in jEM frac2 map file.");
342  }
343  }
344  }
345 
346  // save this cluster in the list
347  clusterList[ttID] = elCluster;
348  }//eta
349  }//phi
350  }// 3 regions
351  return clusterList;
352  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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; }

◆ 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

◆ findAndFillNextTT()

void LVL1::jFEXForwardElecAlgo::findAndFillNextTT ( jFEXForwardElecInfo elCluster,
int  neta,
int  nphi 
)
private

Definition at line 146 of file jFEXForwardElecAlgo.cxx.

146  {
147  //determine direction for offsets (-1 : C-side, +1: A-side)
148  int direction = m_jfex < 3 ? -1 : +1;
149 
150  std::vector<std::pair<int,int>> neighbours;
151  //eta/phi index offsets depend on the position of the seed the cluster is created from
152  //differentiate the (many) different cases:
153  if ( direction>0 ? neta < FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta - 1 // A-side condition
154  : neta > FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta) // C-side condition
155  { //Barrel
156  neighbours = { {neta , nphi+1},
157  {neta , nphi-1},
158  {neta+1, nphi },
159  {neta-1, nphi }
160  };
161  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta - 1
163  { //Barrel next to Endcap
164  neighbours = { {neta, nphi+1},
165  {neta, nphi-1},
166  {neta-direction, nphi},
167  {neta+direction, nphi/2} //boundary crossing into endcap -> reduced phi granularity
168  };
169  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
171  { //Endcap next to Barrel
172  neighbours = { {neta, nphi+1},
173  {neta, nphi-1},
174  {neta+direction, nphi},
175  {neta-direction, 2*nphi+0}, //crossing into barrel region, higher phi granularity
176  {neta-direction, 2*nphi+1}, // -> consider both "touching" towers
177  };
179  : neta < FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta - 1 && neta > FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta )
180  { //Endcap
181  neighbours = { {neta , nphi+1},
182  {neta , nphi-1},
183  {neta+1, nphi },
184  {neta-1, nphi }
185  };
186  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta - 1
188  { //Endcap next to FCal
189  neighbours = { {neta, nphi+1},
190  {neta, nphi-1},
191  {neta-direction, nphi},
192  {neta+2*direction, nphi/2} //boundary crossing into FCal -> reduced phi granularity and skip first FCal bin
193  };
194  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta + 1 //first FCal bin must be skipped!
195  : neta == FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta - 2 ) //first FCal bin must be skipped!
196  { //FCal next to Endcap
197  //phi spacing in FCal is very wide, no longer consider adding towers in phi direction
198  neighbours = { {neta-2*direction, 2*nphi+0}, //boundary crossing into endcap, higher phi granularity
199  {neta-2*direction, 2*nphi+1}, // -> consider both "touching" towers
200  {neta+direction, nphi}
201  };
203  : neta < FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta - 2 && neta > FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta )
204  { //FCal
205  neighbours = { {neta+1, nphi},
206  {neta-1, nphi}
207  };
208  } else if ( direction>0 ? neta == FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta - 1
210  { //FCal, last eta bin
211  neighbours = { {neta-direction, nphi}
212  };
213  } else {
214  ATH_MSG_ERROR("Eta index " << neta << " (side: "<< (direction>0?"A":"C") << ") does not seem to belong to any valid seed region");
215  }
216 
217  //iterate over neighbours, find most energetic one
218  for (const auto& candEtaPhi: neighbours) {
219  uint candID = m_jFEXalgoTowerID[candEtaPhi.second][candEtaPhi.first];
220  const auto [candTT_EtEM, candTT_EtHad] = getEtEmHad(candID);
221  if (candTT_EtEM > elCluster.getNextTTEtEM()) {
222  elCluster.setNextTTEtEM(candTT_EtEM);
223  elCluster.setNextTTID(candID);
224  elCluster.setNextTTSatEM(getEMSat(candID));
225  }
226  }
227 
228  }

◆ getEMSat()

bool LVL1::jFEXForwardElecAlgo::getEMSat ( unsigned int  ttID)
private

Definition at line 93 of file jFEXForwardElecAlgo.cxx.

93  {
94  if(ttID == 0) {
95  return false;
96  }
97 
98  const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(ttID);
99  return tmpTower->getEMSat();
100  }

◆ getEtaPhi()

std::array< float, 2 > LVL1::jFEXForwardElecAlgo::getEtaPhi ( uint  ttID)
overrideprivatevirtual

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 69 of file jFEXForwardElecAlgo.cxx.

69  {
70  if(ttID == 0) {
71  return {999,999};
72  }
73  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(ttID);
74  return {tmpTower->centreEta(),tmpTower->centrePhi()};
75  }

◆ getEtEmHad()

std::array< int, 2 > LVL1::jFEXForwardElecAlgo::getEtEmHad ( uint  ttID) const
overrideprivatevirtual

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 77 of file jFEXForwardElecAlgo.cxx.

77  {
78  if(ttID == 0) {
79  return {0,0};
80  }
81  int TT_EtEM = 0;
82  if(m_map_Etvalues_EM.find(ttID) != m_map_Etvalues_EM.end()) {
83  TT_EtEM = m_map_Etvalues_EM.at(ttID)[0];
84  }
85  int TT_EtHad = 0;
86  if(m_map_Etvalues_HAD.find(ttID) != m_map_Etvalues_HAD.end()) {
87  TT_EtHad = m_map_Etvalues_HAD.at(ttID)[0];
88  }
89 
90  return {TT_EtEM, TT_EtHad};
91  }

◆ initialize()

StatusCode LVL1::jFEXForwardElecAlgo::initialize ( )
overridevirtual

◆ 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::IjFEXForwardElecAlgo::interfaceID ( )
inlinestaticinherited

Definition at line 40 of file IjFEXForwardElecAlgo.h.

41 {
42  return IID_IjFEXForwardElecAlgo;
43 }

◆ isValidSeed()

bool LVL1::jFEXForwardElecAlgo::isValidSeed ( uint  seedTTID) const
private

Definition at line 110 of file jFEXForwardElecAlgo.cxx.

110  {
111  auto [centreTT_EtEM,centreTT_EtHad] = getEtEmHad(seedTTID);
112  // check if seed has strictly more energy than its neighbours
113  {
114  auto it_seed_map = m_SearchGTauMap.find(seedTTID);
115  if(it_seed_map == m_SearchGTauMap.end()) {
116  ATH_MSG_ERROR("Could not find TT" << seedTTID << " in the seach (>) local maxima for tau/em file.");
117  return false;
118  }
119  for (const auto& gtt : it_seed_map->second ){
120  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
121  if(tmp_EtEM>=centreTT_EtEM) {
122  return false;
123  }
124  }
125  }
126 
127  // check if seed has equal or more energy than its neighbours
128  {
129  auto it_seed_map = m_SearchGeTauMap.find(seedTTID);
130  if(it_seed_map == m_SearchGeTauMap.end()) {
131  ATH_MSG_ERROR("Could not find TT" << seedTTID << " in the seach (>=) local maxima for tau/em file.");
132  return false;
133  }
134  for (const auto& gtt : it_seed_map->second ){
135  auto [tmp_EtEM,tmp_EtHad] = getEtEmHad(gtt);
136  if( tmp_EtEM>centreTT_EtEM) {
137  return false;
138  }
139  }
140  }
141 
142  return true;
143  }

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

◆ ReadfromFile()

StatusCode LVL1::jFEXForwardElecAlgo::ReadfromFile ( const std::string &  fileName,
std::unordered_map< unsigned int, std::vector< unsigned int > > &  fillingMap 
) const
private

Definition at line 354 of file jFEXForwardElecAlgo.cxx.

354  {
355  std::string myline;
356  //opening file with ifstream
357  std::ifstream myfile(fileName);
358  if ( !myfile.is_open() ){
359  ATH_MSG_ERROR("Could not open file:" << fileName);
360  return StatusCode::FAILURE;
361  }
362 
363  //loading the mapping information
364  while ( std::getline (myfile, myline) ) {
365  //removing the header of the file (it is just information!)
366  if(myline[0] == '#') continue;
367 
368  //Splitting myline in different substrings
369  std::stringstream oneLine(myline);
370 
371  //reading elements
372  std::vector<unsigned int> elements;
373  std::string element;
374  while(std::getline(oneLine, element, ' '))
375  {
376  elements.push_back(std::stoi(element));
377  }
378 
379  // We should have at least two elements! Central TT and (at least) itself
380  if(elements.size() < 1){
381  ATH_MSG_ERROR("Unexpected number of elemennts (<1 expected) in file: "<< fileName);
382  return StatusCode::FAILURE;
383  }
384 
385  //Central TiggerTower
386  unsigned int TTID = elements.at(0);
387 
388  // rest of TTs that need to be checked
389  elements.erase(elements.begin());
390  fillingMap[TTID] = elements;
391  }
392  myfile.close();
393 
394  return StatusCode::SUCCESS;
395  }

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

◆ reset()

StatusCode LVL1::jFEXForwardElecAlgo::reset ( )
overridevirtual

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 58 of file jFEXForwardElecAlgo.cxx.

58  {
59  return StatusCode::SUCCESS;
60  }

◆ safetyTest()

StatusCode LVL1::jFEXForwardElecAlgo::safetyTest ( )
overridevirtual

Standard methods.

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 49 of file jFEXForwardElecAlgo.cxx.

49  {
51  if(! m_jTowerContainer.isValid()) {
52  ATH_MSG_ERROR("Could not retrieve jTowerContainer " << m_jTowerContainerKey.key());
53  return StatusCode::FAILURE;
54  }
55  return StatusCode::SUCCESS;
56  }

◆ setFPGAEnergy()

void LVL1::jFEXForwardElecAlgo::setFPGAEnergy ( std::unordered_map< int, std::vector< int > >  etmapEM,
std::unordered_map< int, std::vector< int > >  etmapHAD 
)
overridevirtual

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 102 of file jFEXForwardElecAlgo.cxx.

104  {
105  m_map_Etvalues_EM=etmapEM;
106  m_map_Etvalues_HAD=etmapHAD;
107  }

◆ setup()

void LVL1::jFEXForwardElecAlgo::setup ( int  inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width],
int  jfex,
int  fpga 
)
overridevirtual

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 62 of file jFEXForwardElecAlgo.cxx.

62  {
64  m_jfex=jfex;
65  m_fpga=fpga;
66  }

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

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_1stRingMap
private

Definition at line 71 of file jFEXForwardElecAlgo.h.

◆ m_2PI

constexpr float LVL1::jFEXForwardElecAlgo::m_2PI = 2*M_PI
staticconstexprprivate

Definition at line 58 of file jFEXForwardElecAlgo.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_Edge_dR2

const int LVL1::jFEXForwardElecAlgo::m_Edge_dR2 = std::round( (std::pow(2*M_PI/32,2)) * 1e5 )
private

Definition at line 60 of file jFEXForwardElecAlgo.h.

◆ m_Edge_dR3

const int LVL1::jFEXForwardElecAlgo::m_Edge_dR3 = std::round( (std::pow(3*M_PI/32,2)) * 1e5 )
private

Definition at line 61 of file jFEXForwardElecAlgo.h.

◆ m_Edge_dR4

const int LVL1::jFEXForwardElecAlgo::m_Edge_dR4 = std::round( (std::pow(4*M_PI/32,2)) * 1e5 )
private

Definition at line 62 of file jFEXForwardElecAlgo.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_fpga

int LVL1::jFEXForwardElecAlgo::m_fpga
private

Definition at line 57 of file jFEXForwardElecAlgo.h.

◆ m_Frac1Map

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_Frac1Map
private

Definition at line 73 of file jFEXForwardElecAlgo.h.

◆ m_Frac1MapStr

Gaudi::Property<std::string> LVL1::jFEXForwardElecAlgo::m_Frac1MapStr {this, "Frac1Map", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_frac.dat", "Contains Trigger towers in FCal layer2 used for hadronic fraction 1 discriminant"}
private

Definition at line 65 of file jFEXForwardElecAlgo.h.

◆ m_Frac2Map

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_Frac2Map
private

Definition at line 74 of file jFEXForwardElecAlgo.h.

◆ m_Frac2MapStr

Gaudi::Property<std::string> LVL1::jFEXForwardElecAlgo::m_Frac2MapStr {this, "Frac2Map", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_frac2.dat", "Contains Trigger towers in FCal layer3 used for hadronic fraction 2 discriminant"}
private

Definition at line 66 of file jFEXForwardElecAlgo.h.

◆ m_IsoMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_IsoMap
private

Definition at line 72 of file jFEXForwardElecAlgo.h.

◆ m_IsoMapStr

Gaudi::Property<std::string> LVL1::jFEXForwardElecAlgo::m_IsoMapStr {this, "IsoMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_iso.dat", "Contains Trigger towers in (forward) EM layer used for isolation"}
private

Definition at line 64 of file jFEXForwardElecAlgo.h.

◆ m_jfex

int LVL1::jFEXForwardElecAlgo::m_jfex
private

Definition at line 56 of file jFEXForwardElecAlgo.h.

◆ m_jFEXalgoTowerID

int LVL1::jFEXForwardElecAlgo::m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
private

Definition at line 55 of file jFEXForwardElecAlgo.h.

◆ m_jTowerContainer

SG::ReadHandle<jTowerContainer> LVL1::jFEXForwardElecAlgo::m_jTowerContainer
private

Definition at line 52 of file jFEXForwardElecAlgo.h.

◆ m_jTowerContainerKey

SG::ReadHandleKey<LVL1::jTowerContainer> LVL1::jFEXForwardElecAlgo::m_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "jTower input container"}
private

Definition at line 51 of file jFEXForwardElecAlgo.h.

◆ m_map_Etvalues_EM

std::unordered_map<int,std::vector<int> > LVL1::jFEXForwardElecAlgo::m_map_Etvalues_EM
private

Definition at line 53 of file jFEXForwardElecAlgo.h.

◆ m_map_Etvalues_HAD

std::unordered_map<int,std::vector<int> > LVL1::jFEXForwardElecAlgo::m_map_Etvalues_HAD
private

Definition at line 54 of file jFEXForwardElecAlgo.h.

◆ m_SearchGeTauMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_SearchGeTauMap
private

Definition at line 76 of file jFEXForwardElecAlgo.h.

◆ m_SearchGeTauStr

Gaudi::Property<std::string> LVL1::jFEXForwardElecAlgo::m_SearchGeTauStr {this, "SearchGeTauMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGeTau.dat", "Contains Trigger tower to find local max (greater or equal than)"}
private

Definition at line 68 of file jFEXForwardElecAlgo.h.

◆ m_SearchGTauMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_SearchGTauMap
private

Definition at line 75 of file jFEXForwardElecAlgo.h.

◆ m_SearchGTauStr

Gaudi::Property<std::string> LVL1::jFEXForwardElecAlgo::m_SearchGTauStr {this, "SearchGTauMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGTau.dat" , "Contains Trigger tower to find local max (greater than)"}
private

Definition at line 67 of file jFEXForwardElecAlgo.h.

◆ m_SeedRingMap

std::unordered_map<unsigned int, std::vector<unsigned int> > LVL1::jFEXForwardElecAlgo::m_SeedRingMap
private

Definition at line 70 of file jFEXForwardElecAlgo.h.

◆ m_TT_Size_phi

constexpr float LVL1::jFEXForwardElecAlgo::m_TT_Size_phi = M_PI/32
staticconstexprprivate

Definition at line 59 of file jFEXForwardElecAlgo.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi
constexpr static int jFEX_algoSpace_EMB_start_phi
Definition: FEXAlgoSpaceDefs.h:91
PathResolver::find_calib_file
static std::string find_calib_file(const std::string &logical_file_name)
Definition: PathResolver.cxx:235
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi
constexpr static int jFEX_algoSpace_EMIE_start_phi
Definition: FEXAlgoSpaceDefs.h:93
LVL1::jFEXForwardElecAlgo::m_jTowerContainer
SG::ReadHandle< jTowerContainer > m_jTowerContainer
Definition: jFEXForwardElecAlgo.h:52
LVL1::jFEXForwardElecAlgo::getEMSat
bool getEMSat(unsigned int ttID)
Definition: jFEXForwardElecAlgo.cxx:93
LVL1::jFEXForwardElecAlgo::m_fpga
int m_fpga
Definition: jFEXForwardElecAlgo.h:57
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta
constexpr static int jFEX_algoSpace_C_EMIE_end_eta
Definition: FEXAlgoSpaceDefs.h:68
LVL1::jFEXForwardElecAlgo::m_jTowerContainerKey
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition: jFEXForwardElecAlgo.h:51
LVL1::jFEXForwardElecAlgo::m_SearchGTauStr
Gaudi::Property< std::string > m_SearchGTauStr
Definition: jFEXForwardElecAlgo.h:67
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta
constexpr static int jFEX_algoSpace_C_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:70
LVL1::jFEXForwardElecAlgo::m_map_Etvalues_EM
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
Definition: jFEXForwardElecAlgo.h:53
LVL1::jFEXForwardElecAlgo::isValidSeed
bool isValidSeed(uint seedTTID) const
Definition: jFEXForwardElecAlgo.cxx:110
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta
constexpr static int jFEX_algoSpace_A_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:50
LVL1::jFEXForwardElecAlgo::m_jfex
int m_jfex
Definition: jFEXForwardElecAlgo.h:56
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
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta
constexpr static int jFEX_algoSpace_C_EMB_start_eta
Definition: FEXAlgoSpaceDefs.h:65
LVL1::jFEXForwardElecAlgo::m_IsoMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_IsoMap
Definition: jFEXForwardElecAlgo.h:72
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:29
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi
constexpr static int jFEX_algoSpace_EMB_end_phi
Definition: FEXAlgoSpaceDefs.h:92
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LVL1::jFEXForwardElecAlgo::m_SearchGeTauMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGeTauMap
Definition: jFEXForwardElecAlgo.h:76
LVL1::jTower::centreEta
float centreEta() const
Definition: jTower.h:79
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta
constexpr static int jFEX_algoSpace_C_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:69
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta
constexpr static int jFEX_algoSpace_A_EMB_eta
Definition: FEXAlgoSpaceDefs.h:47
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
LVL1::jFEXForwardElecAlgo::ReadfromFile
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &) const
Definition: jFEXForwardElecAlgo.cxx:354
LVL1::jFEXForwardElecAlgo::m_Frac2Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac2Map
Definition: jFEXForwardElecAlgo.h:74
LVL1::jFEXForwardElecAlgo::m_map_Etvalues_HAD
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
Definition: jFEXForwardElecAlgo.h:54
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
LVL1::jFEXForwardElecAlgo::m_Frac1Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac1Map
Definition: jFEXForwardElecAlgo.h:73
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi
constexpr static int jFEX_algoSpace_EMIE_end_phi
Definition: FEXAlgoSpaceDefs.h:94
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FwdEl_start
constexpr static int jFEX_algoSpace_A_FwdEl_start
Definition: FEXAlgoSpaceDefs.h:87
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta
constexpr static int jFEX_algoSpace_C_EMIE_start_eta
Definition: FEXAlgoSpaceDefs.h:67
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1::jFEXForwardElecAlgo::m_Frac1MapStr
Gaudi::Property< std::string > m_Frac1MapStr
Definition: jFEXForwardElecAlgo.h:65
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:27
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta
constexpr static int jFEX_algoSpace_C_EMB_end_eta
Definition: FEXAlgoSpaceDefs.h:66
LVL1::jFEXForwardElecAlgo::m_IsoMapStr
Gaudi::Property< std::string > m_IsoMapStr
Definition: jFEXForwardElecAlgo.h:64
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::jFEXForwardElecAlgo::m_Frac2MapStr
Gaudi::Property< std::string > m_Frac2MapStr
Definition: jFEXForwardElecAlgo.h:66
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
LVL1::jFEXForwardElecAlgo::findAndFillNextTT
void findAndFillNextTT(jFEXForwardElecInfo &elCluster, int neta, int nphi)
Definition: jFEXForwardElecAlgo.cxx:146
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL1_1st
constexpr static int jFEX_algoSpace_C_FCAL1_1st
Definition: FEXAlgoSpaceDefs.h:84
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
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
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi
constexpr static int jFEX_algoSpace_FCAL_end_phi
Definition: FEXAlgoSpaceDefs.h:96
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta
constexpr static int jFEX_algoSpace_A_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:49
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
constexpr static int jFEX_algoSpace_A_EMIE_eta
Definition: FEXAlgoSpaceDefs.h:48
LVL1::jTower::centrePhi
float centrePhi() const
Definition: jTower.h:80
LVL1::jFEXForwardElecAlgo::getEtEmHad
virtual std::array< int, 2 > getEtEmHad(uint) const override
Definition: jFEXForwardElecAlgo.cxx:77
a
TList * a
Definition: liststreamerinfos.cxx:10
LVL1::jTower::getEMSat
bool getEMSat() const
Definition: jTower.h:56
h
LVL1::jFEXForwardElecAlgo::m_SearchGTauMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGTauMap
Definition: jFEXForwardElecAlgo.h:75
LVL1::jFEXForwardElecAlgo::m_jFEXalgoTowerID
int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition: jFEXForwardElecAlgo.h:55
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:36
LVL1::jFEXForwardElecAlgo::getEtaPhi
virtual std::array< float, 2 > getEtaPhi(uint) override
Definition: jFEXForwardElecAlgo.cxx:69
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
calibdata.copy
bool copy
Definition: calibdata.py:26
jobOptions.fileName
fileName
Definition: jobOptions.SuperChic_ALP2.py:39
LVL1::jFEXForwardElecAlgo::m_SearchGeTauStr
Gaudi::Property< std::string > m_SearchGeTauStr
Definition: jFEXForwardElecAlgo.h:68
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FwdEl_start
constexpr static int jFEX_algoSpace_C_FwdEl_start
Definition: FEXAlgoSpaceDefs.h:88
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL1_1st
constexpr static int jFEX_algoSpace_A_FCAL1_1st
Definition: FEXAlgoSpaceDefs.h:83
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi
constexpr static int jFEX_algoSpace_FCAL_start_phi
Definition: FEXAlgoSpaceDefs.h:95
fitman.k
k
Definition: fitman.py:528