222{
223 auto payload = std::make_unique<EMBHVData::Payload>();
224 payload->m_payloadArray.reserve(2*8*16*2*32);
225
226 for (
int i=0;
i<16384;
i++) {
229 }
230
231 for (const CondAttrListCollection* atrlistcol : attrLists) {
232
234
235
236
237 unsigned int chanID = (*citr).first;
238 int cannode = chanID/1000;
239 int line = chanID%1000;
240
241
242 HWIdentifier
id =
m_c->hvId->HVLineId(1,1,cannode,line);
243
244 const std::vector<HWIdentifier>& electrodeIdVec = idfunc(id);
245
246 for(
size_t i=0;
i<electrodeIdVec.size();
i++)
247 {
248 HWIdentifier elecHWID = electrodeIdVec[
i];
250 if (detector==0) {
251
252
253
254 unsigned int sideIndex=1-
m_c->elecId->zside(elecHWID);
255
256 unsigned int etaIndex=
m_c->elecId->hv_eta(elecHWID);
257
258
259
260
261
262
263
264
265
267 unsigned int sectorIndex;
268 if (sideIndex==1) {
270 sectorIndex=
m_c->elecId->hv_phi(elecHWID);
271 }
272
273
274
275
276
277
278
279 else {
280 int imodule=
m_c->elecId->module(elecHWID);
281 if (imodule<9)
phiIndex = 8 - imodule;
283 sectorIndex = 1-
m_c->elecId->hv_phi(elecHWID);
284 }
285
286 if (sectorIndex==1) {
289 }
290
291 unsigned int electrodeIndex=
m_c->elecId->electrode(elecHWID);
292 if (sideIndex==0) {
293 if (
m_c->elecId->hv_phi(elecHWID)==1) electrodeIndex=31-electrodeIndex;
294 else electrodeIndex=63-electrodeIndex;
295 }
296 else {
297 if (
m_c->elecId->hv_phi(elecHWID)==0) electrodeIndex=electrodeIndex-32;
298 }
299
300 unsigned int index = 8192*sideIndex+1024*etaIndex+64*
phiIndex+32*sectorIndex+electrodeIndex;
301
302 unsigned int gapIndex=
m_c->elecId->gap(elecHWID);
303 if (sideIndex==0) gapIndex=1-gapIndex;
304
306 if (!((*citr).second)[
"R_VMEAS"].isNull()) voltage = ((*citr).second)[
"R_VMEAS"].
data<float>();
308 if (!((*citr).second)[
"R_IMEAS"].isNull())
current = ((*citr).second)[
"R_IMEAS"].
data<float>();
309
310
311 payload->m_payloadArray[
index].voltage[gapIndex]=voltage;
313 payload->m_payloadArray[
index].hvLineNo[gapIndex]=chanID;
314 }
315 }
316 }
317 }
318
319 return {std::move (payload)};
320}
char data[hepevt_bytes_allocation_ATLAS]
ChanAttrListMap::const_iterator const_iterator
static constexpr double INVALID
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi