ATLAS Offline Software
Classes | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
LVL1BS::PpmByteStreamReadV1V2Tool Class Reference

Tool to perform ROB fragments to trigger towers and trigger towers to raw data conversions. More...

#include <PpmByteStreamReadV1V2Tool.h>

Inheritance diagram for LVL1BS::PpmByteStreamReadV1V2Tool:
Collaboration diagram for LVL1BS::PpmByteStreamReadV1V2Tool:

Classes

class  BitReader
 
struct  State
 

Public Member Functions

 PpmByteStreamReadV1V2Tool (const std::string &name)
 
virtual ~PpmByteStreamReadV1V2Tool ()
 
virtual StatusCode initialize () override
 Dummy implementation of the initialisation function. More...
 
virtual StatusCode finalize () override
 
StatusCode convert (xAOD::TriggerTowerContainer *const ttCollection) const
 Convert ROB fragments to trigger towers. More...
 
StatusCode convert (const std::string &sgKey, xAOD::TriggerTowerContainer *const ttCollection) const
 
virtual void print () const
 Print the state of the tool. More...
 
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
 

Protected Member Functions

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

Private Types

enum  RequestType { RequestType::PPM, RequestType::CPM, RequestType::CMX }
 
typedef IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator
 
typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType ROBPointer
 
typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer
 
typedef std::map< uint8_t, std::vector< uint16_t > > LutsMap
 
typedef std::map< uint8_t, std::vector< uint16_t > > FadcsMap
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

StatusCode convert (State &state, const IROBDataProviderSvc::VROBFRAG &robFrags) const
 
void initSourceIDs ()
 
const std::vector< uint32_t > & ppmSourceIDs (State &state, const std::string &sgKey) const
 Return reference to vector with all possible Source Identifiers. More...
 
StatusCode processRobFragment_ (State &state, const ROBIterator &robFrag, const RequestType &requestedType) const
 
StatusCode processPpmWord_ (State &state, uint32_t word, int indata) const
 
StatusCode processPpmBlock_ (State &state) const
 
StatusCode processPpmBlockR4V1_ (State &state) const
 
StatusCode processPpmBlockR3V1_ (State &state) const
 
StatusCode processPpmStandardR4V1_ (State &state) const
 
StatusCode processPpmStandardR3V1_ (State &state) const
 
StatusCode processPpmStandardR3V1_ (State &state, uint32_t word, int indata) const
 
StatusCode processPpmCompressedR3V1_ (State &state) const
 
std::vector< uint16_t > getPpmAdcSamplesR3_ (State &state, BitReader &br, uint8_t format, uint8_t minIndex) const
 
StatusCode processPpmCompressedR4V1_ (State &state) const
 
void interpretPpmHeaderR4V1_ (BitReader &br, uint8_t numAdc, int8_t &encoding, int8_t &minIndex) const
 
std::vector< uint16_t > getPpmAdcSamplesR4_ (State &state, BitReader &br, uint8_t encoding, uint8_t minIndex) const
 
StatusCode processPpmNeutral_ (State &state) const
 
StatusCode addTriggerTowerV2_ (State &state, uint8_t crate, uint8_t module, uint8_t channel, std::vector< uint8_t > &&lcpVal, std::vector< uint8_t > &&lcpBcidVec, std::vector< uint8_t > &&ljeVal, std::vector< uint8_t > &&ljeSat80Vec, std::vector< uint16_t > &&adcVal, std::vector< uint8_t > &&adcExt, std::vector< int16_t > &&pedCor, std::vector< uint8_t > &&pedEn) const
 
StatusCode addTriggerTowerV1_ (State &state, uint8_t crate, uint8_t module, uint8_t channel, const std::vector< uint16_t > &luts, const std::vector< uint16_t > &fadc) const
 
StatusCode addTriggerTowerV1_ (State &state, uint8_t crate, uint8_t module, uint8_t channel, std::vector< uint8_t > &&luts, std::vector< uint8_t > &&lcpBcidVec, std::vector< uint16_t > &&fadc, std::vector< uint8_t > &&bcidExt) const
 
void processSubBlockStatus_ (State &state, uint8_t crate, uint8_t module, uint32_t word) 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

ToolHandle< LVL1BS::L1CaloErrorByteStreamToolm_errorTool
 
ToolHandle< LVL1::IL1CaloMappingToolm_ppmMaps
 Channel mapping tool. More...
 
ServiceHandle< IROBDataProviderSvcm_robDataProvider
 Service for reading bytestream. More...
 
std::vector< uint32_t > m_ppmSourceIDs
 
std::vector< uint32_t > m_ppmSourceIDsMuon
 
std::vector< uint32_t > m_ppmSourceIDsSpare
 
L1CaloSrcIdMapm_srcIdMap
 
std::atomic< size_t > m_maxSizeSeen
 
bool m_useSWROD = false
 
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 const uint8_t s_crates = 8
 
static const uint8_t s_modules = 16
 
static const uint8_t s_channels = 64
 
static const uint16_t s_maxtowers = s_crates * s_modules * s_channels
 

Detailed Description

Tool to perform ROB fragments to trigger towers and trigger towers to raw data conversions.

Author
alexa.nosp@m.nder.nosp@m..mazu.nosp@m.rov@.nosp@m.cern..nosp@m.ch

Definition at line 58 of file PpmByteStreamReadV1V2Tool.h.

Member Typedef Documentation

◆ FadcsMap

typedef std::map<uint8_t, std::vector<uint16_t> > LVL1BS::PpmByteStreamReadV1V2Tool::FadcsMap
private

Definition at line 101 of file PpmByteStreamReadV1V2Tool.h.

◆ LutsMap

typedef std::map<uint8_t, std::vector<uint16_t> > LVL1BS::PpmByteStreamReadV1V2Tool::LutsMap
private

Definition at line 100 of file PpmByteStreamReadV1V2Tool.h.

◆ ROBIterator

typedef IROBDataProviderSvc::VROBFRAG::const_iterator LVL1BS::PpmByteStreamReadV1V2Tool::ROBIterator
private

Definition at line 77 of file PpmByteStreamReadV1V2Tool.h.

◆ ROBPointer

Definition at line 78 of file PpmByteStreamReadV1V2Tool.h.

◆ RODPointer

Definition at line 79 of file PpmByteStreamReadV1V2Tool.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ RequestType

Enumerator
PPM 
CPM 
CMX 

Definition at line 76 of file PpmByteStreamReadV1V2Tool.h.

76 { PPM, CPM, CMX };

Constructor & Destructor Documentation

◆ PpmByteStreamReadV1V2Tool()

LVL1BS::PpmByteStreamReadV1V2Tool::PpmByteStreamReadV1V2Tool ( const std::string &  name)

Definition at line 63 of file PpmByteStreamReadV1V2Tool.cxx.

64  :
65  AsgTool(name),
66  m_errorTool("LVL1BS::L1CaloErrorByteStreamTool/L1CaloErrorByteStreamTool"),
67  m_ppmMaps("LVL1::PpmMappingTool/PpmMappingTool"),
68  m_robDataProvider("ROBDataProviderSvc", name),
69  m_srcIdMap(nullptr),
70  m_maxSizeSeen(0)
71 {
72  declareInterface<PpmByteStreamReadV1V2Tool>(this);
73  declareProperty("UseSWROD",m_useSWROD = false, "Use SWROD readout instead of legacy (which was removed in 2024)");
74  declareProperty("PpmMappingTool", m_ppmMaps,
75  "Crate/Module/Channel to Eta/Phi/Layer mapping tool");
76  declareProperty("ROBDataProviderSvc", m_robDataProvider,
77  "Get ROB source IDs service");
78 }

◆ ~PpmByteStreamReadV1V2Tool()

virtual LVL1BS::PpmByteStreamReadV1V2Tool::~PpmByteStreamReadV1V2Tool ( )
inlinevirtual

Definition at line 64 of file PpmByteStreamReadV1V2Tool.h.

64 {};

Member Function Documentation

◆ addTriggerTowerV1_() [1/2]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::addTriggerTowerV1_ ( State state,
uint8_t  crate,
uint8_t  module,
uint8_t  channel,
const std::vector< uint16_t > &  luts,
const std::vector< uint16_t > &  fadc 
) const
private

Definition at line 1003 of file PpmByteStreamReadV1V2Tool.cxx.

1011 {
1012  std::vector<uint8_t> lcpVal;
1013  std::vector<uint8_t> lcpBcidVec;
1014 
1015  std::vector<uint16_t> adcVal;
1016  std::vector<uint8_t> adcExt;
1017 
1018  for(auto lut: luts) {
1019  lcpVal.push_back(BitField::get<uint8_t>(lut, 0, 8));
1020  lcpBcidVec.push_back(BitField::get<uint8_t>(lut, 8, 3));
1021  }
1022 
1023  for(auto f: fadc) {
1024  adcExt.push_back(BitField::get<uint8_t>(f, 0, 1));
1025  adcVal.push_back(BitField::get<uint16_t>(f, 1, 10));
1026  }
1027 
1028  CHECK(addTriggerTowerV1_(state,
1029  crate, module, channel,
1030  std::move(lcpVal), std::move(lcpBcidVec),
1031  std::move(adcVal), std::move(adcExt)));
1032 
1033  return StatusCode::SUCCESS;
1034 }

◆ addTriggerTowerV1_() [2/2]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::addTriggerTowerV1_ ( State state,
uint8_t  crate,
uint8_t  module,
uint8_t  channel,
std::vector< uint8_t > &&  luts,
std::vector< uint8_t > &&  lcpBcidVec,
std::vector< uint16_t > &&  fadc,
std::vector< uint8_t > &&  bcidExt 
) const
private

Definition at line 976 of file PpmByteStreamReadV1V2Tool.cxx.

986 {
987  std::vector<uint8_t> ljeSat80Vec;
988 
989  std::vector<int16_t> pedCor;
990  std::vector<uint8_t> pedEn;
991 
993  crate, module, channel,
994  std::move(luts), std::move(lcpBcidVec),
995  std::move(luts) , std::move(ljeSat80Vec),
996  std::move(fadc), std::move(bcidExt),
997  std::move(pedCor), std::move(pedEn))
998  );
999 
1000  return StatusCode::SUCCESS;
1001 }

◆ addTriggerTowerV2_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::addTriggerTowerV2_ ( State state,
uint8_t  crate,
uint8_t  module,
uint8_t  channel,
std::vector< uint8_t > &&  lcpVal,
std::vector< uint8_t > &&  lcpBcidVec,
std::vector< uint8_t > &&  ljeVal,
std::vector< uint8_t > &&  ljeSat80Vec,
std::vector< uint16_t > &&  adcVal,
std::vector< uint8_t > &&  adcExt,
std::vector< int16_t > &&  pedCor,
std::vector< uint8_t > &&  pedEn 
) const
private

Definition at line 930 of file PpmByteStreamReadV1V2Tool.cxx.

943 {
944  uint32_t coolId = ::coolId(crate, module, channel);
945 
946  int layer = 0;
947  double eta = 0.;
948  double phi = 0.;
949 
950  bool isData = m_ppmMaps->mapping(crate, module, channel, eta, phi, layer);
951 
952  if (!isData && !state.m_ppmIsRetSpare && !state.m_ppmIsRetMuon){
953  return StatusCode::SUCCESS;
954  }
955 
956  if (!isData) {
957  const int pin = channel % 16;
958  const int asic = channel / 16;
959  eta = 16 * crate + module;
960  phi = 4 * pin + asic;
961  }
962 
964  state.m_triggerTowers->push_back(tt);
965 
966  tt->initialize(coolId, eta, phi,
967  std::move(lcpVal), std::move(ljeVal),
968  std::move(pedCor), std::move(pedEn),
969  std::move(lcpBcidVec), std::move(adcVal),
970  std::move(adcExt), std::move(ljeSat80Vec),
971  0, state.m_caloUserHeader.lut(),
972  state.m_caloUserHeader.ppFadc());
973  return StatusCode::SUCCESS;
974 }

◆ convert() [1/3]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::convert ( const std::string &  sgKey,
xAOD::TriggerTowerContainer *const  ttCollection 
) const

Definition at line 140 of file PpmByteStreamReadV1V2Tool.cxx.

142 {
143  State state;
144  state.m_triggerTowers = ttCollection;
145  const std::vector<uint32_t>& vID(ppmSourceIDs(state, sgKey));
146  // // get ROB fragments
148  m_robDataProvider->getROBData(Gaudi::Hive::currentContext(), vID, robFrags, "PpmByteStreamxAODReadTool");
149  ATH_MSG_DEBUG("Number of ROB fragments:" << robFrags.size());
150 
151  CHECK(convert(state, robFrags));
152  return StatusCode::SUCCESS;
153 }

◆ convert() [2/3]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::convert ( State state,
const IROBDataProviderSvc::VROBFRAG robFrags 
) const
private

Definition at line 107 of file PpmByteStreamReadV1V2Tool.cxx.

110 {
111  if (m_maxSizeSeen > state.m_triggerTowers->capacity()){
112  state.m_triggerTowers->reserve (m_maxSizeSeen);
113  }
114 
115  state.m_subDetectorID = eformat::TDAQ_CALO_PREPROC;
116 
117  ROBIterator rob = robFrags.begin();
118  ROBIterator robEnd = robFrags.end();
119 
120  int robCounter = 1;
121  for (; rob != robEnd; ++rob, ++robCounter) {
122 
124  if (!sc.isSuccess()) {
125 
126  }
127  }
128 
129  CxxUtils::atomic_fetch_max (&m_maxSizeSeen, state.m_triggerTowers->size());
130  return StatusCode::SUCCESS;
131 }

◆ convert() [3/3]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::convert ( xAOD::TriggerTowerContainer *const  ttCollection) const

Convert ROB fragments to trigger towers.

Definition at line 134 of file PpmByteStreamReadV1V2Tool.cxx.

136 {
138 }

◆ 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

◆ finalize()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::finalize ( )
overridevirtual

Definition at line 100 of file PpmByteStreamReadV1V2Tool.cxx.

100  {
101  delete m_srcIdMap;
102 
103  return StatusCode::SUCCESS;
104 }

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getPpmAdcSamplesR3_()

std::vector< uint16_t > LVL1BS::PpmByteStreamReadV1V2Tool::getPpmAdcSamplesR3_ ( State state,
BitReader br,
uint8_t  format,
uint8_t  minIndex 
) const
private

Definition at line 500 of file PpmByteStreamReadV1V2Tool.cxx.

503 {
504  std::vector<uint16_t> adc = {0, 0, 0, 0, 0};
505  uint8_t minAdc = 0;
506 
507  for(uint8_t i = 0; i <5; ++i) {
508  uint8_t longField = 0;
509  uint8_t numBits = 0;
510  if (format > 2) {
511  longField = br.getField(1);
512  numBits = longField == 0? 4: (format * 2);
513  } else {
514  numBits = i == 0? 4: (format + 2);
515  }
516 
517  if (i == 0) {
518  minAdc = br.getField(numBits);
519  if (longField == 0) {
520  minAdc += state.m_caloUserHeader.ppLowerBound();
521  }
522  } else {
523  adc[i] = minAdc + br.getField(numBits);
524  }
525  }
526 
527  if (minIndex == 0) {
528  adc[0] = minAdc;
529  } else {
530  adc[0] = adc[minIndex];
531  adc[minIndex] = minAdc;
532  }
533  return adc;
534 }

◆ getPpmAdcSamplesR4_()

std::vector< uint16_t > LVL1BS::PpmByteStreamReadV1V2Tool::getPpmAdcSamplesR4_ ( State state,
BitReader br,
uint8_t  encoding,
uint8_t  minIndex 
) const
private

Definition at line 787 of file PpmByteStreamReadV1V2Tool.cxx.

791 {
792  uint8_t numAdc = state.m_subBlockHeader.nSlice2();
793 
794  if (encoding == 6) {
795  uint16_t val = br.getField(6);
796  return std::vector<uint16_t>(numAdc, val);
797  } else if ( encoding < 3) {
798  std::vector<uint16_t> adc(numAdc, 0);
799  uint16_t minAdc = br.getField(5) + state.m_caloUserHeader.ppLowerBound();
800  adc[minIndex] = minAdc;
801  for(uint8_t i = 1; i < numAdc; ++i) {
802  adc[i == minIndex? 0: i] = br.getField(encoding + 2) + minAdc;
803  }
804  return adc;
805  } else {
806  std::vector<uint16_t> adc(numAdc, 0);
807  uint16_t minAdc = br.getField(1)
808  ? br.getField(encoding * 2)
809  : (br.getField(5) +
810  state.m_caloUserHeader.ppLowerBound());
811 
812  adc[minIndex] = minAdc;
813  for (uint8_t i = 1; i < numAdc; ++i) {
814  adc[minIndex == i? 0: i] = br.getField(
815  br.getField(1)? encoding * 2: 4
816  ) + minAdc;
817  }
818  return adc;
819  }
820 }

◆ getProperty()

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ initialize()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::initialize ( )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 84 of file PpmByteStreamReadV1V2Tool.cxx.

84  {
85  ATH_MSG_DEBUG("Initializing " << name());
86 
87  m_srcIdMap = new L1CaloSrcIdMap();
89  CHECK(m_errorTool.retrieve());
90  CHECK(m_ppmMaps.retrieve());
91  CHECK(m_robDataProvider.retrieve());
92 
93  initSourceIDs();
94 
95  return StatusCode::SUCCESS;
96 }

◆ initSourceIDs()

void LVL1BS::PpmByteStreamReadV1V2Tool::initSourceIDs ( )
private

Definition at line 1039 of file PpmByteStreamReadV1V2Tool.cxx.

1040 {
1041  const int crates = 8;
1042 
1043  m_ppmSourceIDs.clear();
1044  m_ppmSourceIDsSpare.clear();
1045  m_ppmSourceIDsMuon.clear();
1046 
1047  for (int crate = 0; crate < crates; ++crate) {
1048  for (int slink = 0; slink < m_srcIdMap->maxSlinks(); ++slink) {
1049  const uint32_t rodId = m_srcIdMap->getRodID(crate, slink, 0,
1050  eformat::TDAQ_CALO_PREPROC);
1051  const uint32_t robId = m_srcIdMap->getRobID(rodId);
1052  m_ppmSourceIDs.push_back(robId);
1053  if (crate > 1 && crate < 6) {
1054  m_ppmSourceIDsSpare.push_back(robId);
1055  if (crate < 4 && slink == 0) {
1056  m_ppmSourceIDsMuon.push_back(robId);
1057  }
1058  }
1059  }
1060  }
1061 }

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

◆ interpretPpmHeaderR4V1_()

void LVL1BS::PpmByteStreamReadV1V2Tool::interpretPpmHeaderR4V1_ ( BitReader br,
uint8_t  numAdc,
int8_t &  encoding,
int8_t &  minIndex 
) const
private

Definition at line 736 of file PpmByteStreamReadV1V2Tool.cxx.

739 {
740  uint8_t minHeader = 0;
741 
742  if (numAdc == 5) {
743  minHeader = br.getField(4);
744 
745  minIndex = minHeader % 5;
746  if (minHeader < 15){ // Encodings 0-5
747  if (minHeader < 10) {
748  encoding = minHeader / 5;
749  } else {
750  encoding = 2 + br.getField(2);
751  }
752  } else {
753  encoding = 6;
754  }
755  } else {
756  uint8_t numBits = 0;
757  if (numAdc ==3 ) {
758  numBits = 2;
759  } else if (numAdc == 7) {
760  numBits = 3;
761  } else if (numAdc < 16) {
762  numBits = 4;
763  }
764 
765  if (numBits > 0) {
766  uint8_t fieldSize = 1 << numBits;
767  minHeader = br.getField(numBits);
768  uint8_t encValue = fieldSize - 1;
769  if (minHeader == encValue) { // Encoding 6
770  encoding = 6;
771  minIndex = 0;
772  } else {
773  minHeader += br.getField(2) << numBits;
774  minIndex = minHeader % fieldSize;
775  encValue = 3 * fieldSize;
776 
777  if (minHeader < encValue) { // Encodings 0-2
778  encoding = minHeader / fieldSize;
779  } else {
780  encoding = 3 + br.getField(2);
781  }
782  }
783  }
784  }
785 }

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

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

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

◆ ppmSourceIDs()

const std::vector< uint32_t > & LVL1BS::PpmByteStreamReadV1V2Tool::ppmSourceIDs ( State state,
const std::string &  sgKey 
) const
private

Return reference to vector with all possible Source Identifiers.

Definition at line 1065 of file PpmByteStreamReadV1V2Tool.cxx.

1068 {
1069  state.m_ppmIsRetMuon = false;
1070  state.m_ppmIsRetSpare = false;
1071 
1072  if (sgKey.find("Muon") != std::string::npos) {
1073  state.m_ppmIsRetMuon = true;
1074  } else if (sgKey.find("Spare") != std::string::npos) {
1075  state.m_ppmIsRetSpare = true;
1076  }
1077 
1078  if (state.m_ppmIsRetSpare) {
1079  return m_ppmSourceIDsSpare;
1080  }
1081 
1082  if (state.m_ppmIsRetMuon) {
1083  return m_ppmSourceIDsMuon;
1084  }
1085 
1086  return m_ppmSourceIDs;
1087 }

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ processPpmBlock_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmBlock_ ( State state) const
private

Definition at line 293 of file PpmByteStreamReadV1V2Tool.cxx.

294 {
295  if (state.m_ppBlock.size() > 0) {
296  if (state.m_subBlockHeader.format() == 0) {
298  CHECK(sc);
299  return sc;
300  }
301 
302  if (state.m_verCode == 0x31) {
304  CHECK(sc);
305  return sc;
306  }
307 
308  if (state.m_verCode == 0x41 || state.m_verCode == 0x42) {
310  CHECK(sc);
311  return sc;
312  }
313  }
314 
315  if (state.m_ppLuts.size() > 0) {
316  if (state.m_verCode == 0x21 || state.m_verCode == 0x31) {
318  CHECK(sc);
319  return sc;
320  }
321  ATH_MSG_ERROR("Unknown PPM subheader format '"
322  << int(state.m_subBlockHeader.format())
323  << "' for rob version '"
324  << MSG::hex << int(state.m_verCode)
325  << MSG::dec << "'" );
326  return StatusCode::FAILURE;
327  }
328  return StatusCode::SUCCESS;
329 }

◆ processPpmBlockR3V1_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmBlockR3V1_ ( State state) const
private

Definition at line 822 of file PpmByteStreamReadV1V2Tool.cxx.

823 {
824  if (state.m_subBlockHeader.format() == 1) {
826  return StatusCode::SUCCESS;
827  } else if (state.m_subBlockHeader.format() >= 2) {
828  // TODO: convert compressed
829  return StatusCode::FAILURE;
830  }
831  return StatusCode::FAILURE;
832 }

◆ processPpmBlockR4V1_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmBlockR4V1_ ( State state) const
private

Definition at line 577 of file PpmByteStreamReadV1V2Tool.cxx.

578 {
579  if (state.m_subBlockHeader.format() == 1) {
581  return StatusCode::SUCCESS;
582  } else if (state.m_subBlockHeader.format() >= 2) {
584  return StatusCode::SUCCESS;
585  }
586  return StatusCode::FAILURE;
587 }

◆ processPpmCompressedR3V1_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmCompressedR3V1_ ( State state) const
private

Definition at line 416 of file PpmByteStreamReadV1V2Tool.cxx.

417 {
418  BitReader br (state.m_ppBlock);
419  uint8_t chan = 0;
420  try{
421  while (chan < 64) {
422  uint8_t present = 1;
423  if (state.m_subBlockHeader.format() == 3) {
424  present = br.getField(1);
425  }
426 
427  if (present == 1) {
428  uint8_t lutVal = 0;
429  uint8_t fmt = 6;
430  uint8_t lutSat=0;
431  uint8_t lutExt=0;
432  uint8_t lutPeak=0;
433 
434  std::vector<uint16_t> adcVal = {0 , 0, 0, 0, 0};
435  std::vector<uint8_t> adcExt = {0 , 0, 0, 0, 0};
436 
437  uint8_t minHeader = br.getField(4);
438  uint8_t minIndex = minHeader % 5;
439  if (minHeader < 15) { // Formats 0-5
440  if (minHeader < 10) { // Formats 0-1
441  fmt = minHeader / 5;
442  } else { // Formats 2-5
443  fmt = 2 + br.getField( 2);
444  uint8_t haveLut = br.getField(1);
445  if (fmt == 2) {
446  if (haveLut == 1) {
447  lutVal = br.getField(3);
448  lutPeak = 1; // Even if LutVal==0 it seems
449  }
450  } else {
451  uint8_t haveExt = br.getField(1);
452  if (haveLut == 1) {
453  lutVal = br.getField(8);
454  lutExt = br.getField(1);
455  lutSat = br.getField(1);
456  lutPeak = br.getField(1);
457  }
458 
459  if (haveExt == 1){
460  for(uint8_t i = 0; i < 5; ++i) {
461  adcExt[i] = br.getField(1);
462  }
463  } else {
464  adcExt[2] = lutExt;
465  }
466  }
467  }
468  adcVal = getPpmAdcSamplesR3_(state, br, fmt, minIndex);
469  } else {
470  uint8_t haveAdc = br.getField(1);
471  if (haveAdc == 1) {
472  uint16_t val = br.getField(10);
473  for(uint8_t i = 0; i < 5; ++i) {
474  adcVal[i] = val;
475  }
476  }
477  }
478  // Add Trigger Tower
479  //std::vector<uint8_t> luts = {lutVal};
481  state,
482  state.m_subBlockHeader.crate(),
483  state.m_subBlockHeader.module(),
484  chan,
485  std::vector<uint8_t> {lutVal},
486  std::vector<uint8_t> {uint8_t(lutExt | (lutSat << 1) | (lutPeak << 2))},
487  std::move(adcVal),
488  std::move(adcExt)
489  ));
490  }
491  chan++;
492  }
493  }catch (const std::out_of_range& ex) {
494  ATH_MSG_WARNING("Excess Data in Sub-block");
495  m_errorTool->rodError(state.m_rodSourceId, L1CaloSubBlock::UNPACK_EXCESS_DATA);
496  }
497  return StatusCode::SUCCESS;
498 }

◆ processPpmCompressedR4V1_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmCompressedR4V1_ ( State state) const
private

Definition at line 589 of file PpmByteStreamReadV1V2Tool.cxx.

590 {
591  BitReader br (state.m_ppBlock);
592  uint8_t numAdc = state.m_subBlockHeader.nSlice2();
593  uint8_t numLut = state.m_subBlockHeader.nSlice1();
594  int16_t pedCorBase = -20;
595 
596 
597  try{
598  for(uint8_t chan = 0; chan < s_channels; ++chan) {
599  uint8_t present = 1;
600 
601  std::vector<uint8_t> haveLut(numLut, 0);
602  std::vector<uint8_t> lcpVal(numLut, 0);
603 
604  std::vector<uint8_t> lcpExt(numLut, 0);
605  std::vector<uint8_t> lcpSat(numLut, 0);
606  std::vector<uint8_t> lcpPeak(numLut, 0);
607  std::vector<uint8_t> lcpBcidVec(numLut, 0);
608 
609  std::vector<uint8_t> ljeVal(numLut, 0);
610 
611  std::vector<uint8_t> ljeLow(numLut, 0);
612  std::vector<uint8_t> ljeHigh(numLut, 0);
613  std::vector<uint8_t> ljeRes(numLut, 0);
614  std::vector<uint8_t> ljeSat80Vec(numLut, 0);
615 
616  std::vector<uint16_t> adcVal(numAdc, 0);
617  std::vector<uint8_t> adcExt(numAdc, 0);
618  std::vector<int16_t> pedCor(numLut, 0);
619  std::vector<uint8_t> pedEn(numLut, 0);
620 
621  int8_t encoding = -1;
622  int8_t minIndex = -1;
623 
624  if (state.m_subBlockHeader.format() == 3) {
625  present = br.getField(1);
626  }
627  if (present == 1) {
628  interpretPpmHeaderR4V1_(br, numAdc, encoding, minIndex);
629  CHECK((encoding != -1) && (minIndex != -1));
630  // First get the LIT related quantities
631  if (encoding < 3) {
632  // Get the peal finder bits
633  for(uint i=0; i < numLut; ++i) {
634  lcpPeak[i] = br.getField(1);
635  }
636  // Get Sat80 low bits
637  if (encoding > 0) {
638  for (uint8_t i = 0; i < numLut; ++i) {
639  ljeLow[i] = br.getField(1);
640  }
641  }
642  // Get LutCP and LutJEP values (these are
643  // only present if the peak finder is set).
644  if (encoding == 2) {
645  for (uint8_t i = 0; i < numLut; ++i) {
646  if (lcpPeak[i] == 1) {
647  lcpVal[i] = br.getField(4);
648  }
649  }
650  for(uint8_t i = 0; i < numLut; ++i) {
651  if (lcpPeak[i] == 1){
652  ljeVal[i] = br.getField(3);
653  }
654  }
655  }
656  } else if (encoding < 6) {
657  // Get LUT presence flag for each LUT slice.
658  for(uint8_t i = 0; i < numLut; ++i){
659  haveLut[i] = br.getField(1);
660  }
661 
662  // Get external BCID bits (if block is present).
663  uint8_t haveExt = br.getField(1);
664 
665  if (haveExt == 1) {
666  for (uint8_t i = 0; i < numAdc; ++i) {
667  adcExt[i] = br.getField(1);
668  }
669  }
670 
671  for(uint8_t i = 0; i < numLut; ++i){
672  if (haveLut[i] == 1) {
673  lcpVal[i] = br.getField(8);
674  lcpExt[i] = br.getField(1);
675  lcpSat[i] = br.getField(1);
676  lcpPeak[i] = br.getField(1);
677  }
678  }
679  // Get JEP LUT values and corresponding bits.
680  for(uint8_t i = 0; i < numLut; ++i){
681  if (haveLut[i] == 1) {
682  ljeVal[i] = br.getField(8);
683  ljeLow[i] = br.getField(1);
684  ljeHigh[i] = br.getField(1);
685  ljeRes[i] = br.getField(1);
686  }
687  }
688 
689  }
690 
691  }
692  // Next get the ADC related quantities (all encodings).
693  adcVal = getPpmAdcSamplesR4_(state, br, encoding, minIndex);
694  // Finally get the pedestal correction.
695  if ((encoding < 3) || (encoding == 6)) {
696  for (uint8_t i = 0; i < numLut; ++i)
697  {
698  pedCor[i] = br.getField(6) + pedCorBase;
699  if (state.m_subBlockHeader.compVer() > 0) {
700  pedEn[i] = 1;
701  }
702  }
703  } else {
704  // At the moment there is an enabled bit for every LUT slice
705  // (even though its really a global flag).
706  // The correction values is a twos complement signed value.
707  for (uint8_t i = 0; i < numLut; ++i)
708  {
709  uint16_t val = br.getField(10);
710  pedCor[i] = ::pedCorrection(val);
711  pedEn[i] = br.getField(1);
712  }
713  }
714 
715  for(uint8_t i=0; i < numLut; ++i){
716  lcpBcidVec[i] = uint8_t((lcpPeak[i] << 2) | (lcpSat[i] << 1) | lcpExt[i]);
717  ljeSat80Vec[i] = uint8_t((ljeRes[i] << 2) | (ljeHigh[i] << 1) | ljeLow[i]);
718  }
720  state.m_subBlockHeader.crate(), state.m_subBlockHeader.module(),
721  chan,
722  std::move(lcpVal), std::move(lcpBcidVec),
723  std::move(ljeVal), std::move(ljeSat80Vec),
724  std::move(adcVal), std::move(adcExt),
725  std::move(pedCor), std::move(pedEn)));
726  } // for
727  } catch (const std::out_of_range& ex) {
728  ATH_MSG_WARNING("Excess Data in Sub-block");
729  m_errorTool->rodError(state.m_rodSourceId, L1CaloSubBlock::UNPACK_EXCESS_DATA);
730  }
731  //Check status workd
732  return StatusCode::SUCCESS;
733 
734 }

