48 "Get the magnetic field currents (MagFieldDCSInfo) for a given run"
52 runiov=(run << 32)+(lumiblock
or 0)
53 if runiov
in _fieldForLB:
54 return _fieldForLB[runiov]
58 print (
"Reading magnetic field for run %i, CONDBR2 %s" % (run,newdb))
62 sorfolder=
'/TDAQ/RunCtrl/SOR'
63 fntname=
'T0ProjectTag'
66 sorfolder=
'/TDAQ/RunCtrl/SOR_Params'
71 print (
"MagFieldUtils.getFieldForRun ERROR: Cannot connect to COOLONL_TDAQ/%s" % dbname)
75 tdaqfolder=tdaqDB.getFolder(sorfolder)
77 obj=tdaqfolder.findObject(runiov,0)
79 sortime=payload[
'SORTime']
81 except Exception
as e:
82 print (
"MagFieldUtils.getFieldForRun ERROR accessing folder %s" % sorfolder)
84 tdaqDB.closeDatabase()
87 if lumiblock
is not None:
89 print (
"Reading specific timestamp for lumiblock %i" % lumiblock)
92 if (lbtime==0
and lumiblock>1):
94 print (
"MagFieldUtils.getFieldForRun WARNING: Cannot find LB %i, trying %i" % (lumiblock,lumiblock-1))
97 print (
"MagFieldUtils.getFieldForRun WARNING: Cannot find LB %i, fall back on SOR time" % lumiblock)
101 print (
"Lumiblock starts %i seconds from start of run" %
int((lbtime-sortime)/1.E9))
104 print (
"MagFieldUtils.getFieldForRun ERROR accessing /TRIGGER/LUMI/LBLB")
105 print (
"Fall back on SOR time from %s" % sorfolder)
109 if (sortime==0):
return None
114 print (
"MagFieldUtils.getFieldForRun ERROR: Cannot connect to COOLOFL_DCS/%s" % dbname)
121 currentmap={
'CentralSol_Current':0,
'CentralSol_SCurrent':1,
122 'Toroids_Current':2,
'Toroids_SCurrent':3}
123 dcsfolder=dcsDB.getFolder(
'/EXT/DCS/MAGNETS/SENSORDATA')
124 objs=dcsfolder.findObjects(sortime,cool.ChannelSelection.all())
125 data=[-1.,-1.,-1.,-1.]
128 channame=dcsfolder.channelName(chan)
129 if channame
in currentmap.keys():
130 data[currentmap[channame]]=obj.payload()[
'value']
131 except Exception
as e:
132 print (
"MagFieldUtils.getFieldForRun ERROR accessing /EXT/DCS/MAGNETS/SENSORDATA")
134 dcsDB.closeDatabase()
139 retval=MagFieldDCSInfo(data[0],data[1],data[2],data[3],fnt)
140 _fieldForLB[runiov]=retval