ATLAS Offline Software
Classes | Functions | Variables
python.PyKernel Namespace Reference

Classes

class  _DummyClass
 
class  _SetEventCounter
 

Functions

def init (v_theApp, v_rootStream=None)
 
def retrieve (aClass, aKey=None)
 
def retrieveDet (aClass, aKey=None)
 
def fill (hist, classAndKey, value, criteria="True", nEvent=100)
 
def plot (classAndKey, value="$x", criteria="True", nEvent=100)
 
def fill2 (hist, classAndKey, valueX, valueY, criteria="True", nEvent=100)
 
def plot2 (classAndKey, valueX="$x", valueY="$x", criteria="True", nEvent=100)
 
def fillProf (hist, classAndKey, valueX, valueY, criteria="True", nEvent=100)
 
def plotProf (classAndKey, valueX="$x", valueY="$x", criteria="True", nEvent=100)
 
def _parseString (str)
 
def dumpSG ()
 
def unregister (path)
 
def dumpHist ()
 
def preProcess ()
 
def normalProcess ()
 
def hybridProcess ()
 

Variables

string __docformat__ = "restructuredtext en"
 
 GNS = cppyy.gbl
 
int _PreProcess = 0
 
int _NormalProcess = 1
 
int _HybridProcess = 2
 
 AttributeList
 
 AANT
 
 storeGate = None
 
 detStore = None
 

Function Documentation

◆ _parseString()

def python.PyKernel._parseString (   str)
private

Definition at line 718 of file PyKernel.py.

718 def _parseString (str):
719  # remove $
720  str = re.sub(r"\$", "", str)
721  # replace XXX#YYY with StoreGate access
722  cK = re.findall(r'([\w_]+)#([\w_\*]+)',str)
723  for iCK in cK:
724  # when XXX#*
725  if iCK[1]=='*':
726  bStr = iCK[0]+r"#\*"
727  aStr = 'retrieve(GNS.'+iCK[0]+')'
728  else:
729  bStr = iCK[0]+"#"+iCK[1]
730  aStr = 'retrieve(GNS.'+iCK[0]+',"'+iCK[1]+'")'
731  str = re.sub(bStr, aStr, str)
732  return str
733 
734 
735 # dump objects in StoreGate

◆ dumpHist()

def python.PyKernel.dumpHist ( )
Dump histograms in HistogramSvc

**examples**::

  athena> dumpHist()

Definition at line 764 of file PyKernel.py.

764 def dumpHist ():
765  '''
766  Dump histograms in HistogramSvc
767 
768  **examples**::
769 
770  athena> dumpHist()
771 
772  '''
773  theApp.histSvc().dump()
774 
775 
776 # set event loop type to pre-process

◆ dumpSG()

def python.PyKernel.dumpSG ( )
Dump objects in StoreGate

**examples**::

  athena> dumpSG()

Definition at line 736 of file PyKernel.py.

736 def dumpSG ():
737  '''
738  Dump objects in StoreGate
739 
740  **examples**::
741 
742  athena> dumpSG()
743 
744  '''
745  print (GNS.StoreGate.pointer().dump())
746 
747 
748 # unregister histogram from HistogramSvc

◆ fill()

def python.PyKernel.fill (   hist,
  classAndKey,
  value,
  criteria = "True",
  nEvent = 100 
)
Fill 1D-histogram

:param hist: reference to AIDA or ROOT histogram
:param classAndKey: combination of class name and key separeted with "#". "Class#Key"
:param value: physics parameter in string
:param criteria: selection criteria
:param nEvent: number of event to be processed

**examples**::

  athena> fill(h,"ElectronContainer#ElectronCollection","$x.pt()")
      fill hist with pt of electrons
     "$x" denotes an element of "Class#Key", if "Class#Key" is a collection
   
  athena> fill(h,"MissingET#MET_Calib","$x.sumet()")
      fill hist with et of MissingET.
      "$x" denotes "Class#Key" itself, if "Class#Key" is not a vector-like class
      
  athena> fill(h,"ElectronContainer#ElectronCollection","$x.pt()","$x.pz()>0")
      apply a selection criteria
      
For more detail of parameters, see `PyAnalysisExamples/PlotTest.py`_

.. _PyAnalysisExamples/PlotTest.py: http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/PyAnalysis/PyAnalysisExamples/share/PlotTest.py?rev=HEAD&content-type=text/vnd.viewcvs-markup

Definition at line 167 of file PyKernel.py.

167 def fill (hist, classAndKey, value, criteria="True", nEvent=100):
168  '''
169  Fill 1D-histogram
170 
171  :param hist: reference to AIDA or ROOT histogram
172  :param classAndKey: combination of class name and key separeted with "#". "Class#Key"
173  :param value: physics parameter in string
174  :param criteria: selection criteria
175  :param nEvent: number of event to be processed
176 
177  **examples**::
178 
179  athena> fill(h,"ElectronContainer#ElectronCollection","$x.pt()")
180  fill hist with pt of electrons
181  "$x" denotes an element of "Class#Key", if "Class#Key" is a collection
182 
183  athena> fill(h,"MissingET#MET_Calib","$x.sumet()")
184  fill hist with et of MissingET.
185  "$x" denotes "Class#Key" itself, if "Class#Key" is not a vector-like class
186 
187  athena> fill(h,"ElectronContainer#ElectronCollection","$x.pt()","$x.pz()>0")
188  apply a selection criteria
189 
190  For more detail of parameters, see `PyAnalysisExamples/PlotTest.py`_
191 
192  .. _PyAnalysisExamples/PlotTest.py: http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/PyAnalysis/PyAnalysisExamples/share/PlotTest.py?rev=HEAD&content-type=text/vnd.viewcvs-markup
193 
194  '''
195 
196  # number of buffered events
197  bufEvent = nEvent
198  if nEvent > 100:
199  bufEvent = 100
200 
201  # convert class&key to a store gate access
202  commandSG = "None"
203  if classAndKey != "":
204  commandSG = _parseString(classAndKey)
205 
206  # build commands
207  if callable(value):
208  # if function pointer
209  commandV = "value()"
210  else:
211  # if string, parse value/criteria
212  commandV = _parseString(value)
213  if callable(criteria):
214  # if function pointer
215  commandC = "criteria()"
216  else:
217  # if string, parse value/criteria
218  commandC = _parseString(criteria)
219 
220  # initialize application mgr
221  theApp.initialize()
222 
223  # buffer to determine x-range of histgram
224  buf = []
225 
226  # loop over nEvent
227  for iE in range(nEvent):
228  # get object from SG
229  theApp.nextEvent()
230  try:
231  obj = eval(commandSG)
232 
233  # check if the obj is a vector-like class
234  if hasattr(obj,'size') and hasattr(obj,'__getitem__'):
235  lSize = obj.size()
236  isCollection = True
237  else:
238  lSize = 1
239  isCollection = False
240  # if NULL
241  if obj == 0:
242  lSize = 0
243  except Exception:
244  lSize = 0
245 
246  # loop over all elements
247  for iC in range(lSize):
248  # parameter name "x" must be consistent with the parsed strings
249  if isCollection:
250  x = obj[iC] # noqa: F841
251  else:
252  x = obj # noqa: F841
253 
254  # eval value/criteria commands
255  try:
256  vX = eval(commandV)
257  vC = eval(commandC)
258 
259  # evaluate vC/vX. "vC" and "vX" must be consistent with commands
260  if vC:
261  if iE < bufEvent:
262  buf.append(vX)
263  else:
264  h.Fill(vX) # noqa: F405
265  except Exception:
266  pass
267 
268  # if not a collection escape from loop
269  if not isCollection:
270  break
271 
272  # create Histogram
273  if (iE+1) == bufEvent:
274  if len(buf)==0:
275  minX=0
276  else:
277  minX = min(buf)
278 
279  if minX<0:
280  minX *= 1.1
281  elif minX>0:
282  minX *= 0.9
283  else:
284  minX = -1
285 
286  if len(buf)==0:
287  maxX=0
288  else:
289  maxX = max(buf)
290 
291  if maxX<0:
292  maxX *= 0.9
293  elif maxX>0:
294  maxX *= 1.1
295  else:
296  maxX = 1
297 
298  # create histogram if hist is None
299  if hist is None:
300  lpath = '/stat/tmp/PyKernelHist'
301  unregister(lpath)
302  # determine title of histo
303  if callable(value):
304  title = value.__name__
305  else:
306  title = value
307  h = book(lpath, title, 100, minX, maxX) # noqa: F405
308  else:
309  h = hist
310 
311  # buffered elements
312  for vB in buf:
313  h.Fill(vB)
314 
315  return h
316 
317 
318 # plot a histogram

