ATLAS Offline Software
MuCTPIPhase1ByteStreamAlgo.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 
11 #include <atomic>
12 
13 static std::atomic<unsigned int> barrelROIFailCounter{0};
14 
15 //also inspired by Rafal's word decoding code from:
16 //https://gitlab.cern.ch/atlas/athena/blob/release/22.0.91/Trigger/TrigT1/TrigT1ResultByteStream/src/MuonRoIByteStreamTool.cxx
17 
22 MuCTPIPhase1ByteStreamAlgo::MuCTPIPhase1ByteStreamAlgo( const std::string& name, ISvcLocator* svcLoc )
23  : AthReentrantAlgorithm( name, svcLoc) {}
24 
26 {
27  ATH_MSG_DEBUG("Initialising " << name());
28 
29  ATH_CHECK( m_MuCTPI_Phase1_RDOKey.initialize(/*m_processMuctpi=*/true) );
30 
31  //needed to enable the decoding of eta and phi
32  ATH_MSG_INFO("--- ENABLING THE DECODING");
33  const std::string barrelFileName = PathResolverFindCalibFile( m_barrelRoIFile );
34  ATH_MSG_INFO("--- - CHECK BARREL FILE NAME" << barrelFileName);
35  const std::string ecfFileName = PathResolverFindCalibFile( m_ecfRoIFile );
36  ATH_MSG_INFO("--- - CHECK ECF FILE NAME" << ecfFileName);
37  const std::string side0LUTFileName = PathResolverFindCalibFile( m_side0LUTFile );
38  ATH_MSG_INFO("--- - CHECK SIDE0 LUT FILE NAME" << side0LUTFileName);
39  const std::string side1LUTFileName = PathResolverFindCalibFile( m_side1LUTFile );
40  ATH_MSG_INFO("--- - INFO SIDE1 LUT FILE NAME" << side1LUTFileName);
41 
42  CHECK( m_l1topoLUT.initializeLUT(barrelFileName,
43  ecfFileName,
44  side0LUTFileName,
45  side1LUTFileName) );
46 
47  //return here while looking for fix for this
48  return StatusCode::SUCCESS;
49 
50  //this didn't work yet locally (offline). Waiting for feedback and should cleanup or reinclude soon.
51  //not critical; can run without it.
108 }
109 
110 StatusCode MuCTPIPhase1ByteStreamAlgo::execute(const EventContext& eventContext) const {
111  ATH_MSG_DEBUG("Executing " << name());
112 
113  // Retrieve the BS data for all tools in one request to parallelise DCM->ROS network requests
115  std::vector<uint32_t> robID = { m_robId };// Source ID of MIROD
116  //get rob fragment(s)
117  m_robDataProviderSvc->getROBData(eventContext, robID, vrobf, name());
118  //should only receive exactly 1 fragment; make sure:
119  if(vrobf.size()!=1)
120  {
121  ATH_MSG_ERROR("Wrong number of MUCTPI fragment in event: vrobf.size()="<<vrobf.size());
122  return StatusCode::FAILURE;
123  }
124 
125  //make the conversion, i.e. make the RDO, record it
127  ATH_CHECK(convert(vrobf[0],outputHandle));
128  return StatusCode::SUCCESS;
129 }
130 
136 
137  ATH_MSG_DEBUG("executing convert() from ROBFragment to RDO");
138  // check ROD source ID
139  const uint32_t rodId = rob->rod_source_id();
140  // check BC ID
141  const uint32_t bcId = rob->rod_bc_id();
142 
143  ATH_MSG_DEBUG(" expected ROD sub-detector ID: " << std::hex << m_robId << " ID found: " << std::hex << rodId << std::dec);
144 
145  if( rodId != m_robId ) {
146  ATH_MSG_ERROR("Wrong ROD ID found in the MuCTPI ROB fragment!");
147  return StatusCode::FAILURE;
148  }
149 
150  ATH_MSG_VERBOSE(" ROD Header BCID " << bcId << ", dumping MuCTPI words:");
151 
152  const uint32_t* it_data;
153  rob->rod_data( it_data );
154  const uint32_t ndata = rob->rod_ndata();
155  ATH_MSG_DEBUG("MUCTPI DQ DEBUG: number of ROB data words: " << std::dec << ndata);
156 
157  //slices
158  std::vector< LVL1::MuCTPIBits::Slice > slices;
160  bool firstSlice=true;
161  std::vector<size_t> errorBits;
162  uint64_t sliceMultiplicity=0;//grouping the 3 multiplicity words, to be processed at the end of the slice
163 
164  for( uint32_t iWord = 0; iWord < ndata; ++iWord, ++it_data ) {
165 
166  //for each word, get it, find type, and add in Slice struct.
167  uint32_t word = static_cast< uint32_t >( *it_data );
168  ATH_MSG_DEBUG("MUCTPI raw word " << iWord << ": 0x" << std::hex << word << std::dec);
170 
171  switch (wordType) {
173 
174  ATH_MSG_DEBUG(" MUCTPI DQ DEBUG: Timeslice found: "<< std::hex << word);
175 
176  //add previous slice if any
177  if(!firstSlice)
178  {
179  ATH_MSG_DEBUG(" MUCTPI DQ DEBUG: new timeslice found (pushing)");
180  slices.push_back(slice);
181  }
182  else
183  firstSlice=false;
184 
185  //make new slice (to be improved, since "new" will give pointer)
187 
188  const auto header = LVL1::MuCTPIBits::timesliceHeader(word);
189  ATH_MSG_DEBUG("This is a timeslice header word with BCID=" << header.bcid
190  << ", NTOB=" << header.tobCount << ", NCAND=" << header.candCount);
191  slice.bcid = header.bcid;
192  slice.nCand = header.candCount;
193  slice.nTOB = header.tobCount;
194  break;
195  }
198  ATH_MSG_DEBUG("This is a multiplicity word #" << tmNum);
199 
200  if(m_muctpi_Nbits.size()==32)
201  {
202  //fill mult word into temp container until 3rd word is found
203  if(tmNum==1)
204  sliceMultiplicity |= ( (uint64_t)LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART1_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART1_MASK) ) << LVL1::MuCTPIBits::RUN3_MULTIPLICITY_ENC_PART1_SHIFT;
205  else if(tmNum==2)
206  sliceMultiplicity |= ( (uint64_t)LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART2_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART2_MASK) ) << LVL1::MuCTPIBits::RUN3_MULTIPLICITY_ENC_PART2_SHIFT;
207  else if(tmNum==3)
208  sliceMultiplicity |= ( (uint64_t)LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART3_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_PART3_MASK) ) << LVL1::MuCTPIBits::RUN3_MULTIPLICITY_ENC_PART3_SHIFT;
209 
210  //flags from third word
211  //AND: process multiplicity for the slice!!!
212  if(tmNum==3)
213  {
214  slice.mlt.nswMon = LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_NSW_MONITORING_TRIGGER_SHIFT, LVL1::MuCTPIBits::RUN3_NSW_MONITORING_TRIGGER_MASK);
215  slice.mlt.candOverflow = LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_OVERFLOW_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_OVERFLOW_MASK);
216  slice.mlt.bits = sliceMultiplicity;
217 
218  //process the long mult word into 32 mlt thr counters
219  for(uint iThr=0;iThr<m_muctpi_Nbits.size();iThr++)
220  {
221  uint thismask=0;
222  if(m_muctpi_Nbits[iThr]==1)
223  thismask=0x1;
224  else if(m_muctpi_Nbits[iThr]==2)
225  thismask=0x3;
226  else if(m_muctpi_Nbits[iThr]==3)
227  thismask=0x7;
228 
229  //keep only the part of the 64bit word corresponding to the nbits value
230  slice.mlt.cnt.push_back( sliceMultiplicity & thismask);
231  //"throw away" the part of the 64bit word that we just used
232  sliceMultiplicity >>= m_muctpi_Nbits[iThr];
233  }
234 
235  sliceMultiplicity=0;//cleaning just in case..
236  }
237 
238  }
239  else
240  {
241  //if nbits size !=32, then it's not set
242  //for now, ignore, and can fill the histos with the Mult bits, as they come
243  //without decoding
244  //=>suppress this warning
245  //ATH_MSG_WARNING("MUCTPI DQ DEBUG: skipping Mult processing, no nbits defined");
246 
247  //todo: add code + histos for Mult bits
248  }
249 
250  break;
251  }
253  ATH_MSG_DEBUG("This is a RoI candidate word");
254 
255  LVL1::MuCTPIBits::Candidate thiscand(word);
256 
257  // We calculate eta/phi coordinates for each candidate with the
258  // full resolution available.
260  {
261  thiscand.eta = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).eta;
262  thiscand.phi = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).phi;
263  //ATH_MSG_INFO("Candidate Pt " << thiscand.pt);
264  thiscand.mappedPt = LVL1::MuCTPIBits::RPCtoTGC_pt_map[thiscand.pt];
265  //ATH_MSG_INFO("Candidate mapped Pt " << thiscand.mappedPt);
266  }
267  else if(thiscand.type == LVL1::MuCTPIBits::SubsysID::Endcap)
268  {
269  thiscand.eta = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).eta;
270  thiscand.phi = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).phi;
271  }
272  else if(thiscand.type == LVL1::MuCTPIBits::SubsysID::Forward)
273  {
274  thiscand.eta = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).eta;
275  thiscand.phi = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).phi;
276  }
277  slice.cand.push_back(thiscand);
278  break;
279  }
281  ATH_MSG_DEBUG("This is a Topo TOB word "<< std::hex << word);
282  LVL1::MuCTPIBits::TopoTOB thistob(word);
283 
284  if(thistob.det == 0) // BA
285  {
286  try
287  {
288  thistob.roi = m_l1topoLUT.getBarrelROI(thistob.side, thistob.sec, thistob.barrel_eta_lookup, thistob.barrel_phi_lookup);
289  }
290  catch (const std::out_of_range& e) // Occurs when getBarrelROI fails to find entry in the map
291  {
292  ++barrelROIFailCounter;
293  ATH_MSG_WARNING("TopoTOB word not found in LUT!"
294  << " (" << e.what() << " exception)"
295  << " Word info: det = " << thistob.det
296  << ", subsystem = " << thistob.subsystem
297  << ", side = " << thistob.side
298  << ", sector = " << thistob.sec
299  << ", ieta = " << thistob.barrel_eta_lookup
300  << ", iphi = " << thistob.barrel_phi_lookup);
301  break;
302  }
303  thistob.etaDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).eta;
304  thistob.phiDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).phi;
305  }
306  else // FW or EC
307  {
308  // FW and EC have the ROI initialized in the constructor of the Topo word, because it is encoded in eta_raw and phi_raw
309  thistob.etaDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).eta;
310  thistob.phiDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).phi;
311  }
312  slice.tob.push_back(thistob);
313  break;
314  }
316  ATH_MSG_DEBUG("This is a status word"<< std::hex << word);
318  if (!errorBits.empty()) {
319  ATH_MSG_DEBUG("MUCTPI ROD data flagged with errors. The data status word is 0x" << std::hex << word << std::dec);
320  for (size_t bit : errorBits) {
321  ATH_MSG_DEBUG("Error bit " << bit << ": " << LVL1::MuCTPIBits::DataStatusWordErrors.at(bit));
322  }
323  }
324  break;
325  }
326  default: {
327  ATH_MSG_ERROR("The MUCTPI word 0x" << std::hex << word << std::dec << " does not match any known word type");
328  return StatusCode::FAILURE;
329  }//default
330  }//switch
331  }//for each word
332 
333  //add last timeslice in vector, since there is no end-slice flag
334  ATH_MSG_DEBUG(" MUCTPI DQ DEBUG: out of words (pushing last slice)");
335  slices.push_back( std::move(slice) );
336 
337  // Check that the number of exceptions is below a limit based on the number of slices.
338  // Exceptions can occur if word is present in multiple timeslices for same event.
339  // This allows for cases where we have one or two bad words per event, but not where lots of map errors arise.
340  if (barrelROIFailCounter == slices.size() + 2 )
341  {
342  ATH_MSG_ERROR("TopoTOB word exception count exceeded limit!");
343  return StatusCode::FAILURE;
344  }
345 
346  // create MuCTPI RDO
347  ATH_CHECK(outputHandle.record(
348  std::make_unique<MuCTPI_Phase1_RDO>(std::move(slices), std::move(errorBits))
349  ));
350  return StatusCode::SUCCESS;
351 }
352 
354 {
355  if (barrelROIFailCounter != 0) ATH_MSG_WARNING(barrelROIFailCounter << " TopoTOB words could not retrieve RoIs in the barrel");
356  return StatusCode::SUCCESS;
357 }
LVL1::MuCTPIBits::WordType
WordType
Definition: HelpersPhase1.h:16
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
MuCTPIPhase1ByteStreamAlgo::m_l1topoLUT
LVL1MUCTPIPHASE1::L1TopoLUT m_l1topoLUT
Helper members.
Definition: MuCTPIPhase1ByteStreamAlgo.h:71
LVL1::MuCTPIBits::TopoTOB::etaDecoded
float etaDecoded
Definition: HelpersPhase1.h:318
LVL1::MuCTPIBits::TopoTOB::barrel_phi_lookup
uint32_t barrel_phi_lookup
Definition: HelpersPhase1.h:314
LVL1::MuCTPIBits::WordType::Candidate
@ Candidate
MuCTPI_Phase1_RDO.h
LVL1MUCTPIPHASE1::L1TopoLUT::getBarrelROI
unsigned short getBarrelROI(unsigned short side, unsigned short sector, unsigned short ieta, unsigned short iphi) const
Definition: L1TopoLUT.cxx:237
LVL1::MuCTPIBits::getDataStatusWordErrors
std::vector< size_t > getDataStatusWordErrors(uint32_t word)
Decode the data status word (returns a vector of bit indices for the errors set - empty if no errors)
Definition: HelpersPhase1.h:186
LVL1::MuCTPIBits::getWordType
constexpr WordType getWordType(uint32_t word)
Determine the type of a MUCTPI ROD word.
Definition: HelpersPhase1.h:64
header
Definition: hcg.cxx:526
LVL1::MuCTPIBits::TopoTOB::barrel_eta_lookup
uint32_t barrel_eta_lookup
Definition: HelpersPhase1.h:313
MuCTPIPhase1ByteStreamAlgo::MuCTPIPhase1ByteStreamAlgo
MuCTPIPhase1ByteStreamAlgo(const std::string &name, ISvcLocator *svcLoc)
Default constructor.
Definition: MuCTPIPhase1ByteStreamAlgo.cxx:22
LVL1::MuCTPIBits::maskedWord
constexpr uint32_t maskedWord(uint32_t word, uint32_t shift, uint32_t mask)
Extract sub-word from 32-bit word by applying a shift and a mask.
Definition: HelpersPhase1.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1::MuCTPIBits::Candidate::roi
uint32_t roi
Definition: HelpersPhase1.h:222
MuCTPIPhase1ByteStreamAlgo.h
LVL1::MuCTPIBits::Candidate::type
SubsysID type
Definition: HelpersPhase1.h:217
LVL1::MuCTPIBits::Candidate::eta
float eta
Definition: HelpersPhase1.h:224
LVL1::MuCTPIBits::TopoTOB::side
bool side
Definition: HelpersPhase1.h:308
MuCTPIPhase1ByteStreamAlgo::m_robId
Gaudi::Property< uint32_t > m_robId
Object storing the various IDs of the MuCTPI fragment.
Definition: MuCTPIPhase1ByteStreamAlgo.h:51
LVL1::MuCTPIBits::TopoTOB::subsystem
uint32_t subsystem
Definition: HelpersPhase1.h:317
LVL1::MuCTPIBits::Candidate::subsystem
uint32_t subsystem
Definition: HelpersPhase1.h:223
MuCTPIPhase1ByteStreamAlgo::m_ecfRoIFile
const std::string m_ecfRoIFile
Definition: MuCTPIPhase1ByteStreamAlgo.h:66
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
LVL1::MuCTPIBits::Candidate::phi
float phi
Definition: HelpersPhase1.h:225
LVL1::MuCTPIBits::Candidate::side
bool side
Definition: HelpersPhase1.h:216
LVL1::MuCTPIBits::WordType::Topo
@ Topo
MuCTPIPhase1ByteStreamAlgo::m_side1LUTFile
const std::string m_side1LUTFile
Definition: MuCTPIPhase1ByteStreamAlgo.h:68
LVL1::MuCTPIBits::SubsysID::Endcap
@ Endcap
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
LVL1::MuCTPIBits::multiplicityWordNumber
constexpr uint32_t multiplicityWordNumber(uint32_t word)
Decode the index of the multitpicity word, which is 1, 2, or 3.
Definition: HelpersPhase1.h:154
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MuCTPIPhase1ByteStreamAlgo::convert
StatusCode convert(const IROBDataProviderSvc::ROBF *rob, SG::WriteHandle< MuCTPI_Phase1_RDO > &outputHandle) const
Convert ROBFragment to MuCTPI_RDO.
Definition: MuCTPIPhase1ByteStreamAlgo.cxx:135
perfmonmt-refit.slice
slice
Definition: perfmonmt-refit.py:52
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
LVL1MUCTPIPHASE1::L1TopoLUT::getCoordinates
L1TopoCoordinates getCoordinates(const unsigned short &side, const unsigned short &subsystem, const unsigned short &sectorID, const unsigned short &roi) const
Definition: L1TopoLUT.cxx:223
LVL1::MuCTPIBits::SubsysID::Forward
@ Forward
LVL1::MuCTPIBits::Candidate::pt
uint32_t pt
Definition: HelpersPhase1.h:219
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
LVL1::MuCTPIBits::TopoTOB::phiDecoded
float phiDecoded
Definition: HelpersPhase1.h:319
MuCTPIPhase1ByteStreamAlgo::finalize
virtual StatusCode finalize() override
Definition: MuCTPIPhase1ByteStreamAlgo.cxx:353
MuCTPIPhase1ByteStreamAlgo::m_side0LUTFile
const std::string m_side0LUTFile
Definition: MuCTPIPhase1ByteStreamAlgo.h:67
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
LVL1::MuCTPIBits::Candidate
Definition: HelpersPhase1.h:215
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
LVL1::MuCTPIBits::timesliceHeader
constexpr auto timesliceHeader(uint32_t word)
Decode timeslice word.
Definition: HelpersPhase1.h:81
LVL1::MuCTPIBits::TopoTOB::det
uint32_t det
Definition: HelpersPhase1.h:315
bcId
uint16_t bcId(uint32_t data)
Definition: TgcByteStreamData.h:326
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MuCTPI_Bits.h
LVL1::MuCTPIBits::TopoTOB
Definition: HelpersPhase1.h:307
MuCTPIPhase1ByteStreamAlgo::execute
virtual StatusCode execute(const EventContext &eventContext) const override
Definition: MuCTPIPhase1ByteStreamAlgo.cxx:110
LVL1::MuCTPIBits::WordType::Multiplicity
@ Multiplicity
LVL1::MuCTPIBits::Candidate::mappedPt
uint32_t mappedPt
Definition: HelpersPhase1.h:221
LVL1MUCTPIPHASE1::L1TopoCoordinates::eta
double eta
Definition: L1TopoLUT.h:30
MuCTPIPhase1ByteStreamAlgo::m_barrelRoIFile
const std::string m_barrelRoIFile
Definition: MuCTPIPhase1ByteStreamAlgo.h:65
IROBDataProviderSvc::VROBFRAG
std::vector< const ROBF * > VROBFRAG
Definition: IROBDataProviderSvc.h:27
LVL1::MuCTPIBits::WordType::Status
@ Status
MuCTPIPhase1ByteStreamAlgo::initialize
virtual StatusCode initialize() override
Definition: MuCTPIPhase1ByteStreamAlgo.cxx:25
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:321
LVL1::MuCTPIBits::RPCtoTGC_pt_map
const uint32_t RPCtoTGC_pt_map[7]
Definition: HelpersPhase1.h:20
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
MuCTPIPhase1ByteStreamAlgo::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
ROBDataProvider service handle.
Definition: MuCTPIPhase1ByteStreamAlgo.h:54
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LVL1::MuCTPIBits::Slice
Definition: HelpersPhase1.h:384
LVL1MUCTPIPHASE1::L1TopoCoordinates::phi
double phi
Definition: L1TopoLUT.h:31
LVL1MUCTPIPHASE1::L1TopoLUT::initializeLUT
bool initializeLUT(const std::string &barrelFileName, const std::string &ecfFileName, const std::string &side0LUTFileName, const std::string &side1LUTFileName)
Definition: L1TopoLUT.cxx:105
LVL1::MuCTPIBits::Candidate::num
uint32_t num
Definition: HelpersPhase1.h:218
MuCTPIPhase1ByteStreamAlgo::m_muctpi_Nbits
std::vector< uint32_t > m_muctpi_Nbits
Definition: MuCTPIPhase1ByteStreamAlgo.h:58
MuCTPIPhase1ByteStreamAlgo::m_MuCTPI_Phase1_RDOKey
SG::WriteHandleKey< MuCTPI_Phase1_RDO > m_MuCTPI_Phase1_RDOKey
Definition: MuCTPIPhase1ByteStreamAlgo.h:56
LVL1::MuCTPIBits::WordType::Timeslice
@ Timeslice
HelpersPhase1.h
LVL1::MuCTPIBits::SubsysID::Barrel
@ Barrel
LVL1::MuCTPIBits::TopoTOB::sec
uint32_t sec
Definition: HelpersPhase1.h:316
keylayer_zslicemap.slices
slices
Definition: keylayer_zslicemap.py:112
LVL1::MuCTPIBits::TopoTOB::roi
uint32_t roi
Definition: HelpersPhase1.h:312