00001
00002
00003 class TestGenerator:
00004 def __init__(self):
00005 import gaudimodule as gm
00006 self.app = gm.AppMgr()
00007 msv = self.app.service('MessageSvc')
00008 msv.OutputLevel = 3
00009 self.nevents = 10
00010 self.volume = "/dd/Geometry/Pool/lvNearPoolIWS"
00011 self.init()
00012 self.app.EvtMax = self.nevents
00013 self.app.EvtSel = "NONE"
00014 return
00015
00016 def init(self):
00017 self.init_gen_tools()
00018 self.init_generator()
00019 self.init_geometry()
00020 return
00021
00022 def init_gen_tools(self):
00023 from units import second
00024
00025 print " init_gen_tools"
00026 toolSvc = self.app.toolSvc()
00027
00028
00029 print " Creating timerator"
00030 tim = toolSvc.create("GtTimeratorTool","timerator")
00031 tim.OutputLevel=1
00032 tim.LifeTime = int(1*second)
00033
00034
00035 print " Creating poser"
00036 poser = toolSvc.create("GtPositionerTool", "poser")
00037 poser.OutputLevel = 3
00038 poser.Volume = self.volume
00039 poser.Strategy = "FullVolume"
00040
00041
00042 exe = "Co60.exe"
00043 import os, os.path
00044 path = os.getenv('PATH')
00045 for p in path:
00046 if (os.path.isfile(path+"/"+exe)):
00047 exe = path+"/"+exe
00048 break
00049 continue
00050
00051
00052 hepevt = toolSvc.create("GtHepEvtGenTool")
00053 hepevt.HepEvtDataSource = "%s -n %d -seed 1234567|"%(exe,self.nevents)
00054 print " HepEvtGenTool with", hepevt.HepEvtDataSource
00055
00056 return
00057
00058 def init_generator(self):
00059 print " init_generator"
00060 self.app.TopAlg += [ "GtGenerator/Gen", "GtHepMCDumper/Dumper" ]
00061
00062 print " GtGenerator"
00063 gen = self.app.algorithm("Gen")
00064 gen.OutputLevel = 2
00065 gen.GenTools = [ "GtHepEvtGenTool", "poser", "timerator" ]
00066 gen.GenName = "Cobalt 60"
00067 gen.GenEventLoc = "/Event/Gen/HepMCEvents"
00068
00069 print " GtDumper"
00070 dump = self.app.algorithm("Dumper")
00071 dump.Location = "/Event/Gen/HepMCEvents"
00072 return
00073
00074 def init_geometry(self):
00075 print " init_geometry"
00076 self.app.ExtSvc += [ "XmlCnvSvc" , "XmlParserSvc" ]
00077
00078 det = self.app.service('DetectorPersistencySvc')
00079 det.OutputLevel=3
00080 det.CnvServices = ["XmlCnvSvc"]
00081
00082 det = self.app.service('XmlCnvSvc')
00083
00084 det.AllowGenericConversion = True
00085
00086
00087
00088
00089 det = self.app.service('DetectorDataSvc')
00090 det.UsePersistency = True
00091 det.DetDbRootName = "dd"
00092 det.DetStorageType = 7
00093 import os, os.path
00094 loc = os.getenv('XMLDETDESCROOT')
00095 if (not loc):
00096 import sys
00097 print "Failed to get XMLDETDESCROOT"
00098 sys.exit(1)
00099 return
00100 det.DetDbLocation = loc + "/DDDB/dayabay.xml"
00101 print " Using XMLDDDB at",det.DetDbLocation
00102 return
00103
00104 def run(self):
00105 self.app.run(self.nevents)
00106 return
00107
00108 if '__main__' == __name__:
00109 tg = TestGenerator()
00110 tg.run()