◆ fill2()

def python.PyKernel.fill2 (   hist,
  classAndKey,
  valueX,
  valueY,
  criteria = "True",
  nEvent = 100 
)
Fill 2D-histogram

:param hist: reference to AIDA or ROOT histogram
:param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
:param valueX: physics parameter for X in string
:param valueY: physics parameter for Y in string
:param criteria: selection criteria
:param nEvent: number of event to be processed

For detail, see `fill`

Definition at line 348 of file PyKernel.py.

348 def fill2 (hist, classAndKey, valueX, valueY, criteria="True", nEvent=100):
349  """Fill 2D-histogram
350 
351  :param hist: reference to AIDA or ROOT histogram
352  :param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
353  :param valueX: physics parameter for X in string
354  :param valueY: physics parameter for Y in string
355  :param criteria: selection criteria
356  :param nEvent: number of event to be processed
357 
358  For detail, see `fill`
359 
360  """
361 
362  # number of buffered events
363  bufEvent = nEvent
364  if nEvent > 100:
365  bufEvent = 100
366 
367  # convert class&key to a store gate access
368  commandSG = "None"
369  if classAndKey != "":
370  commandSG = _parseString(classAndKey)
371 
372  # build commands
373  if callable(valueX):
374  # if function pointer
375  commandX = "valueX()"
376  else:
377  # if string, parse value/criteria
378  commandX = _parseString(valueX)
379  if callable(valueY):
380  # if function pointer
381  commandY = "valueY()"
382  else:
383  # if string, parse value/criteria
384  commandY = _parseString(valueY)
385  if callable(criteria):
386  # if function pointer
387  commandC = "criteria()"
388  else:
389  # if string, parse value/criteria
390  commandC = _parseString(criteria)
391 
392  # initialize application mgr
393  theApp.initialize()
394 
395  # buffer to determine xy-range of histgram
396  bufX = []
397  bufY = []
398 
399  # loop over nEvent
400  for iE in range(nEvent):
401  # get object from SG
402  theApp.nextEvent()
403  try:
404  obj = eval(commandSG)
405 
406  # check if the obj is a vector-like class
407  if hasattr(obj,'size') and hasattr(obj,'__getitem__'):
408  lSize = obj.size()
409  isCollection = True
410  else:
411  lSize = 1
412  isCollection = False
413  # if NULL
414  if obj == 0:
415  lSize = 0
416  except Exception:
417  lSize = 0
418 
419  # loop over all elements
420  for iC in range(lSize):
421  # parameter name "x" must be consistent with the parsed strings
422  if isCollection:
423  x = obj[iC] # noqa: F841
424  else:
425  x = obj # noqa: F841
426 
427  # eval value/criteria commands
428  try:
429  vX = eval(commandX)
430  vY = eval(commandY)
431  vC = eval(commandC)
432 
433  # evaluate vC/vX. "vC" and "vX" must be consistent with commands
434  if vC:
435  if iE < bufEvent:
436  bufX.append(vX)
437  bufY.append(vY)
438  else:
439  h.Fill(vX,vY) # noqa: F405
440  except Exception:
441  pass
442 
443  # if not a collection escape from loop
444  if not isCollection:
445  break
446 
447  # create Histogram
448  if (iE+1) == bufEvent:
449  if len(bufX)==0:
450  minX=0
451  else:
452  minX = min(bufX)
453 
454  if minX<0:
455  minX *= 1.1
456  elif minX>0:
457  minX *= 0.9
458  else:
459  minX = -1
460 
461  if len(bufX)==0:
462  maxX=0
463  else:
464  maxX = max(bufX)
465 
466  if maxX<0:
467  maxX *= 0.9
468  elif maxX>0:
469  maxX *= 1.1
470  else:
471  maxX = 1
472 
473  if len(bufY)==0:
474  minY=0
475  else:
476  minY = min(bufY)
477 
478  if minY<0:
479  minY *= 1.1
480  elif minY>0:
481  minY *= 0.9
482  else:
483  minY = -1
484 
485  if len(bufY)==0:
486  maxY=0
487  else:
488  maxY = max(bufY)
489 
490  if maxY<0:
491  maxY *= 0.9
492  elif maxY>0:
493  maxY *= 1.1
494  else:
495  maxY = 1
496 
497  # create histogram if hist is None
498  if hist is None:
499  lpath = '/stat/tmp/PyKernelHist'
500  unregister(lpath)
501  # determine title of histo
502  if callable(valueX):
503  titleX = valueX.__name__
504  else:
505  titleX = valueX
506  if callable(valueY):
507  titleY = valueY.__name__
508  else:
509  titleY = valueY
510  h = book(lpath, titleY+" vs "+titleX, 100, minX, maxX, 100, minY, maxY) # noqa: F405
511  else:
512  h = hist
513 
514  # buffered elements
515  for iB in range(len(bufX)):
516  vX = bufX[iB]
517  vY = bufY[iB]
518  h.Fill(vX,vY)
519 
520  return h
521 
522 
523 # plot 2D histogram

