75{
77 LArDigit * scDigit=0 ;
78
79
80 uint32_t nData = robFrag->rod_ndata();
82 if (nData < 3) {
84 << "Empty ROD block (less than 3 words) for source ID " << robFrag->rod_source_id() );
85 return;
86 }
87 else
88 robFrag->rod_source_id();
89
90 unsigned int n = robFrag->payload_size_word();
91
92 std::vector<std::string>
string;
95 for(
unsigned int s=1;
s<
n-13;
s+=6) {
97 for (
unsigned int k=0;
k<6;++
k){
99 std::ostringstream oss;
100 oss << std::hex <<
x;
101 if (oss.str().size() == 7){
103 }
105 }
106 string.push_back(std::move(
ss));
107 }
108
109 constexpr int nFibers = 20;
110 constexpr int nchannels = 8;
111 constexpr int Nabbachannels = nFibers * nchannels;
112
113 constexpr int fiberSeq[16] = {0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1};
114 constexpr int adcSeq[16] = {1,0,1,0,3,2,3,2,5,4,5,4,7,6,7,6};
115
116 std::vector< std::vector< std::vector<int> > > abbasamples;
117 abbasamples.resize(nFibers);
118
119 std::vector<std::vector<short>> abba_channel_samples;
120 abba_channel_samples.resize(Nabbachannels);
121
122 for (int fib=0;fib < nFibers; ++fib){
123 abbasamples[fib].resize(nchannels);
124 for (
int ch = 0;
ch < nchannels; ++
ch){
125 abbasamples[fib][
ch].resize(nsamples);
126 int Nchannel = fib*8 +
ch;
127 abba_channel_samples[Nchannel].resize(nsamples);
128 }
129 }
130
131 for (int fib=0;fib < nFibers; fib+=2){
132 for (
int sam=0; sam <
nsamples; sam++){
133 int zx = sam + (fib/2)*nsamples;
134 const std::string &wx = string[zx];
136 for (
int m = 0;
m < 16; ++
m){
137 int fiber_number = fiberSeq[
m];
138 int adc_number = adcSeq[
m];
140 std::stringstream
ss;
141 char mysample[3];
142 for (
int j = idx;
j <
idx+3; ++
j){
145 }
147 short mysample_int;
148 ss >> std::hex >> mysample_int;
149 int fb = fiber_number+fib;
151 int abbachannel = fb*8+
ch;
153 abbasamples[fb][
ch][sam] = mysample_int;
154 abba_channel_samples[abbachannel][sam] = mysample_int;
155 }
156 }
157 }
158
159 std::map<int, HWIdentifier> abba_mapping;
160
161
162 int iphi = 0;
163 switch (robFrag->rod_source_id())
164 {
165 case 0x410511:
166 iphi=19;
167 break;
169 case 0x410512:
170 iphi=18;
171 break;
172 case 0x410521:
173 iphi=20;
174 break;
175 case 0x410522:
176 iphi=21;
177 break;
178
179 default:
181 }
182
183
185
186
187 for (std::size_t index_abba_channel_samples = 0; index_abba_channel_samples < abba_channel_samples.size(); ++index_abba_channel_samples) {
188 auto abba_mapping_search = abba_mapping.find(index_abba_channel_samples);
189 if (abba_mapping_search == abba_mapping.end()) {
190 ATH_MSG_WARNING(
"No mapping for index_abba_channel_samples: "<<std::dec<<index_abba_channel_samples);
191 continue;
192 }
193
194 HWIdentifier channelID = (*abba_mapping_search).second;
195 std::vector<short> adcValues = abba_channel_samples[index_abba_channel_samples];
196 scDigit=new LArDigit(channelID,dummyGain,std::move(adcValues));
197
199 }
200
201 abbasamples.clear();
202}
static void fill(std::map< int, HWIdentifier > *toFill, int iphi, MsgStream &log)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
End of vector before end of string
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)