Skip to content

A modular silicon (vertex) digitizer, acting on pixel-level#81

Draft
JonaDilg wants to merge 48 commits into
key4hep:mainfrom
JonaDilg:VTXdigi_Modular
Draft

A modular silicon (vertex) digitizer, acting on pixel-level#81
JonaDilg wants to merge 48 commits into
key4hep:mainfrom
JonaDilg:VTXdigi_Modular

Conversation

@JonaDilg

@JonaDilg JonaDilg commented May 7, 2026

Copy link
Copy Markdown

BEGINRELEASENOTES

  • Adding a modular vertex digitiser, based on sharing the charge deposited in the sensor across neighboring pixels
  • Includes an implementation of lookup table (LUT)-based charge sharing, where a LUT from sensor-R&D simulations encodes the charge sharing behaviour (see README)
    ENDRELEASENOTES

This PR is work in progress, things I am working on at the moment are:

  • finishing the readme, with the necessary changes to simulation steering, and an example digitisation steering file
  • including generic LUTs (for general use
  • creating a test case, with simulation, digitsation, tracking in the IDEA detector

Other notes:

  • We plan to make LUTs for TPSCo 65nm CIS sensors available (this is what was developed for ALICE 3). We are thinking about the best way to do this, politically.

…th the drifting approach by Jessy Daniel, and the lookup-table approach by Armin Ilg and Jona Dilg
…). Implementing class VTXdigi_tools::PixelChargeMatrix()
…o-charge-sharing ChargeCollector to test. Works as expected.
… std::vector<int> with an entry for every pixel. For small pixel occupancy O(0.001%) this is A LOT faster.
…el (harder than it looked at first...). Refactoring from std::array<int,2> to std::pair<int,int> for pixel indices etc.
…hich simTrackerHits contribute to a cluster. Implementing creation of digiHits for clusters. This break outputting all pixelHits as digiHits directly, remains todo.
…by using shared pointers. cleaning up event loop & moving helper functions ot VTXdigi_tools.
…sor. Verify output histograms agains VTXdigi_Allpix2 implementation
…vely slow, performance improvements probably from LUT (or from hitmap)
… and adding doxygen comments. Implementing a custom simHit truthPosition, to be defined by the ChargeCollection Algorithm
…s (cluster-size vs global z; residual vs global z). Implementing thresholding, and charge and time smearing. Time smearing is currently broken.
…ks exactly how I assumed it would, but you need to pass rndmEngine AND rndmGenSvc to the ApplicationMgr as ExtSvc. Also: remove unused SurfaceMap parameter from SimHitWrapper.
…Collector_LUT::DistributeSegmentCharge() and HitMap.FillCharge()
…nclusions and moving functions to classes they should be a member of)
…etion region depth, implementing checks on active vs total sensor volume
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant