Step Hit Processor Configuration

1 Introduction

This file holds the configuration for the different Step Hit Processors (SHP) used with SuperNEMO simulations. The basic idea behind SHP is to treat Geant4 step hits given the sensitive categories in where they occurs. Each Geant4 step is "digitized" and if the step is within a sensitive category with attached SHP then the step is processed. For SuperNEMO simulations there are mainly two kind of physics processors: Geiger cells and calorimeter processors.

There is also a third kind of processors which handles visual hits to make them visible given a list of sensitive categories.

2 Processors

#@description A sample list of setups
#@key_label   "name"
#@meta_label  "type"

2.1 Calorimeter processors

This processor collects all MC true hits from the calorimeter scintillator volumes (with the calorimeter_SD sensitive category property) and build calorimeter-like "calo" hits associated to the calorimeter scintillator block GID. The purpose of this processing is to build a single "calo" hit from the collection of true hits produced by a particle traversing the block. Both the start time and the total energy deposit are recorded in the "calo" hit.

There are few options for calorimeter processors :

  • a hit.category is attached to each Geant4 step hits,
  • the corresponding sensitive.category must be set,
  • cluster.time_range and cluster.time_space are related to the clustering of Geant4 step hits.

The basic idea is to aggregate Geant4 step hits given the cluster.time_range and the cluster.time_space into a unique calorimeter hit.

2.1.1 Main wall

[name="calorimeter.hit_processor" type="snemo::simulation::calorimeter_step_hit_processor"]

#@config The step hit processor for the calorimeter simulated hits

#@description Logging flag
logging.priority               : string = @variant(core:logging_priority|"warning")
#@description The name of the category of output MC hits generated by this processor
hit.category                   : string = "calo"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category             : string = "calorimeter_SD"
#@description Flag to activate a preallocated buffer/pool of MC hits to optimize memory management
use_private_pool               : boolean = true
#@description Initial capacity of the buffer/pool of MC hits
private_pool_capacity          : integer = 10
#@description The name of the geometry category to be attached to the output MC hits
mapping.category               : string = "calorimeter_block"
#@description The names of the subaddresses not to be considered in the GID
mapping.category.any_addresses : string[1] = "part"
#@description The time spread of primary MC step hits to apply the clusterization
cluster.time_range             : real as time = 1.0 ns
#@description The spacial spread of primary MC step hits to apply the clusterization
cluster.space_range            : real as length = 10.0 mm

2.1.2 X-wall

[name="xcalo.hit_processor" type="snemo::simulation::calorimeter_step_hit_processor"]

#@config The step hit processor for the auxiliary calorimeter simulated hits

#@description Logging flag
logging.priority    : string = @variant(core:logging_priority|"warning")
#@description The name of the category of output MC hits generated by this processor
hit.category        : string  = "xcalo"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category  : string  = "xcalorimeter_SD"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
mapping.category    : string  = "xcalo_block"
#@description The time spread of primary MC step hits to apply the clusterization
cluster.time_range  : real as time   =  1.0 ns
#@description The spacial spread of primary MC step hits to apply the clusterization
cluster.space_range : real as length = 10.0 mm

2.1.3 γ veto

[name="gveto.hit_processor" type="snemo::simulation::calorimeter_step_hit_processor"]

#@config The step hit processor for the gamma veto simulated hits

#@description Logging flag
logging.priority    : string = @variant(core:logging_priority|"warning")
#@description The name of the category of output MC hits generated by this processor
hit.category        : string  = "gveto"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category  : string  = "gveto_SD"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
mapping.category    : string  = "gveto_block"
#@description The time spread of primary MC step hits to apply the clusterization
cluster.time_range  : real as time   =  1.0 ns
#@description The spacial spread of primary MC step hits to apply the clusterization
cluster.space_range : real as length = 10.0 mm

2.2 Geiger cells processors

This processor collects all MC true hits from the drift cell volumes (with the tracker_SD sensitive category property) and builds Geiger-like hits associated to a given drift cell ID. It generates randomly distributed primary ionizations along the true step of a given particle (electron/positron, muon, alpha…) and records the time and position of the ionization process that is closest to the anode wire. Optionally it is possible to record the true time and position of the minimal approach distance to the anode wire.

[name="gg.hit_processor" type="snemo::simulation::gg_step_hit_processor"]

#@config The step hit processor for the Geiger simulated hits

