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 > &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) override
 
bool getEMSat (unsigned int ttID)
 
bool isValidSeed (uint seedTTID)
 
void findAndFillNextTT (jFEXForwardElecInfo &elCluster, int neta, int nphi)
 
StatusCode ReadfromFile (const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &)
 
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

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 30 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 33 of file jFEXForwardElecAlgo.cxx.

33  : AthAlgTool(type, name, parent) {
34  declareInterface<IjFEXForwardElecAlgo>(this);
35  }

◆ ~jFEXForwardElecAlgo()

LVL1::jFEXForwardElecAlgo::~jFEXForwardElecAlgo ( )
virtual

Destructor.

Definition at line 38 of file jFEXForwardElecAlgo.cxx.

38  {
39  }

Member Function Documentation

◆ calculateEDM()

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

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 236 of file jFEXForwardElecAlgo.cxx.

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

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

◆ 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 151 of file jFEXForwardElecAlgo.cxx.

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

◆ getEMSat()

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

Definition at line 98 of file jFEXForwardElecAlgo.cxx.

98  {
99  if(ttID == 0) {
100  return false;
101  }
102 
103  const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(ttID);
104  return tmpTower->getEMSat();
105  }

◆ getEtaPhi()

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

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 74 of file jFEXForwardElecAlgo.cxx.

74  {
75  if(ttID == 0) {
76  return {999,999};
77  }
78  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(ttID);
79  return {tmpTower->centreEta(),tmpTower->centrePhi()};
80  }

◆ getEtEmHad()

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

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 82 of file jFEXForwardElecAlgo.cxx.

82  {
83  if(ttID == 0) {
84  return {0,0};
85  }
86  int TT_EtEM = 0;
87  if(m_map_Etvalues_EM.find(ttID) != m_map_Etvalues_EM.end()) {
88  TT_EtEM = m_map_Etvalues_EM[ttID][0];
89  }
90  int TT_EtHad = 0;
91  if(m_map_Etvalues_HAD.find(ttID) != m_map_Etvalues_HAD.end()) {
92  TT_EtHad = m_map_Etvalues_HAD[ttID][0];
93  }
94 
95  return {TT_EtEM, TT_EtHad};
96  }

◆ 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)
private

Definition at line 115 of file jFEXForwardElecAlgo.cxx.

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

◆ 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 
)
private

Definition at line 359 of file jFEXForwardElecAlgo.cxx.

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

◆ 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 63 of file jFEXForwardElecAlgo.cxx.

63  {
64  return StatusCode::SUCCESS;
65  }

◆ safetyTest()

StatusCode LVL1::jFEXForwardElecAlgo::safetyTest ( )
overridevirtual

Standard methods.

Implements LVL1::IjFEXForwardElecAlgo.

Definition at line 54 of file jFEXForwardElecAlgo.cxx.

54  {
56  if(! m_jTowerContainer.isValid()) {
57  ATH_MSG_ERROR("Could not retrieve jTowerContainer " << m_jTowerContainerKey.key());
58  return StatusCode::FAILURE;
59  }
60  return StatusCode::SUCCESS;
61  }

◆ 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 107 of file jFEXForwardElecAlgo.cxx.

109  {
110  m_map_Etvalues_EM=etmapEM;
111  m_map_Etvalues_HAD=etmapHAD;
112  }

◆ 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 67 of file jFEXForwardElecAlgo.cxx.

