ATLAS Offline Software
GoodRunsListConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2 
3 
5  def __init__(self):
6  # -- run cmd options
7  self.name = "GoodRunsListConfig" # -- name set inside GRLB xml output file
8  self.querytool = "AtlRunQuery.py" # -- run query tool
9  self.listname = "default.xml" # -- name of GRL xml output file
10  self.prefix = "" # -- prefix for GRL file name
11  self.show = "" # -- show arguments for atlrunquery
12  self.dqfolder = "DEFECTS" # -- DQ folder, eg. LBSUMM, SHIFTOFL. Default by AtlRunQuery
13 
14  # -- query selections in AtlRunQuery.py
15  # -- see Database/CoolRunQuery/python/AtlRunQueryParser.py for full list
16  self.querydict = {}
17  self.querydict['partition'] = ["ATLAS"] # -- DAQ partition
18  self.querydict['ptag'] = ["data09*"] # -- projecttag: collection filename prefix
19  #self.querydict['events'] = ["1000+"] # -- number of events per run
20  self.querydict['run'] = ["140541+"] # -- run number selection range
21  #self.querydict['duration'] = ["60s+"] # -- duration of run selection
22  self.querydict['time'] = [] # -- time of run selection, eg.
23  self.querydict['detector'] = [] #['all'] # -- subdetectors turned on, eg.
24  self.querydict['streams'] = [] # -- trigger output streams, eg.
25  self.querydict['mag'] = [] #["solenoidon","toroidon"] # -- magnetic field configuration
26  self.querydict['dq'] = [] # -- selection of data quality flags
27  self.querydict['smk'] = [] # -- super master key, eg.
28  self.querydict['trigger'] = [] # -- select specific triggers available, eg.
29  self.querydict['release'] = [] # -- release used, eg: '15.1.*'
30  #self.querydict['ctag'] = ['DetStatusLBSUMM-pass1'] # -- COOL conditions tag to use, eg: 'COMCOND-HLTC-001-00'. Default = head.
31  self.querydict['db'] = ['DATA'] # -- DATA or MC
32  self.dqignore = [] # DQ defects to ignore. These will be patched into the dq querydict
33 
34 
35  def Summary(self):
36  print ('Name : %s' % (self.name))
37  print ('Tool : %s' % (self.querytool))
38  print ('File : %s' % (self.listname))
39  print ('Show : %s' % (self.show))
40  print ('DQ folder : %s' % (self.dqfolder))
41  print ('Query :')
42  print (self.getsearchquery())
43  return
44 
45 
46  def getsearchquery(self):
47  cmd = "find "
48 
49  for key in self.querydict.keys():
50  arr = self.querydict[key][:]
51  if key == 'dq':
52  if len(self.dqignore) > 0:
53  toexclude = '\\' + '\\'.join(self.dqignore)
54  else:
55  toexclude = ''
56  print ('to exclude', toexclude)
57  for i, q in enumerate(arr):
58  qsplit = q.split()
59  if len(qsplit) > 0:
60  arr[i] = ' '.join([qsplit[0] + toexclude] + qsplit[1:])
61  for selection in arr:
62  if len(selection)>0:
63  cmd += "%s %s and " % (key,selection)
64  cmd = cmd[:-4]
65 
66  if len(self.show)>0:
67  cmd += " %s" % (self.show)
68  else: cmd += " / show run and events / nodef"
69 
70  xmlstring = 'xmlfile %s:%s' % (self.listname,self.name)
71  cmd += " , %s" % (xmlstring)
72  return cmd
73 
74 
75  def getparseddqflags(self):
76  from CoolRunQuery.AtlRunQueryLib import DQSelector,AtlRunQueryOptions
77  from CoolRunQuery.AtlRunQueryParser import ArgumentParser
78 
79 
80  query = self.getsearchquery()
81  ap = ArgumentParser()
82  atlqueryarg = self.querytool + " " + ap.ParseArgument( query )
83  (options, args) = AtlRunQueryOptions().parse(atlqueryarg)
84 
85 
86  selector = DQSelector(name = 'dataquality', dq = options.dqchannels)
87  dqfolder = self.getdqfolder()
88 
89  funcArr = []
90  dqconfig = selector.selectors[dqfolder]
91  for flag in dqconfig.flags:
92  fncName = dqconfig.flagInterpreter[flag]['passFncName']
93  fncName = fncName.replace("\'","")
94  funcArr.append(fncName)
95  #funcArr = selector.selectors[dqfolder].passFncName
96  #for i in range(len(funcArr)): funcArr[i] = funcArr[i].replace("\'","")
97 
98 
99  dqchannels = options.dqchannels
100  for i in range(len(dqchannels)):
101  dqArr = dqchannels[i].split()
102  dqArr[1] = funcArr[i]
103  dqchannels[i] = ' '.join(dqArr)
104 
105  return dqchannels
106 
107 
108  def getdqfolder(self):
109  return self.dqfolder
110 
111  def setdqfolder(self,dqfolder=''):
112  if len(dqfolder)>0: self.dqfolder = dqfolder
113  for idx in range( len(self.querydict['dq']) ):
114  dqquery = self.querydict['dq'][idx].strip()
115  queryArr = dqquery.split()
116 
117  if len(queryArr)==3:
118  ctagArr = queryArr[1].split('#')
119  if len(ctagArr)==2:
120  queryArr[1] = '%s#%s' % (self.dqfolder,ctagArr[1])
121  else: queryArr[1] = self.dqfolder
122 
123  elif len(queryArr)==2:
124  queryArr.insert(1,self.dqfolder)
125  dqquery = '%s %s %s' % (queryArr[0],queryArr[1],queryArr[2])
126  self.querydict['dq'][idx] = dqquery
127  return
128 
129  def setdqctag(self,dqctag):
130  if len(dqctag)==0: return
131  for idx in range( len(self.querydict['dq']) ):
132  dqquery = self.querydict['dq'][idx].strip()
133  queryArr = dqquery.split()
134 
135  if len(queryArr)==3:
136  ctagArr = queryArr[1].split('#')
137  queryArr[1] = '%s#%s' % (ctagArr[0],dqctag)
138 
139  elif len(queryArr)==2:
140  dqfoldtag = '%s#%s' % (self.dqfolder,dqctag)
141  queryArr.insert(1,dqfoldtag)
142  dqquery = '%s %s %s' % (queryArr[0],queryArr[1],queryArr[2])
143  self.querydict['dq'][idx] = dqquery
144  return
145 
146  def setctag(self,ctag):
147  if len(ctag)>0: self.querydict['ctag'] = ctag
148 
149  def getctag(self):
150  return self.querydict.get('ctag', '')
151 
152  def setPrefix(self,newprefix):
153  self.prefix = newprefix
154  self.listname = self.prefix+self.listname
155 
python.GoodRunsListConfig.GoodRunsListConfig.__init__
def __init__(self)
Definition: GoodRunsListConfig.py:5
python.GoodRunsListConfig.GoodRunsListConfig.name
name
Definition: GoodRunsListConfig.py:7
parse
std::map< std::string, std::string > parse(const std::string &list)
Definition: egammaLayerRecalibTool.cxx:1113
python.GoodRunsListConfig.GoodRunsListConfig.setdqfolder
def setdqfolder(self, dqfolder='')
Definition: GoodRunsListConfig.py:111
python.GoodRunsListConfig.GoodRunsListConfig.show
show
Definition: GoodRunsListConfig.py:11
python.GoodRunsListConfig.GoodRunsListConfig
Definition: GoodRunsListConfig.py:4
python.GoodRunsListConfig.GoodRunsListConfig.getsearchquery
def getsearchquery(self)
Definition: GoodRunsListConfig.py:46
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
python.GoodRunsListConfig.GoodRunsListConfig.prefix
prefix
Definition: GoodRunsListConfig.py:10
python.GoodRunsListConfig.GoodRunsListConfig.Summary
def Summary(self)
Definition: GoodRunsListConfig.py:35
python.GoodRunsListConfig.GoodRunsListConfig.dqignore
dqignore
Definition: GoodRunsListConfig.py:32
python.GoodRunsListConfig.GoodRunsListConfig.setPrefix
def setPrefix(self, newprefix)
Definition: GoodRunsListConfig.py:152
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.GoodRunsListConfig.GoodRunsListConfig.setdqctag
def setdqctag(self, dqctag)
Definition: GoodRunsListConfig.py:129
python.GoodRunsListConfig.GoodRunsListConfig.listname
listname
Definition: GoodRunsListConfig.py:9
python.GoodRunsListConfig.GoodRunsListConfig.dqfolder
dqfolder
Definition: GoodRunsListConfig.py:12
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
python.GoodRunsListConfig.GoodRunsListConfig.setctag
def setctag(self, ctag)
Definition: GoodRunsListConfig.py:146
python.GoodRunsListConfig.GoodRunsListConfig.querydict
querydict
Definition: GoodRunsListConfig.py:16
python.GoodRunsListConfig.GoodRunsListConfig.getparseddqflags
def getparseddqflags(self)
Definition: GoodRunsListConfig.py:75
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
python.GoodRunsListConfig.GoodRunsListConfig.querytool
querytool
Definition: GoodRunsListConfig.py:8
python.GoodRunsListConfig.GoodRunsListConfig.getctag
def getctag(self)
Definition: GoodRunsListConfig.py:149
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.GoodRunsListConfig.GoodRunsListConfig.getdqfolder
def getdqfolder(self)
Definition: GoodRunsListConfig.py:108