◆ processPpmNeutral_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmNeutral_ ( State state) const
private

Definition at line 331 of file PpmByteStreamReadV1V2Tool.cxx.

332 {
333  uint8_t numLut = state.m_subBlockHeader.nSlice1();
334  uint8_t numFadc = state.m_subBlockHeader.nSlice2();
335  uint8_t totSlice = 3 * numLut + numFadc;
336 
337  uint8_t channel = 0;
338  for ( int asic = 0 ; asic < 4 ; ++asic ) {
339  for ( int mcm = 0 ; mcm < 16 ; ++mcm ) {
340  // ----------------------------------------------------------------------
341  std::vector<uint32_t> rotated(totSlice);
342 
343  for ( uint8_t slice = 0 ; slice < totSlice ; ++slice ) {
344  for ( uint8_t bit = 0 ; bit < 11 ; ++bit ) {
345  if ( state.m_ppBlock[slice * 11 + asic * (11 * totSlice) + bit + 1] & (1 << mcm))
346  rotated[slice] |= (1 << bit);
347  }
348  }
349 
350  bool nonZeroData = false;
351  for (uint8_t slice = 0; slice < numLut; ++slice) {
352  if (rotated[slice]
353  || rotated[slice + numLut]
354  || rotated[slice + 2 * numLut + numFadc]) { // CP, JET
355  nonZeroData = true;
356  break;
357  }
358  }
359 
360  std::vector<uint8_t> lcpVal;
361  std::vector<uint8_t> lcpBcidVec;
362  std::vector<uint8_t> ljeVal;
363  std::vector<uint8_t> ljeSat80Vec;
364  std::vector<int16_t> pedCor;
365  std::vector<uint8_t> pedEn;
366 
367  std::vector<uint16_t> adcVal;
368  std::vector<uint8_t> adcExt;
369 
370  if (nonZeroData) {
371  for (uint8_t slice = 0; slice < numLut; ++slice) {
372  lcpVal.push_back(rotated[slice] & 0xff);
373  ljeVal.push_back(rotated[slice + numLut] & 0xff);
374  pedCor.push_back(::pedCorrection(rotated[slice + 2 * numLut + numFadc] & 0x3ff));
375 
376  lcpBcidVec.push_back((rotated[slice] >> 8) & 0x7);
377  ljeSat80Vec.push_back((rotated[slice + numLut] >> 8) & 0x7);
378  pedEn.push_back((rotated[slice + 2 * numLut + numFadc] >> 10) & 0x1);
379  }
380  }
381 
382  for (uint8_t slice = 0; slice < numFadc; ++slice) {
383  if (rotated[slice + numLut]) { // CP, JET
384  nonZeroData = true;
385  break;
386  }
387  }
388 
389  if (nonZeroData) {
390  for (uint8_t slice = 0; slice < numFadc; ++ slice) {
391  adcVal.push_back(rotated[slice + 2 * numLut] & 0x3ff);
392  adcExt.push_back((rotated[slice + 2 * numLut] >> 10 & 0x1) & 0x3ff);
393  }
394  }
395 
397  state,
398  state.m_subBlockHeader.crate(),
399  state.m_subBlockHeader.module(),
400  channel,
401  std::move(lcpVal),
402  std::move(lcpBcidVec),
403  std::move(ljeVal),
404  std::move(ljeSat80Vec),
405  std::move(adcVal),
406  std::move(adcExt),
407  std::move(pedCor),
408  std::move(pedEn)));
409  // ---------------------------------------------------------------------
410  channel++;
411  }
412  }
413  return StatusCode::SUCCESS;
414 }

◆ processPpmStandardR3V1_() [1/2]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmStandardR3V1_ ( State state) const
private

Definition at line 894 of file PpmByteStreamReadV1V2Tool.cxx.

895 {
896  for(auto lut : state.m_ppLuts) {
898  state,
899  state.m_subBlockHeader.crate(),
900  state.m_subBlockHeader.module(),
901  lut.first,
902  lut.second,
903  state.m_ppFadcs[lut.first]));
904  }
905  return StatusCode::SUCCESS;
906 }

◆ processPpmStandardR3V1_() [2/2]

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmStandardR3V1_ ( State state,
uint32_t  word,
int  indata 
) const
private

Definition at line 538 of file PpmByteStreamReadV1V2Tool.cxx.

541 {
542 
543  StatusCode sc = StatusCode::SUCCESS;
544  if (state.m_subBlockHeader.seqNum() == 63) { // Error block
545  ATH_MSG_DEBUG("Error PPM subblock");
546  //TODO: errorTool
547  } else {
548  const uint8_t numAdc = state.m_subBlockHeader.nSlice2();
549  const uint8_t numLut = state.m_subBlockHeader.nSlice1();
550  const uint8_t nTotal = numAdc + numLut;
551  const uint8_t wordsPerBlock = 8; // 16 towers (4 MCMs) / 2 per word
552  const uint8_t iBlk = inData / wordsPerBlock;
553  uint8_t iChan = state.m_subBlockHeader.seqNum() + 2 * (inData % wordsPerBlock);
554 
555  if (iBlk < numLut) { // First all LUT values
556  for(uint8_t i = 0; i < 2; ++i) {
557  uint16_t subword = (word >> 16 * i) & 0x7ff;
558  state.m_ppLuts[iChan].push_back(subword);
559  iChan++;
560  }
561  } else if (iBlk < nTotal) { // Next all FADC values
562  for(uint8_t i = 0; i < 2; ++i) {
563  uint16_t subword = (word >> (16 * i)) & 0x7ff;
564  state.m_ppFadcs[iChan].push_back(subword);
565  iChan++;
566  }
567 
568  } else{
569  ATH_MSG_WARNING("Error decoding Ppm word (run1)");
570  sc = StatusCode::FAILURE;
571  }
572 
573  }
574  return sc;
575 }