◆ fillProf()

def python.PyKernel.fillProf (   hist,
  classAndKey,
  valueX,
  valueY,
  criteria = "True",
  nEvent = 100 
)
Fill profile-histogram

:param hist: reference to AIDA or ROOT histogram
:param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
:param valueX: physics parameter for X in string
:param valueY: physics parameter for Y in string
:param criteria: selection criteria
:param nEvent: number of event to be processed

For detail, see `fill`

Definition at line 545 of file PyKernel.py.

545 def fillProf (hist, classAndKey, valueX, valueY, criteria="True", nEvent=100):
546  """Fill profile-histogram
547 
548  :param hist: reference to AIDA or ROOT histogram
549  :param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
550  :param valueX: physics parameter for X in string
551  :param valueY: physics parameter for Y in string
552  :param criteria: selection criteria
553  :param nEvent: number of event to be processed
554 
555  For detail, see `fill`
556 
557  """
558 
559  # number of buffered events
560  bufEvent = nEvent
561  if nEvent > 100:
562  bufEvent = 100
563 
564  # convert class&key to a store gate access
565  commandSG = "None"
566  if classAndKey != "":
567  commandSG = _parseString(classAndKey)
568 
569  # build commands
570  if callable(valueX):
571  # if function pointer
572  commandX = "valueX()"
573  else:
574  # if string, parse value/criteria
575  commandX = _parseString(valueX)
576  if callable(valueY):
577  # if function pointer
578  commandY = "valueY()"
579  else:
580  # if string, parse value/criteria
581  commandY = _parseString(valueY)
582  if callable(criteria):
583  # if function pointer
584  commandC = "criteria()"
585  else:
586  # if string, parse value/criteria
587  commandC = _parseString(criteria)
588 
589  # initialize application mgr
590  theApp.initialize()
591 
592  # buffer to determine xy-range of histgram
593  bufX = []
594  bufY = []
595 
596  # loop over nEvent
597  for iE in range(nEvent):
598  # get object from SG
599  theApp.nextEvent()
600  try:
601  obj = eval(commandSG)
602 
603  # check if the obj is a vector-like class
604  if hasattr(obj,'size') and hasattr(obj,'__getitem__'):
605  lSize = obj.size()
606  isCollection = True
607  else:
608  lSize = 1
609  isCollection = False
610  # if NULL
611  if obj == 0:
612  lSize = 0
613  except Exception:
614  lSize = 0
615 
616  # loop over all elements
617  for iC in range(lSize):
618  # parameter name "x" must be consistent with the parsed strings
619  if isCollection:
620  x = obj[iC] # noqa: F841
621  else:
622  x = obj # noqa: F841
623 
624  # eval value/criteria commands
625  try:
626  vX = eval(commandX)
627  vY = eval(commandY)
628  vC = eval(commandC)
629 
630  # evaluate vC/vX. "vC" and "vX" must be consistent with commands
631  if vC:
632  if iE < bufEvent:
633  bufX.append(vX)
634  bufY.append(vY)
635  else:
636  h.Fill(vX,vY) # noqa: F405
637  except Exception:
638  pass
639 
640  # if not a collection escape from loop
641  if not isCollection:
642  break
643 
644  # create Histogram
645  if (iE+1) == bufEvent:
646  if len(bufX)==0:
647  minX=0
648  else:
649  minX = min(bufX)
650 
651  if minX<0:
652  minX *= 1.1
653  elif minX>0:
654  minX *= 0.9
655  else:
656  minX = -1
657 
658  if len(bufX)==0:
659  maxX=0
660  else:
661  maxX = max(bufX)
662 
663  if maxX<0:
664  maxX *= 0.9
665  elif maxX>0:
666  maxX *= 1.1
667  else:
668  maxX = 1
669 
670  # create histogram if hist is None
671  if hist is None:
672  lpath = '/stat/tmp/PyKernelHist'
673  unregister(lpath)
674  # determine title of histo
675  if callable(valueX):
676  titleX = valueX.__name__
677  else:
678  titleX = valueX
679  if callable(valueY):
680  titleY = valueY.__name__
681  else:
682  titleY = valueY
683  h = bookProf(lpath, titleY+" vs "+titleX, 100, minX, maxX) # noqa: F405
684  else:
685  h = hist
686 
687  # buffered elements
688  for iB in range(len(bufX)):
689  vX = bufX[iB]
690  vY = bufY[iB]
691  h.Fill(vX,vY)
692 
693  return h
694 
695 
696 # plot profileD histogram

