Author: | F.Mauger |
---|---|
Date: | 2021-06-18 |
Contents
This package provides tools to build geometry models for SuperNEMO source foil strips with realistic shapes. It uses the raw datasets from the Laser Tracker 3D measurement campaign made at the end of 2018. Its objective is to elaborate a best-fit model for each source strips which is significantly deformed in the SuperNEMO source frame and for which a potential impact on the quality of the simulation and/or reconstruction datasets is expected.
SNRS depends on Bayeux 3.5.0 (geometry modelling primitives) and the GSL library (numerical primitives).
We assume here a bash
shell.
Setup Bayeux:
$ bayeux_3_5_0_setup # or any typical script to be run from your shell $ bxquery --version 3.5.0 $ bxquery --cmakedir /data/sw/BxSoftware/BxInstall/bayeux-3.5.0/lib/cmake/Bayeux-3.5.0
For developpers only: prepare the environment to manage primary and secondary datasets:
You should download and address the primary raw LTD datasets. The
SNLTD_3D_measurements-1.0.tar.gz
archive is available from the private directory/sps/nemo/snemo/snemo_data/misc
at CCIN2P3.$ mkdir /var/SuperNEMO # or any suitable place with o(GB) available space $ cd /var/SuperNEMO $ # Download the tarball SNLTD_3D_measurements-1.1.tar.gz which contains raw LTD datasets from CCIN2P3... $ tar xzf SNLTD_3D_measurements-1.1.tar.gz $ export RAW_LTD_DATA_DIR="/var/SuperNEMO/SNLTD_3D_measurements"
Configure, build and install SNRS:
Several configuration options are proposed but should not be used for a production installation:
SNRS_DEVELOPER_BUILD
(default:OFF
) : this build option is reserved for the developer(s) which are responsible of the reconstruction of the source strip mesh datasets, fitted from the raw LTD datasets.SNRS_ENABLE_TESTING
(default:OFF
) : build test programs.SNRS_GENERATE_DATA
(default:OFF
) : generate fitted mesh datasets at build/installation stage (reserved for developper(s)).SNRS_WITH_DOC
(default:OFF
) : generate some documentation files (reserved for developper(s)).
$ cd ${HOME}/SuperNEMO/sw/SNRS # or any suitable place with enough available storage $ git clone https://github.com/SuperNEMO-DBD/SNRS SNRS.git $ mkdir _build.d $ cd _build.d $ cmake \ -DCMAKE_INSTALL_PREFIX=${HOME}/SuperNEMO/sw/SNRS/install-1.0.0 \ -DBayeux_DIR=$(bxquery --cmakedir) \ ${HOME}/SuperNEMO/sw/SNRS/SNRS.git $ make $ make install
Setup:
$ export PATH=${HOME}/SuperNEMO/sw/SNRS/install-1.0.0/bin:${PATH} $ which snrs-config $ snrs-config --help ...
SNRS aims to model the ITEP-style source foil in SuperNEMO using 3D meshes (usng tessellated solids from Bayeux and compatible with Geant4 geometry modelling tools) in order to approximate the real curved shapes of these foils at a reasonably good level of approximation, typically at millimeter scale and at least below the resolution of the particle tracking in Geant4 and vertex reconstruction precision in Falaise. The package thus provides some tools to describe each source foil as a 3D mesh made of hundreds of 3D-tiles, each defined by triangular facets with the same effective surface and volumes.
In the current release of SNRS, each ITEP-style source strip is composed of 10 columns and 100 rows, so 1000 individual 3D hexahedron tiles which are basically slightly deformed rectangular cuboid. Neglecting the streching effect in the Y and Z direction, each tile is considered to be 13.55 mm width and 27 mm height. This model allows to easily implement vertex generators with approximated uniform sampling both on the surface and in bulk of the tiles. Each tile has 4 master triangular facets : 2 on its back face (Italy) and 2 on its front face (France). The facets which encloses the 3D tile on the 4 other sides are not considered by the algorithms (but they are implemented to ensure the consistence of the geometrical structure of the mesh). Note also that the model takes into account the Mylar films which wraps the selenium foils. Both back and front films are thus associated to their own mesh models which are derived from the main meshed model of the selenium strip.
SNRS provides the snrs::mesh_pad_model
geometry model (inherited
from the Bayeux's geomtools::i_boxed_model
class). Given a strip
ID, this class automatically build the geometry layout of the strip,
including the shape of the enriched selenium foil, the wrapping Mylar
films and the material. The parameters of each ITEP-style source pad
is hardcoded in the sngeom::_init_foil_models_()
method of the
sngeom.cpp
file: position of the strip in the source frame,
dimensions, name of the material (using the same naming scheme in the
flat realistic modelling of the sources in Falaise).
SNRS provides specific dataset files for describing the deformed
shapes of the ITEP-style source foils and associated wrapping films
(see the resources/data/geometry/source_foils/fsf/
directory).
For convenience, these datasets have been pre-calculated within SNRS
(a tricky task reserved for expert/developper users) so that end-users
just have to install and use them through the snrs::mesh_pad_model
geometry model.
SNRS provides also the
resources/config/snemo/demonstrator/geometry/GeometryModels/source_module/realistic/strips_itep_like.geom
configuration file which contains the parameters used for each
ITEP-style source strip. This file will be used by Falaise to
integrate a new variant of the geometry layout of the source foils.
All ITEP-stype source foils are modelled but strip 2 of which the deformation is too complex (and possibly small enough) to be taken into account with the current approach.
SNRS provides the snrs::mesh_pad_vg
vertex generator class
(inherited from the Bayeux's geomtools::i_from_model_vg
class). The set of configuration parameters of such a generator object
describes:
- the origin (strip/pad identifier in the source frame)
- the mode (surface or bulk)
- some optional generated vertex shifting dimensions (expert only)
- some optional specific selection informations (side, set of tiles in the mesh) to restrict the region of the source foil for vertex generation.
Both vertex generation modes (surface and bulk) are based on an
approximated scheme justified by the very small thickness of the
source foil compared to its other dimensions. With this geometry model
of the curved source fiols, each triangular facet in a given mesh tile
(selenium or Mylar) has a width of 13.55 mm and height of 27 mm. The
thickness of the selenium foil is about 200-300 um and Mylar films are
12 um thick. The vertex generation algorithm thus uses a uniform
generation sampler on a reference triangular surface (available from
the Bayeux's genvtx
module) then skips the vertex along the normal
of the facet by an arbitrary distance, depending on the mode:
- for surface generators, this implies a shift by a few micrometers on top of the surface of the considered tile/facet.
- for bulk generators, the shift is uniformly randomized to reflect the thickness of the selenium foil.
Considering the resolution of the vertex reconstruction and the fact that the mesh model itself is already an approximation of the real source geometry, no serious bias is expected from this approximation.
Typical vertex generator configurations are:
Surface vertex generator:
origin : string = " category='source_pad' module={0} strip={34} pad={0} " mode : string = "surface" # For modelling the deposit of contaminants on the surface of the strip back_side : boolean = false # Only from the front_side : boolean = true # front side of the source (France) skin_thickness : real as length = 1 um # Effective thickness of the vertex generation layer skin_skip : real as length = 1 um # Tiny shift (normal to the surface) of the vertex # with respect to the source tiles
Bulk vertex generator:
origin : string = " category='source_pad' module={0} strip={34} pad={0} " mode : string = "bulk" # For modelling the bulk contamination of the selenium skin_thickness : real as length = 1 um # Thickness of the excluded region from the surface
Selection of a specific set of tiles by range:
tiles.min_column : integer = 2 # Only tiles from column 2 tiles.max_column : integer = 3 # to column 3 (included, from a total of 10 columns with 13.55 mm width) tiles.min_row : integer = 25 # Only tiles from row 25 tiles.max_row : integer = 27 # to row 27 (included, from a total of 100 rows with 27 mm height) tiles.part_0 : boolean = true # Use only the lower triangular part of the tiles (facet) tiles.part_1 : boolean = false # Do no use the upper triangular part of the tiles (facet)
Selection of a specific set of tiles from the source mesh using regexes (can be used to describe a hot spot, for bulk of surface modes):
tiles.patterns : string[29] = \ "[*,3,76,1]" \ # Both sides of the tile column=3, row=76, upper part "[*,4,76,*]" \ # Both sides of the tile column=4, row=76, both parts "[1,*,77,0]" # French side of all tile's columns at row=77 for lower part
Directory : doc/build-ltd
Directory : doc/build-fsf
- First release of the 3D mesh for ITEP-style source foils (but 2)
- positioning of wrapping Mylar films relatively to the selenium strip
- convention on the ordering of vertex in triangular facets for 3D-mesh tiles
- positioning of the strips within their respective strip paths : ensure no overlap with tracking chamber (confined within X=[-29:+29] mm)
- First release of the vertex generation:
- surface generator : support back face of the back Mylar film and front face of the front Mylar film
- bulk generator in Mylar film (a variant of the above) : support bulk of the back Mylar film and bulk of the front Mylar film
- bulk generator in selenium strip
- selection of subsets of tiles through row/column ranging or regex
Useful environment variables for development stuff:
$ bayeux_3_5_0_setup # Or any command that setups Bayeux
$ cd /path/to/SNRS/source/directory
$ export RAW_LTD_DATA_DIR="/path/to/SNLTD_3D_measurements"
$ bash tools/build.bash
$ cd _build.d
$ export SNRS_BUILD_DIR=$(pwd)
$ export SNRS_TESTING_DIR=$(pwd)/../snrs/test
$ export SNRS_RESOURCE_PATH=$(pwd)/../resources
$ export PATH=$(pwd)/../_install.d/bin:${PATH}
$ make
$ make test
$ make install
$ cd ../_install.d
$ tree