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  slice = s;
188 
189  const auto header = LVL1::MuCTPIBits::timesliceHeader(word);
190  ATH_MSG_DEBUG("This is a timeslice header word with BCID=" << header.bcid
191  << ", NTOB=" << header.tobCount << ", NCAND=" << header.candCount);
192  slice.bcid = header.bcid;
193  slice.nCand = header.candCount;
194  slice.nTOB = header.tobCount;
195  break;
196  }
199  ATH_MSG_DEBUG("This is a multiplicity word #" << tmNum);
200 
201  if(m_muctpi_Nbits.size()==32)
202  {
203  //fill mult word into temp container until 3rd word is found
204  if(tmNum==1)
205  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;
206  else if(tmNum==2)
207  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;
208  else if(tmNum==3)
209  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;
210 
211  //flags from third word
212  //AND: process multiplicity for the slice!!!
213  if(tmNum==3)
214  {
215  slice.mlt.nswMon = LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_NSW_MONITORING_TRIGGER_SHIFT, LVL1::MuCTPIBits::RUN3_NSW_MONITORING_TRIGGER_MASK);
216  slice.mlt.candOverflow = LVL1::MuCTPIBits::maskedWord(word,LVL1::MuCTPIBits::RUN3_MULTIPLICITY_OVERFLOW_SHIFT, LVL1::MuCTPIBits::RUN3_MULTIPLICITY_OVERFLOW_MASK);
217  slice.mlt.bits = sliceMultiplicity;
218 
219  //process the long mult word into 32 mlt thr counters
220  for(uint iThr=0;iThr<m_muctpi_Nbits.size();iThr++)
221  {
222  uint thismask=0;
223  if(m_muctpi_Nbits[iThr]==1)
224  thismask=0x1;
225  else if(m_muctpi_Nbits[iThr]==2)
226  thismask=0x3;
227  else if(m_muctpi_Nbits[iThr]==3)
228  thismask=0x7;
229 
230  //keep only the part of the 64bit word corresponding to the nbits value
231  slice.mlt.cnt.push_back( sliceMultiplicity & thismask);
232  //"throw away" the part of the 64bit word that we just used
233  sliceMultiplicity >>= m_muctpi_Nbits[iThr];
234  }
235 
236  sliceMultiplicity=0;//cleaning just in case..
237  }
238 
239  }
240  else
241  {
242  //if nbits size !=32, then it's not set
243  //for now, ignore, and can fill the histos with the Mult bits, as they come
244  //without decoding
245  //=>suppress this warning
246  //ATH_MSG_WARNING("MUCTPI DQ DEBUG: skipping Mult processing, no nbits defined");
247 
248  //todo: add code + histos for Mult bits
249  }
250 
251  break;
252  }
254  ATH_MSG_DEBUG("This is a RoI candidate word");
255 
256  LVL1::MuCTPIBits::Candidate thiscand(word);
257 
258  // We calculate eta/phi coordinates for each candidate with the
259  // full resolution available.
261  {
262  thiscand.eta = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).eta;
263  thiscand.phi = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).phi;
264  //ATH_MSG_INFO("Candidate Pt " << thiscand.pt);
265  thiscand.mappedPt = LVL1::MuCTPIBits::RPCtoTGC_pt_map[thiscand.pt];
266  //ATH_MSG_INFO("Candidate mapped Pt " << thiscand.mappedPt);
267  }
268  else if(thiscand.type == LVL1::MuCTPIBits::SubsysID::Endcap)
269  {
270  thiscand.eta = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).eta;
271  thiscand.phi = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).phi;
272  }
273  else if(thiscand.type == LVL1::MuCTPIBits::SubsysID::Forward)
274  {
275  thiscand.eta = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).eta;
276  thiscand.phi = m_l1topoLUT.getCoordinates(thiscand.side, thiscand.subsystem, thiscand.num, thiscand.roi).phi;
277  }
278  slice.cand.push_back(thiscand);
279  break;
280  }
282  ATH_MSG_DEBUG("This is a Topo TOB word "<< std::hex << word);
283  LVL1::MuCTPIBits::TopoTOB thistob(word);
284 
285  if(thistob.det == 0) // BA
286  {
287  try
288  {
289  thistob.roi = m_l1topoLUT.getBarrelROI(thistob.side, thistob.sec, thistob.barrel_eta_lookup, thistob.barrel_phi_lookup);
290  }
291  catch (const std::out_of_range& e) // Occurs when getBarrelROI fails to find entry in the map
292  {
293  ++barrelROIFailCounter;
294  ATH_MSG_WARNING("TopoTOB word not found in LUT!"
295  << " (" << e.what() << " exception)"
296  << " Word info: det = " << thistob.det
297  << ", subsystem = " << thistob.subsystem
298  << ", side = " << thistob.side
299  << ", sector = " << thistob.sec
300  << ", ieta = " << thistob.barrel_eta_lookup
301  << ", iphi = " << thistob.barrel_phi_lookup);
302  break;
303  }
304  thistob.etaDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).eta;
305  thistob.phiDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).phi;
306  }
307  else // FW or EC
308  {
309  // FW and EC have the ROI initialized in the constructor of the Topo word, because it is encoded in eta_raw and phi_raw
310  thistob.etaDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).eta;
311  thistob.phiDecoded = m_l1topoLUT.getCoordinates(thistob.side, thistob.subsystem, thistob.sec, thistob.roi).phi;
312  }
313  slice.tob.push_back(thistob);
314  break;
315  }
317  ATH_MSG_DEBUG("This is a status word"<< std::hex << word);
319  if (!errorBits.empty()) {
320  ATH_MSG_DEBUG("MUCTPI ROD data flagged with errors. The data status word is 0x" << std::hex << word << std::dec);
321  for (size_t bit : errorBits) {
322  ATH_MSG_DEBUG("Error bit " << bit << ": " << LVL1::MuCTPIBits::DataStatusWordErrors.at(bit));
323  }
324  }
325  break;
326  }
327  default: {
328  ATH_MSG_ERROR("The MUCTPI word 0x" << std::hex << word << std::dec << " does not match any known word type");
329  return StatusCode::FAILURE;
330  }//default
331  }//switch
332  }//for each word
333 
334  //add last timeslice in vector, since there is no end-slice flag
335  ATH_MSG_DEBUG(" MUCTPI DQ DEBUG: out of words (pushing last slice)");
336  slices.push_back( slice );
337 
338  // Check that the number of exceptions is below a limit based on the number of slices.
339  // Exceptions can occur if word is present in multiple timeslices for same event.
340  // This allows for cases where we have one or two bad words per event, but not where lots of map errors arise.
341  if (barrelROIFailCounter == slices.size() + 2 )
342  {
343  ATH_MSG_ERROR("TopoTOB word exception count exceeded limit!");
344  return StatusCode::FAILURE;
345  }
346 
347  // create MuCTPI RDO
348  ATH_CHECK(outputHandle.record(
349  std::make_unique<MuCTPI_Phase1_RDO>(std::move(slices), std::move(errorBits))
350  ));
351  return StatusCode::SUCCESS;
352 }
353 
355 {
356  if (barrelROIFailCounter != 0) ATH_MSG_WARNING(barrelROIFailCounter << " TopoTOB words could not retrieve RoIs in the barrel");
357  return StatusCode::SUCCESS;
358 }
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:232
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:218
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:354
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
IROBDataProviderSvc::VROBFRAG
std::vector< const ROBF * > VROBFRAG
Definition: IROBDataProviderSvc.h:27
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
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:283
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:101
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
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