◆ hybridProcess()

def python.PyKernel.hybridProcess ( )
Set event loop type to hybrid-process

Definition at line 799 of file PyKernel.py.

799 def hybridProcess ():
800  '''
801  Set event loop type to hybrid-process
802 
803  '''
804  global eventLoopType
805  eventLoopType = _HybridProcess

◆ init()

def python.PyKernel.init (   v_theApp,
  v_rootStream = None 
)
Initialize core

This method is called in `PyKernel/InitPyKernel.py`_.

:param v_theApp: reference to the application manager. theApp

**examples**::

  athena> PyKernel.init(theApp)

.. _PyKernel/InitPyKernel.py: http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/Control/PyKernel/share/InitPyKernel.py?rev=HEAD&content-type=text/vnd.viewcvs-markup  

Definition at line 45 of file PyKernel.py.

45 def init (v_theApp, v_rootStream=None):
46  """Initialize core
47 
48  This method is called in `PyKernel/InitPyKernel.py`_.
49 
50  :param v_theApp: reference to the application manager. theApp
51 
52  **examples**::
53 
54  athena> PyKernel.init(theApp)
55 
56  .. _PyKernel/InitPyKernel.py: http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/Control/PyKernel/share/InitPyKernel.py?rev=HEAD&content-type=text/vnd.viewcvs-markup
57 
58  """
59  # application manager
60  global theApp
61  theApp = v_theApp
62  # root stream
63  global rootStream
64  rootStream = v_rootStream
65  # event loop type
66  global eventLoopType
67  eventLoopType = _HybridProcess
68  # event counter
69  global curEvent
70  curEvent = 0
71  if hasattr (theApp, 'curEvent'):
72  # patch some methods
73  method = "nextEvent"
74  mobj = _SetEventCounter(method)
75  setattr(theApp.__class__,method,mobj)
76  method = "run"
77  mobj = _SetEventCounter(method)
78  setattr(theApp.__class__,method,mobj)
79 
80 
81 # a function object to set event counter in ROOT stream

