ATLAS Offline Software
Loading...
Searching...
No Matches
CmxSubBlock.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6#include "CmxSubBlock.h"
7
8namespace LVL1BS {
9
10// Static constant definitions
11
13
20
22
26
30
31// Store CMX header
32
33void CmxSubBlock::setCmxHeader(const int version, const int format,
34 const int slice, const int crate,
35 const int summing, const int firmware,
36 const int position, const int timeslices)
37{
38 int module = 0;
39 module |= (summing & s_cmxSummingMask) << s_cmxSummingBit;
40 module |= (firmware & s_cmxFirmwareMask) << s_cmxFirmwareBit;
41 module |= (position & s_cmxPositionMask) << s_cmxPositionBit;
44}
45
46// Return number of timeslices
47
49{
50 int slices = slices1();
51 if (slices == 0 && format() == NEUTRAL) {
52 slices = dataWords() / s_glinkBitsPerSlice;
53 }
54 if (slices == 0) slices = 1;
55 return slices;
56}
57
58// Static function to determine CMX type
59
61{
63 const int module = L1CaloSubBlock::module(word);
64 const int code = (module >> s_cmxFirmwareBit) & s_cmxFirmwareMask;
65 switch (code) {
66 case CMX_CP:
67 type = CMX_CP;
68 break;
69 case CMX_JET:
70 type = CMX_JET;
71 break;
72 case CMX_ENERGY:
74 break;
75 default:
77 break;
78 }
79 return type;
80}
81
82// Static function to determine if header word corresponds to CMX block
83
84bool CmxSubBlock::cmxBlock(const uint32_t word)
85{
86 return L1CaloSubBlock::wordId(word) == s_wordIdVal;
87}
88
89} // end namespace
static bool cmxBlock(uint32_t word)
Determine if header word corresponds to CMX.
static const int s_cmxPositionBit
Definition CmxSubBlock.h:54
static const uint32_t s_cmxPositionMask
Definition CmxSubBlock.h:57
static const int s_cmxFirmwareBit
Definition CmxSubBlock.h:53
static const uint32_t s_cmxFirmwareMask
Definition CmxSubBlock.h:56
static const uint32_t s_cmxSummingMask
Definition CmxSubBlock.h:55
int timeslices() const
void setCmxHeader(int version, int format, int slice, int crate, int summing, int firmware, int position, int timeslices)
Store CMX header.
static CmxFirmwareCode cmxType(uint32_t word)
CMX differentiation (CMX_CP, CMX_JET, or CMX_ENERGY)
static const int s_cmxSummingBit
Definition CmxSubBlock.h:52
static const int s_glinkBitsPerSlice
Needed for neutral format.
Definition CmxSubBlock.h:59
static const int s_wordIdVal
CMX header word ID.
Definition CmxSubBlock.h:50
void setHeader(int wordId, int version, int format, int seqno, int crate, int module, int slices2, int slices1)
Store header data.
int dataWords() const
Return number of data words.
setEventNumber uint32_t