Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
b34d8db
VTXdigi: Create skeleton for revamped vertex digitiser, to include bo…
JonaDilg Nov 28, 2025
091d987
VTXdigi: Create readme with preliminary UML diagram
JonaDilg Dec 1, 2025
38732f4
VTXdigi: Add install target to makefile, to make compilation quicker
JonaDilg Dec 1, 2025
0392263
VTXdigi: Fix the structure to not have circular dependecies
JonaDilg Dec 1, 2025
f2647b8
VTXdigi: Transfer (and improve) initialization from VTXdigi_Allpix2
JonaDilg Dec 1, 2025
760f179
VTXdigi: Fixing and clarifying VTXdigi_Modular::InitLayersAndSensors(…
JonaDilg Feb 3, 2026
f88c86a
VTXdigi: adding pixel- and binning-focused VTXdigi_tools. Implementin…
JonaDilg Feb 4, 2026
350addd
VTXdigi: Implementing loop over sensors & hits on each sensor in the …
JonaDilg Feb 10, 2026
01eaf1a
VTXdigi: Skeleton for event-loop is mostly done. Implemented simple n…
JonaDilg Feb 10, 2026
2ce15de
VTXdigi: Better eventloop strucutre, matching pixelHits to closest si…
JonaDilg Feb 11, 2026
3b10c88
VTXdigi: adding 1d-histograms
JonaDilg Feb 11, 2026
0062ff4
VTXdigi: implementing a HitMap based on std::unordered_map instead on…
JonaDilg Feb 12, 2026
0f8626d
VTXdigi: implementing ChargeCollector_Debug (to create L-shaped clust…
JonaDilg Feb 17, 2026
6b14eff
VTXdigi: implement clustering algorithm. Does not match simHits to cl…
JonaDilg Feb 17, 2026
d4c75b8
VTXdigi: Implementing saving which simHits contribute charge to a pix…
JonaDilg Feb 17, 2026
eb79f4d
VTXdigi: Implementing DFS clustering algorithm. Implementing saving w…
JonaDilg Feb 18, 2026
1b4052e
VTXdigi: refactoring event loop for better readability
JonaDilg Feb 20, 2026
c9bd1fc
VTXdigi: Optimizing unnecessarily copying pixels to Clutster objects …
JonaDilg Feb 22, 2026
cb00193
VTXdigi: Implement reconstructing the particle's path through the sen…
JonaDilg Feb 22, 2026
fb5f365
VTXdigi: flesh out ChargeCollector_LUT(), implement parsing LookupTab…
JonaDilg Feb 24, 2026
70893dd
VTXdigi: finished implementing LUT-based charge collection. Is relati…
JonaDilg Feb 24, 2026
6d14b27
VTXdigi: ~40% optimisation, still loads to do. Why are debugging mess…
JonaDilg Feb 24, 2026
6f708d2
VTXdigi: convert from managed to raw pointers, ownership management i…
JonaDilg Feb 25, 2026
4d250c0
VTXdigi: Streamlining SimHitWrapper vs SimTrackerHit passing, cleanup…
JonaDilg Feb 26, 2026
34bc767
VTXdigi: Fixed shifting the truth-pos along the path. Added histogram…
JonaDilg Feb 27, 2026
cd1eb53
VTXdigi: fixed problem with random number generator. Turns out it wor…
JonaDilg Mar 2, 2026
654106f
VTXdigi: another 15% performance increase from improvements to Charge…
JonaDilg Mar 2, 2026
2f4ec9e
VTXdigi: small plotting improvements
JonaDilg Mar 2, 2026
218f36f
Adding make install rule to Makefile
JonaDilg Mar 2, 2026
01b2131
VTXdigi: adding counters. Cleaning up (mainly removing unnecessatry i…
JonaDilg Mar 4, 2026
a360c02
VTXdigi: Path computation cleanup. Adding MANY histograms
JonaDilg Mar 31, 2026
17b08e7
VTXdigi: More plots, minor fixes
JonaDilg Apr 10, 2026
1f39c70
VTXdigi: Small pre-PR fixes
JonaDilg Apr 15, 2026
4a48153
VTXdigi: Work on readme. not fully done.
JonaDilg Apr 15, 2026
1ab00b1
VTXdigi: implementing 3 options for digiHit position uncertainty esti…
JonaDilg Apr 17, 2026
4fbcc03
VTXdigi: add correct timing timestamping
JonaDilg Apr 17, 2026
bf7f68d
VTXdigi: Updated UML. further work on README
JonaDilg May 7, 2026
850fe0b
VTXdigi: added skeleton for testing
JonaDilg May 7, 2026
ef57916
Merge branch 'main' into VTXdigi_Modular
JonaDilg May 7, 2026
9c85ee3
VTXdigi: add VTXdigi_Modular to repository content
JonaDilg May 7, 2026
084a423
VTXdigi: add a bunch of debugging histograms
JonaDilg May 26, 2026
6fd7a44
VTXdigi: implementing config param to disable checking the pitch and …
JonaDilg May 26, 2026
3e6c57f
VTXdigi: printing sensor dimensions
JonaDilg May 26, 2026
00962de
VTXdigi: Testing options to find sensitive surface thickness
JonaDilg May 27, 2026
be47646
VTXdigi: Reading sensor active volume from dd4hep::Solid to find depl…
JonaDilg May 27, 2026
3718793
VTXdigi: final fix to getting sensor dimensions from solid and sensit…
JonaDilg May 28, 2026
ceb44f5
VTXdigi: Implementing reading ChargeCollectionDepthCenter from the LU…
JonaDilg Jun 8, 2026
8928b1a
VTXdigi: Debugging cluster size and residual. Not successful yet.
JonaDilg Jun 24, 2026
e1b5ec7
VTXdigi: Include diagonal neighbours in clusters (so far, only direct…
JonaDilg Jul 13, 2026
422c2b0
VTXdigi: implement grid traversal algo for LUT digitizer
JonaDilg Jul 15, 2026
dc2d34a
cleaning up unused histograms, correct CausedByGeneratorMCParticle im…
Aug 4, 2026
9aaeed5
VTXdigi: revamp residuals. Now grouping simhits by their MCParticle t…
Aug 5, 2026
d55f789
VTXdigi: implement correct secondary/delta check via MCParticle produ…
Aug 6, 2026
95b219e
VTXdigi: first attempt at extracting the eta function from the LUT. C…
Aug 7, 2026
99733ad
VTXdigi: fixing two obvious bugs. Derived eta func looks reasonable a…
Aug 7, 2026
0bdcad7
VTXdigi: implementing eta distribution plot (cluster truth pos vs clu…
Aug 12, 2026
a9e0038
VTXdigi: moving from std::pair<T,T> to std::array<T,2> for u/v coordi…
Aug 12, 2026
0766289
VTXdigi: revamping Eta Distribution to implement the definition used …
Aug 12, 2026
5a3387d
VTXdigi: Implement eta distribution. Revamped deriving it from the LU…
Aug 13, 2026
6eb81d6
VTXdigi: implementing correct Corryvreckan-like eta function. Seems t…
Aug 17, 2026
fef59ec
VTXdigi: Renaming coordinate system transformers to be more consisten…
Aug 17, 2026
df68ec1
VTXdigi: Updated Readme with Eta corr. Removed unneccessary condition…
Aug 18, 2026
2cc8c4a
VTXdigi: fix wrong EntryMinimu (was left wrong from testing)
Aug 20, 2026
6dd2a9b
VTXdigi: Implemented a working test using upstream ALLEGRO o1_v03 and…
Aug 20, 2026
053424a
VTXdigi: flipping residual definition from (res = reco - truth) to (r…
Aug 21, 2026
cf74f14
VTXdigi: chasing (&fixing) an error where the cluster pos would lie o…
Aug 21, 2026
a1174c9
VTXdigi: adding option to apply eta correction only to clusters of wi…
Aug 21, 2026
785e7b8
VTXdigi: remove eta-correction code. See README comment on this
Aug 29, 2026
87c863a
VTXdigi: correcting highestEnergyParticleOnSensor hists to always use…
Aug 29, 2026
fca2e85
VTXdigi: implement option to only use pixels and either end of a clus…
Aug 31, 2026
ec40b2f
VTXdigi: Implement more realistic charge deposition model (from linea…
Aug 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ endfunction()
add_subdirectory(DCHdigi)
add_subdirectory(ARCdigi)
add_subdirectory(VTXdigi)
add_subdirectory(VTXdigi_Modular)
add_subdirectory(VTXdigiDetailed)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
add_subdirectory(Tracking)
Expand Down
19 changes: 19 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,25 @@ make:
printf "#!/bin/bash\nif [ -n \"\$$KEY4HEP_STACK\" ];\nthen\n echo '----> Info: Key4hep stack already set up. Skipping...'\nelse\n source /cvmfs/sw-nightlies.hsf.org/key4hep/setup.sh\nfi\nexport LD_LIBRARY_PATH=${CURDIR}/install/lib:${CURDIR}/install/lib64:\$$LD_LIBRARY_PATH\nexport PYTHONPATH=${CURDIR}/install/python:\$$PYTHONPATH\n" > ${CURDIR}/setup.sh ; \
chmod +x ${CURDIR}/setup.sh

.PHONY: install
install:
cd build ; \
make install -j8 ; \
cd .. ; \
export LD_LIBRARY_PATH=${CURDIR}/install/lib:${CURDIR}/install/lib64:$$LD_LIBRARY_PATH ; \
export PYTHONPATH=${CURDIR}/install/python:$$PYTHONPATH ; \
printf "#!/bin/bash\nif [ -n \"\$$KEY4HEP_STACK\" ];\nthen\n echo '----> Info: Key4hep stack already set up. Skipping...'\nelse\n source /cvmfs/sw-nightlies.hsf.org/key4hep/setup.sh\nfi\nexport LD_LIBRARY_PATH=${CURDIR}/install/lib:${CURDIR}/install/lib64:\$$LD_LIBRARY_PATH\nexport PYTHONPATH=${CURDIR}/install/python:\$$PYTHONPATH\n" > ${CURDIR}/setup.sh ; \
chmod +x ${CURDIR}/setup.sh

debug:
cd build ; \
make install -j8 -d ; \
cd .. ; \
export LD_LIBRARY_PATH=${CURDIR}/install/lib:${CURDIR}/install/lib64:$$LD_LIBRARY_PATH ; \
export PYTHONPATH=${CURDIR}/install/python:$$PYTHONPATH ; \
printf "#!/bin/bash\nif [ -n \"\$$KEY4HEP_STACK\" ];\nthen\n echo '----> Info: Key4hep stack already set up. Skipping...'\nelse\n source /cvmfs/sw-nightlies.hsf.org/key4hep/setup.sh\nfi\nexport LD_LIBRARY_PATH=${CURDIR}/install/lib:${CURDIR}/install/lib64:\$$LD_LIBRARY_PATH\nexport PYTHONPATH=${CURDIR}/install/python:\$$PYTHONPATH\n" > ${CURDIR}/setup.sh ; \
chmod +x ${CURDIR}/setup.sh

.PHONY: clean
clean:
@ (rm -r build install && rm setup.sh) || true
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ make get_data
* `ARCdigi`: ARC digitization (for now, this step produces 'reco' collection)
* `VTXdigi`: vertex detector digitization (for now, this step produces 'reco' collection)
* `VTXdigiDetailed`: vertex detector and silicon sensors tracker detector digitization with detailed charge readout (for now, this step produces 'reco' collection)
* `VTXdigi_Modular`: silicon pixel digitizer, shares charge deposition across neighboring pixels. Supports different charge-sharing implementations, mainly lookup table-based implementation for now. Envisioned to be merged with the drift-bases implementation from `VTXdigiDetailed` in the future. (for now, this step produces 'reco' collection)
* `Tracking`: tracking algorithms orchestrating [GenFit](https://github.com/GenFit/GenFit)

## Execute Examples
Expand Down
58 changes: 58 additions & 0 deletions VTXdigi_Modular/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
set(PackageName VTXdigi_Modular)

project(${PackageName})

file(GLOB sources
${PROJECT_SOURCE_DIR}/src/*.cpp
)

file(GLOB headers
${PROJECT_SOURCE_DIR}/include/*.h
)

gaudi_add_module(${PackageName}
SOURCES ${sources}
LINK
Gaudi::GaudiKernel
EDM4HEP::edm4hep
k4FWCore::k4FWCore
k4FWCore::k4Interface
DD4hep::DDRec
ROOT::MathCore
)

target_include_directories(${PackageName} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)

set_target_properties(${PackageName} PROPERTIES PUBLIC_HEADER "${headers}")

file(GLOB test_scripts ${PROJECT_SOURCE_DIR}/test/*.py )

file(GLOB test_data ${PROJECT_SOURCE_DIR}/test/*.init ) # test input

file(COPY ${test_scripts} ${test_data} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/test)

install(TARGETS ${PackageName}
EXPORT ${CMAKE_PROJECT_NAME}Targets
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/@{CMAKE_PROJECT_NAME}" COMPONENT dev
)

install(FILES ${test_scripts} ${test_data} DESTINATION test)

set(test_name "test_runVTXdigi_Modular")
set(test_script "${CMAKE_CURRENT_SOURCE_DIR}/test/test.sh")
add_test(NAME ${test_name}
COMMAND bash ${test_script}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
set_tests_properties(${test_name} PROPERTIES
TIMEOUT 2400 # initializing Geant4 takes about a million years
ENVIRONMENT "SOURCE_DIR_TEST=${CMAKE_CURRENT_SOURCE_DIR}/test;K4RECTRACKER=${CMAKE_INSTALL_PREFIX}/share/k4RecTracker;PATH=${CMAKE_INSTALL_PREFIX}/bin:$ENV{PATH};PYTHONPATH=${CMAKE_INSTALL_PREFIX}/python:${CMAKE_CURRENT_SOURCE_DIR}/test:$ENV{PYTHONPATH};LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib64:$ENV{LD_LIBRARY_PATH}"
)
if(COMMAND set_test_env)
set_test_env(${test_name})
endif()
Loading