◆ normalProcess()

def python.PyKernel.normalProcess ( )
Set event loop type to normal-process

Definition at line 789 of file PyKernel.py.

789 def normalProcess ():
790  '''
791  Set event loop type to normal-process
792 
793  '''
794  global eventLoopType
795  eventLoopType = _NormalProcess
796 
797 
798 # set event loop type to hybrid-process

◆ plot()

def python.PyKernel.plot (   classAndKey,
  value = "$x",
  criteria = "True",
  nEvent = 100 
)
Plot 1D-histogram

:param classAndKey: combination of class name and key separeted with '#'. 'Class#Key'
:param value: physics parameter in string
:param criteria: selection criteria
:param nEvent: number of event to be processed

**examples**::

  athena> plot('ElectronContainer#ElectronCollection','$x.pt()')
      plot pt of electrons
      
For detail, see `PyAnalysisExamples/PlotTest.py`_

.. _PyAnalysisExamples/PlotTest.py: http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/PyAnalysis/PyAnalysisExamples/share/PlotTest.py?rev=HEAD&content-type=text/vnd.viewcvs-markup

Definition at line 319 of file PyKernel.py.

319 def plot (classAndKey, value="$x", criteria="True", nEvent=100):
320  """Plot 1D-histogram
321 
322  :param classAndKey: combination of class name and key separeted with '#'. 'Class#Key'
323  :param value: physics parameter in string
324  :param criteria: selection criteria
325  :param nEvent: number of event to be processed
326 
327  **examples**::
328 
329  athena> plot('ElectronContainer#ElectronCollection','$x.pt()')
330  plot pt of electrons
331 
332  For detail, see `PyAnalysisExamples/PlotTest.py`_
333 
334  .. _PyAnalysisExamples/PlotTest.py: http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/PyAnalysis/PyAnalysisExamples/share/PlotTest.py?rev=HEAD&content-type=text/vnd.viewcvs-markup
335 
336  """
337 
338  # fill a histogram
339  h = fill (None, classAndKey, value, criteria, nEvent)
340  # draw
341  h.Draw()
342  # this return is needed to draw up the canvas.
343  # note that PyKernel._hSave = h doesn't work although it keeps the hist in memory
344  return h
345 
346 
347 # fill 2D histogram

◆ plot2()

def python.PyKernel.plot2 (   classAndKey,
  valueX = "$x",
  valueY = "$x",
  criteria = "True",
  nEvent = 100 
)
Plot 2D-histogram

:param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
:param valueX: physics parameter for X in string
:param valueY: physics parameter for Y in string
:param criteria: selection criteria
:param nEvent: number of event to be processed

For detail, see `plot`

Definition at line 524 of file PyKernel.py.

524 def plot2 (classAndKey, valueX="$x", valueY="$x", criteria="True", nEvent=100):
525  """Plot 2D-histogram
526 
527  :param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
528  :param valueX: physics parameter for X in string
529  :param valueY: physics parameter for Y in string
530  :param criteria: selection criteria
531  :param nEvent: number of event to be processed
532 
533  For detail, see `plot`
534 
535  """
536  h = fill2 (None, classAndKey, valueX, valueY, criteria, nEvent)
537  # draw
538  h.Draw('BOX')
539  # this return is needed to draw up the canvas.
540  # note that PyKernel._hSave = h doesn't work although it keeps the hist in memory
541  return h
542 
543 
544 # fill profile histogram

◆ plotProf()

def python.PyKernel.plotProf (   classAndKey,
  valueX = "$x",
  valueY = "$x",
  criteria = "True",
  nEvent = 100 
)
Plot profile-histogram

