Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 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
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
56 changes: 56 additions & 0 deletions VTXdigi_Modular/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
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
)

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 scripts
${PROJECT_SOURCE_DIR}/test/*.py
)

file(COPY ${scripts} 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 ${scripts} 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
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()
175 changes: 175 additions & 0 deletions VTXdigi_Modular/README.md

Large diffs are not rendered by default.

3,449 changes: 3,449 additions & 0 deletions VTXdigi_Modular/UML.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions VTXdigi_Modular/include/IChargeCollector.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// VTXdigi_Modular/include/IChargeCollector.h
#pragma once

#include "TGeoMatrix.h"

struct VTXdigi_Modular;

namespace VTXdigi_tools {

class SimHitWrapper; // forward-declare things in include/VTXdigi_tools.h
class HitMap;

class IChargeCollector {
public:
virtual ~IChargeCollector() = default;
virtual void FillHit(const SimHitWrapper& simHit, HitMap& hitMap, const TGeoHMatrix& trafoMatrix) const = 0;
float GetChargeCollectionDepthCenter() const { return m_chargeCollectionDepthCenter; }

protected:
explicit IChargeCollector(const VTXdigi_Modular& digitizer) : m_digitizer(digitizer) {}

const VTXdigi_Modular& m_digitizer;
float m_chargeCollectionDepthCenter=0; // Defines the vertical center of the charge collection region in the sensitive volume. Needed for correct digiHit positions (and residual plots) with LUTs where the charge collection varies along their depth (like TPSCo 65nm CIS). in mm, wrt. the sensor local w coordinate (w=0 at center of sensitive volume)
};

std::unique_ptr<IChargeCollector> CreateChargeCollector(const VTXdigi_Modular& digitizer, const std::string& algorithm);

} // namespace VTXdigi_tools
Loading