ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
LVL1::gFEXFPGA Class Reference

#include <gFEXFPGA.h>

Inheritance diagram for LVL1::gFEXFPGA:
Collaboration diagram for LVL1::gFEXFPGA:

Public Member Functions

 gFEXFPGA (const std::string &type, const std::string &name, const IInterface *parent)
 Constructors. More...
 
virtual StatusCode initialize () override
 standard Athena-Algorithm method More...
 
virtual ~gFEXFPGA ()
 Destructor. More...
 
virtual StatusCode init (int id) override
 
virtual void reset () override
 
virtual int getID () const override
 
virtual void FillgTowerEDMCentral (SG::WriteHandle< xAOD::gFexTowerContainer > &, gTowersCentral &, gTowersType &, gTowersType &, gTowersType &) override
 
virtual void FillgTowerEDMForward (SG::WriteHandle< xAOD::gFexTowerContainer > &, gTowersForward &, gTowersForward &, gTowersType &, gTowersType &, gTowersType &) override
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

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

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void gtCalib (gTowersType &twrs, const gTowersType &offsets, const gTowersType &noiseCuts, const gTowersType &slopes) const
 
void calLookup (int *tower, const int offset, const int noiseCut, const int slope) const
 
void calExpand (gTowersType &offsets, gTowersType &noiseCuts, gTowersType &slopes, const int offset, const std::array< int, 12 > columnNoiseCuts, const std::array< int, 12 > columnSlopes) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadCondHandleKey< gFEXDBCondDatam_DBToolKey {this, "DBToolKey", "gFEXDBParams", "Database tool key"}
 Internal data. More...
 
int m_fpgaId = -1
 
gTowersType m_offsetsDefaultA = {{{0}}}
 
gTowersType m_noiseCutsDefaultA = {{{0}}}
 
gTowersType m_slopesDefaultA = {{{0}}}
 
gTowersType m_offsetsDefaultB = {{{0}}}
 
gTowersType m_noiseCutsDefaultB = {{{0}}}
 
gTowersType m_slopesDefaultB = {{{0}}}
 
gTowersType m_offsetsDefaultC = {{{0}}}
 
gTowersType m_noiseCutsDefaultC = {{{0}}}
 
gTowersType m_slopesDefaultC = {{{0}}}
 
SG::ReadHandleKey< LVL1::gTowerContainerm_gFEXFPGA_gTowerContainerKey {this, "MyGTowers", "gTowerContainer", "Input container for gTowers"}
 
SG::ReadHandleKey< LVL1::gTowerContainerm_gFEXFPGA_gTower50ContainerKey {this, "MyGTowers50", "gTower50Container", "Input container for gTowers"}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

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

◆ gFEXFPGA()

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

Constructors.

Definition at line 22 of file gFEXFPGA.cxx.

23  {
24  declareInterface<IgFEXFPGA>(this);
25  }

◆ ~gFEXFPGA()

LVL1::gFEXFPGA::~gFEXFPGA ( )
virtual

Destructor.

Definition at line 28 of file gFEXFPGA.cxx.

29  {
30  }

Member Function Documentation

◆ calExpand()

void LVL1::gFEXFPGA::calExpand ( gTowersType offsets,
gTowersType noiseCuts,
gTowersType slopes,
const int  offset,
const std::array< int, 12 >  columnNoiseCuts,
const std::array< int, 12 >  columnSlopes 
) const
private

Definition at line 309 of file gFEXFPGA.cxx.

310  {
311 
312  int rows = offsets.size();
313  int cols = offsets[0].size();
314  for (int irow = 0; irow < rows; irow++)
315  {
316  for (int jcolumn = 0; jcolumn < cols; jcolumn++)
317  {
318  offsets[irow][jcolumn] = offset;
319  noiseCuts[irow][jcolumn] = columnNoiseCuts[jcolumn];
320  slopes[irow][jcolumn] = columnSlopes[jcolumn];
321  }
322  }
323  }

◆ calLookup()

