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