◆ processPpmStandardR4V1_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmStandardR4V1_ ( State state) const
private

Definition at line 834 of file PpmByteStreamReadV1V2Tool.cxx.

835 {
836  BitReader br (state.m_ppBlock);
837  uint8_t numAdc = state.m_subBlockHeader.nSlice2();
838  uint8_t numLut = state.m_subBlockHeader.nSlice1();
839  uint8_t crate = state.m_subBlockHeader.crate();
840  uint8_t module = state.m_subBlockHeader.module();
841 
842  for (uint8_t chan = 0; chan < 64; ++chan) {
843 
844  //for (uint8_t k = 0; k < 4; ++k) {
845  std::vector<uint8_t> lcpVal;
846  std::vector<uint8_t> lcpBcidVec;
847 
848  std::vector<uint8_t> ljeVal;
849  std::vector<uint8_t> ljeSat80Vec;
850 
851 
852 
853  std::vector<uint16_t> adcVal;
854  std::vector<uint8_t> adcExt;
855  std::vector<int16_t> pedCor;
856  std::vector<uint8_t> pedEn;
857  try {
858  for (int i = 0; i < numLut; ++i) {
859  lcpVal.push_back(br.getField(8));
860  lcpBcidVec.push_back(br.getField(3));
861  }
862 
863  for (int i = 0; i < numLut; ++i) {
864  ljeVal.push_back(br.getField(8));
865  ljeSat80Vec.push_back(br.getField(3));
866  }
867 
868  for (int i = 0; i < numAdc; ++i) {
869  adcVal.push_back(br.getField(10));
870  adcExt.push_back(br.getField(1));
871  }
872 
873  for (int i = 0; i < numLut; ++i) {
874  uint16_t pc = br.getField(10);
875  pedCor.push_back(pedCorrection(pc));
876  pedEn.push_back(br.getField(1));
877  }
878  } catch (const std::out_of_range& ex) {
879  ATH_MSG_WARNING("Excess Data in Sub-block");
880  m_errorTool->rodError(state.m_rodSourceId, L1CaloSubBlock::UNPACK_EXCESS_DATA);
881  }
882  CHECK(
883  addTriggerTowerV2_(state,
884  crate, module, chan,
885  std::move(lcpVal), std::move(lcpBcidVec),
886  std::move(ljeVal), std::move(ljeSat80Vec),
887  std::move(adcVal), std::move(adcExt),
888  std::move(pedCor), std::move(pedEn)));
889  }
890 
891  return StatusCode::SUCCESS;
892 }

◆ processPpmWord_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processPpmWord_ ( State state,
uint32_t  word,
int  indata 
) const
private

Definition at line 273 of file PpmByteStreamReadV1V2Tool.cxx.

276 {
277  if ( (state.m_subBlockHeader.format() == 0)
278  || (state.m_subBlockHeader.format() >= 2)
279  || (state.m_verCode >= 0x41)) {
280  state.m_ppBlock.push_back(word);
281  } else if ((state.m_verCode == 0x21) || (state.m_verCode == 0x31)) {
282  return processPpmStandardR3V1_(state, word, indata);
283  } else {
284  ATH_MSG_ERROR("Unsupported PPM version:format ("
285  << state.m_verCode << ":" << state.m_subBlockHeader.format()
286  <<") combination");
287  return StatusCode::FAILURE;
288  }
289  return StatusCode::SUCCESS;
290 }

◆ processRobFragment_()

StatusCode LVL1BS::PpmByteStreamReadV1V2Tool::processRobFragment_ ( State state,
const ROBIterator robFrag,
const RequestType requestedType 
) const
private

Definition at line 156 of file PpmByteStreamReadV1V2Tool.cxx.

159 {
160  auto rob = **robIter;
161 
163  "Treating ROB fragment source id #" << MSG::hex << rob.rob_source_id());
164 
165 
166  state.m_rodSourceId = rob.rod_source_id();
167  state.m_robSourceId = rob.source_id();
168  const auto sourceID = (state.m_rodSourceId >> 16) & 0xff;
169  const auto rodCrate = m_srcIdMap->crate(state.m_rodSourceId);
170  const auto rodSlink = m_srcIdMap->slink(state.m_rodSourceId);
171  // -------------------------------------------------------------------------
172  // Check Rob status
173  if (rob.nstatus() > 0) {
174  ROBPointer robData;
175  rob.status(robData);
176  if (*robData != 0) {
177  ATH_MSG_WARNING("ROB status error - skipping fragment");
178  m_errorTool->robError(state.m_rodSourceId, *robData);
179  return StatusCode::FAILURE;
180  }
181  }
182  // -------------------------------------------------------------------------
183  RODPointer payloadBeg;
184  RODPointer payloadEnd;
186 
187  rob.rod_data(payloadBeg);
188  payloadEnd = payloadBeg + rob.rod_ndata();
189  payload = payloadBeg;
190  // -------------------------------------------------------------------------
191  if (payload == payloadEnd) {
192  ATH_MSG_DEBUG("ROB fragment empty");
193  return StatusCode::FAILURE;
194  }
195  // -------------------------------------------------------------------------
196 
197 
198  uint16_t rodVer = rob.rod_version() & 0xffff;
199  uint32_t rodRunNumber = rob.rod_run_no() & 0xffffff;
200  state.m_verCode = ((rodVer & 0xfff) << 4) | 1;
201 
202 
203  if (sourceID != state.m_subDetectorID) {
204  ATH_MSG_ERROR("Wrong subdetector source id for requested objects: " << state.m_rodSourceId);
205  return StatusCode::FAILURE;
206  }
207 
208  ATH_MSG_DEBUG("Treating crate " << rodCrate << " slink " << rodSlink);
209  state.m_caloUserHeader = CaloUserHeader(*payload);
210  if (!state.m_caloUserHeader.isValid()) {
211  ATH_MSG_ERROR("Invalid or missing user header");
212  return StatusCode::FAILURE;
213  }
214 
216  "Run number: " << MSG::dec << rodRunNumber << endmsg
217  << "Version code: 0x" << MSG::hex << int(state.m_verCode) << MSG::dec
218  << endmsg << "LUT triggered slice offset: "
219  << int(state.m_caloUserHeader.lut()) << endmsg
220  << "FADC triggered slice offset: " << int(state.m_caloUserHeader.ppFadc())
221  << endmsg << "FADC baseline lower bound: "
222  << int(state.m_caloUserHeader.ppLowerBound()));
223 
224  int indata = 0;
225  uint8_t blockType = 0;
226  int subBlock = 0;
227 
228  for (; payload != payloadEnd; ++payload) {
229  if (CaloUserHeader::isValid(*payload) && (subBlock == 0)) {
230 
232  indata = 0;
233  CHECK(processPpmBlock_(state));
234 
235  state.m_ppLuts.clear();
236  state.m_ppFadcs.clear();
237  state.m_ppBlock.clear();
238 
239  blockType = (*payload >> 28) & 0xf;
240 
241  if ((blockType & 0xd) == 0xc) {
242  state.m_subBlockHeader = SubBlockHeader(*payload);
244  "SubBlock version #" << int(state.m_subBlockHeader.version())
245  << " format #" << int(state.m_subBlockHeader.format())
246  << " seqNum (compVer) #" << int(state.m_subBlockHeader.seqNum())
247  << " nslice1 #" << int(state.m_subBlockHeader.nSlice1())
248  << " nslice2 #" << int(state.m_subBlockHeader.nSlice2())
249  );
250  subBlock = blockType & 0xe;
251  } else if (blockType == (subBlock | 1)) {
252  processSubBlockStatus_(state, state.m_subBlockHeader.crate(), state.m_subBlockHeader.module(), *payload);
253  subBlock = 0;
254  }
255  } else {
256  switch(state.m_subDetectorID){
257  case eformat::TDAQ_CALO_PREPROC:
258  CHECK(processPpmWord_(state, *payload, indata));
259  break;
260  default:
261  break;
262  }
263  indata++;
264  }
265  }
266  CHECK(processPpmBlock_(state));
267  state.m_ppLuts.clear();
268  state.m_ppFadcs.clear();
269  state.m_ppBlock.clear();
270  return StatusCode::SUCCESS;
271 }