void LVL1::gFEXFPGA::calLookup ( int *  tower,
const int  offset,
const int  noiseCut,
const int  slope 
) const
private

Definition at line 280 of file gFEXFPGA.cxx.

281  {
282  int address = *tower;
283 
284  if (address < 0)
285  {
286  ATH_MSG_DEBUG("gTower lookup address out of range " << address);
287  address = 0;
288  }
289  if (address > 2047)
290  {
291  ATH_MSG_DEBUG("gTower lookup address out of range " << address);
292  address = 2047;
293  }
294 
295  // noise cut is made before calibraiton
296  if ((address - offset) < noiseCut)
297  address = offset;
298 
299  int calTower = ((calib * address + 511) >> 10) - ((calib * offset + 511) >> 10);
300 
301  if (calTower < -2048)
302  calTower = -2048;
303  if (calTower > 2047)
304  calTower = 2047;
305 
306  *tower = calTower;
307  }

◆ 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

◆ FillgTowerEDMCentral()

void LVL1::gFEXFPGA::FillgTowerEDMCentral ( SG::WriteHandle< xAOD::gFexTowerContainer > &  gTowersContainer,
gTowersCentral gTowersIDs_central,
gTowersType output_gTower_energies,
gTowersType output_gTower50_energies,
gTowersType output_saturation 
)
overridevirtual

Implements LVL1::IgFEXFPGA.

Definition at line 57 of file gFEXFPGA.cxx.

63  { // output, saturation
65  if (!myDBTool.isValid())
66  {
67  ATH_MSG_ERROR("Could not retrieve DB tool " << m_DBToolKey);
68  }
69  gFEXFPGA::calExpand(m_offsetsDefaultA, m_noiseCutsDefaultA, m_slopesDefaultA, 48, myDBTool->get_AnoiseCuts(), myDBTool->get_Aslopes());
70  gFEXFPGA::calExpand(m_offsetsDefaultB, m_noiseCutsDefaultB, m_slopesDefaultB, 48, myDBTool->get_BnoiseCuts(), myDBTool->get_Bslopes());
71 
72  float Eta = 99;
73  float Phi = 99;
74  int TowerEt = -99;
75  int Fpga = m_fpgaId;
76  char IsSaturated = 0;
77 
78  float etaSum = 0;
79 
80  SG::ReadHandle<gTowerContainer> gFEXFPGA_gTowerContainer(m_gFEXFPGA_gTowerContainerKey /*,ctx*/); // 200 MeV
81  SG::ReadHandle<gTowerContainer> gFEXFPGA_gTower50Container(m_gFEXFPGA_gTower50ContainerKey /*,ctx*/); // 50 MeV
82 
83  bool is_mc = false;
84  if (!gFEXFPGA_gTower50Container.isValid())
85  {
86  is_mc = true;
87  }
88 
89  int rows = gTowersIDs_central.size();
90  int cols = gTowersIDs_central[0].size();
91 
92  for (int myrow = 0; myrow < rows; myrow++)
93  {
94  for (int mycol = 0; mycol < cols; mycol++)
95  {
96 
97  output_gTower_energies[myrow][mycol] = 0;
98  output_gTower50_energies[myrow][mycol] = 0;
99  output_saturation[myrow][mycol] = 0;
100 
101  int towerID = gTowersIDs_central[myrow][mycol];
102  if (towerID == 0)
103  continue;
104 
105  const LVL1::gTower *tmpTower = gFEXFPGA_gTowerContainer->findTower(towerID);
106  const LVL1::gTower *tmpTower50 = tmpTower;
107  if (!is_mc)
108  {
109  tmpTower50 = gFEXFPGA_gTower50Container->findTower(towerID);
110  }
111 
112  if (tmpTower == nullptr)
113  continue;
114 
115  TowerEt = tmpTower->getET();
116  Eta = tmpTower->eta();
117  Phi = tmpTower->phi();
118 
119  etaSum += Eta;
120 
121  int iPhiFW, iEtaFW;
122  uint32_t gFEXtowerID = tmpTower->getFWID(iPhiFW, iEtaFW);
123  IsSaturated = tmpTower->isSaturated();
124  std::unique_ptr<xAOD::gFexTower> gTowerEDM(new xAOD::gFexTower());
125  gTowersContainer->push_back(std::move(gTowerEDM));
126  gTowersContainer->back()->initialize(iEtaFW, iPhiFW, Eta, Phi, TowerEt, Fpga, IsSaturated, gFEXtowerID);
127 
128  output_gTower_energies[myrow][mycol] = tmpTower->getET();
129  output_gTower50_energies[myrow][mycol] = is_mc ? tmpTower50->getET() * 4. : tmpTower50->getET();
130  output_saturation[myrow][mycol] = tmpTower->isSaturated();
131  }
132  }
133 
134  // apply defualt slopes set in initialization.
135  // In the future these values will be read from the online COOL data base
136  // Note the unforutnate hack used to figure out if we are in FPGA A or B.
137  //
138 
139  if (etaSum < 0)
140  {
141  // FPGA A
143  }
144  else
145  {
146  // FPGA B
148  }
149  }

