Skip to content

Improve sTGC simulation of VMM to better handle deadtime and strip neighborOn logic

Alexandre Laurier requested to merge alaurier/athena:new-sTGC-VMMSim into master

Goal is to improve the behaviour of the VMM simulation in the sTGC digitization. Previously, the behaviour of the VMM was taken care of by the VMMSim class which was slow, confusing to read and underperforming in some cases. Previous VMM simulation would track the state of channels through dead/ready/read states for small time steps which could be computationally heavy and the code was very impractical to read. Most importantly, the old VMM simulation was describing the deprecated VMM version 2 instead of the installed VMM3. The deadtime and neighborOn logic changed between VMM2 and VMM3, making the current VMM description deprecated. The current VMM deadtime parameters follow the best estimates from the VMM3 design specifications.

This MR will resolve and close issue outlined in ATLASSIM-3531 by correctly creating 1 SDO per final saved Digit.

Output digit container, RDO container and SDO container are all expected to change and break tests.

We now streamline the whole sTGC DigitizationTool so that the processing of VMM deadtime and strip neighbourOn logic is clear to follow. Some important values for the VMM can now be directly controlled via the python steering scripts instead of having to manually change txt files.

The basic logic for the new VMM simulation is as follows:

  1. If two digits are within the VMM merging time window of 30ns, the 2nd digit in time is merged within the 1st one.
  2. If a digit is above the VMM charge threshold it triggers the VMM to read the charge (save the digit to final container) and causes all following digits in the VMM deadtime window to be lost due to the VMM being in a dead state.
  3. For strips, also apply neighbourOn logic.

The VMM neighbourOn for strips functions by saving strip digits below threshold if an immediate neighbour strip is saved to VMM by having charge above threshold within a reasonable time window. The coded logic follows:

  1. Follow the same hit merging and deadtime logic described above.
  2. If the current strip digit is below threshold, look at the 2 immediate neighbours for above threshold digits within the time window. This informs the decision of saving the current strip digit to VMM or not. This is the simplest implementation since we process 1 strip at the time instead of 1 + 2 neighbours.

This logic was chosen so that we can keep a neat and simple time-ordering of the saved digits, and so that strips are processed exactly 1 at the time.

Cleaned up and more final version of !57672 (closed). Testing is finished and new logic works as intended. Approval received to merge MR from the sTGC software group and the muon software dev team.

@chchau

Edited by Alexandre Laurier

Merge request reports