◆ processSubBlockStatus_()

void LVL1BS::PpmByteStreamReadV1V2Tool::processSubBlockStatus_ ( State state,
uint8_t  crate,
uint8_t  module,
uint32_t  word 
) const
private

Definition at line 908 of file PpmByteStreamReadV1V2Tool.cxx.

910 {
911  LVL1::DataError errorBits(0);
912  errorBits.set(LVL1::DataError::SubStatusWord, payload);
913 
914  const uint32_t error = errorBits.error();
915  int curr = state.m_triggerTowers->size() - 1;
916  for(int i=0; i < s_channels; ++i){
917  if (curr < 0){
918  break;
919  }
920  auto tt = (*state.m_triggerTowers)[curr--];
921  if (tt->coolId() >> 16 & crateModuleMask(crate, module)){
922  tt->setErrorWord(error);
923  }else{
924  break;
925  }
926  }
927 }

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

◆ 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_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_errorTool

ToolHandle<LVL1BS::L1CaloErrorByteStreamTool> LVL1BS::PpmByteStreamReadV1V2Tool::m_errorTool
private

Definition at line 201 of file PpmByteStreamReadV1V2Tool.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_maxSizeSeen

std::atomic<size_t> LVL1BS::PpmByteStreamReadV1V2Tool::m_maxSizeSeen
mutableprivate

Definition at line 213 of file PpmByteStreamReadV1V2Tool.h.

◆ m_ppmMaps

ToolHandle<LVL1::IL1CaloMappingTool> LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmMaps
private

Channel mapping tool.

Definition at line 203 of file PpmByteStreamReadV1V2Tool.h.

◆ m_ppmSourceIDs

std::vector<uint32_t> LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmSourceIDs
private

Definition at line 208 of file PpmByteStreamReadV1V2Tool.h.

◆ m_ppmSourceIDsMuon

std::vector<uint32_t> LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmSourceIDsMuon
private

Definition at line 209 of file PpmByteStreamReadV1V2Tool.h.

◆ m_ppmSourceIDsSpare

std::vector<uint32_t> LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmSourceIDsSpare
private

Definition at line 210 of file PpmByteStreamReadV1V2Tool.h.

◆ m_robDataProvider

ServiceHandle<IROBDataProviderSvc> LVL1BS::PpmByteStreamReadV1V2Tool::m_robDataProvider
private

Service for reading bytestream.

Definition at line 205 of file PpmByteStreamReadV1V2Tool.h.

◆ m_srcIdMap

L1CaloSrcIdMap* LVL1BS::PpmByteStreamReadV1V2Tool::m_srcIdMap
private

Definition at line 211 of file PpmByteStreamReadV1V2Tool.h.

◆ m_useSWROD

bool LVL1BS::PpmByteStreamReadV1V2Tool::m_useSWROD = false
private

Definition at line 222 of file PpmByteStreamReadV1V2Tool.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ s_channels

const uint8_t LVL1BS::PpmByteStreamReadV1V2Tool::s_channels = 64
staticprivate

Definition at line 219 of file PpmByteStreamReadV1V2Tool.h.

◆ s_crates

const uint8_t LVL1BS::PpmByteStreamReadV1V2Tool::s_crates = 8
staticprivate

Definition at line 217 of file PpmByteStreamReadV1V2Tool.h.

◆ s_maxtowers

const uint16_t LVL1BS::PpmByteStreamReadV1V2Tool::s_maxtowers = s_crates * s_modules * s_channels
staticprivate

Definition at line 220 of file PpmByteStreamReadV1V2Tool.h.

◆ s_modules

const uint8_t LVL1BS::PpmByteStreamReadV1V2Tool::s_modules = 16
staticprivate

Definition at line 218 of file PpmByteStreamReadV1V2Tool.h.


