2 from ispy
import ISObject, IPCPartition, ISInfoAny, ISInfoDictionary
4 from AthenaCommon.Logging
import logging
8 mlog = logging.getLogger(
'EventDisplays' )
12 mlog.debug(
"Trying to read magnetic field configuration from partition %s", partition)
17 ipcPart = IPCPartition(partition)
18 if not ipcPart.isValid():
19 raise UserWarning(
"Partition %s invalid - cannot access magnetic field setting"%partition)
21 toroidCurrent = ISObject(ipcPart,
'DCS_GENERAL.MagnetToroidsCurrent.value',
'DdcFloatInfo')
22 solenoidCurrent = ISObject(ipcPart,
'DCS_GENERAL.MagnetSolenoidCurrent.value',
'DdcFloatInfo')
23 toroidInvalid = ISObject(ipcPart,
'DCS_GENERAL.MagnetToroidsCurrent.invalid',
'DdcIntInfo')
24 solenoidInvalid = ISObject(ipcPart,
'DCS_GENERAL.MagnetSolenoidCurrent.invalid',
'DdcIntInfo')
25 toroidCurrent.checkout()
26 solenoidCurrent.checkout()
27 toroidInvalid.checkout()
28 solenoidInvalid.checkout()
30 solenoidOn=((solenoidCurrent.value > 1000.)
and (solenoidInvalid.value == 0))
31 toroidOn=((toroidCurrent.value > 1000.)
and (toroidInvalid.value == 0))
32 except UserWarning
as err:
35 mlog.fatal(
"Failed to read magnetic field configuration from IS, aborting")
39 mlog.info(
"Magnetic field in solenoid is %s", (solenoidOn
and "ON")
or "OFF")
40 mlog.info(
"Magnetic field in toroid is %s", (toroidOn
and "ON")
or "OFF")
43 return (solenoidOn,toroidOn)
47 mlog = logging.getLogger(
'EventDisplays' )
49 while not partitionUp:
51 partition = IPCPartition(partitionName)
52 runParams = ISObject(partition,
"RunParams.RunParams",
"RunParams")
57 mlog.info(
"%s partition is not up, sleeping for 30 seconds", partitionName)
62 mlog = logging.getLogger(
'EventDisplays' )
64 partition = IPCPartition(
'ATLAS')
65 RunParams = ISObject(partition,
'RunParams.RunParams',
'RunParams')
68 ready4physics = ISInfoAny()
69 ISInfoDictionary(partition).getValue(
'RunParams.Ready4Physics', ready4physics)
70 print(
"physicsReady: %s " % ready4physics.get())
72 physicsReady = ISObject(partition,
'RunParams.Ready4Physics',
'Ready4PhysicsInfo')
73 physicsReady.checkout()
74 print(
"Ready for physics: %r" % (physicsReady.ready4physics))
75 print(
"RunParams.T0_project_tag", RunParams.T0_project_tag)
77 sendToPublicStream =
False
78 if physicsReady.ready4physics
and RunParams.T0_project_tag
in projectTags:
79 sendToPublicStream =
True
81 return sendToPublicStream
84 mlog.warning(
'Failed to get bool for EventCanBeSeenByPublic, this is expected for offline test and GM test paritions')
90 jobId = os.environ.get(
'TDAQ_APPLICATION_NAME',
'').
split(
':')
91 if not len(jobId) == 5:
92 from random
import randint
93 jobId = [
'Athena-EventProcessor',
'Athena-EventDisplays-Segment',
'EventDisplays-Rack',
'tmp',
'%d' % randint(0, 999)]
98 part = IPCPartition(partitionName)
99 RunParams = ISObject(part,
'RunParams.RunParams',
'RunParams')
101 run_number = RunParams.getAttributeValue(
'run_number')
104 if __name__ ==
"__main__":
106 print (
"RunNumber: %s"%runNumber)
108 print (
"BFields (Sol,Tor):", bFields)
110 print(
"isPublicEvent:", isPublicEvent)