Generation of neutrino events (GENIE)
- Table of contents
- [Generation of neutrino events
(GENIE)]
- [Selecting generated interactions: FilterNeutrinosActiveVolume
module]
- [Selecting events with interactions in selected
volumes]
- [Interactions in the active volumes of the detector]
- [Interaction location via volume name]
- [Interaction location via volume coordinates]
- [Selecting events with a specific interaction type]
- [Selecting events via a specific current type]
- [Selecting events with interactions in selected
volumes]
- [Selecting generated interactions: FilterNeutrinosActiveVolume
module]
Selecting generated interactions: FilterNeutrinosActiveVolume module
There are a few facilities in LArSoft and ICARUS code which allow filtering of events based on the features of the interaction(s).
They are implemented as art filters, which allow to write an event into the output art ROOT file only if it satisfies some requirements.
ICARUS has its own flavor of selector implemented in
[FilterNeutrinosActiveVolume]{style=”font-family: monospace;”}
filter module.
Note that this module has nothing that is specific to ICARUS and can be
actually used in any LArSoft experiment (but at present it is
distributed in ICARUS
LArSoft{.project}).
Three types of requirements are supported: interaction location,
interaction type and weak current type.
An event (intended as art event, possibly containing multiple
interactions in std::vector<simb::MCTruth>
data products) is selected
if all the requirement types in the configuration are satisfied. For
example, if all three types are specified, the selected events must
contain an interaction with the requested current type and interaction
type and location.
Also note that when using art filter modules an event will be accepted in its entirety. For example, an event with two interactions will be selected even if only one of them satisfies all the requirements of the filter, and both interactions will be included in the selected event.
Selecting events with interactions in selected volumes
Events can be selected if they have a neutrino-like interaction in a specified volume.
The location of the interaction is determined by the position
(EndPosition()
) of its incoming neutrino-like particle.
There are a few ways to specify the volumes: the interaction will be
accepted if it happens in any of the specified volumes.
Interactions in the active volumes of the detector
The active volume is defined as the volume in between the anode and
cathode planes, limited by the field cage. That volume is fully
instrumented and permeated by a uniform electric field.
One can assume that only ionization produced in the active volume will
be measured by the wires, while the same is not true for scintillation
light, that can originate from outside it and still be detected.
In ICARUS detector geometry description the active volume is described
by several (eight, in v08_50_02{.version}
default geometry) volumes called volTPCActive
.
To select only events that have at least a neutrino interaction (of any
type) in the active volume, the job configuration
filter_genie_active.fcl
or the module FHiCL settings
icarus_FilterNeutrinoActive
(from FilterNeutrinoActive.fcl
) can be
used.
The explicit configuration of the module, instead, will look like:\
physics.filters.selectInActiveVolume: {
module_type: "FilterNeutrinosActiveVolume"
inActive: true
}
(do not forget to ask RootOutput
to filter the events with the
SelectEvents
configuration parameter).
Note that if the active volume requirement is requested, no other location requirement can be specified.
Interaction location via volume name
Events can be required to have at least one interaction in any of the
specified volumes, described by the name they have in the GDML detector
geometry.
For example:
physics.filters.selectInActiveVolume: {
module_type: "FilterNeutrinosActiveVolume"
volumeNames: [ "volTPC", ".*CRT.*" ]
}
will select interactions happening in any of the volumes called
volTPC
(in the default ICARUS detector in
v08_50_02{.version}, there are eight of
them), or in any volume whose name contains CRT
.
As this example shows, multiple volumes can be specified, and the
specification is actually a C++ "default" regular expression (see e.g.
[std::regex]{style=”font-family: monospace;”}).
These volumes are selected in additions to the ones specified by
coordinates (below), but can't be specified together with the request
of active volume (inActive: true
). Hint: LArSoft convention prescribes
the active volumes to be called volTPCActive
, so for compliant
detectors like ICARUS inActive: true
is actually a shortcut for
volumeNames: [ "volTPCActive" ]
. This also allows to specify
additional volumes.
Interaction location via volume coordinates
Events can be required to have at least one interaction in any of the
specified box-shaped volumes, described by the coordinate ranges on each
dimension.
For example:
physics.filters.selectInActiveVolume: {
module_type: "FilterNeutrinosActiveVolume"
volumeBoxes: [
{
Xmin: -150.0
Ymin: -150.0
Zmin: -50.0
Xmax: -50.0
Ymax: -50.0
Zmax: +50.0
},
{
Xmin: 50.0
Ymin: 50.0
Zmin: 150.0
Xmax: 150.0
Ymax: -50.0
Zmax: +50.0
}
] # volumeBoxes
}
will select interactions happening in one of two 1 meter cubes centered
in ( &plusm;1 ; &plusm;1 ; 0 ) meters, specified in world coordinates
and in centimeters.
These volumes are selected in additions to the ones specified by name,
but can't be specified together with the request of active volume
(inActive: true
).
Selecting events with a specific interaction type
The filter module
[FilterNeutrinosActiveVolume]{style=”font-family: monospace;”}
described above allows to narrow the selection by requiring also a
specific neutrino interaction type.
For example, this configuration requires an neutral current interaction
via resonant production of a pion (neutral or positive charged) and
neutron:\
physics.filters.selectInActiveVolume: {
module_type: "FilterNeutrinosActiveVolume"
interactionTypes: [
1007, # simb::kResNCNuNeutronPiPlus
1008 # simb::kResNCNuNeutronPi0
]
}
The interaction types are coded in nusimdata:source:nusimdata/SimulationBase/MCNeutrino.h{.source} (type simb::int_type_).
This requirement can be specified together with the current type (below) and the interaction location requirements.
Selecting events via a specific current type
The filter module [FilterNeutrinosActiveVolume]{style=”font-family: monospace;”} described above allows to narrow the selection by requiring also a specific neutrino current type:\
physics.filters.selectInActiveVolume: {
module_type: "FilterNeutrinosActiveVolume"
weakCurrent: NC
}
The allowed values for weakCurrent
are charged
(or CC
), neutral
(or NC
), and any
(which still requires a weak interaction to be
present).
Again note that an event will be accepted in its entirety, and an event with two interactions will be selected even if only one of them satisfies the requirement of the filter.
This requirement can be specified together with the interaction type and the interaction location requirements.