2import ROOT, os, sys, time
9defaultfiledir =
"/eos/experiment/ship/user/aiuliano/GENIE_input_SND/NeutrinoFiles/"
11 "/eos/experiment/ship/user/aiuliano/GENIE_input_SND/SplinesTungstenTP/"
13names = {14:
"numu", 12:
"nue", 16:
"nutau", -14:
"anumu", -12:
"anue", -16:
"anutau"}
20 -16:
"AntiNeutTau_filter",
25 parser = argparse.ArgumentParser(description=
"Run GENIE neutrino simulation")
26 subparsers = parser.add_subparsers()
28 ap = subparsers.add_parser(
"sim", help=
"make genie simulation file")
30 ap.add_argument(
"--nupdg", type=str, dest=
"nupdg", default=
None)
31 ap.add_argument(
"-n",
"--nevents", type=int, dest=
"nevents", default=1000)
36 help=
"directory with neutrino fluxes",
38 default=defaultfiledir,
44 help=
"directory with neutrino splines crosssection",
46 default=defaultsplinedir,
49 "-o",
"--output", type=str, help=
"output directory", dest=
"outdir", default=
None
55 help=
"which interaction process",
60 "-s",
"--seed", type=int, dest=
"seed", default=65539
66 help=
"target material",
71 ap1 = subparsers.add_parser(
"spline", help=
"make a new cross section spline file")
72 ap1.add_argument(
"--nupdg", type=str, dest=
"nupdg", default=
None)
77 help=
"target material",
82 "-o",
"--output", type=str, help=
"output directory", dest=
"outdir", default=
None
84 args = parser.parse_args()
88if __name__ ==
"__main__":
93 print(
"output directory already exists.")
95 os.makedirs(args.outdir)
99 nupdg = int(args.nupdg)
101 print(
"Neutrino PDG code: ", nupdg)
103 if "GALGCONF" not in os.environ:
105 "GALGCONF is not set to a conf folder: need to configure GENIE for SND high energies!"
109 print(
"Please specify the neutrino type!")
110 sys.exit(
"Aborting code")
112 if args.target ==
"tungstenTP":
113 targetcode =
"1000741840[0.95],1000280580[0.03],1000290630[0.02]"
114 elif args.target ==
"tungstenEOI":
115 targetcode =
"1000741840[0.9],1000280580[0.1]"
117 print(
"no other cross-sections available!")
119 if "nevents" in args:
121 print(
"Number of events to generate: ", args.nevents)
122 print(
"Process to simulate: ", args.process)
123 print(
"Target type: ", args.target)
124 print(
"Seed used in this generation: ", args.seed)
126 nevents = int(args.nevents)
127 if args.process ==
None:
128 print(
"no process selected, generating with default GENIE processes")
131 inputfile = args.filedir + filenames[nupdg] +
".root"
132 spline = args.splinedir + names[nupdg] +
"_xsec_splines.xml"
134 outputfile = names[nupdg] +
"_" + args.process +
"_FairShip.root"
141 targetcode=targetcode,
144 process=args.process,
155 outputfile = names[nupdg] +
"_xsec_splines.xml"
160 targetcode=targetcode,
163 outputfile=outputfile,
make_ntuples(inputfile, outputfile)
make_splines(nupdglist, targetcode, emax, nknots, outputfile)
generate_genie_events(nevents, nupdg, emin, emax, targetcode, inputflux, spline, process=None, seed=None, irun=None)
add_hists(inputflux, simfile, nupdg)