:param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
:param valueX: physics parameter for X in string
:param valueY: physics parameter for Y in string
:param criteria: selection criteria
:param nEvent: number of event to be processed

For detail, see `plot`

Definition at line 697 of file PyKernel.py.

697 def plotProf (classAndKey, valueX="$x", valueY="$x", criteria="True", nEvent=100):
698  """Plot profile-histogram
699 
700  :param classAndKey: combination of class name and key separeted with '#', 'Class#Key'
701  :param valueX: physics parameter for X in string
702  :param valueY: physics parameter for Y in string
703  :param criteria: selection criteria
704  :param nEvent: number of event to be processed
705 
706  For detail, see `plot`
707 
708  """
709  h = fillProf (None, classAndKey, valueX, valueY, criteria, nEvent)
710  # draw
711  h.Draw()
712  # this return is needed to draw up the canvas.
713  # note that PyKernel._hSave = h doesn't work although it keeps the hist in memory
714  return h
715 
716 
717 # parse string

◆ preProcess()

def python.PyKernel.preProcess ( )
Set event loop type to pre-process

Definition at line 777 of file PyKernel.py.

777 def preProcess ():
778  '''
779  Set event loop type to pre-process
780 
781  '''
782  global curEvent
783  curEvent = theApp.curEvent()
784  global eventLoopType
785  eventLoopType = _PreProcess
786 
787 
788 # set event loop type to normal-process

◆ retrieve()

def python.PyKernel.retrieve (   aClass,
  aKey = None 
)
Retrieve object from StoreGate

:param aClass: type of the class
:param aKey: key of the object

**examples**::

  athena> obj = PyKernel.retrieve(g.MyClass,'mykey')
  athena> obj = PyKernel.retrieve(g.MyClass)  # when only one MyClass obj is in SG
      where the prefix 'g' is the global namespace provided by cppyy
      g = cppyy.gbl

Definition at line 110 of file PyKernel.py.

110 def retrieve (aClass, aKey=None):
111  """Retrieve object from StoreGate
112 
113  :param aClass: type of the class
114  :param aKey: key of the object
115 
116  **examples**::
117 
118  athena> obj = PyKernel.retrieve(g.MyClass,'mykey')
119  athena> obj = PyKernel.retrieve(g.MyClass) # when only one MyClass obj is in SG
120  where the prefix 'g' is the global namespace provided by cppyy
121  g = cppyy.gbl
122 
123  """
124  #import workaround
125  if aClass == GNS.AttributeList:
126  return rootStream
127  if aClass == GNS.AANT:
128  return rootStream
129  global storeGate
130  if storeGate is None:
131  import AthenaPython.PyAthena as PyAthena
132  storeGate = PyAthena.py_svc('StoreGateSvc/StoreGateSvc')
133  if aKey:
134  ret = storeGate.retrieve(aClass,aKey)
135  else:
136  ret = storeGate.retrieve(aClass)
137  return ret
138 
139 
140 # retrieve object from DetectorStore

◆ retrieveDet()

def python.PyKernel.retrieveDet (   aClass,
  aKey = None 
)
Retrieve object from DetectorStore

:param aClass: type of the class
:param aKey: key of the object

**examples**::

  athena> obj = PyKernel.retrieveDet(g.MyClass,'mykey')
  athena> obj = PyKernel.retrieveDet(g.MyClass) # when only one MyClass obj is in SG
      where the prefix 'g' is the global namespace provided by cppyy
      g = cppyy.gbl

Definition at line 141 of file PyKernel.py.

