/SilvacoToPixelAV

Primary LanguagePythonMIT LicenseMIT

Introduction

PixelAV perfroms simulations of silicon sensors: specifically the induced charge (as a function of time) in a pixel sensor array for an incident pion with a defined incident angle and momentum. Inorder to perform these simulations PixelAV needs information of electric fields and weighting fields of these sensors which can be produced using an FEM software capable of simulating fields in silicon material. DF-ISE TCAD was used for this purpose in the past for which the simulation results have been verified and accepted. Currently there is interest to simulate the same using Silvaco TCAD. Since the formats involved with Silvaco are slightly different, codes to modify the simulation framework (DF-ISE + PixelAV) to use Silvaco (Silvaco + PixelAV) instead of DF-ISE are needed, and are what is stored in this repository. The simulation framework cycle will look like the following: Silvaco TCAD simulation -> Parsers (exports silvaco data and converts to a format readable by interpolation codes) -> Interpolation + Alteration (converts to a format required by PixelAV) -> PixelAV simulation.

Parsers

The original author of the scripts to extract data from Silvaco was motivated from this file and credits go to Marco Bomben. These scripts were modified to suit the Silvaco software versions at UIC. More info on code-runs are present in script.sh.

Interpolation, alteration and PixelAV simulation

These functionalities are being performed by codes written by Morris Swartz, JHU.

Validation plots

There are two primary stages of data production: (1) massaged TCAD results and (2) PixelAV.

  1. Massaged TCAD results correspond to the slice-creation, extraction, and merging of TCAD data. This final massaged TCAD data is compared with the DF-ISE TCAD data using validateSilvacoData.py.
  2. Inorder to validate the simulation results from the Silvaco+PixelAV framework, a comparison of results from Silvaco+PixelAV with DF-ISE involving the same sensor structure and simulations, needs to be done. validatePixelAVData.py is the python file that performs this task.

Track generation

The file track_gen_retrace.py was an attempt to simulate a list of track information of charged particles that have hit an inner-tracker sensor module in the CMS detector at CERN. Using the position and momentum information drawn from uniform distributions on the sensor module, the path was retraced to or near the beam pipe. But, the code is still in a preliminary stage as one needs to use relativistic equations of motion. If one is working from the lab frame coordinates at all times, the need to use lorentz transformations are eliminated and thus it was simpler to simulate this task from a different method: implemented in track_gen.py (which is working) with the same objective: to create a list of tracks with uniform pT and inform hit location (X, Y) (sensor module plane) coordinates on the sensor module. The calculation/generation is the reverse of what track_gen_retrace.py does: it creates charged particles on and around the beam pipe and calculates the paths taken and saves the tracks that hit the sensor module onto a .txt file.