![]() |
|
|
Generated: 8 Jan 2009 |
00001 import math 00002 import sys 00003 #----------Patch to force loading .so with RTDL_GLOBAL 00004 if sys.platform == 'linux2' : sys.setdlopenflags(0x100|0x2) 00005 00006 import gaudimodule as gaudi 00007 g = gaudi.AppMgr() 00008 g.JobOptionsType = 'NONE' 00009 g.EvtSel = "NONE" 00010 00011 g.config() 00012 print '**************GaudiPython Job has been configured*************' 00013 00014 g.DLLs = ['GaudiAlg', 'GaudiIntrospection'] 00015 g.ExtSvc = ['IntrospectionSvc'] 00016 00017 g.service('IntrospectionSvc').Dictionaries = ['TestDict'] 00018 00019 g.DLLs += ['Test'] 00020 00021 seq1 = g.algorithm('seq1') 00022 seq1.members = ['HelloWorld', 'WriteAlg' ] 00023 00024 g.topAlg += ['Sequencer/seq1'] 00025 00026 g.initialize() 00027 print '**************GaudiPython Job has been initialized*************' 00028 g.run(2) 00029 print '**************GaudiPython Job has been run ********************' 00030 00031 00032 evt = gaudi.DataSvc(g.service('EventDataSvc')) 00033 header = evt['/Event'] 00034 print '***The event header is: ', header.values() 00035 tracks = evt['/Event/MyTracks'] 00036 print '***I got ', len(tracks), ' tracks' 00037 00038 his = gaudi.HistoSvc(g.service('HistogramDataSvc')) 00039 h1 = his.book('h1', 'histogram title 1D', 10, 0, 10) 00040 print '***Created 1D histogram' 00041 print h1 00042 h2 = his.book('h2', 'histogram title 1D', 10, 0, 10, 20, 0, 10) 00043 print '***Created 2D histogram' 00044 print h2 00045 00046 print '**************Histograms Tested ********************' 00047 00048 00049 #---------------User Algorithm---------------------------------------------- 00050 class PhysAnalAlg(gaudi.PyAlgorithm): 00051 def initialize(self): 00052 self.evt = gaudi.DataSvc(g.service('EventDataSvc')) 00053 self.his = gaudi.HistoSvc(g.service('HistogramDataSvc')) 00054 print 'Initializing User Analysis...' 00055 self.h1 = self.his.book('myhisto1', 'Histogram 1D for tests', 20, 0., 40.) 00056 self.h2 = self.his.book('myhisto2', 'Histogram 2D for test2', 20, 0., 40., 20, 0., 10.) 00057 print '....User Analysis Initialized' 00058 return 1 00059 def execute(self): 00060 tks = self.evt.object('MyTracks') 00061 print 'MyTracks collection contains ' + `len(tks)` + ' Tracks' 00062 for t in tks : 00063 self.h1.fill( math.sqrt(t.px*t.px + t.py*t.py + t.pz*t.pz), 1) 00064 self.h2.fill( t.px, t.py ) 00065 return 1 00066 def finalize(self): 00067 print 'Finalizing User Analysis...' 00068 print self.h1 00069 print self.h1.entries() 00070 print self.h2 00071 print '....User Analysis Finalized' 00072 return 1 00073 00074 print '**************Testing Python Algorithms ********************' 00075 phyanalalg = PhysAnalAlg('PythonAlgorithm') 00076 g.topAlg = g.topAlg + [ 'PythonAlgorithm' ] 00077 g.run(100) 00078 g.exit() 00079 00080 00081 00082 00083 00084 00085 00086 00087