ATLAS Offline Software
Loading...
Searching...
No Matches
TrigPyHelper.py
Go to the documentation of this file.
1# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2
3
8
9from GaudiPython import * # noqa
10from GaudiPython import gbl, InterfaceCast
11from GaudiPython.Bindings import Helper, iProperty
12from AthenaCommon.Logging import logging
13
15 """Helper class to work with Python bindings in athenaMT/PT"""
16
17 log = logging.getLogger("TrigApp" )
18
19 def service(self, name, iface = gbl.IService):
20 """Retrieve service with interface iface.
21 Example: trigApp.service('MessageSvc',gbl.IMessageSvc)"""
22
23 svc = InterfaceCast(iface)(Helper.service(gbl.Gaudi.svcLocator(), name))
24 return svc
25
26 def changeJobProperties(self, clientName, propertyName, newValue):
27 """Change the property of a client to a new value. Both client and property
28 can be a regular expression in which case all properties matching will
29 be changed to the new value. Note, this will only change properties that
30 already exist in the JobOptionsCatalogue.
31 Example: trigApp.changeJobProperties('.*', 'OutputLevel', DEBUG)"""
32
33 jobOptSvc = InterfaceCast(gbl.Gaudi.Interfaces.IOptionsSvc)(Helper.service(gbl.Gaudi.svcLocator(), "JobOptionsSvc"))
34 if not jobOptSvc:
35 self.log.error("Cannot find JobOptionsSvc")
36 return
37
38 import re
39 reClient = re.compile(clientName)
40 reProp = re.compile(propertyName)
41
42
44 for p in jobOptSvc.items():
45 name = p._0
46 value = p._1
47 client, prop = name.rsplit('.',1)
48 if reClient.match(client) and reProp.match(prop):
49 self.log.info("Changing %s.%s from '%s' to '%s'", client, prop, value, newValue)
50 iprop = iProperty(client)
51 setattr(iprop, prop, newValue)
52
53 return
54
55
56
57trigApp = TrigApp()
58
service(self, name, iface=gbl.IService)
changeJobProperties(self, clientName, propertyName, newValue)