141 def retrieveDet (aClass, aKey=None):
142  """Retrieve object from DetectorStore
143 
144  :param aClass: type of the class
145  :param aKey: key of the object
146 
147  **examples**::
148 
149  athena> obj = PyKernel.retrieveDet(g.MyClass,'mykey')
150  athena> obj = PyKernel.retrieveDet(g.MyClass) # when only one MyClass obj is in SG
151  where the prefix 'g' is the global namespace provided by cppyy
152  g = cppyy.gbl
153 
154  """
155  #import workaround
156  if detStore is None:
157  import AthenaPython.PyAthena as PyAthena
158  storeGate = PyAthena.py_svc('StoreGateSvc/DetectorStore') # noqa: F841
159  if aKey:
160  ret = detStore.retrieve(aClass,aKey)
161  else:
162  ret = detStore.retrieve(aClass)
163  return ret
164 
165 
166 # fill a histogram

◆ unregister()

def python.PyKernel.unregister (   path)
Unregister histogram from HistogramSvc

:param path: path to the histogram

**examples**::

  athena> unregister("/stat/tmpHist")

Definition at line 749 of file PyKernel.py.

749 def unregister (path):
750  '''
751  Unregister histogram from HistogramSvc
752 
753  :param path: path to the histogram
754 
755  **examples**::
756 
757  athena> unregister("/stat/tmpHist")
758 
759  '''
760  return theApp.histSvc().unregisterObject(path)
761 
762 
763 # dump histograms in HistogramSvc

Variable Documentation

◆ __docformat__

string python.PyKernel.__docformat__ = "restructuredtext en"
private

Definition at line 15 of file PyKernel.py.

◆ _HybridProcess

int python.PyKernel._HybridProcess = 2
private

Definition at line 32 of file PyKernel.py.

◆ _NormalProcess

int python.PyKernel._NormalProcess = 1
private

Definition at line 31 of file PyKernel.py.

◆ _PreProcess

int python.PyKernel._PreProcess = 0
private

Definition at line 30 of file PyKernel.py.

◆ AANT

python.PyKernel.AANT

Definition at line 37 of file PyKernel.py.

◆ AttributeList

python.PyKernel.AttributeList

Definition at line 36 of file PyKernel.py.

◆ detStore

python.PyKernel.detStore = None

Definition at line 41 of file PyKernel.py.

◆ GNS

python.PyKernel.GNS = cppyy.gbl

Definition at line 25 of file PyKernel.py.

◆ storeGate

python.PyKernel.storeGate = None

Definition at line 40 of file PyKernel.py.

python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
python.PyKernel.fillProf
def fillProf(hist, classAndKey, valueX, valueY, criteria="True", nEvent=100)
Definition: PyKernel.py:545
python.PyKernel.normalProcess
def normalProcess()
Definition: PyKernel.py:789
python.PyKernel.retrieveDet
def retrieveDet(aClass, aKey=None)
Definition: PyKernel.py:141
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
python.PyKernel.preProcess
def preProcess()
Definition: PyKernel.py:777
python.PyKernel.fill2
def fill2(hist, classAndKey, valueX, valueY, criteria="True", nEvent=100)
Definition: PyKernel.py:348
run_Egamma1_LArStrip_Fex.dump
dump
Definition: run_Egamma1_LArStrip_Fex.py:87
python.PyKernel.unregister
def unregister(path)
Definition: PyKernel.py:749
python.PyKernel.dumpSG
def dumpSG()
Definition: PyKernel.py:736
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
python.PyKernel._parseString
def _parseString(str)
Definition: PyKernel.py:718
python.PyKernel.init
def init(v_theApp, v_rootStream=None)
Definition: PyKernel.py:45
python.PyKernel.plotProf
def plotProf(classAndKey, valueX="$x", valueY="$x", criteria="True", nEvent=100)
Definition: PyKernel.py:697
plot
bool plot
Definition: listroot.cxx:44
python.PyKernel.hybridProcess
def hybridProcess()
Definition: PyKernel.py:799
python.PyKernel.plot2
def plot2(classAndKey, valueX="$x", valueY="$x", criteria="True", nEvent=100)
Definition: PyKernel.py:524
python.PyKernel.dumpHist
def dumpHist()
Definition: PyKernel.py:764
python.PyKernel.fill
def fill(hist, classAndKey, value, criteria="True", nEvent=100)
Definition: PyKernel.py:167