◆ FillgTowerEDMForward()

void LVL1::gFEXFPGA::FillgTowerEDMForward ( SG::WriteHandle< xAOD::gFexTowerContainer > &  gTowersContainer,
gTowersForward gTowersIDs_forward_n,
gTowersForward gTowersIDs_forward_p,
gTowersType output_gTower_energies,
gTowersType output_gTower50_energies,
gTowersType output_saturation 
)
overridevirtual

Implements LVL1::IgFEXFPGA.

Definition at line 151 of file gFEXFPGA.cxx.

157  {
159  if (!myDBTool.isValid())
160  {
161  ATH_MSG_ERROR("Could not retrieve DB tool " << m_DBToolKey);
162  }
163  gFEXFPGA::calExpand(m_offsetsDefaultC, m_noiseCutsDefaultC, m_slopesDefaultC, 48, myDBTool->get_CnoiseCuts(), myDBTool->get_Cslopes());
164 
165  char IsSaturated = 0;
166 
167  SG::ReadHandle<gTowerContainer> gFEXFPGA_gTowerContainer(m_gFEXFPGA_gTowerContainerKey /*,ctx*/);
168  SG::ReadHandle<gTowerContainer> gFEXFPGA_gTower50Container(m_gFEXFPGA_gTower50ContainerKey /*,ctx*/);
169 
170  bool is_mc = false;
171  if (!gFEXFPGA_gTower50Container.isValid())
172  {
173  is_mc = true;
174  }
175 
176  //
177  // C-N
178  //
179  int rows = gTowersIDs_forward_n.size();
180  int cols = gTowersIDs_forward_n[0].size();
181 
182  for (int myrow = 0; myrow < rows; myrow++)
183  {
184  for (int mycol = 0; mycol < cols; mycol++)
185  {
186 
187  int towerID = gTowersIDs_forward_n[myrow][mycol];
188  if (towerID == 0)
189  continue;
190 
191  const LVL1::gTower *tmpTower = gFEXFPGA_gTowerContainer->findTower(towerID);
192  const LVL1::gTower *tmpTower50 = tmpTower;
193  if (!is_mc)
194  {
195  tmpTower50 = gFEXFPGA_gTower50Container->findTower(towerID);
196  }
197 
198  if (tmpTower == nullptr)
199  continue;
200 
201  int TowerEt = tmpTower->getET();
202  float Eta = tmpTower->eta();
203  float Phi = tmpTower->phi();
204  int Fpga = m_fpgaId;
205  int iPhiFW, iEtaFW;
206  uint32_t gFEXtowerID = tmpTower->getFWID(iPhiFW, iEtaFW);
207  IsSaturated = tmpTower->isSaturated();
208  std::unique_ptr<xAOD::gFexTower> gTowerEDM(new xAOD::gFexTower());
209  gTowersContainer->push_back(std::move(gTowerEDM));
210  gTowersContainer->back()->initialize(iEtaFW, iPhiFW, Eta, Phi, TowerEt, Fpga, IsSaturated, gFEXtowerID);
211 
212  output_gTower_energies[iPhiFW][iEtaFW - 2] = tmpTower->getET();
213  output_gTower50_energies[iPhiFW][iEtaFW - 2] = is_mc ? tmpTower50->getET() * 4. : tmpTower50->getET();
214  output_saturation[iPhiFW][iEtaFW - 2] = tmpTower->isSaturated();
215  }
216  }
217 
218  //
219  // C-P
220  //
221  rows = gTowersIDs_forward_p.size();
222  cols = gTowersIDs_forward_p[0].size();
223 
224  for (int myrow = 0; myrow < rows; myrow++)
225  {
226  for (int mycol = 0; mycol < cols; mycol++)
227  {
228 
229  int towerID = gTowersIDs_forward_p[myrow][mycol];
230  if (towerID == 0)
231  continue;
232 
233  const LVL1::gTower *tmpTower = gFEXFPGA_gTowerContainer->findTower(towerID);
234  const LVL1::gTower *tmpTower50 = tmpTower;
235  if (!is_mc)
236  {
237  tmpTower50 = gFEXFPGA_gTower50Container->findTower(towerID);
238  }
239 
240  if (tmpTower == nullptr)
241  continue;
242 
243  int TowerEt = tmpTower->getET();
244  float Eta = tmpTower->eta();
245  float Phi = tmpTower->phi();
246  int Fpga = m_fpgaId;
247  int iPhiFW, iEtaFW;
248  uint32_t gFEXtowerID = tmpTower->getFWID(iPhiFW, iEtaFW);
249  IsSaturated = tmpTower->isSaturated();
250  std::unique_ptr<xAOD::gFexTower> gTowerEDM(new xAOD::gFexTower());
251  gTowersContainer->push_back(std::move(gTowerEDM));
252  gTowersContainer->back()->initialize(iEtaFW, iPhiFW, Eta, Phi, TowerEt, Fpga, IsSaturated, gFEXtowerID);
253 
254  output_gTower_energies[iPhiFW][iEtaFW - 32 + 6] = tmpTower->getET();
255  output_gTower50_energies[iPhiFW][iEtaFW - 32 + 6] = is_mc ? tmpTower50->getET() * 4. : tmpTower50->getET();
256  output_saturation[iPhiFW][iEtaFW - 32 + 6] = tmpTower->isSaturated();
257  }
258  }
259 
260  // apply defualt slopes set in initialization.
261  // In the future these values will be read from the online COOL data base
262 
264  }

