00001
00002
00003 '''
00004 usage example:
00005
00006 nuwa.py -n 2 -o output.root -m "Calibration.SimACUNeutrons -a A"
00007
00008 Neutron is generated in AmC source in Calibration unit
00009 "-a Calibration Unit axis [A, B, C]"
00010
00011 '''
00012
00013 def configure(argv = []):
00014 """Configure this module with ACU unit"""
00015
00016 import sys, getopt
00017 opts,args = getopt.getopt(argv,"a:")
00018 acuAxis = 'A'
00019 for opt,arg in opts:
00020 if opt == "-a":
00021 acuAxis = arg
00022 print "======================================================"
00023 print "ACU unit = ", acuAxis
00024 print "======================================================"
00025
00026
00027 from RunDataSvc.RunDataSvcConf import RunDataSvc
00028 runDataSvc = RunDataSvc()
00029 runDataSvc.SimRunType = "Physics"
00030
00031
00032 import GaudiKernel.SystemOfUnits as units
00033 from GenTools.Helpers import Gun
00034 from GenTools.GenToolsConf import GtGunGenTool, GtPositionerTool
00035 volume = "/dd/Structure/CalibrationSources/db-ad1-acu"+acuAxis+"-amC"
00036 gun = Gun(volume,
00037 gun = GtGunGenTool("gun",
00038 ParticlesPerEvent = 1,
00039 ParticleName = "n0",
00040 Momentum = 4.25*units.MeV,
00041 MomentumMode = "Smeared",
00042 MomentumSpread = 0.6*units.MeV,
00043 MomentumInterpretation = "KineticEnergy",
00044 DirectionMode = "Uniform",
00045 Direction = [ 1, 0, 0 ],
00046 DirectionSpread = 3),
00047 positioner = GtPositionerTool("pos",
00048 Strategy = "FullVolume",
00049 Mode = "Uniform",
00050 Spread = 3*units.centimeter,
00051 Position = [0,0,0])
00052 )
00053 gun.timerator.LifeTime = 2.0*units.second
00054 import GenTools
00055 GenTools.Configure().register(gun)
00056
00057
00058 import DetSim
00059 detsim = DetSim.Configure()
00060 detsim.historian(trackSelection="(pdg == 2112)",\
00061 vertexSelection="(pdg == 2112)")
00062 params = {
00063 'start' :"(start > 0)",
00064 'track1':"(id==1)",
00065 'track2':"(id==2)",
00066 'GD': "MaterialName == '/dd/Materials/GdDopedLS'",
00067 'LS': "MaterialName == '/dd/Materials/LiquidScintillator'",
00068 'MO': "MaterialName == '/dd/Materials/MineralOil'",
00069 'IAV': "DetectorElementName == 'db-iav1'",
00070 'OAV': "DetectorElementName == 'db-oav1'",
00071 'IWS': "MaterialName == '/dd/Materials/IwsWater'",
00072 'OWS': "MaterialName == '/dd/Materials/OwsWater'",
00073 'lastvtx': "IsStopping == 1",
00074 'firstvtx': "IsStarting == 1",
00075 'Neutron': "pdg == 2112",
00076 'NeutronMom': "creator == 2112",
00077 'Gamma': "pdg == 22",
00078 'Muon': "(pdg == 13 or pdg == -13)"
00079 }
00080
00081 detsim.unobserver(stats=[
00082 ["EDepInGdLS", "dE", "%(GD)s"%params],
00083 ["EDepInLS", "dE", "%(LS)s"%params],
00084 ["EDepInIAV", "dE", "%(IAV)s"%params],
00085 ["EDepInOAV", "dE", "%(OAV)s"%params],
00086 ["EDepInOIL", "dE", "%(MO)s"%params],
00087
00088 ["QEDepInGdLS", "qdE", "%(GD)s"%params],
00089 ["QEDepInLS", "qdE", "%(LS)s"%params],
00090 ["QEDepInIAV", "qdE", "%(IAV)s"%params],
00091 ["QEDepInOAV", "qdE", "%(OAV)s"%params],
00092 ["QEDepInOIL", "qdE", "%(MO)s"%params],
00093
00094 ["tQESumGdLS", "qEt", "%(GD)s"%params],
00095 ["xQESumGdLS", "qEx", "%(GD)s"%params],
00096 ["yQESumGdLS", "qEy", "%(GD)s"%params],
00097 ["zQESumGdLS", "qEz", "%(GD)s"%params],
00098
00099 ["tQESumLS", "qEt", "%(LS)s"%params],
00100 ["xQESumLS", "qEx", "%(LS)s"%params],
00101 ["yQESumLS", "qEy", "%(LS)s"%params],
00102 ["zQESumLS", "qEz", "%(LS)s"%params],
00103
00104 ["tQESumMO", "qEt", "%(MO)s"%params],
00105 ["xQESumMO", "qEx", "%(MO)s"%params],
00106 ["yQESumMO", "qEy", "%(MO)s"%params],
00107 ["zQESumMO", "qEz", "%(MO)s"%params],
00108
00109
00110 ["pdgId_Trk1","pdg","%(track1)s and %(start)s"%params],
00111 ["t_Trk1", "t" , "%(track1)s and %(start)s"%params],
00112 ["x_Trk1", "x", "%(track1)s and %(start)s"%params],
00113 ["y_Trk1", "y", "%(track1)s and %(start)s"%params],
00114 ["z_Trk1", "z", "%(track1)s and %(start)s"%params],
00115 ["tEnd_Trk1", "t" , "%(track1)s and %(lastvtx)s"%params],
00116 ["xEnd_Trk1", "x", "%(track1)s and %(lastvtx)s"%params],
00117 ["yEnd_Trk1", "y", "%(track1)s and %(lastvtx)s"%params],
00118 ["zEnd_Trk1", "z", "%(track1)s and %(lastvtx)s"%params],
00119 ["e_Trk1", "E", "%(track1)s and %(start)s"%params],
00120 ["p_Trk1", "p", "%(track1)s and %(start)s"%params],
00121 ["ke_Trk1", "KE", "%(track1)s and %(start)s"%params],
00122 ["x_Trk1", "vx","%(track1)s and %(start)s"%params],
00123 ["y_Trk1", "vy","%(track1)s and %(start)s"%params],
00124 ["z_Trk1", "vz","%(track1)s and %(start)s"%params],
00125 ["TrkLength_GD_Trk1", "dx","%(track1)s and %(GD)s"%params],
00126 ["TrkLength_iAV_Trk1", "dx","%(track1)s and %(IAV)s"%params],
00127 ["TrkLength_LS_Trk1", "dx","%(track1)s and %(LS)s"%params],
00128 ["TrkLength_oAV_Trk1", "dx","%(track1)s and %(OAV)s"%params],
00129 ["TrkLength_Oil_Trk1", "dx","%(track1)s and %(MO)s"%params],
00130
00131 ["capTarget", "capTargetZ","%(track1)s and %(lastvtx)s"%params]
00132
00133 ])
00134
00135 import ElecSim
00136 elecsim = ElecSim.Configure()
00137
00138 import TrigSim
00139 trigsim = TrigSim.Configure()
00140
00141 import ReadoutSim
00142 rosim = ReadoutSim.Configure()
00143
00144 def run(app):
00145 pass
00146