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{
33 m_RodBlock=NULL;
34 m_FebBlock=NULL;
37#ifndef NDEBUG
42#endif
43 m_pRODblock=NULL;
44 m_vFragment=NULL;
47}
48
52
53//Error reporting for not implemented methods
54void LArRodBlockStructure::setDAC(const uint16_t)
55{
56 m_logstr << MSG::ERROR << "Error: Function setDAC not implemented in this instance of LArRodBlockStructure!" << endmsg;
57}
58
60{
61 m_logstr << MSG::ERROR << "Error: Function setDelay not implemented in this instance of LArRodBlockStructure!" << endmsg;
62}
63
65{
66 m_logstr << MSG::ERROR << "Error: Function setPulsed not implemented in this instance of LArRodBlockStructure!" << endmsg;
67}
68
70{
71 m_logstr << MSG::ERROR << "Error: Function setNTrigger not implemented in this instance of LArRodBlockStructure!" << endmsg;
72}
73
75{
76 m_logstr << MSG::ERROR << "Error: Function concatinateFEBs not implemented in this instance of LArRodBlockStructure!" << endmsg;
77}
78
79
80int LArRodBlockStructure::getNextRawData(int&, std::vector<short>&, uint32_t&)
81{
82 m_logstr << MSG::ERROR << "Error: Function getNextRawData not implemented in this instance of LArRodBlockStructure!" << endmsg;
83 return 0;
84}
85
86int LArRodBlockStructure::getNextAccumulatedCalibDigit(int&, std::vector < uint64_t >&, std::vector < uint64_t >& , uint32_t&, uint32_t&)
88 m_logstr << MSG::ERROR << "Error: Function getNextAccumulatedCalibDigit not implemented in this instance of LArRodBlockStructure!" << endmsg;
89 return 0;
92int LArRodBlockStructure::getNextAccumulatedDigit(int&, std::vector<uint64_t>&, std::vector < uint64_t >& , uint32_t&)
93{
94 m_logstr << MSG::ERROR << "Error: Function getNextAccumulatedDigit not implemented in this instance of LArRodBlockStructure!" << endmsg;
95 return 0;
96}
97
98void LArRodBlockStructure::setNextEnergy(const int, const int32_t, const int32_t, const int32_t, const uint32_t)
99{
100 m_logstr << MSG::ERROR << "Error: Function setNextEnergy not implemented in this instance of LArRodBlockStructure!" << endmsg;
101}
102
103
104void LArRodBlockStructure::setRawData(const int , const std::vector<short>& , const uint32_t)
105{
106 m_logstr << MSG::ERROR << "Error: Function setRawData not implemented in this instance of LArRodBlockStructure!" << endmsg;
107}
108
109
110void LArRodBlockStructure::setEtQ(const int, const int32_t, const int32_t, const int32_t, const uint32_t)
111{
112 m_logstr << MSG::ERROR << "Error: Function setEtQ not implemented in this instance of LArRodBlockStructure!" << endmsg;
113}
114
115void LArRodBlockStructure::setRawDataFixed(const int , const std::vector<short>&, const uint32_t )
116{
117 m_logstr << MSG::ERROR << "Error: Function setRawDataFixed not implemented in this instance of LArRodBlockStructure!" << endmsg;
118}
119
121{
122 m_logstr << MSG::ERROR << "Error: Function setNumberOfSamples not implemented in this instance of LArRodBlockStructure!" << endmsg;
123}
124
126{
127 m_logstr << MSG::ERROR << "Error: Function setNumberOfGains not implemented in this instance of LArRodBlockStructure!" << endmsg;
129
131{
132 m_logstr << MSG::ERROR << "Error: Function setTDCPhase not implemented in this instance of LArRodBlockStructure!" << endmsg;
133}
135{
136 return 0;
137}
138
140{
141 int offset = getNumberOfWords()-1;
142 if(offset>=m_FebBlockSize) return 0;
143 if(offset<0) return 0;
144 return m_FebBlock[offset];
145}
146
148{
149 int end = getNumberOfWords()-3;
150 int start = 1;
151 uint32_t sum = 0;
152 if(end>m_FebBlockSize) end = m_FebBlockSize;
153 for(int i=start;i<end;i++) {
154 sum += m_FebBlock[i];
155 }
156 return sum & 0x7fffffff;
157}
158
160{
161 m_logstr << MSG::ERROR << "Error: Function dumpFragment() not implemented in this instance of LArRodBlockStructure!" << endmsg;
162}
163
164
166{
167 m_logstr << MSG::ERROR << "Error: Function initializeFEB not implemented in this instance of LArRodBlockStructure!" << endmsg;
168}
169
170void LArRodBlockStructure::initializeFragment(std::vector<uint32_t>& )
171{
172 m_logstr << MSG::ERROR << "Error: Function initializeFragment not implemented in this instance of LArRodBlockStructure!" << endmsg;
173}
174
176{
177 m_logstr << MSG::ERROR << "Error: Function finalizeFEB not implemented in this instance of LArRodBlockStructure!" << endmsg;
178}
179
181{
182 // Do not set anything
183}
184
186{
187 // Do not set anything
188}
189
191{
192 // Do not set anything
193}
194
196{
197 // Do not set anything
198}
199
201{
202 return 1;
203}
204
205//Default instances of sort-method. Default is to leave things unsorted.
206void LArRodBlockStructure::sortDataVector(std::vector<const LArRawChannel*>& )
207{}
208
209void LArRodBlockStructure::sortDataVector( std::vector<const LArDigit*>& )
210{}
211
212void LArRodBlockStructure::sortDataVector( std::vector<const LArCalibDigit*>& )
213{}
214
215void LArRodBlockStructure::sortDataVector( std::vector<const LArAccumulatedCalibDigit*>& )
216{}
217
218void LArRodBlockStructure::sortDataVector( std::vector<const LArAccumulatedDigit*>& )
219{}
220
221uint32_t LArRodBlockStructure::getNumberOfSamples() const { return 0; }
222uint32_t LArRodBlockStructure::getNumberOfGains() const { return 0; }
223uint32_t LArRodBlockStructure::getRadd(uint32_t /*adc*/, uint32_t /*sample*/) const { return 0; }
224uint16_t LArRodBlockStructure::getCtrl1(uint32_t /*adc*/) const { return 0; }
225uint16_t LArRodBlockStructure::getCtrl2(uint32_t /*adc*/) const { return 0; }
226uint16_t LArRodBlockStructure::getCtrl3(uint32_t /*adc*/) const { return 0; }
227uint32_t LArRodBlockStructure::getStatus() const { return 0; }
228uint16_t LArRodBlockStructure::getResults1Size() const { return 0; }
229uint16_t LArRodBlockStructure::getResults2Size() const { return 0; }
230uint16_t LArRodBlockStructure::getRawDataSize() const { return 0; }
231uint16_t LArRodBlockStructure::getNbSweetCells1() const { return 0; }
232uint16_t LArRodBlockStructure::getNbSweetCells2() const { return 0; }
233
235{
236 int i=getNumberOfWords()-2;
237 return m_FebBlock[i];
238}
239
241{
242 int i=getNumberOfWords()-1;
243 return m_FebBlock[i];
244}
#define endmsg
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