◆ getID()

virtual int LVL1::gFEXFPGA::getID ( ) const
inlineoverridevirtual

Implements LVL1::IgFEXFPGA.

Definition at line 39 of file gFEXFPGA.h.

39 { return m_fpgaId; }

◆ gtCalib()

void LVL1::gFEXFPGA::gtCalib ( gTowersType twrs,
const gTowersType offsets,
const gTowersType noiseCuts,
const gTowersType slopes 
) const
private

Definition at line 266 of file gFEXFPGA.cxx.

267  {
268  int rows = twrs.size();
269  int cols = twrs[0].size();
270  for (int irow = 0; irow < rows; irow++)
271  {
272  for (int jcolumn = 0; jcolumn < cols; jcolumn++)
273  {
274  twrs[irow][jcolumn] = twrs[irow][jcolumn] + offsets[irow][jcolumn];
275  calLookup(&twrs[irow][jcolumn], offsets[irow][jcolumn], noiseCuts[irow][jcolumn], slopes[irow][jcolumn]);
276  }
277  }
278  }

◆ init()

StatusCode LVL1::gFEXFPGA::init ( int  id)
overridevirtual

Implements LVL1::IgFEXFPGA.

Definition at line 44 of file gFEXFPGA.cxx.

45  {
46  m_fpgaId = id;
47 
48  return StatusCode::SUCCESS;
49  }

◆ initialize()

