84 uint32_t nData = robFrag->rod_ndata();
85 const uint32_t* p=robFrag->rod_data();
88 <<
"Empty ROD block (less than 3 words) for source ID " << robFrag->rod_source_id() );
93 robFrag->rod_source_id();
96 unsigned int n = robFrag->payload_size_word();
99 std::vector<std::string>
string;
103 for(
unsigned int s=1;s<n-13;s+=6) {
106 for (
unsigned int k=0;k<6;++k){
109 std::ostringstream oss;
110 oss << std::hex <<
x;
111 if (oss.str().size() == 7){
121 string.push_back(std::move(
ss));
127constexpr int nFibers = 20;
128constexpr int nchannels = 8;
129constexpr int Nabbachannels = nFibers * nchannels;
131constexpr int fiberSeq[16] = {0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1};
132constexpr int adcSeq[16] = {1,0,1,0,3,2,3,2,5,4,5,4,7,6,7,6};
134std::vector< std::vector< std::vector<int> > > abbasamples;
135abbasamples.resize(nFibers);
137std::vector<std::vector<short>> abba_channel_samples;
138abba_channel_samples.resize(Nabbachannels);
140for (
int fib=0;fib < nFibers; ++fib){
141 abbasamples[fib].resize(nchannels);
142 for (
int ch = 0; ch < nchannels; ++ch){
143 abbasamples[fib][ch].resize(nsamples);
144 int Nchannel = fib*8 + ch;
145 abba_channel_samples[Nchannel].resize(nsamples);
151 for (
int fib=0;fib < nFibers; fib+=2){
152 for (
int sam=0; sam < nsamples; sam++){
153 int zx = sam + (fib/2)*nsamples;
154 const std::string &wx =
string[zx];
156 for (
int m = 0; m < 16; ++m){
157 int fiber_number = fiberSeq[m];
158 int adc_number = adcSeq[m];
160 std::stringstream
ss;
163 for (
int j = idx; j < idx+3; ++j){
171 ss >> std::hex >> mysample_int;
172 int fb = fiber_number+fib;
174 int abbachannel = fb*8+ch;
181 abbasamples[fb][ch][sam] = mysample_int;
182 abba_channel_samples[abbachannel][sam] = mysample_int;
190std::map<int, HWIdentifier> abba_mapping;
194switch (robFrag->rod_source_id())
213msg(MSG::ERROR) <<
"ROD_source_id not found" <<
endmsg;
283for (std::size_t index_abba_channel_samples = 0; index_abba_channel_samples < abba_channel_samples.size(); ++index_abba_channel_samples) {
284 auto abba_mapping_search = abba_mapping.find(index_abba_channel_samples);
285 if (abba_mapping_search == abba_mapping.end()) {
286 msg(MSG::WARNING) <<
"No mapping for index_abba_channel_samples: "<<std::dec<<index_abba_channel_samples <<
endmsg;
292 std::vector<short> adcValues = abba_channel_samples[index_abba_channel_samples];
294 scDigit=
new LArDigit(channelID,dummyGain,std::move(adcValues));