Loading MathJax...

SNGenvertex Manager Configuration

1 Introduction

This file holds some vertex generators related to SuperNEMO detector geometry.

2 Manager configuration

2.1 Logging priority

#@description Logging priority
logging.priority : string = @variant(core:logging_priority|"warning")

2.2 Vertices list of files

The following code defines the location of several vertices files. All of them are defined in Section 3.

#@description Names of the files configuring the list of registered vertex generators
vg_list : string[4] as path =                       \
  "@configuration:scin_vg.lis"    \
  "@configuration:tracker_vg.lis" \
  "@configuration:source_vg.lis"  \
  "@configuration:hall_vg.lis"

3 Vertex configuration

This section defines several vertices configuration :

  • Scintillator vertices: to generate external events coming from calorimeter walls,
  • Tracker vertices: to generate events from the internal drift chamber either on wires surface or inside gas tracking,
  • Source vertices: to produce 2β events or to simulate source contamination.
  • External vertices: to generate events from outside the detector like neutrons

3.1 Scintillator vertices

Insert preamble

#@description A list of vertex generators
#@key_label   "name"
#@meta_label  "type"
  • Generate vertex in the bulk volume of the wrapper for the main calorimeter's scintillator blocks:

    [name="calo_wrapper_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the bulk of the main calorimeter wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    #origin : string = "category=calorimeter_wrapper module={*} side={1} column={0;1;2;4;19} row={0;1;2;12;13}"
    origin : string = "category='calorimeter_wrapper' module={*} side={*} column={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Generate vertex in the bulk volume of the wrapper for the X-calorimeter's scintillator blocks:

    [name="xcalo_wrapper_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the bulk of the X-wall calorimeter wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='xcalo_wrapper' module={*} side={*} column={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Generate vertex in the bulk volume of the wrapper for the γ veto calorimeter's scintillator blocks:

    [name="gveto_wrapper_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the bulk of the gamma veto wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='gveto_wrapper' module={*} side={*} wall={*} column={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Generate vertex from the surface of the main calorimeter's scintillator blocks:

    [name="calo_wrapper_surface" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the surface of the main calorimeter wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='calorimeter_wrapper' module={*} side={*} column={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box top face activation
    mode.surface.top  : boolean = true
    
  • Generate vertex from the surface of the X-calorimeter's scintillator blocks:

    [name="xcalo_wrapper_surface" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the surface of the X-wall calorimeter wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='xcalo_wrapper' module={*} side={*} column={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box top face activation
    mode.surface.top  : boolean = true
    
  • Generate vertex from the surface of the γ veto's scintillator blocks:

    [name="gveto_wrapper_surface" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the surface of the gamma veto wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='gveto_wrapper' module={*} side={*} wall={*} column={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode : string = "surface"
    
    #@description Surface mode box top face activation
    mode.surface.top : boolean = true
    
  • Generate vertex in the PMT glass

    [name="pmt_glass_bulk" type="genvtx::polycone_model_vg"]
    
    #@config Vertex generation from the bulk of the PMT glass wrapper
    
    #@description Logging priority
    logging.priority : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='calorimeter_pmt_glass' module={*} side={*} column={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode : string = "bulk"
    
    #@description Generation within polycone material
    mode.bulk.body : boolean = true
    
    #@description Generate vertex on all polycone frustrum
    polycone.all_frustrum : boolean = true
    

3.2 Tracker vertices

Insert preamble

#@description A list of vertex generators
#@key_label   "name"
#@meta_label  "type"

3.2.1 Vertices on tracker wires

  • Generate vertex from the bulk volume of the anode wires:

    [name="anode_wire_bulk" type="genvtx::cylinder_model_vg"]
    
    #@config Vertex generation from the bulk volume of the anode wires
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='drift_cell_anodic_wire' module={*} side={*} layer={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Generate vertex on the surface of the anode wires:

    [name="anode_wire_surface" type="genvtx::cylinder_model_vg"]
    
    #@config Vertex generation from the surface of the anode wires
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='drift_cell_anodic_wire' module={*} side={*} layer={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box side face activation
    mode.surface.side   : boolean = true
    
    #@description Surface mode box bottom face activation
    mode.surface.bottom : boolean = false
    
    #@description Surface mode box top face activation
    mode.surface.top    : boolean = false
    
  • Generate vertex on the surface of the field wires:

    [name="field_wire_surface" type="genvtx::cylinder_model_vg"]
    
    #@config Vertex generation from the surface of the field wires
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='drift_cell_field_wire' module={*} side={*} layer={*} row={*} set={*} wire={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box side face activation
    mode.surface.side   : boolean = true
    
    #@description Surface mode box bottom face activation
    mode.surface.bottom : boolean = false
    
    #@description Surface mode box top face activation
    mode.surface.top    : boolean = false
    
  • Generate vertex from the bulk volume of the field wires:

    [name="field_wire_bulk" type="genvtx::cylinder_model_vg"]
    
    #@config Vertex generation from the bulk volume of the anode wires
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='drift_cell_field_wire' module={*} side={*} layer={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    

3.2.2 Vertices within tracker volumes (wires included)

  • Generator using category list

    This vertex generator is quite classical in the way that it uses the category file list and especially, the drift_cell_core category. This means that vertices are going to be generated in the cell core, wires included, but not inside the gap between foil and first tracker layer as well as not within the gap between the main calorimeter walls and the last tracker layer. In order to get a full coverage of tracker gaz, you may have a look to the next section.

    [name="tracker_drift_cell_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the core of Geiger cell
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='drift_cell_core' module={*} side={*} layer={*} row={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Vertex generator using hardcoded geometry position

    The following vertex generator defines a box which dimensions are hardcoded by following the dimensions between source foil and calroimeter walls. This means that any change in the geometry setup like an increase of source foil thickness will need to update this box dimensions. Nevertheless, this vertex generator allows to shoot events from the full tracker volumes so basically where tracker gaz will remain.

    To calculate the box size and the box placement, the following dimensions have been used :

    • tracker volume is a box of 405×5008×3030 mm,
    • the source core model has a thickness of 58 mm,
    • the source foil thickness is 167 µm.
    [name="tracker_volume_box" type="genvtx::box_vg"]
    
    #@config Vertex generation from the tracker gaz
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
    #@description Box x size
    box.x : real as length =  433.9165 mm
    
    #@description Box y size
    box.y : real as length = 5008.0 mm
    
    #@description Box z size
    box.z : real as length = 3030.0 mm
    

    Then we define 2 placements : one for the front part (\(x>0\)) of the tracker and another one for the back part (\(x<0\)).

    [name="tracker_front_volume_bulk" type="genvtx::placement_vg"]
    
    #@config Vertex generation from the front tracker volume
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Vertex generator name to place
    vertex_generator.name : string = "tracker_volume_box"
    
    #@description Placement along x-axis
    placement.x : real as length = 217.04175 mm
    
    #@description Placement along y-axis
    placement.y : real as length = 0.0 mm
    
    #@description Placement along z-axis
    placement.z : real as length = 0.0 mm
    
    [name="tracker_back_volume_bulk" type="genvtx::placement_vg"]
    
    #@config Vertex generation from the front tracker volume
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Vertex generator name to place
    vertex_generator.name : string = "tracker_volume_box"
    
    #@description Placement along x-axis
    placement.x : real as length = -217.04175 mm
    
    #@description Placement along y-axis
    placement.y : real as length = 0.0 mm
    
    #@description Placement along z-axis
    placement.z : real as length = 0.0 mm
    

    We finally define a combined vertex generator in order to mix the two previous vertex generators:

    [name="tracker_volume_bulk" type="genvtx::combined_vg"]
    
    #@config Vertex generation from the bulk volume of the tracker
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Vertex generator names
    generators : string[2]  = "tracker_front_volume_bulk" "tracker_back_volume_bulk"
    
    #@description Absolute weight of different generators
    generators.tracker_front_volume_bulk.absolute_weight : real = 1.0
    generators.tracker_back_volume_bulk.absolute_weight  : real = 1.0
    
  • Vertex generator with validator

    We finally use a rejection method based on changes from https://nemo.lpc-caen.in2p3.fr/changeset/15140/genvtx/trunk. The idea is to shoot vertex within SuperNEMO module and then reject the ones not inside tracking_gas.

    [name="tracker_gas_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from 'tracking_gas' material
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 3.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='module' module={*}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
    • Vertex validation

      Here starts the validation configuration. We first add a support to vertex validation

      #@description Vertex validation support
      vertex_validation_support : boolean = true
      

      we define the logging level

      #@description Maximum number of tries for the rejection method
      validation.logging.priority : string = @variant(core:logging_priority|"warning")
      

      and we activate it

      #@description Vertex validation activation
      validation.activation : boolean = true
      

      We also defines the maximum number of tries for the rejection process; above this number the vertex generator throws an error.

      #@description Maximum number of tries for the rejection method
      validation.maximum_number_of_tries : integer = 1000
      

      We finally define the validation id which refers to the cut identifiant with which the validator is registered. Here we want to only keep vertex within the tracking_gas material so we use a in_materials_vertex_validator

      #@description Vertex validation id
      validation.validator_id : string = "genvtx::in_materials_vertex_validator"
      

      and we define the set of materials to be used

      #@description List of materials to be used
      validation.validator_params.materials.ref : string[1] = "tracking_gas"
      

      We can also set the logging priority and the maximum depth to look inside

      # #@description Logging level for validator
      # validation.validator_params.max_depth : integer = 100
      
      #@description Logging level for validator
      validation.validator_params.logging.priority : string = @variant(core:logging_priority|"warning")
      

3.3 Source vertices

Since there are two types of source strips namely "internal" and "external" with different size and then different isotope mass, we first define independent vertices for each of this model and then use a genvtx::combined_vg model to combine with appropriate weights. These vertices are only available with SuperNEMO geometry version greater than 2.0.

Insert preamble

#@description A list of vertex generators
#@key_label   "name"
#@meta_label  "type"

3.3.1 Internal source strips

  • Generate vertex from the bulk volume of the source foil:

    [name="source_strips_internal_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the bulk volume of the inner source strips
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='source_strip' module={*} strip=[1;34]"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Generate vertex from the surface of the source foil:

    [name="source_strips_internal_surface" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the surface of the inner source strips
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='source_strip' module={*} strip=[1;34]"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box back face activation
    mode.surface.back  : boolean = true
    
    #@description Surface mode box front face activation
    mode.surface.front : boolean = true
    

3.3.2 External source strips

  • Generate vertex from the bulk volume of the source foil:

    [name="source_strips_external_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the bulk volume of the outer source strips
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='source_strip' module={*} strip={0;35}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
  • Generate vertex from the surface of the source foil:

    [name="source_strips_external_surface" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the surface of the outer source strips
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='source_strip' module={*} strip={0;35}"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box back face activation
    mode.surface.back  : boolean = true
    
    #@description Surface mode box front face activation
    mode.surface.front : boolean = true
    

3.3.3 Combined vertex

  • Generate vertex from both the bulk volume of all the source foils:

    [name="source_strips_bulk" type="genvtx::combined_vg"]
    
    #@config Vertex generation from the bulk volume of the source strips
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Vertex generator names
    generators : string[2]  = "source_strips_external_bulk" "source_strips_internal_bulk"
    
    #@description Absolute weight of different generators
    generators.source_strips_external_bulk.absolute_weight : real = 0.054
    generators.source_strips_internal_bulk.absolute_weight : real = 1.0
    
  • Generate vertex from the surface of all the source foils:

    [name="source_strips_surface" type="genvtx::combined_vg"]
    
    #@config Vertex generation from the surface of the source strips
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"warning")
    
    #@description Geometry version requirement (not working with version lower than 2.0)
    geometry.setup_requirement : string = "snemo::demonstrator(>=3)"
    
    #@description Vertex generator names
    generators : string[2] = \
      "source_strips_internal_surface" \
      "source_strips_external_surface"
    
    #@description Absolute weight of different generators
    generators.source_strips_external_surface.absolute_weight : real  = 0.054
    generators.source_strips_internal_surface.absolute_weight : real  = 1.0
    

3.4 External vertices

Insert preamble

#@description A list of vertex generators
#@key_label   "name"
#@meta_label  "type"
  • Generate vertex from the surface of the hall walls

    [name="experimental_hall_surface" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the surface of the experimental hall
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"notice")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='hall'"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "surface"
    
    #@description Surface mode box back face activation
    mode.surface.back   : boolean = true
    
    #@description Surface mode box front face activation
    mode.surface.front  : boolean = true
    
    #@description Surface mode box bottom face activation
    mode.surface.bottom : boolean = true
    
    #@description Surface mode box top face activation
    mode.surface.top    : boolean = true
    
    #@description Surface mode box left face activation
    mode.surface.left   : boolean = true
    
    #@description Surface mode box right face activation
    mode.surface.right  : boolean = true
    
  • Generate vertex from the volume of the hall

    [name="experimental_hall_bulk" type="genvtx::box_model_vg"]
    
    #@config Vertex generation from the volume of the experimental hall
    
    #@description Logging priority
    logging.priority  : string = @variant(core:logging_priority|"notice")
    
    #@description Geometry origin of vertex in term of geometry category and addresses (geom ID)
    origin : string = "category='hall'"
    
    #@description Generation mode ("surface" or "bulk")
    mode   : string = "bulk"
    
File under version control - commit 17f7cf0 - 2015-10-24