ATLAS Offline Software
Loading...
Searching...
No Matches
LArRodBlockStructure.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5// Implementation of LArRODBlockStructure class
6
7#include <cstdio>
8#include <iostream>
15
19 const std::string& blockType)
20 : m_Ex(0),
21 m_Ey(0),
22 m_Ez(0),
23 m_SumE(0),
25 m_error_next_feb(false),
28 m_logstr(msgSvc, blockType)
29{
30
34 m_RodBlock=NULL;
35 m_FebBlock=NULL;
38#ifndef NDEBUG
43#endif
44 m_pRODblock=NULL;
45 m_vFragment=NULL;
48}
49
53
54//Error reporting for not implemented methods
55void LArRodBlockStructure::setDAC(const uint16_t)
56{
57 std::cout << "Error: Function setDAC not implemented in this instance of LArRodBlockStructure!\n";
58 return;
59}
60
62{
63 std::cout << "Error: Function setDelay not implemented in this instance of LArRodBlockStructure!\n";
64 return;
65}
66
68{
69 std::cout << "Error: Function setPulsed not implemented in this instance of LArRodBlockStructure!\n";
70 return;
71}
72
74{
75 std::cout << "Error: Function setNTrigger not implemented in this instance of LArRodBlockStructure!\n";
76 return;
77}
78
80{
81 std::cout << "Error: Function concatinateFEBs not implemented in this instance of LArRodBlockStructure!\n";
82 return;
83}
84
85
86int LArRodBlockStructure::getNextRawData(int&, std::vector<short>&, uint32_t&)
88 std::cout << "Error: Function getNextRawData not implemented in this instance of LArRodBlockStructure!\n";
89 return 0;
92int LArRodBlockStructure::getNextAccumulatedCalibDigit(int&, std::vector < uint64_t >&, std::vector < uint64_t >& , uint32_t&, uint32_t&)
93{
94 std::cout << "Error: Function getNextAccumulatedCalibDigit not implemented in this instance of LArRodBlockStructure!\n";
95 return 0;
96}
97
98int LArRodBlockStructure::getNextAccumulatedDigit(int&, std::vector<uint64_t>&, std::vector < uint64_t >& , uint32_t&)
99{
100 std::cout << "Error: Function getNextAccumulatedDigit not implemented in this instance of LArRodBlockStructure!\n";
101 return 0;
102}
103
104void LArRodBlockStructure::setNextEnergy(const int, const int32_t, const int32_t, const int32_t, const uint32_t)
105{
106 std::cout << "Error: Function setNextEnergy not implemented in this instance of LArRodBlockStructure!\n";
107 return;
108}
109
110
111void LArRodBlockStructure::setRawData(const int , const std::vector<short>& , const uint32_t)
112{
113 std::cout << "Error: Function setRawData not implemented in this instance of LArRodBlockStructure!\n";
114 return;
115}
116
117
118void LArRodBlockStructure::setEtQ(const int, const int32_t, const int32_t, const int32_t, const uint32_t)
119{
120 std::cout << "Error: Function setEtQ not implemented in this instance of LArRodBlockStructure!\n";
121 return;
122}
123
124void LArRodBlockStructure::setRawDataFixed(const int , const std::vector<short>&, const uint32_t )
125{
126 std::cout << "Error: Function setRawDataFixed not implemented in this instance of LArRodBlockStructure!\n";
127 return;
129
131{
132 std::cout << "Error: Function setNumberOfSamples not implemented in this instance of LArRodBlockStructure!\n";
133 return;
134}
135
137{
138 std::cout << "Error: Function setNumberOfGains not implemented in this instance of LArRodBlockStructure!\n";
139 return;
140}
141
143{
144 std::cout << "Error: Function setTDCPhase not implemented in this instance of LArRodBlockStructure!\n";
145 return;
146}
148{
149 std::cout << "Error: Function getTDCPhase not implemented in this instance of LArRodBlockStructure!\n";
150 return 0;
151}
152
154{
155 int offset = getNumberOfWords()-1;
156 if(offset>=m_FebBlockSize) return 0;
157 if(offset<0) return 0;
158 return m_FebBlock[offset];
159}
160
162{
163 int end = getNumberOfWords()-3;
164 int start = 1;
165 uint32_t sum = 0;
166 if(end>m_FebBlockSize) end = m_FebBlockSize;
167 for(int i=start;i<end;i++) {
168 sum += m_FebBlock[i];
169 }
170 return sum & 0x7fffffff;
171}
172
174{
175 std::cout << "Error: Function dumpFragment() not implemented in this instance of LArRodBlockStructure!\n";
176 return;
177}
178
179
181{
182 std::cout << "Error: Function initializeFEB not implemented in this instance of LArRodBlockStructure!\n";
183 return;
184}
185
186void LArRodBlockStructure::initializeFragment(std::vector<uint32_t>& )
187{
188 std::cout << "Error: Function initializeFragment not implemented in this instance of LArRodBlockStructure!\n";
189 return;
190}
191
193{
194 std::cout << "Error: Function finalizeFEB not implemented in this instance of LArRodBlockStructure!\n";
195 return;
196}
197
199{
200 // Do not set anything
201 return;
202}
203
205{
206 // Do not set anything
207 return;
208}
209
211{
212 // Do not set anything
213 return;
214}
215
217{
218 // Do not set anything
219 return;
220}
221
223{
224 return 1;
225}
226
227//Default instances of sort-method. Default is to leave things unsorted.
228void LArRodBlockStructure::sortDataVector(std::vector<const LArRawChannel*>& )
229{return;}
230
231void LArRodBlockStructure::sortDataVector( std::vector<const LArDigit*>& )
232{return;}
233
234void LArRodBlockStructure::sortDataVector( std::vector<const LArCalibDigit*>& )
235{return;}
236
237void LArRodBlockStructure::sortDataVector( std::vector<const LArAccumulatedCalibDigit*>& )
238{return;}
239
240void LArRodBlockStructure::sortDataVector( std::vector<const LArAccumulatedDigit*>& )
241{return;}
242
243uint32_t LArRodBlockStructure::getNumberOfSamples() const { return 0; }
244uint32_t LArRodBlockStructure::getNumberOfGains() const { return 0; }
245uint32_t LArRodBlockStructure::getRadd(uint32_t /*adc*/, uint32_t /*sample*/) const { return 0; }
246uint16_t LArRodBlockStructure::getCtrl1(uint32_t /*adc*/) const { return 0; }
247uint16_t LArRodBlockStructure::getCtrl2(uint32_t /*adc*/) const { return 0; }
248uint16_t LArRodBlockStructure::getCtrl3(uint32_t /*adc*/) const { return 0; }
249uint32_t LArRodBlockStructure::getStatus() const { return 0; }
250uint16_t LArRodBlockStructure::getResults1Size() const { return 0; }
251uint16_t LArRodBlockStructure::getResults2Size() const { return 0; }
252uint16_t LArRodBlockStructure::getRawDataSize() const { return 0; }
253uint16_t LArRodBlockStructure::getNbSweetCells1() const { return 0; }
254uint16_t LArRodBlockStructure::getNbSweetCells2() const { return 0; }
255
257{
258 int i=getNumberOfWords()-2;
259 return m_FebBlock[i];
260}
261
263{
264 int i=getNumberOfWords()-1;
265 return m_FebBlock[i];
266}
virtual void sortDataVector(std::vector< const LArRawChannel * > &)
virtual uint16_t getCtrl1(uint32_t adc) const
virtual void setRawDataFixed(const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual void setSumE(double)
virtual void setEy(double)
virtual void setEtQ(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
virtual void setDAC(const uint16_t DACValue)
const uint32_t * m_virtualROBPointerLocal
virtual uint16_t getCtrl3(uint32_t adc) const
virtual uint16_t getResults1Size() const
virtual void setTDCPhase(const uint8_t n)
virtual uint16_t getRawDataSize() const
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &Samples2Sum, uint32_t &nStepTriggers, uint32_t &gain)
virtual uint32_t getNumberOfGains() const
virtual void setEx(double)
virtual void initializeFragment(std::vector< uint32_t > &fragment)
const uint32_t * m_virtualROBPointer
virtual void setNTrigger(const uint16_t NTrigger)
virtual uint32_t getDspCodeVersion() const
virtual uint16_t getCtrl2(uint32_t adc) const
virtual uint8_t getTDCPhase() const
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
virtual void setPulsed(const unsigned channelNumber)
virtual void initializeFEB(const uint32_t id)
std::vector< uint32_t > * m_pRODblock
virtual int setGain(const int GainValue)
virtual void setDelay(const uint16_t DelayValue)
LArRodBlockStructure(IMessageSvc *msgSvc, const std::string &blockType)
virtual uint32_t offlineCheckSum() const
static const uint32_t m_OfflineToRawGainMap[3]
virtual void setNumberOfSamples(const uint8_t n)
std::vector< uint32_t > * m_vFragment
static const uint32_t m_RawToOfflineGainMap[4]
virtual uint16_t getNbSweetCells2() const
virtual void setRawData(const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual uint32_t getNumberOfSamples() const
virtual void setNumberOfGains(const uint8_t n)
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
virtual void setEz(double)
virtual uint32_t getStatus() const
virtual void setNextEnergy(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
uint32_t getNumberOfWords() const
virtual uint16_t getResults2Size() const
virtual uint16_t getNbSweetCells1() const
virtual int32_t getDspEventCounter() const
virtual uint32_t onlineCheckSum() const
virtual int getNextAccumulatedDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &corr2Sum, uint32_t &gain)
setEventNumber uint32_t