67  {
69  m_jfex=jfex;
70  m_fpga=fpga;
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_1stRingMap

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

Definition at line 76 of file jFEXForwardElecAlgo.h.

◆ m_2PI

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

Definition at line 63 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 65 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 66 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 67 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 62 of file jFEXForwardElecAlgo.h.

◆ m_Frac1Map

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

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

◆ m_Frac2Map

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

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

◆ m_IsoMap

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

Definition at line 77 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 69 of file jFEXForwardElecAlgo.h.

◆ m_jfex

int LVL1::jFEXForwardElecAlgo::m_jfex
private

Definition at line 61 of file jFEXForwardElecAlgo.h.

◆ m_jFEXalgoTowerID

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

Definition at line 60 of file jFEXForwardElecAlgo.h.

◆ m_jTowerContainer

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

Definition at line 57 of file jFEXForwardElecAlgo.h.

◆ m_jTowerContainerKey

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

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

◆ m_SearchGeTauMap

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

Definition at line 81 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 73 of file jFEXForwardElecAlgo.h.

◆ m_SearchGTauMap

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

Definition at line 80 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 72 of file jFEXForwardElecAlgo.h.

◆ m_SeedRingMap

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

Definition at line 75 of file jFEXForwardElecAlgo.h.

◆ m_TT_Size_phi

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

Definition at line 64 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:89
PathResolver::find_calib_file
static std::string find_calib_file(const std::string &logical_file_name)
Definition: PathResolver.cxx:384
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi
constexpr static int jFEX_algoSpace_EMIE_start_phi
Definition: FEXAlgoSpaceDefs.h:91
LVL1::jFEXForwardElecAlgo::m_jTowerContainer
SG::ReadHandle< jTowerContainer > m_jTowerContainer
Definition: jFEXForwardElecAlgo.h:57
LVL1::jFEXForwardElecAlgo::getEMSat
bool getEMSat(unsigned int ttID)
Definition: jFEXForwardElecAlgo.cxx:98
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LVL1::jFEXForwardElecAlgo::m_fpga
int m_fpga
Definition: jFEXForwardElecAlgo.h:62
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta
constexpr static int jFEX_algoSpace_C_EMIE_end_eta
Definition: FEXAlgoSpaceDefs.h:66
LVL1::jFEXForwardElecAlgo::m_jTowerContainerKey
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition: jFEXForwardElecAlgo.h:56
LVL1::jFEXForwardElecAlgo::m_SearchGTauStr
Gaudi::Property< std::string > m_SearchGTauStr
Definition: jFEXForwardElecAlgo.h:72
LVL1::jFEXForwardElecAlgo::ReadfromFile
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &)
Definition: jFEXForwardElecAlgo.cxx:359
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta
constexpr static int jFEX_algoSpace_C_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:68
LVL1::jFEXForwardElecAlgo::m_map_Etvalues_EM
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
Definition: jFEXForwardElecAlgo.h:58
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta
constexpr static int jFEX_algoSpace_A_FCAL_end_eta
Definition: FEXAlgoSpaceDefs.h:48
LVL1::jFEXForwardElecAlgo::m_jfex
int m_jfex
Definition: jFEXForwardElecAlgo.h:61
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:63
LVL1::jFEXForwardElecAlgo::m_IsoMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_IsoMap
Definition: jFEXForwardElecAlgo.h:77
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:27
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:90
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:81
LVL1::jTower::centreEta
float centreEta() const
Definition: jTower.h:83
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta
constexpr static int jFEX_algoSpace_C_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:67
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta
constexpr static int jFEX_algoSpace_A_EMB_eta
Definition: FEXAlgoSpaceDefs.h:45
LVL1::jFEXForwardElecAlgo::m_Frac2Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac2Map
Definition: jFEXForwardElecAlgo.h:79
LVL1::jFEXForwardElecAlgo::m_map_Etvalues_HAD
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
Definition: jFEXForwardElecAlgo.h:59
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:78
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi
constexpr static int jFEX_algoSpace_EMIE_end_phi
Definition: FEXAlgoSpaceDefs.h:92
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FwdEl_start
constexpr static int jFEX_algoSpace_A_FwdEl_start
Definition: FEXAlgoSpaceDefs.h:85
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:65
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
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:70
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:25
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta
constexpr static int jFEX_algoSpace_C_EMB_end_eta
Definition: FEXAlgoSpaceDefs.h:64
LVL1::jFEXForwardElecAlgo::m_IsoMapStr
Gaudi::Property< std::string > m_IsoMapStr
Definition: jFEXForwardElecAlgo.h:69
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:71
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:151
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL1_1st
constexpr static int jFEX_algoSpace_C_FCAL1_1st
Definition: FEXAlgoSpaceDefs.h:82
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:94
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta
constexpr static int jFEX_algoSpace_A_FCAL_start_eta
Definition: FEXAlgoSpaceDefs.h:47
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta
constexpr static int jFEX_algoSpace_A_EMIE_eta
Definition: FEXAlgoSpaceDefs.h:46
LVL1::jTower::centrePhi
float centrePhi() const
Definition: jTower.h:84
a
TList * a
Definition: liststreamerinfos.cxx:10
LVL1::jTower::getEMSat
bool getEMSat() const
Definition: jTower.h:60
h
LVL1::jFEXForwardElecAlgo::getEtEmHad
virtual std::array< int, 2 > getEtEmHad(uint) override
Definition: jFEXForwardElecAlgo.cxx:82
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::jFEXForwardElecAlgo::m_SearchGTauMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGTauMap
Definition: jFEXForwardElecAlgo.h:80
LVL1::jFEXForwardElecAlgo::m_jFEXalgoTowerID
int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition: jFEXForwardElecAlgo.h:60
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:40
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
LVL1::jFEXForwardElecAlgo::getEtaPhi
virtual std::array< float, 2 > getEtaPhi(uint) override
Definition: jFEXForwardElecAlgo.cxx:74
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
calibdata.copy
bool copy
Definition: calibdata.py:27
LVL1::jFEXForwardElecAlgo::m_SearchGeTauStr
Gaudi::Property< std::string > m_SearchGeTauStr
Definition: jFEXForwardElecAlgo.h:73
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_C_FwdEl_start
constexpr static int jFEX_algoSpace_C_FwdEl_start
Definition: FEXAlgoSpaceDefs.h:86
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL1_1st
constexpr static int jFEX_algoSpace_A_FCAL1_1st
Definition: FEXAlgoSpaceDefs.h:81
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi
constexpr static int jFEX_algoSpace_FCAL_start_phi
Definition: FEXAlgoSpaceDefs.h:93
fitman.k
k
Definition: fitman.py:528
LVL1::jFEXForwardElecAlgo::isValidSeed
bool isValidSeed(uint seedTTID)
Definition: jFEXForwardElecAlgo.cxx:115