00001
00002
00003 class IBD:
00004 '''
00005 configure IBD generator
00006 '''
00007
00008 def __init__(self,
00009 stage='null',
00010 name='IBD',
00011 volume='/dd/Structure/AD/far-oil1',
00012 start_time=0,
00013 seed=12345):
00014
00015
00016 from Gnrtr.GnrtrConf import Gnrtr
00017 gnrtr = Gnrtr(name);
00018
00019 gnrtr.GenTools = [ "GtHepEvtGenTool/"+name+"Gen",
00020 "GtPositionerTool/"+name+"Pos",
00021 "GtTimeratorTool/"+name+"Tim",
00022 "GtTransformTool/"+name+"Tra"]
00023
00024 gnrtr.ThisStageName = "Kinematic"
00025 gnrtr.TimeStamp = start_time
00026
00027 if stage != 'null':
00028 stage.KinematicSequence.Members.append(gnrtr)
00029
00030
00031 from GaudiKernel import SystemOfUnits as units
00032 from GenTools.GenToolsConf import GtPositionerTool, GtTransformTool, GtTimeratorTool, GtHepEvtGenTool
00033
00034
00035 nevents=5000
00036 hepevt_source="InverseBeta.exe -seed %(seed)s -n %(nevents)s|"
00037
00038 if hepevt_source[-1] == "|":
00039 exe = hepevt_source.split(' ')[0]
00040 if exe[0] != '/':
00041 import os, os.path
00042 path = os.getenv('PATH')
00043 for p in path:
00044 if (os.path.isfile(path+"/"+exe)):
00045 exe = path+"/"+exe
00046 break
00047 continue
00048 pass
00049 source = exe + ' ' + ' '.join(hepevt_source.split(' ')[1:])
00050 if "%" in source:
00051 source = source%{'nevents':str(nevents),
00052 'seed':str(seed)}
00053 pass
00054 pass
00055
00056
00057
00058 gen=GtHepEvtGenTool(name+'Gen',HepEvtDataSource = source)
00059
00060 gen.HepEvtDataSource = source
00061
00062
00063 pos=GtPositionerTool(name+'Pos',Volume=volume)
00064 pos.Strategy = "FullVolume"
00065 pos.Mode = "Uniform"
00066
00067 pos.Spread = 25*units.m
00068 pos.Position = [0,0,2.5*units.m]
00069
00070
00071 tim=GtTimeratorTool(name+'Tim')
00072 tim.LifeTime = int(108*units.s)
00073
00074
00075 tra=GtTransformTool(name+'Tra',Volume=volume)
00076
00077 pass
00078
00079 if __name__ == "__main__":
00080 obj=IBD()