74 def getCabling(self):
75 if self._cabling: return self._cabling
76
77 lardb=indirectOpen("COOLONL_LAR/CONDBR2")
78 f=lardb.getFolder("/LAR/Identifier/OnOffIdMap")
79 ptr=f.findObject(cool.ValidityKeyMax-1,cool.ChannelId(0),"LARIdentifierOnOffIdMap-RUN2-001")
80 payload=ptr.payload()["OnlineHashToOfflineId"]
81 on2off=payload.read()
82 nChans=int(payload.size()/4)
83
84 self._cabling=ROOT.LArOnOffIdMapping(self._larOnlHelper,self._caloHelper)
85 onlHash2OflIdVec=self._cabling.getOnlHash2OflId()
86 oflHash2OnlIdVec=self._cabling.getOflHash2OnId()
87
88
89 i=0
90 nConnected=0
91 iChan=0
92 while (iChan<nChans):
93 idnum=int.from_bytes(on2off[i:i+4],'little')
94
95 oflId=ROOT.Identifier(ROOT.Identifier32(idnum))
96 if oflId.is_valid():
97 oflHash=self._caloHelper.calo_cell_hash(oflId)
98 onlHash=ROOT.IdentifierHash(iChan)
99 if oflHash.value()>=oflHash2OnlIdVec.size():
100 self._msg.
error(
"invalid offline hash %i", oflHash.value())
101 return
102
103 if onlHash.value()>=onlHash2OflIdVec.size():
104 self._msg.
error(
"invalid offline hash %i", onlHash.value())
105 return
106 nConnected+=1
107 onlId=self._larOnlHelper.channel_Id(onlHash)
108 onlHash2OflIdVec[iChan]=oflId
109 oflHash2OnlIdVec[oflHash.value()]=onlId
110 pass
111 else:
112
113 pass
114 i+=4
115 iChan+=1
116 pass
117
118 self._msg.info("Found identifier mapping for %i connected channels", nConnected)
119
120 return self._cabling
121
122