ATLAS Offline Software
ALFA_RawDataContainerReadOut.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "GaudiKernel/ISvcLocator.h"
8 #include "GaudiKernel/Bootstrap.h"
9 #include "GaudiKernel/MsgStream.h"
10 #include "GaudiKernel/IMessageSvc.h"
11 
12 #include <cassert>
13 
14 
16  m_wordMarker(0),
17  m_subdetId(0),
18  m_mrodId(0),
19  m_lvl1Id(0),
20  m_ecrId(0),
21  m_bcId(0),
22  m_runNum(0),
23  m_runType(0),
24  m_triggerTypeId(0),
25  m_DetEventType(0),
26  m_timestamp(0),
27  m_BCId(0)
28 { }
29 
30 
32 {
33  m_wordMarker = dataWord;
34 }
35 
36 void ALFA_RawDataContainerReadOut::decodeHeaderFull(std::vector<uint32_t>& vDataFull)
37 {
38 
39  setZeroFull();
40 
41 
42  if (vDataFull[0] == s_FullEVmarker)
43  {
44  // cout << "Full HEADER found : vDataFull[0] "<< std::hex << vDataFull[0] << std::dec <<endl;
45 
46  }
47 
48  m_word = vDataFull[8];
50  // cout << " vDataFull[8] " << std::hex << vDataFull[8] << " m_timestamp " << std::hex << m_timestamp <<std::dec<<endl;
51 
52  m_word = vDataFull[15];
53  m_BCId = getBits(getBitsWord(31,0));
54  // cout << " vDataFull[15] " << std::hex << vDataFull[15] << " m_BCId " << std::hex << m_BCId <<std::dec<<endl;
55 
56 }
57 
58 
59 // Decode the ROD header
60 void ALFA_RawDataContainerReadOut::decodeHeader(std::vector<uint32_t>& vData)
61 {
62 
63  //static const uint32_t RODheadersize = 0x00000009;
64 
65 
66 #ifndef NDEBUG
67  IMessageSvc* msgSvc = 0;
68  ISvcLocator* svcLocator = Gaudi::svcLocator();
69  svcLocator->service("MessageSvc", msgSvc).ignore();
70  MsgStream log(msgSvc, "ALFA_RawDataContainerReadOut::decodeHeader");
71 #endif
72 
73  setZero();
74 
75  if (vData[0] != s_RODmarker)
76  {
77 #ifndef NDEBUG
78  log << MSG::ERROR << "ROD Start of header marker not found" << endmsg;
79 #endif
80  assert(0);
81  }
82  if (vData[1] != s_RODheadersize)
83  {
84 #ifndef NDEBUG
85  log << MSG::ERROR << "ROD header size doesn't match " << endmsg;
86 #endif
87  assert(0);
88  }
89 
90  // decode the rest of the header
91  // Subdetector Id and mrodId
92  m_word = vData[3];
93  m_subdetId = getBits(getBitsWord(31,16));
94  m_mrodId = getBits(getBitsWord(15,0));
95 
96 
97  // Run number
98  m_word = vData[4];
99  m_runNum = getBits(getBitsWord(23,0));
100  m_runType = getBits(getBitsWord(31,24));
101 
102 
103  // Lvl1Id :counting events
104  m_word = vData[5];
105  m_lvl1Id = getBits(getBitsWord(23,0));
106  m_ecrId = getBits(getBitsWord(31,24));
107 
108 
109  // Bunch crossing identifier
110  m_word = vData[6];
111  m_bcId = getBits(getBitsWord(11,0));
112 
113 
114  // Trigger type Id
115  m_word = vData[7];
117 
118  // Detector event type
119  m_word = vData[8];
121 }
122 
123 
124 
125 
127 {
128  m_subdetId = 0;
129  m_mrodId = 0;
130  m_runNum = 0;
131  m_runType = 0;
132  m_lvl1Id = 0;
133  m_ecrId = 0;
134  m_bcId = 0;
135  m_triggerTypeId = 0;
136  m_DetEventType = 0;
137 }
138 
140 {
141  m_timestamp = 0;
142  m_BCId = 0;
143 }
144 
ALFA_RawDataContainerReadOut::m_subdetId
uint16_t m_subdetId
Definition: ALFA_RawDataContainerReadOut.h:42
ALFA_RawDataContainerReadOut::m_bcId
uint16_t m_bcId
Definition: ALFA_RawDataContainerReadOut.h:46
ALFA_RawDataContainerReadOut::s_RODheadersize
static constexpr uint32_t s_RODheadersize
Definition: ALFA_RawDataContainerReadOut.h:66
ALFA_RawDataContainerReadOut::m_mrodId
uint16_t m_mrodId
Definition: ALFA_RawDataContainerReadOut.h:43
ALFA_RawDataContainerReadOut::m_BCId
uint32_t m_BCId
Definition: ALFA_RawDataContainerReadOut.h:54
ALFA_RawDataContainerReadOut::decodeWord
void decodeWord(uint32_t dataWord)
Definition: ALFA_RawDataContainerReadOut.cxx:31
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ALFA_RawDataContainerReadOut::s_RODmarker
static constexpr uint32_t s_RODmarker
Definition: ALFA_RawDataContainerReadOut.h:64
ALFA_RawDataContainerReadOut::m_triggerTypeId
uint16_t m_triggerTypeId
Definition: ALFA_RawDataContainerReadOut.h:49
ALFA_RawDataContainerReadOut::setZero
void setZero()
Definition: ALFA_RawDataContainerReadOut.cxx:126
ALFA_RawDataContainerReadOut::m_runNum
uint32_t m_runNum
Definition: ALFA_RawDataContainerReadOut.h:47
ALFA_RawDataContainerReadOut::m_DetEventType
uint32_t m_DetEventType
Definition: ALFA_RawDataContainerReadOut.h:50
ALFA_RawDataContainerReadOut::m_runType
uint16_t m_runType
Definition: ALFA_RawDataContainerReadOut.h:48
ALFA_ReadOut::m_word
uint32_t m_word
Definition: ALFA_ReadOut.h:40
ALFA_RawDataContainerReadOut::m_timestamp
uint32_t m_timestamp
Definition: ALFA_RawDataContainerReadOut.h:53
ALFA_RawDataContainerReadOut::m_wordMarker
uint32_t m_wordMarker
Definition: ALFA_RawDataContainerReadOut.h:39
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
ALFA_RawDataContainerReadOut::decodeHeader
void decodeHeader(std::vector< uint32_t > &vData)
Definition: ALFA_RawDataContainerReadOut.cxx:60
ALFA_RawDataContainerReadOut::decodeHeaderFull
void decodeHeaderFull(std::vector< uint32_t > &)
Definition: ALFA_RawDataContainerReadOut.cxx:36
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ALFA_RawDataContainerReadOut::ALFA_RawDataContainerReadOut
ALFA_RawDataContainerReadOut()
Definition: ALFA_RawDataContainerReadOut.cxx:15
ALFA_RawDataContainerReadOut.h
ALFA_RawDataContainerReadOut::s_FullEVmarker
static constexpr uint32_t s_FullEVmarker
Definition: ALFA_RawDataContainerReadOut.h:60
ALFA_RawDataContainerReadOut::m_ecrId
uint16_t m_ecrId
Definition: ALFA_RawDataContainerReadOut.h:45
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
ALFA_RawDataContainerReadOut::setZeroFull
void setZeroFull()
Definition: ALFA_RawDataContainerReadOut.cxx:139
ALFA_ReadOut::getBitsWord
constexpr std::pair< uint32_t, uint16_t > getBitsWord(const uint16_t bstart, const uint16_t bstop)
Definition: ALFA_ReadOut.h:21
ALFA_ReadOut::getBits
uint32_t getBits(std::pair< uint32_t, uint16_t > in)
Definition: ALFA_ReadOut.h:29
ALFA_RawDataContainerReadOut::m_lvl1Id
uint32_t m_lvl1Id
Definition: ALFA_RawDataContainerReadOut.h:44