Skip to content

Commit b7a6e6b

Browse files
authored
Merge branch 'develop' into feature/gputnam-fix-v10
2 parents 05734b6 + 2950670 commit b7a6e6b

6 files changed

Lines changed: 480 additions & 3 deletions

File tree

Lines changed: 353 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,353 @@
1+
#
2+
# File: genie_beam_settings.fcl
3+
# Purpose: GENIE event generator settings for BNB neutrino interactions
4+
# Author: Gianluca Petrillo (petrillo@slac.stanford.edu)
5+
# Date: December 4, 2024
6+
# Version: 1.0
7+
#
8+
# This file includes configurations for the beam time structure (in GenieHelper
9+
# format) and for the `GENIEGen` LArSoft module interface to GENIE generator.
10+
#
11+
# A "default" configuration is provided which is supposed to be the current one,
12+
# and others can be added for variations or as legacy or period-specific
13+
# configurations.
14+
#
15+
# A template for an actual GENIEGen configuration is:
16+
#
17+
# physics.producers.generator: {
18+
# @table::sbn_genie_BNB_base # from genie_beam_settings.fcl
19+
#
20+
# # flux configuration
21+
# [...]
22+
#
23+
# TopVolume: [...]
24+
#
25+
# }
26+
#
27+
#
28+
# Changes
29+
# --------
30+
#
31+
# 20241204 (petrillo@slac.stanford.edu) [v1.0]
32+
# original version, inspired by SBND `genie_sbnd.fcl` v09_93_01
33+
#
34+
35+
36+
BEGIN_PROLOG
37+
38+
################################################################################
39+
### beam time structure
40+
###
41+
#
42+
# Explanation of the SpillTimeConfig configuration parameter
43+
# -----------------------------------------------------------
44+
#
45+
# This documentation reflects the configuration string of
46+
# `evgb::EvtTimeFNALBeam` class in `nugen` `v1_00_01` (`nutools` `v3_02_00`).
47+
# It is parsed by `evgb::EvtTimeFNALBeam::Config()` (the first word,
48+
# representing the name of the algorithm, is stripped by the caller,
49+
# `evgb::GENIEHelper`).
50+
# The configuration string is, well, a single string, sequence of
51+
# case-insensitive words separated by blanks (space, tabulation or new line)
52+
# or selected punctuation (comma, equal sign and more).
53+
# Parameters are parsed in sequence and the latter overrides the previous.
54+
# Parameters may appear in any order, except for the algorithm name which must
55+
# be the first.
56+
#
57+
# * `evgb::EvtTimeFNALBeam`: the algorithm name; `evgb::EvtTimeFNALBeam`
58+
# describes a beam spill structured in a contiguous sequence of "batches",
59+
# each one with a substructure of "buckets". Some batches can be "disabled",
60+
# and some of the buckets at the end of each batch may be empty.
61+
# Each bucket has a Gaussian time distribution. See the content of
62+
# `nugen/EventGeneratorBase/GENIE/EvtTime*.h` for other possible algorithms.
63+
# * `intentsity <INT 1> <INT 2> ... <INT M>` describes the relative intensity
64+
# of the batches in the spill, and at the same time it defines the number
65+
# _M_ of batches in the spill. A standard setting is to have all the batches
66+
# (6 for NuMI, just 1 for BnB) set to `1.0`; `GENIEHelper` will take care of
67+
# normalizing the numbers to a sum of 1.
68+
# * `sigma` or `FWHM` [ns]: the RMS or full width at half maximum peak of the
69+
# time structure of a single bucket. The time distribution is always
70+
# Gaussian (if specified as FWHM, it is converted to RMS for a Gaussian
71+
# distribution).
72+
# * `dtbucket` [ns]: the time between the peak of two consecutive buckets.
73+
# The default value (18.83 ns) assumes an extraction rate of 53.103 MHz,
74+
# which is NuMI; BNB is 52.8 MHz.
75+
# * `nperbatch`, `nfilled`: the number of buckets in each spill, and the number
76+
# of those which have actual protons in them. The default values include
77+
# 84 buckets, of which 81 are filled and the remaining 3, always at the end
78+
# of the spill ("notch") are empty.
79+
# * `global` [ns]: offset of the start of the spill (i.e. the time of the peak
80+
# of the first bucket of the first batch) with respect to the start
81+
# of the generator time scale (see `detinfo::DetectorClocks`).
82+
# * `Booster`, `NuMI`: presets including all the above in hard-coded fashion;
83+
# avoid using these to have better control and awareness of the settings.
84+
#
85+
86+
### = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
87+
### BNB beam time structure
88+
###
89+
#
90+
# Parameters for BNB Fiscal Year 2024 runs:
91+
# - 84 buckets, the first 81 of which filled
92+
# - bucket step: 18.936 ns (measured by MicroBooNE and ICARUS, SBN DocDB 34793)
93+
# - width: Gaussian with sigma 1.308 ns (?)
94+
# - no global time offset
95+
#
96+
beam_structure_BNB_2024: {
97+
98+
# enable bunched structure
99+
AddGenieVtxTime: true
100+
101+
# structure parameters
102+
SpillTimeConfig: "
103+
evgb::EvtTimeFNALBeam booster
104+
nperbatch 84
105+
nfilled 81
106+
intensity 1.0
107+
dtbucket 18.936
108+
sigma 1.308
109+
global 0.0
110+
"
111+
112+
GlobalTimeOffset: 0 # presumably [ns]
113+
114+
} # beam_structure_BNB_2024
115+
116+
117+
#
118+
# "default"
119+
#
120+
beam_structure_BNB: @local::beam_structure_BNB_2024
121+
122+
123+
124+
### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
125+
### beam parameters: BNB
126+
###
127+
#
128+
# Parameters for BNB Fiscal Year 2024 runs.
129+
#
130+
beam_parameters_BNB_2024: {
131+
132+
# beam structure
133+
@table::beam_structure_BNB_2024
134+
135+
BeamName: "booster"
136+
137+
} # beam_parameters_BNB_2024
138+
139+
140+
#
141+
# "default"
142+
#
143+
beam_parameters_BNB: @local::beam_parameters_BNB_2024
144+
145+
146+
147+
### = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
148+
### NuMI beam time structure
149+
###
150+
#
151+
# Parameters for NuMI Fiscal Year 2024 runs:
152+
# - 84 buckets, the first 81 of which filled, for six equally intense batches
153+
# - bucket step: 18.831 ns (measured by ICARUS, SBN DocDB 34988)
154+
# - width: Gaussian with sigma 0.75 ns (?)
155+
# - no global time offset
156+
#
157+
beam_structure_NuMI_2024: {
158+
159+
# enable bunched structure
160+
AddGenieVtxTime: true
161+
162+
# structure parameters
163+
SpillTimeConfig: "
164+
evgb::EvtTimeFNALBeam numi
165+
nperbatch 84
166+
nfilled 81
167+
intensity 1.0 1.0 1.0 1.0 1.0 1.0
168+
dtbucket 18.8313277969
169+
sigma 0.75
170+
global 0.0
171+
"
172+
173+
GlobalTimeOffset: 0 # presumably [ns]
174+
175+
} # beam_structure_NuMI_2024
176+
177+
178+
#
179+
# "default"
180+
#
181+
beam_structure_NuMI: @local::beam_structure_NuMI_2024
182+
183+
184+
185+
### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
186+
### beam parameters: NuMI
187+
###
188+
#
189+
# Parameters for NuMI Fiscal Year 2024 runs.
190+
#
191+
beam_parameters_NuMI_2024: {
192+
193+
# beam structure
194+
@table::beam_structure_NuMI_2024
195+
196+
BeamName: "booster"
197+
198+
} # beam_parameters_NuMI_2024
199+
200+
201+
#
202+
# "default"
203+
#
204+
beam_parameters_NuMI: @local::beam_parameters_NuMI_2024
205+
206+
207+
208+
################################################################################
209+
###
210+
### Base configuration for SBN GENIE generations
211+
###
212+
#
213+
# This configuration includes:
214+
# * default GENIE generator and tunes from environment variable
215+
# * BNB beam with 5x10^12 PoT/spill, allowing multiple interactions per spill
216+
# and skipping events which would have zero interactions
217+
# * the default BNB time structure (bunched)
218+
# * all neutrino flavours as from the input flux, with no mixing
219+
# * the reduced ("small") set of neutrino-nucleus cross section splines
220+
# * large generation geometry (volDetEnclosure)
221+
#
222+
# Users must specify/override:
223+
# * the neutrino flux configuration
224+
# * the simulation volume (`TopVolume` parameter)
225+
#
226+
sbn_genie_BNB_base: {
227+
228+
module_type: "GENIEGen"
229+
230+
###
231+
### beam parameters
232+
###
233+
234+
@table::beam_parameters_BNB
235+
236+
237+
###
238+
### neutrino flux parameters
239+
###
240+
241+
DetectorLocation: "MINOS-NearDet" # location name for flux window
242+
243+
#
244+
# no flavour mixing by default
245+
#
246+
GenFlavors: [ 12, 14, -12, -14 ]
247+
MixerBaseline: 0
248+
MixerConfig: "none"
249+
250+
251+
###
252+
### interaction configuration
253+
###
254+
#
255+
# GENIE event generator list and tune (the latter is left to the default,
256+
# which is to take it from GENIE_XSEC_TUNE environment variable)
257+
EventGeneratorList: "Default"
258+
259+
XSecTable: "gxspl-FNALsmall.xml"
260+
261+
#
262+
# Generation volume:#
263+
# no user-defined fiducial cut at GENIE level
264+
# (see e.g. https://code-doc.larsoft.org/docs/latest/html/classevgb_1_1GENIEHelper.html#a1c11b9039f4d0db1bc673b2ac390392e)
265+
#
266+
FiducialCut: "none"
267+
268+
# generate neutrino interactions over the whole `volDetEnclosure` volume
269+
TopVolume: "volDetEnclosure"
270+
271+
#
272+
# GenieHelper can either generate a fixed number of interactions per event
273+
# (misnamed `EventsPerSpill`) or stochastically extract how many interactions
274+
# per event using the number of protons on target per event (POTPerSpill);
275+
# one and only one of them can be non-zero.
276+
#
277+
# Here we choose 5 x 10^12 protons on target per spill, which is the nominal
278+
# intensity used in the SBN proposal paper but has never been really met
279+
# in reality, especially when running in parallel with NuMI
280+
# (average being closer to 3.5 or 4 x 10^12).
281+
#
282+
# We can also keep events that happen to have no neutrino interaction at all;
283+
# this may be useful when generating overlaid neutrino + cosmic background
284+
# data-like samples, but for the far detector this is a very inefficient
285+
# generation; here we disable it.
286+
#
287+
EventsPerSpill: @erase
288+
POTPerSpill: 5e12
289+
PassEmptySpills: false # required
290+
291+
292+
###
293+
### module behaviour
294+
###
295+
#
296+
# verbosity controls
297+
#
298+
ProductionMode: "yes"
299+
DebugFlags: 0
300+
GHepPrintLevel: -1 # -1 = no print, ... 13 = plenty
301+
302+
#
303+
# mandatory, unused parameters
304+
#
305+
# this would customise the vertex position plot range
306+
DefinedVtxHistRange: false
307+
VtxPosHistRange: []
308+
# this is deprecated but still mandatory
309+
Environment: []
310+
# these would be used if we had a histogram-based flux
311+
BeamCenter: [ 0, 0, 0 ]
312+
BeamDirection: [ 0, 0, 1 ]
313+
314+
} # sbn_genie_BNB_base
315+
316+
317+
################################################################################
318+
###
319+
### Base configuration for NuMI GENIE generations
320+
###
321+
#
322+
# This configuration includes:
323+
# * same settings as for BNB
324+
# * NuMI beam with 4x10^13 PoT/spill
325+
# * the default NuMI time structure (bunched)
326+
#
327+
# Users must specify/override:
328+
# * the neutrino flux configuration
329+
# * possibly the simulation volume (`TopVolume` parameter)
330+
#
331+
sbn_genie_NuMI_base: {
332+
@table::sbn_genie_BNB_base
333+
334+
###
335+
### beam parameters
336+
###
337+
338+
@table::beam_parameters_NuMI
339+
340+
#
341+
# Beam intensity: we choose 6 x 10^13 protons on target per spill, which was
342+
# the nominal intensity used when the SBN proposal paper was redacted,
343+
# but in reality we observed the typical intensity to be closer to 4 x 10^13.
344+
#
345+
POTPerSpill: 6e13
346+
347+
} # sbn_genie_NuMI_base
348+
349+
350+
################################################################################
351+
352+
353+
END_PROLOG

sbncode/CAFMaker/CAFMakerParams.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,12 @@ namespace caf
442442
true
443443
};
444444

445+
Atom<string> CVNLabel {
446+
Name("CVNLabel"),
447+
Comment("Label of CVN scores."),
448+
"cvn"
449+
};
450+
445451
};
446452
}
447453

0 commit comments

Comments
 (0)