35 parser = argparse.ArgumentParser(description=
"Simulation of toy data for training of SVD hit time esitmator")
43 help=
'Size of the sample to generate'
51 help=
'Lower bound of t0 distribution, ns')
58 help=
'Upper bound of t0 distribution, ns')
65 help=
'Lower bound of tau distribution, ns')
72 help=
'Upper bound of tau distribution, ns')
79 help=
'RMS of tau jitter, 0 - no jitter, ns')
86 help=
'Lower bound of amplitude distribution, S/N units')
93 help=
'Upper bound of amplitude distribution, S/N units')
100 help=
'Lower bound of sigma distribution, S/N units')
107 help=
'Upper bound of sigma distribution, S/N units')
114 help=
'Size of t0 PDF bin, ns')
116 args = parser.parse_args()
118 generator = SampleGenerator(
119 (args.t0_low, args.t0_high),
120 (args.tau_low, args.tau_high),
121 (args.amp_low, args.amp_high),
122 (args.sigma_low, args.sigma_high),
126 print(
'Generating {0} samples...'.format(args.n_samples))
127 sample = generator.generate(args.n_samples)
130 timearray = generator.get_t0_array()
131 timebins = generator.get_t0_bins()
132 bins = pd.DataFrame({
133 'midpoint': timearray,
134 'lower': timebins.values[:-1],
135 'upper': timebins.values[1:]
139 bounds = pd.DataFrame({
140 'value': np.array([
't0',
'amplitude',
'tau',
'sigma']),
141 'sampling': np.array([
'uniform',
'uniform',
'uniform',
'uniform']),
143 generator.get_t0_bounds()[0],
144 generator.get_amp_bounds()[0],
146 generator.get_sigma_bounds()[0]
149 generator.get_t0_bounds()[1],
150 generator.get_amp_bounds()[1],
152 generator.get_sigma_bounds()[1]
155 orderedcols = [
'value',
'sampling',
'low',
'high']
156 bounds = bounds[orderedcols]
158 print(
'Samples created.')
160 output_name =
'SVDTime_Training{0}_{1}.pkl'
164 sample.to_pickle(output_name.format(
'Sample', args.n_samples))
165 bins.to_pickle(output_name.format(
'Bins', args.n_samples))
166 bounds.to_pickle(output_name.format(
'Bounds', args.n_samples))
168 print(
'Done.\nResults saved to {0}.'.format(output_name.format(
169 '{Sample, Bins, Bounds}', args.n_samples)))