ATLAS Offline Software
AtlRunQueryHTML.py
Go to the documentation of this file.
1 #!/bin/env python
2 
3 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
4 #
5 # ----------------------------------------------------------------
6 # Script : AtlRunQueryHTML.py
7 # Project: AtlRunQuery
8 # Purpose: Library with HTML code creation
9 # Authors: Andreas Hoecker (CERN), Joerg Stelzer (DESY)
10 # Created: Apr 19, 2010
11 # ----------------------------------------------------------------
12 #
13 from __future__ import with_statement
14 
15 import datetime
16 
17 from CoolRunQuery.AtlRunQueryRun import Run
18 
19 from CoolRunQuery.utils.AtlRunQueryUtils import addKommaToNumber, filesize
20 from CoolRunQuery.utils.AtlRunQueryTimer import timer
21 
22 from CoolRunQuery.html.AtlRunQueryPageMaker import PageMaker as PM
23 from CoolRunQuery.selector.AtlRunQuerySelectorBase import DataKey
24 
25 
27 
28  @classmethod
29  def makePage(cls, pageinfo, doDQPickle=True):
30 
31  # turn dict pageinfo into local variables
32  class PI:
33  pass
34  for x in pageinfo:
35  setattr (PI, x, pageinfo[x])
36 
37 
38  # put in link to cache
39  cachelink = PI.datapath[PI.datapath.rfind('arq_'):].rstrip('/')
40  cachelinkline = '[ <a style="font-size:11px;font-weight:100;font-style:normal" href="query.py?q=%s"><i>cached link to this result page</i></a> ]' % cachelink
41 
42  extraReplace = [ ('<!--INSERTLINKCACHE-->', cachelinkline) ]
43 
44  # START WITH THE PAGE
45  body = u''
46 
47  # overall summary output if requested
48  if PI.makeSummary:
49  body += cls._OverallSummary( pageinfo )
50 
51  # overall summary output if requested
52  if PI.makeDQSummary or PI.makeDQPlots:
53  body += cls._DQSummaryWrap( pageinfo, doPickle=doDQPickle )
54  extraReplace += [ ('<!--CONTACT_START-->.*<!--CONTACT_END-->', '<a href="http://consult.cern.ch/xwho/people/572921">Jessica Leveque</a>') ]
55 
56  # initial information (query, selection steps, totNEv)
57  pageinfo['selstr'] = cls._makeSelectionSteps( pageinfo )
58  body += cls._InitialSummary( pageinfo )
59 
60  if PI.makeDQSummary or PI.makeDQPlots:
61  # only the global tooltips are needed
62  body += cls._defineToolTips( pageinfo, globalOnly=True )
63  else:
64  # horizontal line
65  body += '<hr style="width:95%; background-color: #999999; height:1px; margin-left:14px; border:0">\n<p>\n'
66 
67  # results table
68  pageinfo['sumstr'] = cls._makeYellowLine( pageinfo ) # the yellow summary line
69  body += cls._makeResultsTable( pageinfo )
70 
71  # tooltips
72  body += cls._defineToolTips( pageinfo )
73 
74  # bottom table
75  body += '<p>\n'
76  body += cls._makeBottomTable(pageinfo)
77 
78  PM.makePage(body, PI.origQuery, extraReplace=extraReplace, removeExamples = (PI.makeDQSummary or PI.makeDQPlots))
79 
80 
81 
82  @classmethod
83  def _makeResultsTable( cls, pageinfo ):
84  class PI:
85  pass
86  for x in pageinfo:
87  setattr (PI, x, pageinfo[x])
88 
89  # run results table
90  resultstable = '<table class="resulttable" id="resulttable" style="margin-left: 13px">\n'
91 
92  # table head
93  resultstable += Run.header()
94 
95  # runs
96  with timer("print the runs"):
97  for r in PI.runlist:
98  with timer("print run %i" % r.runNr):
99  resultstable += str(r)
100 
101  # summary
102  headlist = Run.headerkeys()
103  resultstable += " <tr class=\"space\"><td style=\"text-align: left;\" colspan=\"%i\"><font size=-2><i>Summary</i>:</font></td></tr>\n" % (len(headlist)-1)
104  resultstable += " <tr class=\"sum\">" + PI.sumstr + "</tr>\n"
105  resultstable += "</table>\n"
106  return resultstable
107 
108 
109  @classmethod
110  def _defineToolTips( cls, pageinfo, globalOnly=False ):
111  class PI:
112  pass
113  for x in pageinfo:
114  setattr (PI, x, pageinfo[x])
115 
116  tooltips = u''
117  with timer("print the tooltips"):
118  dw_call = ['<script type="text/javascript">']
119  dw_call += ["if(dw_Tooltip.content_vars==undefined) {dw_Tooltip.content_vars = {}; };"]
120  dw_call += Run.GlobalTooltips
121  if not globalOnly:
122  for r in PI.runlist:
123  dw_call += r.tooltips
124  dw_call += ['</script>']
125  for ttip in dw_call:
126  tooltips += ttip + '\n'
127  return tooltips
128 
129 
130 
131  # makes the bottom table (between yellow line and footer
132  @classmethod
133  def _makeBottomTable( cls, pageinfo ):
134  class PI:
135  pass
136  for x in pageinfo:
137  setattr (PI, x, pageinfo[x])
138 
139  bottomTable = '<table cellspacing="0" style="color: #777777; font-size: 80%; margin-left: 13px">\n'
140  bottomTable += '<tr>\n<td valign="top">\n'
141  bottomTable += cls._Description()
142  bottomTable += '<tr><td colspan="2"><p><hr style="width:40%; color:#999999; background-color: #999999; height:1px; margin-left:0; border:0"/>\n<p>\n</td></tr>'
143 
144  # XML output (official format for input to good-run lists)
145  bottomTable += cls._XMLFormat(PI.datapath, PI.xmlfilename, PI.xmlhtmlstr)
146 
147  # pickled output
148  bottomTable += cls._PickledOutput(PI.datapath)
149 
150  # ROOT output
151  bottomTable += cls._RootOutput(PI.roothtmlstr, PI.datapath)
152 
153  # end of bottom table
154  bottomTable += '<tr><td colspan="2"><p>\n<p>\n</td></tr>'
155  bottomTable += '</table>'
156  return bottomTable
157 
158 
159  # create DQ efficiency summary
160  @classmethod
161  def _makeDQeff( cls, pageinfo ):
162  class PI:
163  pass
164  for x in ["dicsum", "dic", "datapath", "makeDQeff"]:
165  setattr (PI, x, pageinfo[x])
166 
167  if PI.dicsum and PI.makeDQeff:
168  with timer("make the DQ efficiency summary"):
169  from CoolRunQuery.utils.AtlRunQueryDQUtils import MakeDQeffHtml
170  return MakeDQeffHtml( PI.dic, PI.dicsum, PI.datapath )
171  else:
172  return ''
173 
174  # build the yellow summary line
175  @classmethod
176  def _makeYellowLine( cls, pageinfo ):
177  class PI:
178  pass
179  for x in ["dicsum"]:
180  setattr (PI, x, pageinfo[x])
181 
182  with timer("make the yellow summary line"):
183  sumdic = {}
184  for key, summary in PI.dicsum.items():
185  if key.Type == DataKey.STREAM:
186  s = addKommaToNumber(summary[0])+' <BR><font size="-2">(%s)</font>' % filesize(summary[1])
187  elif key=='Run':
188  s = addKommaToNumber(summary) + "&nbsp;runs"
189  else:
190  s = addKommaToNumber(summary)
191  sumdic[key.ResultKey] = s.strip()
192  sumstr = ''
193  headlist = Run.headerkeys()
194  for title in headlist:
195  sumstr += '<td style="text-align:right;">%s</td>' % (sumdic[title] if title in sumdic else '')
196  return sumstr
197 
198 
199  # selection steps
200  @classmethod
201  def _makeSelectionSteps( cls, pageinfo ):
202  class PI:
203  pass
204  for x in ["selout"]:
205  setattr (PI, x, pageinfo[x])
206 
207  selstr = '<table style="color: #777777; font-size: 100%" cellpadding="0" cellspacing="0">'
208  for sel in PI.selout:
209  if 'SELOUT' == sel[0:6]:
210  selout = sel[7:].split('==>')
211  if len(selout)==1:
212  selstr += '<tr><td width="400" style="vertical-align:top">%s</td></tr>' % selout[0]
213  else:
214  selstr += '<tr><td width="400" style="vertical-align:top">%s</td><td width="20" style="vertical-align:top">:</td><td style="vertical-align:top">%s</td></tr>' % tuple(selout[0:2])
215  selstr += '</table>'
216  return selstr
217 
218 
219 
220 
221  @classmethod
222  def _prettyNumber( cls, n, width=-1, delim=',',decimal='.' ):
223  """Converts a float to a string with appropriately placed commas"""
224  if width >= 0:
225  s = "%.*f" % (width, n)
226  else:
227  s = str(n)
228  dec = s.find(decimal)
229  if dec == -1:
230  dec = len(s)
231  threes = int((dec-1)/3)
232  for i in range(threes):
233  loc = dec-3*(i+1)
234  s = s[:loc] + delim + s[loc:]
235  return s
236 
237 
238  @classmethod
239  def _OverallSummary( cls, pageinfo ):
240  class PI:
241  pass
242  for x in pageinfo:
243  setattr (PI, x, pageinfo[x])
244 
245  with timer("make the summary"):
246  from CoolRunQuery.html.AtlRunQuerySummary import MakeSummaryHtml
247  overallsummarystr = MakeSummaryHtml( PI.dic, PI.dicsum, PI.datapath )
248  if overallsummarystr == '':
249  return ''
250  s = '''<table width="95%" cellpadding="5" style="margin-left: 13px">
251  <tr><td colspan=2 bgcolor=gainsboro><font size=+1><b>Search Result Summary</b></font></td></tr>
252  </table>'''
253  s += '<p></p>'
254  s += overallsummarystr
255  s += '<p></p>'
256  return s
257 
258 
259  @classmethod
260  def _DQSummaryWrap( cls, pageinfo, doPickle=True ):
261  from CoolRunQuery.utils.AtlRunQueryUtils import runsOnServer
262  if not runsOnServer() and doPickle:
263  import pickle
264  from CoolRunQuery.AtlRunQueryQueryConfig import QC
265  with open('%s/dqsum_pi.pickle' % QC.datapath, "wb") as fh:
266  pickle.dump(pageinfo, fh)
267 
268  class PI:
269  pass
270  for x in pageinfo:
271  setattr (PI, x, pageinfo[x])
272 
273  with timer("make the DQ summary"):
274  from CoolRunQuery.html.AtlRunQueryDQSummary import DQSummary
275  dqsummary = DQSummary.makeHTML( PI.dic, PI.dicsum, doDQSummary=PI.makeDQSummary, doDQPlots=PI.makeDQPlots, dqsumGRL=PI.dqsumgrl, dbbTag=PI.dbbtag)
276 
277  if dqsummary == '':
278  return ''
279  s = '''<table width="95%" cellpadding="5" style="margin-left: 13px">
280  <tr><td colspan=2 bgcolor=gainsboro><font size=+1><b>Data Quality Summary</b></font></td></tr>
281  </table>'''
282  s += '<p></p>'
283  s += dqsummary
284  s += '<p></p>'
285  return s
286 
287 
288  @classmethod
289  def _InitialSummary(cls, pageinfo):
290  class PI:
291  pass
292  for x in pageinfo:
293  setattr (PI, x, pageinfo[x])
294 
295  error = False
296  totEv,naEv = Run.totevents[0:2]
297  s_table = '''<table width="95%" cellpadding="5" style="margin-left: 13px">
298  <tr><td colspan=2 bgcolor=gainsboro><font size=+1><b>Search Result</b></font></td></tr>
299  </table>'''
300  s_table += '<table width="95%" cellpadding="0" cellspacing="3" style="font-size: 90%; margin-left: 13px">\n'
301  s_table += '<tr height="10"></tr>\n'
302  s_table += '<tr><td height="10" width="130" style="vertical-align:top"><i>Selection&nbsp;rule:</i></td><td width=10></td><td valign=top>%s</td></tr>\n' % PI.origQuery
303  if 'erbose' in PI.fullQuery:
304  s_table += '<tr><td height="10" style="vertical-align: top; color: #777777"><i>Query&nbsp;command:</i></td><td width=10 style="color: #777777"></td><td style="color: #777777">'
305  s_table += """<a href="javascript:animatedcollapse.toggle('AtlRunQueryCmd')">"""
306  s_table += '<font color="#777777">[ Click to expand/collapse command... ]</font></a>'
307  s_table += '<div id="AtlRunQueryCmd" style="width: 100%; background: #FFFFFF; color: #777777; display:none">'
308  s_table += '%s' % (PI.fullQuery)
309  s_table += '</div></td></tr>\n'
310  s_table += '<tr><td height="10" style="vertical-align: top; color: #777777"><i>Selection&nbsp;sequence:</i></td><td width=10 style="color: #777777"></td><td style="vertical-align: top">%s</td></tr>\n' % (PI.selstr)
311  if not error:
312  s_table += '<tr><td height="10" style="vertical-align: top"><i>No.&nbsp;of&nbsp;runs&nbsp;selected:</i></td><td></td><td valign="top">%s</td></tr>\n' % len(PI.runlist)
313  if totEv >= 0:
314  if naEv >= 0:
315  sr = 'run'
316  if naEv > 1:
317  sr += 's'
318  if naEv == 0:
319  s_table += '<tr><td height="10" valign="top"><i>Total&nbsp;no.&nbsp;of&nbsp;events:</i></td><td></td><td valign="top">%s</td></tr>\n' % (cls._prettyNumber(totEv))
320  else:
321  s_table += '<tr><td height="10" valign="top"><i>Total&nbsp;no.&nbsp;of&nbsp;events:</i></td><td></td><td valign="top">%s (excluding %i %s without available "#Events" information)</td></tr>\n' % (cls._prettyNumber(totEv), naEv, sr)
322  else:
323  s_table += '<tr><td height="10" valign="top"><i>Total&nbsp;no.&nbsp;of&nbsp;events:</i></td><td></td><td valign="top">%s</td></tr>\n' % (cls._prettyNumber(totEv))
324  s_table += '<tr><td height="10" valign="top"><i>Execution&nbsp;time:</i></td><td></td><td valign="top">%.1f sec</td></tr>\n' % round(PI.querytime,1)
325  s_table += '<tr><td height=5 valign=top></td></tr>\n'
326  s_table += '</table>'
327  return s_table
328 
329 
330  @classmethod
331  def _PickledOutput(cls, datapath):
332  return '''<tr><td style="vertical-align: top"><img vspace=0 src="images/download.gif">&nbsp;&nbsp;</td><td>
333  <a href="./%s/atlrunquery.pickle" target=_blank title="Query results as serialised python dictionary">
334  Result table as pickled <b>python dictionary</b> (right-click link to download)</a>
335  <br>
336  use as follows:<br>
337  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&minus;
338  open file (f) in python and deserialise ("unpickle")
339  via: dico = pickle.load(f)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&minus; the dictionary keys are equal to the column titles,
340  the lines are stored as list entries for each key
341  </td></tr>''' % datapath
342 
343 
344  @classmethod
345  def _RootOutput(cls, roothtmlstr, datapath):
346  if roothtmlstr is not None:
347  return '''
348  <tr><td style="vertical-align: top"><img vspace=0 width="17" src="images/tree_icon.gif">&nbsp;&nbsp;</td><td>
349  <a href="./%s/atlrunquery.root" title="Query results as ROOT TTree">Result table as <b>TTree</b> in ROOT file (right-click link to download)</a></td></tr>
350  <tr><td style="vertical-align: top"><img vspace=0 src="images/statistics.gif">&nbsp;&nbsp;</td><td style="vertical-align: top">
351  <font color="#333333"><b>Graphs</b> of table columns versus run numbers:</font>
352  </td></tr>
353  <tr><td style="vertical-align: top"></td><td style="vertical-align: top">%s
354  </td></tr>''' % (datapath, roothtmlstr)
355  else:
356  return '''
357  <tr><td style="vertical-align: top"><img vspace=0 width="17" src="images/tree_icon.gif">&nbsp;&nbsp;</td><td style="color: #000064;">
358  Not available. <font color="#333333">The creation of a ROOT file with the results has been disabled by default. Please use option <b><i>root</i></b> as shown in the examples under <font style="color:red">Xtras</font></font></td></tr>
359  <tr><td style="vertical-align: top"><img vspace=0 src="images/statistics.gif">&nbsp;&nbsp;</td><td style="vertical-align: top">
360  <font color="#333333">The creation of <b>Graphs</b> has been disabled by default. Please use option <b><i>root</i></b> as shown in the examples under <font style="color:red">Xtras</font></font>
361  </td></tr>'''
362 
363 
364  @classmethod
365  def _Description(cls):
366  return '''<tr style="line-height: 6.5"><td colspan="2"></td></tr>
367  <tr><td style="vertical-align: top"><img vspace=0 src="images/info.gif">&nbsp;&nbsp;</td><td height="55"><i>n.a.</i>
368  in the table stands for <i>not available</i>:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&minus;
369  in case of <i>#Events</i> this mostly indicates unproperly closed runs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&minus;
370  in case of <i>data quality flags</i> it indicates that the corresponding flag was not set<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&minus;
371  <i><font color="red">runs in red</font></i> indicate that their selection is questionable due to n.a. information
372  (n.a. fields pass the corresponding selection query)
373  </td></tr>'''
374 
375 
376  @classmethod
377  def _PrintFormat(cls, s_table, resstr):
378  s = '<tr><td><img vspace=0 src="images/printtopic.gif">&nbsp;&nbsp;</td>\n'
379  s += '<td><a href="javascript:openWindow('
380  s += "'Print','<!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;><html xmlns:&quot;my&quot;><head><title>Run query result</title><LINK href=&quot;atlas-runquery.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;><body><table style=&quot;font-family: sans-serif; font-size: 85%%&quot;>"
381  s += '<tr><td>%s</td></tr>' % s_table.replace('"','&quot;')
382  s += '<tr><td>' + resstr.replace('resulttable','resulttabletext').replace('"','quot;') + '</td></tr>'
383  s += '<tr><td><hr color=&quot;red&quot; size=1></td></tr><tr><td><font color=&quot;#777777&quot;><font size=&quot;-1&quot;><i><font size=&quot;-2&quot;>Created by AtlRunQuery on: %s</font></i></font></td></tr></table><script type=&quot;text/javascript&quot;></script></body></html>' % str(datetime.datetime.now())
384  s += "')"
385  s += '" title="Query results in text format for easy printing">Print version of results</a>'
386  s += '</td></tr>'
387  return s
388 
389 
390  @classmethod
391  def _XMLFormat(cls, datapath, xmlfilename, xmlhtmlstr):
392  if xmlhtmlstr is not None:
393  s = '''<tr><td style="vertical-align: top"><img vspace=0 src="images/xml-small.gif">&nbsp;&nbsp;</td><td>
394  <a href="./%s/%s" target="_blank" title="Query result as LB collection in standard XML good-run-list format">Query result as standard <b>Good Run-LB List in XML format</b> (right-click link to download)</a> /
395  <a href="./LumiRangeCollection.dtd" target="_blank" title="Corresponding DTD file">DTD file</a>
396  </td></tr>''' % (datapath, xmlfilename)
397  s += '<tr><td style="vertical-align: top"></td><td>'
398  s += '<a href="javascript:openTextWindow('
399  s += "'Print','<!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;><html xmlns:&quot;my&quot;><head><title>Run query result</title><LINK href=&quot;atlas-runquery.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;><body><table style=&quot;padding: 10px;font-family: sans-serif; font-size: 95%%&quot;>"
400  s += '<tr><td>%s</td></tr>' % xmlhtmlstr
401  s += '</table></body></html>'
402  s += "')"
403  s += '" title="Query result in text format">Query result as standard <b>Good Run-LB List in pretty-text format</b> for visual inspection (click for pop-up)</a>'
404  s += '</td></tr>'
405  return s
406  else:
407  return '''<tr><td style="vertical-align: top;"><img vspace=0 src="images/xml-small.gif">&nbsp;&nbsp;</td><td style="color: #000064;">
408  Not available. <font color="#333333">The creation of <b>GRLs</b> based on the query result has been disabled by default. Please use option <b><i>grl</i></b> as shown in the examples under <font style="color:red">Xtras</font></font></td></tr>'''
409 
410 
python.html.AtlRunQueryHTML.ResultPageMaker._defineToolTips
def _defineToolTips(cls, pageinfo, globalOnly=False)
Definition: AtlRunQueryHTML.py:110
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
python.html.AtlRunQuerySummary.MakeSummaryHtml
def MakeSummaryHtml(dic, dicsum, datapath)
Definition: AtlRunQuerySummary.py:424
python.html.AtlRunQueryHTML.ResultPageMaker._XMLFormat
def _XMLFormat(cls, datapath, xmlfilename, xmlhtmlstr)
Definition: AtlRunQueryHTML.py:391
python.utils.AtlRunQueryUtils.filesize
def filesize(no)
Definition: AtlRunQueryUtils.py:198
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.utils.AtlRunQueryUtils.addKommaToNumber
def addKommaToNumber(no)
Definition: AtlRunQueryUtils.py:190
python.html.AtlRunQueryHTML.ResultPageMaker._OverallSummary
def _OverallSummary(cls, pageinfo)
Definition: AtlRunQueryHTML.py:239
python.html.AtlRunQueryHTML.ResultPageMaker._makeSelectionSteps
def _makeSelectionSteps(cls, pageinfo)
Definition: AtlRunQueryHTML.py:201
python.html.AtlRunQueryHTML.ResultPageMaker._DQSummaryWrap
def _DQSummaryWrap(cls, pageinfo, doPickle=True)
Definition: AtlRunQueryHTML.py:260
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
python.html.AtlRunQueryHTML.ResultPageMaker._Description
def _Description(cls)
Definition: AtlRunQueryHTML.py:365
PI
const float PI
Definition: test_isolaitonTool.cxx:61
python.html.AtlRunQueryHTML.ResultPageMaker._makeDQeff
def _makeDQeff(cls, pageinfo)
Definition: AtlRunQueryHTML.py:161
python.utils.AtlRunQueryUtils.runsOnServer
def runsOnServer()
Definition: AtlRunQueryUtils.py:48
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
python.html.AtlRunQueryHTML.ResultPageMaker._PickledOutput
def _PickledOutput(cls, datapath)
Definition: AtlRunQueryHTML.py:331
python.html.AtlRunQueryHTML.ResultPageMaker._makeBottomTable
def _makeBottomTable(cls, pageinfo)
Definition: AtlRunQueryHTML.py:133
python.utils.AtlRunQueryDQUtils.MakeDQeffHtml
def MakeDQeffHtml(dic, dicsum, datapath)
Definition: AtlRunQueryDQUtils.py:181
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
python.html.AtlRunQueryHTML.ResultPageMaker._makeYellowLine
def _makeYellowLine(cls, pageinfo)
Definition: AtlRunQueryHTML.py:176
python.html.AtlRunQueryHTML.ResultPageMaker._makeResultsTable
def _makeResultsTable(cls, pageinfo)
Definition: AtlRunQueryHTML.py:83
python.html.AtlRunQueryHTML.ResultPageMaker.makePage
def makePage(cls, pageinfo, doDQPickle=True)
Definition: AtlRunQueryHTML.py:29
Trk::open
@ open
Definition: BinningType.h:40
python.html.AtlRunQueryHTML.ResultPageMaker._RootOutput
def _RootOutput(cls, roothtmlstr, datapath)
Definition: AtlRunQueryHTML.py:345
python.html.AtlRunQueryHTML.ResultPageMaker
Definition: AtlRunQueryHTML.py:26
python.html.AtlRunQueryHTML.ResultPageMaker._prettyNumber
def _prettyNumber(cls, n, width=-1, delim=',', decimal='.')
Definition: AtlRunQueryHTML.py:222
str
Definition: BTagTrackIpAccessor.cxx:11
python.html.AtlRunQueryHTML.ResultPageMaker._PrintFormat
def _PrintFormat(cls, s_table, resstr)
Definition: AtlRunQueryHTML.py:377
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.html.AtlRunQueryHTML.ResultPageMaker._InitialSummary
def _InitialSummary(cls, pageinfo)
Definition: AtlRunQueryHTML.py:289