StatusCode LVL1::gFEXFPGA::initialize ( )
overridevirtual

standard Athena-Algorithm method

Definition at line 34 of file gFEXFPGA.cxx.

35  {
36 
39  ATH_CHECK(m_DBToolKey.initialize());
40 
41  return StatusCode::SUCCESS;
42  }

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

Definition at line 54 of file IgFEXFPGA.h.

55  {
56  return IID_IgFEXFPGA;
57  }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ reset()

void LVL1::gFEXFPGA::reset ( )
overridevirtual

Implements LVL1::IgFEXFPGA.

Definition at line 51 of file gFEXFPGA.cxx.

52  {
53 
54  m_fpgaId = -1;
55  }

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

SG::ReadCondHandleKey<gFEXDBCondData> LVL1::gFEXFPGA::m_DBToolKey {this, "DBToolKey", "gFEXDBParams", "Database tool key"}
private

Internal data.

Definition at line 52 of file gFEXFPGA.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_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fpgaId

int LVL1::gFEXFPGA::m_fpgaId = -1
private

Definition at line 54 of file gFEXFPGA.h.

◆ m_gFEXFPGA_gTower50ContainerKey

SG::ReadHandleKey<LVL1::gTowerContainer> LVL1::gFEXFPGA::m_gFEXFPGA_gTower50ContainerKey {this, "MyGTowers50", "gTower50Container", "Input container for gTowers"}
private

Definition at line 78 of file gFEXFPGA.h.

◆ m_gFEXFPGA_gTowerContainerKey

SG::ReadHandleKey<LVL1::gTowerContainer> LVL1::gFEXFPGA::m_gFEXFPGA_gTowerContainerKey {this, "MyGTowers", "gTowerContainer", "Input container for gTowers"}
private

Definition at line 77 of file gFEXFPGA.h.

◆ m_noiseCutsDefaultA

gTowersType LVL1::gFEXFPGA::m_noiseCutsDefaultA = {{{0}}}
private

Definition at line 57 of file gFEXFPGA.h.

◆ m_noiseCutsDefaultB

gTowersType LVL1::gFEXFPGA::m_noiseCutsDefaultB = {{{0}}}
private

Definition at line 61 of file gFEXFPGA.h.

◆ m_noiseCutsDefaultC

gTowersType LVL1::gFEXFPGA::m_noiseCutsDefaultC = {{{0}}}
private

Definition at line 65 of file gFEXFPGA.h.

◆ m_offsetsDefaultA

gTowersType LVL1::gFEXFPGA::m_offsetsDefaultA = {{{0}}}
private

Definition at line 56 of file gFEXFPGA.h.

◆ m_offsetsDefaultB

gTowersType LVL1::gFEXFPGA::m_offsetsDefaultB = {{{0}}}
private

Definition at line 60 of file gFEXFPGA.h.

◆ m_offsetsDefaultC

gTowersType LVL1::gFEXFPGA::m_offsetsDefaultC = {{{0}}}
private

Definition at line 64 of file gFEXFPGA.h.

◆ m_slopesDefaultA

gTowersType LVL1::gFEXFPGA::m_slopesDefaultA = {{{0}}}
private

Definition at line 58 of file gFEXFPGA.h.

◆ m_slopesDefaultB

gTowersType LVL1::gFEXFPGA::m_slopesDefaultB = {{{0}}}
private

Definition at line 62 of file gFEXFPGA.h.

◆ m_slopesDefaultC

gTowersType LVL1::gFEXFPGA::m_slopesDefaultC = {{{0}}}
private

