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 m_logstr << MSG::ERROR << "Error: Function setDAC not implemented in this instance of LArRodBlockStructure!" << endmsg;
58}
59
61{
62 m_logstr << MSG::ERROR << "Error: Function setDelay not implemented in this instance of LArRodBlockStructure!" << endmsg;
63}
64
66{
67 m_logstr << MSG::ERROR << "Error: Function setPulsed not implemented in this instance of LArRodBlockStructure!" << endmsg;
68}
69
71{
72 m_logstr << MSG::ERROR << "Error: Function setNTrigger not implemented in this instance of LArRodBlockStructure!" << endmsg;
73}
74
76{
77 m_logstr << MSG::ERROR << "Error: Function concatinateFEBs not implemented in this instance of LArRodBlockStructure!" << endmsg;
78}
79
80
81int LArRodBlockStructure::getNextRawData(int&, std::vector<short>&, uint32_t&)
82{
83 m_logstr << MSG::ERROR << "Error: Function getNextRawData not implemented in this instance of LArRodBlockStructure!" << endmsg;
84 return 0;
85}
86
87int LArRodBlockStructure::getNextAccumulatedCalibDigit(int&, std::vector < uint64_t >&, std::vector < uint64_t >& , uint32_t&, uint32_t&)
88{
89 m_logstr << MSG::ERROR << "Error: Function getNextAccumulatedCalibDigit not implemented in this instance of LArRodBlockStructure!" << endmsg;
90 return 0;
92
93int LArRodBlockStructure::getNextAccumulatedDigit(int&, std::vector<uint64_t>&, std::vector < uint64_t >& , uint32_t&)
94{
95 m_logstr << MSG::ERROR << "Error: Function getNextAccumulatedDigit not implemented in this instance of LArRodBlockStructure!" << endmsg;
96 return 0;
97}
98
99void LArRodBlockStructure::setNextEnergy(const int, const int32_t, const int32_t, const int32_t, const uint32_t)
100{
101 m_logstr << MSG::ERROR << "Error: Function setNextEnergy not implemented in this instance of LArRodBlockStructure!" << endmsg;
102}
103
104
105void LArRodBlockStructure::setRawData(const int , const std::vector<short>& , const uint32_t)
106{
107 m_logstr << MSG::ERROR << "Error: Function setRawData not implemented in this instance of LArRodBlockStructure!" << endmsg;
108}
109
110
111void LArRodBlockStructure::setEtQ(const int, const int32_t, const int32_t, const int32_t, const uint32_t)
112{
113 m_logstr << MSG::ERROR << "Error: Function setEtQ not implemented in this instance of LArRodBlockStructure!" << endmsg;
114}
115
116void LArRodBlockStructure::setRawDataFixed(const int , const std::vector<short>&, const uint32_t )
117{
118 m_logstr << MSG::ERROR << "Error: Function setRawDataFixed not implemented in this instance of LArRodBlockStructure!" << endmsg;
119}
120
122{
123 m_logstr << MSG::ERROR << "Error: Function setNumberOfSamples not implemented in this instance of LArRodBlockStructure!" << endmsg;
124}
125
127{
128 m_logstr << MSG::ERROR << "Error: Function setNumberOfGains not implemented in this instance of LArRodBlockStructure!" << endmsg;
129}
130
132{
133 m_logstr << MSG::ERROR << "Error: Function setTDCPhase not implemented in this instance of LArRodBlockStructure!" << endmsg;
134}
136{
137 return 0;
138}
139
141{
142 int offset = getNumberOfWords()-1;
143 if(offset>=m_FebBlockSize) return 0;
144 if(offset<0) return 0;
145 return m_FebBlock[offset];
146}
147
149{
150 int end = getNumberOfWords()-3;
151 int start = 1;
152 uint32_t sum = 0;
153 if(end>m_FebBlockSize) end = m_FebBlockSize;
154 for(int i=start;i<end;i++) {
155 sum += m_FebBlock[i];
156 }
157 return sum & 0x7fffffff;
158}
159
161{
162 m_logstr << MSG::ERROR << "Error: Function dumpFragment() not implemented in this instance of LArRodBlockStructure!" << endmsg;
163}
164
165
167{
168 m_logstr << MSG::ERROR << "Error: Function initializeFEB not implemented in this instance of LArRodBlockStructure!" << endmsg;
169}
170
171void LArRodBlockStructure::initializeFragment(std::vector<uint32_t>& )
172{
173 m_logstr << MSG::ERROR << "Error: Function initializeFragment not implemented in this instance of LArRodBlockStructure!" << endmsg;
174}
175
177{
178 m_logstr << MSG::ERROR << "Error: Function finalizeFEB not implemented in this instance of LArRodBlockStructure!" << endmsg;
179 return;
180}
181
183{
184 // Do not set anything
185 return;
186}
187
189{
190 // Do not set anything
191 return;
192}
193
195{
196 // Do not set anything
197 return;
198}
199
201{
202 // Do not set anything
203 return;
204}
205
207{
208 return 1;
209}
210
211//Default instances of sort-method. Default is to leave things unsorted.
212void LArRodBlockStructure::sortDataVector(std::vector<const LArRawChannel*>& )
213{return;}
214
215void LArRodBlockStructure::sortDataVector( std::vector<const LArDigit*>& )
216{return;}
217
218void LArRodBlockStructure::sortDataVector( std::vector<const LArCalibDigit*>& )
219{return;}
220
221void LArRodBlockStructure::sortDataVector( std::vector<const LArAccumulatedCalibDigit*>& )
222{return;}
223
224void LArRodBlockStructure::sortDataVector( std::vector<const LArAccumulatedDigit*>& )
225{return;}
226
227uint32_t LArRodBlockStructure::getNumberOfSamples() const { return 0; }
228uint32_t LArRodBlockStructure::getNumberOfGains() const { return 0; }
229uint32_t LArRodBlockStructure::getRadd(uint32_t /*adc*/, uint32_t /*sample*/) const { return 0; }
230uint16_t LArRodBlockStructure::getCtrl1(uint32_t /*adc*/) const { return 0; }
231uint16_t LArRodBlockStructure::getCtrl2(uint32_t /*adc*/) const { return 0; }
232uint16_t LArRodBlockStructure::getCtrl3(uint32_t /*adc*/) const { return 0; }
233uint32_t LArRodBlockStructure::getStatus() const { return 0; }
234uint16_t LArRodBlockStructure::getResults1Size() const { return 0; }
235uint16_t LArRodBlockStructure::getResults2Size() const { return 0; }
236uint16_t LArRodBlockStructure::getRawDataSize() const { return 0; }
237uint16_t LArRodBlockStructure::getNbSweetCells1() const { return 0; }
238uint16_t LArRodBlockStructure::getNbSweetCells2() const { return 0; }
239
241{
242 int i=getNumberOfWords()-2;
243 return m_FebBlock[i];
244}
245
247{
248 int i=getNumberOfWords()-1;
249 return m_FebBlock[i];
250}
#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