ATLAS Offline Software
Loading...
Searching...
No Matches
CmmSubBlock.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 "CmmSubBlock.h"
7
8namespace LVL1BS {
9
10// Static constant definitions
11
13
20
22
26
30
31// Store CMM header
32
33void CmmSubBlock::setCmmHeader(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_cmmSummingMask) << s_cmmSummingBit;
40 module |= (firmware & s_cmmFirmwareMask) << s_cmmFirmwareBit;
41 module |= (position & s_cmmPositionMask) << s_cmmPositionBit;
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 CMM type
59
61{
63 const int module = L1CaloSubBlock::module(word);
64 const int code = (module >> s_cmmFirmwareBit) & s_cmmFirmwareMask;
65 switch (code) {
66 case CMM_CP:
67 type = CMM_CP;
68 break;
69 case CMM_JET:
70 type = CMM_JET;
71 break;
72 case CMM_ENERGY:
74 break;
75 default:
77 break;
78 }
79 return type;
80}
81
82// Static function to determine if header word corresponds to CMM block
83
84bool CmmSubBlock::cmmBlock(const uint32_t word)
85{
86 return L1CaloSubBlock::wordId(word) == s_wordIdVal;
87}
88
89} // end namespace
static const uint32_t s_cmmPositionMask
Definition CmmSubBlock.h:57
static const int s_cmmSummingBit
Definition CmmSubBlock.h:52
static const int s_cmmFirmwareBit
Definition CmmSubBlock.h:53
static const uint32_t s_cmmFirmwareMask
Definition CmmSubBlock.h:56
static bool cmmBlock(uint32_t word)
Determine if header word corresponds to CMM.
int timeslices() const
void setCmmHeader(int version, int format, int slice, int crate, int summing, int firmware, int position, int timeslices)
Store CMM header.
static const int s_cmmPositionBit
Definition CmmSubBlock.h:54
static const int s_wordIdVal
CMM header word ID.
Definition CmmSubBlock.h:50
static const int s_glinkBitsPerSlice
Needed for neutral format.
Definition CmmSubBlock.h:59
static const uint32_t s_cmmSummingMask
Definition CmmSubBlock.h:55
static CmmFirmwareCode cmmType(uint32_t word)
CMM differentiation (CMM_CP, CMM_JET, or CMM_ENERGY)
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