The documentation for this class was generated from the following files:
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
test_pyathena.eta
eta
Definition: test_pyathena.py:10
CxxUtils::atomic_fetch_max
T atomic_fetch_max(std::atomic< T > *a, T v, std::memory_order memorder=std::memory_order_seq_cst)
Atomically calculate maximum.
Definition: atomic_fetch_minmax.h:42
LVL1BS::L1CaloSrcIdMap::slink
int slink(uint32_t code) const
Return slink from unpacked moduleID.
Definition: L1CaloSrcIdMap.cxx:73
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmBlock_
StatusCode processPpmBlock_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:293
LVL1BS::PpmByteStreamReadV1V2Tool::ROBIterator
IROBDataProviderSvc::VROBFRAG::const_iterator ROBIterator
Definition: PpmByteStreamReadV1V2Tool.h:77
LVL1::DataError
Error data.
Definition: DataError.h:27
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
LVL1BS::L1CaloSrcIdMap::useSWROD
static void useSWROD(bool in)
Flag to decide if SWROD readout should be used instead of legacy.
Definition: L1CaloSrcIdMap.h:30
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
vtune_athena.format
format
Definition: vtune_athena.py:14
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
LVL1BS::PpmByteStreamReadV1V2Tool::m_maxSizeSeen
std::atomic< size_t > m_maxSizeSeen
Definition: PpmByteStreamReadV1V2Tool.h:213
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmBlockR4V1_
StatusCode processPpmBlockR4V1_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:577
LVL1BS::PpmByteStreamReadV1V2Tool::m_errorTool
ToolHandle< LVL1BS::L1CaloErrorByteStreamTool > m_errorTool
Definition: PpmByteStreamReadV1V2Tool.h:201
L1Topo::blockType
L1Topo::BlockTypes blockType(const uint32_t word, uint32_t offset=28, uint32_t size=0x0f)
Function to return the block type of a data word from L1Topo
Definition: BlockTypes.cxx:9
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
LVL1BS::L1CaloSrcIdMap::getRobID
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
Definition: L1CaloSrcIdMap.cxx:32
LVL1BS::PpmByteStreamReadV1V2Tool::addTriggerTowerV1_
StatusCode addTriggerTowerV1_(State &state, uint8_t crate, uint8_t module, uint8_t channel, const std::vector< uint16_t > &luts, const std::vector< uint16_t > &fadc) const
Definition: PpmByteStreamReadV1V2Tool.cxx:1003
LVL1BS::PpmByteStreamReadV1V2Tool::processRobFragment_
StatusCode processRobFragment_(State &state, const ROBIterator &robFrag, const RequestType &requestedType) const
Definition: PpmByteStreamReadV1V2Tool.cxx:156
LVL1BS::PpmByteStreamReadV1V2Tool::convert
StatusCode convert(xAOD::TriggerTowerContainer *const ttCollection) const
Convert ROB fragments to trigger towers.
Definition: PpmByteStreamReadV1V2Tool.cxx:134
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmCompressedR3V1_
StatusCode processPpmCompressedR3V1_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:416
LVL1BS::PpmByteStreamReadV1V2Tool::getPpmAdcSamplesR3_
std::vector< uint16_t > getPpmAdcSamplesR3_(State &state, BitReader &br, uint8_t format, uint8_t minIndex) const
Definition: PpmByteStreamReadV1V2Tool.cxx:500
LVL1BS::SubBlockHeader::isSubBlockHeader
bool isSubBlockHeader() const
Definition: SubBlockHeader.cxx:57
xAOD::int16_t
setScaleOne setStatusOne setSaturated int16_t
Definition: gFexGlobalRoI_v1.cxx:55
LVL1BS::PpmByteStreamReadV1V2Tool::m_srcIdMap
L1CaloSrcIdMap * m_srcIdMap
Definition: PpmByteStreamReadV1V2Tool.h:211
LVL1BS::PpmByteStreamReadV1V2Tool::m_robDataProvider
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Service for reading bytestream.
Definition: PpmByteStreamReadV1V2Tool.h:205
ITkPixEncoding::lut
constexpr auto lut(Generator &&f)
Definition: ITkPixQCoreEncodingLUT.h:19
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
LVL1BS::PpmByteStreamReadV1V2Tool::processSubBlockStatus_
void processSubBlockStatus_(State &state, uint8_t crate, uint8_t module, uint32_t word) const
Definition: PpmByteStreamReadV1V2Tool.cxx:908
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmMaps
ToolHandle< LVL1::IL1CaloMappingTool > m_ppmMaps
Channel mapping tool.
Definition: PpmByteStreamReadV1V2Tool.h:203
LVL1::DataError::SubStatusWord
@ SubStatusWord
Definition: DataError.h:44
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
python.PyAthena.module
module
Definition: PyAthena.py:131
LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmSourceIDs
std::vector< uint32_t > m_ppmSourceIDs
Definition: PpmByteStreamReadV1V2Tool.h:208
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
LVL1BS::CaloUserHeader::isValid
bool isValid() const
Definition: CaloUserHeader.cxx:46
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition: AsgTool.cxx:58
LVL1BS::PpmByteStreamReadV1V2Tool::s_channels
static const uint8_t s_channels
Definition: PpmByteStreamReadV1V2Tool.h:219
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmStandardR4V1_
StatusCode processPpmStandardR4V1_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:834
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1BS::PpmByteStreamReadV1V2Tool::m_useSWROD
bool m_useSWROD
Definition: PpmByteStreamReadV1V2Tool.h:222
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
perfmonmt-refit.slice
slice
Definition: perfmonmt-refit.py:52
lumiFormat.i
int i
Definition: lumiFormat.py:85
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
LVL1BS::PpmByteStreamReadV1V2Tool::interpretPpmHeaderR4V1_
void interpretPpmHeaderR4V1_(BitReader &br, uint8_t numAdc, int8_t &encoding, int8_t &minIndex) const
Definition: PpmByteStreamReadV1V2Tool.cxx:736
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
generateReferenceFile.encoding
encoding
Definition: generateReferenceFile.py:15
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LVL1BS::L1CaloSrcIdMap::crate
int crate(uint32_t code) const
Return crate from unpacked moduleID.
Definition: L1CaloSrcIdMap.cxx:57
MuonR4::State
CalibratedSpacePoint::State State
Definition: SpacePointCalibrator.cxx:24
LVL1BS::PpmByteStreamReadV1V2Tool::addTriggerTowerV2_
StatusCode addTriggerTowerV2_(State &state, uint8_t crate, uint8_t module, uint8_t channel, std::vector< uint8_t > &&lcpVal, std::vector< uint8_t > &&lcpBcidVec, std::vector< uint8_t > &&ljeVal, std::vector< uint8_t > &&ljeSat80Vec, std::vector< uint16_t > &&adcVal, std::vector< uint8_t > &&adcExt, std::vector< int16_t > &&pedCor, std::vector< uint8_t > &&pedEn) const
Definition: PpmByteStreamReadV1V2Tool.cxx:930
xAOD::TriggerTower_v2
Description of TriggerTower_v2.
Definition: TriggerTower_v2.h:49
python.xAODType.dummy
dummy
Definition: xAODType.py:4
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
hist_file_dump.f
f
Definition: hist_file_dump.py:135
IROBDataProviderSvc::VROBFRAG
std::vector< const ROBF * > VROBFRAG
Definition: IROBDataProviderSvc.h:27
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
plotBeamSpotCompare.xd
xd
Definition: plotBeamSpotCompare.py:220
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmNeutral_
StatusCode processPpmNeutral_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:331
LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmSourceIDsSpare
std::vector< uint32_t > m_ppmSourceIDsSpare
Definition: PpmByteStreamReadV1V2Tool.h:210
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmBlockR3V1_
StatusCode processPpmBlockR3V1_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:822
LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation
static const std::string xAODTriggerTowerLocation
Definition: TrigT1CaloDefs.h:36
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
LVL1BS::L1CaloSubBlock::UNPACK_EXCESS_DATA
@ UNPACK_EXCESS_DATA
Definition: L1CaloSubBlock.h:41
LVL1BS::PpmByteStreamReadV1V2Tool::initSourceIDs
void initSourceIDs()
Definition: PpmByteStreamReadV1V2Tool.cxx:1039
LVL1BS::PpmByteStreamReadV1V2Tool::RODPointer
OFFLINE_FRAGMENTS_NAMESPACE::PointerType RODPointer
Definition: PpmByteStreamReadV1V2Tool.h:79
fmt
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmWord_
StatusCode processPpmWord_(State &state, uint32_t word, int indata) const
Definition: PpmByteStreamReadV1V2Tool.cxx:273
a
TList * a
Definition: liststreamerinfos.cxx:10
LVL1BS::PpmByteStreamReadV1V2Tool::RequestType::PPM
@ PPM
h
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
LVL1BS::PpmByteStreamReadV1V2Tool::m_ppmSourceIDsMuon
std::vector< uint32_t > m_ppmSourceIDsMuon
Definition: PpmByteStreamReadV1V2Tool.h:209
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmCompressedR4V1_
StatusCode processPpmCompressedR4V1_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:589
LVL1BS::PpmByteStreamReadV1V2Tool::processPpmStandardR3V1_
StatusCode processPpmStandardR3V1_(State &state) const
Definition: PpmByteStreamReadV1V2Tool.cxx:894
LVL1BS::L1CaloSrcIdMap::getRodID
uint32_t getRodID(int crate, int slink, int daqOrRoi, eformat::SubDetector subdet) const
Make a ROD Source ID.
Definition: L1CaloSrcIdMap.cxx:18
LVL1BS::PpmByteStreamReadV1V2Tool::getPpmAdcSamplesR4_
std::vector< uint16_t > getPpmAdcSamplesR4_(State &state, BitReader &br, uint8_t encoding, uint8_t minIndex) const
Definition: PpmByteStreamReadV1V2Tool.cxx:787
LVL1BS::PpmByteStreamReadV1V2Tool::ROBPointer
OFFLINE_FRAGMENTS_NAMESPACE::PointerType ROBPointer
Definition: PpmByteStreamReadV1V2Tool.h:78
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LVL1BS::L1CaloSrcIdMap::maxSlinks
int maxSlinks() const
Return the maximum possible number of slinks.
Definition: L1CaloSrcIdMap.cxx:82
SG::DataProxy
Definition: DataProxy.h:45
error
Definition: IImpactPoint3dEstimator.h:70
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
python.SystemOfUnits.pc
float pc
Definition: SystemOfUnits.py:99
fitman.k
k
Definition: fitman.py:528
xAOD::TriggerTower
TriggerTower_v2 TriggerTower
Define the latest version of the TriggerTower class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/TriggerTower.h:16
PlotCalibFromCool.br
br
Definition: PlotCalibFromCool.py:355
LVL1BS::PpmByteStreamReadV1V2Tool::ppmSourceIDs
const std::vector< uint32_t > & ppmSourceIDs(State &state, const std::string &sgKey) const
Return reference to vector with all possible Source Identifiers.
Definition: PpmByteStreamReadV1V2Tool.cxx:1065