00001
00002
00003 '''
00004 usage example:
00005
00006 nuwa.py -A -n 2 -o output.root -m "MDC09a.runIBD"
00007 Generating full inverse beta decay events
00008
00009 '''
00010
00011 DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
00012
00013 import os, math
00014
00015 def configure(argv = []):
00016
00017 import sys, getopt
00018 from time import localtime, gmtime, mktime, strftime, strptime, timezone
00019 opts,args = getopt.getopt(argv,"p:w:s:n:v:")
00020 wallTime = 0
00021 gammaE = 1.0
00022 seed = "42"
00023 nevts = "10000"
00024 pmtDataPath = None
00025 volume = "/dd/Structure/Sites/db-rock/db-ows/db-curtain/db-iws/db-ade1/db-sst1/db-oil1"
00026 for opt,arg in opts:
00027 if opt == "-s":
00028 seed = arg
00029 if opt == "-n":
00030 nevts = arg
00031 if opt == "-v":
00032 volume = arg
00033 if opt == "-p":
00034 pmtDataPath = arg
00035 if opt == "-w":
00036 if -1 != arg.find('T'):
00037 wallTime = int(mktime(strptime(arg,
00038 DATETIME_FORMAT)) - timezone)
00039 else:
00040 wallTime = int(arg)
00041
00042 print "======================================================"
00043 print "Begin JOB TIME = ", strftime(DATETIME_FORMAT,
00044 gmtime())
00045 print "IBD random seed: ", seed
00046 print "Number of IBD events: ", nevts
00047 print "Target volume: ", volume
00048 print "======================================================"
00049
00050 import GenTools
00051 import GaudiKernel.SystemOfUnits as units
00052
00053
00054
00055 print "InverseBeta.exe -n " + nevts + " -seed " + seed + " |"
00056 ibd = "InverseBeta.exe -n " + nevts + " -seed " + seed + " |"
00057 from GenTools.Helpers import HepEVT
00058 he = HepEVT(hepEvtDataSource = ibd)
00059 he.positioner.Volume = volume
00060 he.positioner.Strategy = "FullVolume"
00061 he.positioner.Mode = "Uniform"
00062
00063 he.positioner.Position = [0,0,0]
00064 he.positioner.Spread = 2.6*units.meter
00065 he.transformer.Volume = volume
00066
00067 import GenTools
00068 gtc = GenTools.Configure()
00069 gtc.generator.TimeStamp = int(wallTime)
00070 gtc.register(he)
00071
00072
00073 import DetSim
00074 detsim = DetSim.Configure(site="dayabay")
00075 detsim.historian(trackSelection="(pdg == 2112)",vertexSelection="(pdg == 2112)")
00076 params = {
00077 'start' :"(start > 0)",
00078 'track1':"(id==1)",
00079 'track2':"(id==2)",
00080 'inGdLS':"DetectorElementName == 'db-gds1'",
00081 'inLS': "DetectorElementName == 'db-lso1'",
00082 'GD': "MaterialName == '/dd/Materials/GdDopedLS'",
00083 'LS': "MaterialName == '/dd/Materials/LiquidScintillator'",
00084 'MO': "MaterialName == '/dd/Materials/MineralOil'",
00085 'IAV': "DetectorElementName == 'db-iav1'",
00086 'OAV': "DetectorElementName == 'db-oav1'",
00087 'IWS': "MaterialName == '/dd/Materials/IwsWater'",
00088 'OWS': "MaterialName == '/dd/Materials/OwsWater'",
00089 'lastvtx': "IsStopping == 1",
00090 'firstvtx': "IsStarting == 1",
00091 'NeutronTrk': "pdg == 2112",
00092 'NeutronMom': "creator == 2112",
00093 'NCap': "ProcessName == 'nCapture'",
00094 'Gamma': "pdg == 22",
00095 'Muon': "(pdg == 13 or pdg == -13)"
00096 }
00097
00098 detsim.unobserver(stats=[
00099 ["EDepInGdLS", "dE", "%(GD)s"%params],
00100 ["EDepInLS", "dE", "%(LS)s"%params],
00101 ["EDepInIAV", "dE", "%(IAV)s"%params],
00102 ["EDepInOAV", "dE", "%(OAV)s"%params],
00103 ["EDepInOIL", "dE", "%(MO)s"%params],
00104
00105 ["QEDepInGdLS", "qdE", "%(GD)s"%params],
00106 ["QEDepInLS", "qdE", "%(LS)s"%params],
00107 ["QEDepInIAV", "qdE", "%(IAV)s"%params],
00108 ["QEDepInOAV", "qdE", "%(OAV)s"%params],
00109 ["QEDepInOIL", "qdE", "%(MO)s"%params],
00110
00111 ["tQESumGdLS", "qEt", "%(GD)s"%params],
00112 ["xQESumGdLS", "qEx", "%(GD)s"%params],
00113 ["yQESumGdLS", "qEy", "%(GD)s"%params],
00114 ["zQESumGdLS", "qEz", "%(GD)s"%params],
00115
00116 ["tQESumLS", "qEt", "%(LS)s"%params],
00117 ["xQESumLS", "qEx", "%(LS)s"%params],
00118 ["yQESumLS", "qEy", "%(LS)s"%params],
00119 ["zQESumLS", "qEz", "%(LS)s"%params],
00120
00121 ["tQESumMO", "qEt", "%(MO)s"%params],
00122 ["xQESumMO", "qEx", "%(MO)s"%params],
00123 ["yQESumMO", "qEy", "%(MO)s"%params],
00124 ["zQESumMO", "qEz", "%(MO)s"%params],
00125
00126 ["tGen", "t","%(track2)s and %(firstvtx)s"%params],
00127 ["xGen", "x","%(track2)s and %(firstvtx)s"%params],
00128 ["yGen", "y","%(track2)s and %(firstvtx)s"%params],
00129 ["zGen", "z","%(track2)s and %(firstvtx)s"%params],
00130
00131 ["tCap", "t","%(track2)s and %(NCap)s"%params],
00132 ["xCap", "x","%(track2)s and %(NCap)s"%params],
00133 ["yCap", "y","%(track2)s and %(NCap)s"%params],
00134 ["zCap", "z","%(track2)s and %(NCap)s"%params],
00135
00136 ["capTarget", "capTargetZ","%(track2)s and %(NCap)s"%params],
00137
00138
00139 ["pdgId_Trk1","pdg","%(track1)s and %(start)s"%params],
00140 ["t_Trk1", "t" , "%(track1)s and %(start)s"%params],
00141 ["x_Trk1", "x", "%(track1)s and %(start)s"%params],
00142 ["y_Trk1", "y", "%(track1)s and %(start)s"%params],
00143 ["z_Trk1", "z", "%(track1)s and %(start)s"%params],
00144 ["tEnd_Trk1", "t" , "%(track1)s and %(lastvtx)s"%params],
00145 ["xEnd_Trk1", "x", "%(track1)s and %(lastvtx)s"%params],
00146 ["yEnd_Trk1", "y", "%(track1)s and %(lastvtx)s"%params],
00147 ["zEnd_Trk1", "z", "%(track1)s and %(lastvtx)s"%params],
00148 ["e_Trk1", "E", "%(track1)s and %(start)s"%params],
00149 ["p_Trk1", "p", "%(track1)s and %(start)s"%params],
00150 ["ke_Trk1", "KE", "%(track1)s and %(start)s"%params],
00151 ["vx_Trk1", "lvx","%(track1)s and %(start)s"%params],
00152 ["vy_Trk1", "lvy","%(track1)s and %(start)s"%params],
00153 ["vz_Trk1", "lvz","%(track1)s and %(start)s"%params],
00154 ["TrkLength_GD_Trk1", "dx","%(track1)s and %(GD)s"%params],
00155 ["TrkLength_iAV_Trk1", "dx","%(track1)s and %(IAV)s"%params],
00156 ["TrkLength_LS_Trk1", "dx","%(track1)s and %(LS)s"%params],
00157 ["TrkLength_oAV_Trk1", "dx","%(track1)s and %(OAV)s"%params],
00158 ["TrkLength_Oil_Trk1", "dx","%(track1)s and %(MO)s"%params],
00159
00160 ["pdgId_Trk2","pdg","%(track2)s and %(start)s"%params],
00161 ["t_Trk2", "t" , "%(track2)s and %(start)s"%params],
00162 ["x_Trk2", "x", "%(track2)s and %(start)s"%params],
00163 ["y_Trk2", "y", "%(track2)s and %(start)s"%params],
00164 ["z_Trk2", "z", "%(track2)s and %(start)s"%params],
00165 ["tEnd_Trk2", "t" , "%(track2)s and %(lastvtx)s"%params],
00166 ["xEnd_Trk2", "x", "%(track2)s and %(lastvtx)s"%params],
00167 ["yEnd_Trk2", "y", "%(track2)s and %(lastvtx)s"%params],
00168 ["zEnd_Trk2", "z", "%(track2)s and %(lastvtx)s"%params],
00169 ["e_Trk2", "E", "%(track2)s and %(start)s"%params],
00170 ["p_Trk2", "p", "%(track2)s and %(start)s"%params],
00171 ["ke_Trk2", "KE", "%(track2)s and %(start)s"%params],
00172 ["vx_Trk2", "lvx","%(track2)s and %(start)s"%params],
00173 ["vy_Trk2", "lvy","%(track2)s and %(start)s"%params],
00174 ["vz_Trk2", "lvz","%(track2)s and %(start)s"%params],
00175 ["TrkLength_GD_Trk2", "dx","%(track2)s and %(GD)s"%params],
00176 ["TrkLength_iAV_Trk2", "dx","%(track2)s and %(IAV)s"%params],
00177 ["TrkLength_LS_Trk2", "dx","%(track2)s and %(LS)s"%params],
00178 ["TrkLength_oAV_Trk2", "dx","%(track2)s and %(OAV)s"%params],
00179 ["TrkLength_Oil_Trk2", "dx","%(track2)s and %(MO)s"%params]
00180 ])
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194 def run(app):
00195 pass
00196