Definition at line 66 of file gFEXFPGA.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::gFEXFPGA::m_slopesDefaultB
gTowersType m_slopesDefaultB
Definition: gFEXFPGA.h:62
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
LVL1::gTower::getFWID
int getFWID(int &iPhiFW, int &iEtaFW) const
Calculates and returns the firmware ID, as well as iPhi and iEta in FT/global scheme.
Definition: gTower.cxx:202
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LVL1::gFEXFPGA::m_slopesDefaultC
gTowersType m_slopesDefaultC
Definition: gFEXFPGA.h:66
LVL1::gTower::isSaturated
char isSaturated() const
Returns true if is saturated.
Definition: gTower.cxx:179
LVL1::gTower
The gTower class is an interface object for gFEX trigger algorithms The purposes are twofold:
Definition: gTower.h:38
LVL1::gFEXFPGA::m_fpgaId
int m_fpgaId
Definition: gFEXFPGA.h:54
LVL1::gTower::phi
float phi() const
Definition: gTower.h:69
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:206
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
Phi
@ Phi
Definition: RPCdef.h:8
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
LVL1::gTower::getET
int getET() const
Get ET (total) in MeV.
Definition: gTower.cxx:147
LVL1::gFEXFPGA::calExpand
void calExpand(gTowersType &offsets, gTowersType &noiseCuts, gTowersType &slopes, const int offset, const std::array< int, 12 > columnNoiseCuts, const std::array< int, 12 > columnSlopes) const
Definition: gFEXFPGA.cxx:309
LVL1::gFEXFPGA::m_noiseCutsDefaultB
gTowersType m_noiseCutsDefaultB
Definition: gFEXFPGA.h:61
beamspotnt.cols
list cols
Definition: bin/beamspotnt.py:1114
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1::gFEXFPGA::gtCalib
void gtCalib(gTowersType &twrs, const gTowersType &offsets, const gTowersType &noiseCuts, const gTowersType &slopes) const
Definition: gFEXFPGA.cxx:266
LVL1::gFEXFPGA::calLookup
void calLookup(int *tower, const int offset, const int noiseCut, const int slope) const
Definition: gFEXFPGA.cxx:280
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LVL1::gFEXFPGA::m_offsetsDefaultC
gTowersType m_offsetsDefaultC
Definition: gFEXFPGA.h:64
LVL1::gFEXFPGA::m_gFEXFPGA_gTower50ContainerKey
SG::ReadHandleKey< LVL1::gTowerContainer > m_gFEXFPGA_gTower50ContainerKey
Definition: gFEXFPGA.h:78
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::gFEXFPGA::m_DBToolKey
SG::ReadCondHandleKey< gFEXDBCondData > m_DBToolKey
Internal data.
Definition: gFEXFPGA.h:52
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::gFEXFPGA::m_noiseCutsDefaultC
gTowersType m_noiseCutsDefaultC
Definition: gFEXFPGA.h:65
xAOD::gFexTower_v1
Class describing input data of a LVL1 eFEX.
Definition: gFexTower_v1.h:22
beamspotnt.rows
list rows
Definition: bin/beamspotnt.py:1112
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
DataVector::back
const T * back() const
Access the last element in the collection as an rvalue.
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
LVL1::gTower::eta
float eta() const
Definition: gTower.h:68
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:220
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
LVL1::gFEXFPGA::m_offsetsDefaultA
gTowersType m_offsetsDefaultA
Definition: gFEXFPGA.h:56
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
LVL1::gFEXFPGA::m_gFEXFPGA_gTowerContainerKey
SG::ReadHandleKey< LVL1::gTowerContainer > m_gFEXFPGA_gTowerContainerKey
Definition: gFEXFPGA.h:77
LVL1::gFEXFPGA::m_slopesDefaultA
gTowersType m_slopesDefaultA
Definition: gFEXFPGA.h:58
PlotSFuncertainty.calib
calib
Definition: PlotSFuncertainty.py:110
a
TList * a
Definition: liststreamerinfos.cxx:10
h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LVL1::gFEXFPGA::m_offsetsDefaultB
gTowersType m_offsetsDefaultB
Definition: gFEXFPGA.h:60
LVL1::gFEXFPGA::m_noiseCutsDefaultA
gTowersType m_noiseCutsDefaultA
Definition: gFEXFPGA.h:57
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Eta
@ Eta
Definition: RPCdef.h:8
fitman.k
k
Definition: fitman.py:528