#@description Logging flag
logging.priority       : string = @variant(core:logging_priority|"warning")
#@description The name of the category of output MC hits generated by this processor
hit.category           : string  = "gg"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category     : string  = "tracker_SD"
#@description The name of the geometry category to be attached to the output MC hits
mapping.category       : string  = "drift_cell_core"
#@description Mean ionization energy used to randomize electron-ion pairs along the particle path
mean_ionization_energy : real as energy = 50.0 eV
#@description For each cell traversed by a track, compute the position of maximal approach to the anode wire (debug purpose only so default is 0)
compute_maximal_approach_position : boolean = false

2.3 Visualization processors

2.3.1 Dedicated step hit processors

[name="calorimeter.visu.hit_processor" type="mctools::push_all_step_hit_processor"]

#@config The step hit processor for collecting the calorimeter simulated hits

#@description Logging flag
logging.priority   : string = @variant(core:logging_priority|"warning")
#@description The category of output hit associated to this processor
hit.category       : string = "__visu.tracks.calo"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category : string = "calorimeter_SD"

[name="xcalorimeter.visu.hit_processor" type="mctools::push_all_step_hit_processor"]

#@config The step hit processor for collecting the calorimeter simulated hits

#@description Logging flag
logging.priority   : string = @variant(core:logging_priority|"warning")
#@description The category of output hit associated to this processor
hit.category       : string = "__visu.tracks.calo"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category : string = "xcalorimeter_SD"

[name="gveto.visu.hit_processor" type="mctools::push_all_step_hit_processor"]

#@config The step hit processor for collecting the calorimeter simulated hits

#@description Logging flag
logging.priority   : string = @variant(core:logging_priority|"warning")
#@description The category of output hit associated to this processor
hit.category       : string = "__visu.tracks.calo"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category : string = "gveto_SD"

[name="tracker.visu.hit_processor" type="mctools::push_all_step_hit_processor"]

#@config The step hit processor for collecting the tracker simulated hits

#@description Logging flag
logging.priority   : string = @variant(core:logging_priority|"warning")
#@description The category of output hit associated to this processor
hit.category       : string = "__visu.tracks"
#@description The name of the sensitive MC hits that must be processed to fill the output hit category
sensitive.category : string = "tracker_SD"

2.3.2 Enabling all volumes

[name="all.volumes.visu.hit_processor" type="mctools::push_all_step_hit_processor"]
#@config The step hit processor for collecting all the visu hits
logging.priority                  : string = @variant(core:logging_priority|"warning")
hit.category                      : string  = "__visu.tracks"
sensitive.category                : string  = "__all.volumes.SD"
sensitive.record_track_id         : boolean = true
sensitive.record_primary_particle : boolean = true
geometry.volumes.all              : boolean = true
geometry.volumes.excluded         : string[2] = "field_wire.model.log" "anode_wire.model.log"

2.3.3 Special visual step hit processors

  • Source hits
    [name="source.visu.hit_processor" type="mctools::push_all_step_hit_processor"]
    #@config The step hit processor for collecting simulated hits within source strip
    logging.priority   : string = @variant(core:logging_priority|"warning")
    hit.category       : string    = "__visu.tracks"
    sensitive.category : string    = "__source.SD"
    geometry.volumes   : string[2] = \
                       "source_external_strip.model.log" \
                       "source_internal_strip.model.log"
    
  • Wires hits
    [name="wires.visu.hit_processor" type="mctools::push_all_step_hit_processor"]
    #@config The step hit processor for collecting simulated hits within tracker's wires
    logging.priority      : string = @variant(core:logging_priority|"warning")
    hit.category          : string    = "__visu.tracks"
    sensitive.category    : string    = "__wires.SD"
    geometry.volumes      : string[2] = "field_wire.model.log" "anode_wire.model.log"
    visu.highlighted_hits : boolean = true
    
  • Films hits
    [name="films.visu.hit_processor" type="mctools::push_all_step_hit_processor"]
    #@config The step hit processor for collecting simulated hits within tracker's wires
    logging.priority   : string = @variant(core:logging_priority|"warning")
    hit.category       : string  = "__visu.tracks"
    sensitive.category : string  = "__films.SD"
    geometry.volumes.with_materials : string[3] = "std::mylar" "std::nylon" "std::pfte"
    visu.highlighted_hits : boolean = false
    
  • Tracking chamber
    [name="tracking_gas.visu.hit_processor" type="mctools::push_all_step_hit_processor"]
    #@config The step hit processor for collecting simulated hits within tracking gas
    logging.priority   : string = @variant(core:logging_priority|"warning")
    hit.category       : string  = "__visu.tracks"
    sensitive.category : string  = "__tracking_gas.SD"
    geometry.volumes.with_materials : string[1] = "tracking_gas"
    geometry.volumes.excluded       : string[1] = "drift_cell_core.model.log"
    
File under version control - commit 17f7cf0 - 2015-10-24