The CLUEstering algorithm (here the gitLab repo)
was adapted to run in the Gaudi software framework and to support EDM4hep data format for inputs and outputs.
CLUEstering uses the alpaka library to run both on CPUs and GPUs, currently NVIDIA and AMD GPUs are supported. The alpaka library is fetched directly by CLUEstering and downloaded if not available. It requires Boost >1.75 to work.
CLUEstering is able to perform the clustering in different number of dimensions, here it has been specialised for 2D and 3D clustering.
The following setup is considering a machine with cvmfs and OS compatible with the Key4hep environment.
# source key4hep environment
source /cvmfs/sw.hsf.org/key4hep/setup.sh
# then setup this project
git clone https://github.com/key4hep/k4Clue.git
cd k4Clue
cmake -S . -B build
cmake --build build
# if installation is needed
mkdir install
cd build/ ; cmake .. -DCMAKE_INSTALL_PREFIX=../install; make installCLUEstering needs four parameters as input:
dcis the critical distance used to compute the local density;rhocis the minimum local density for a point to be promoted as a seed;dmis the maximum distance considered to search for followers.- (optional)
seed_dcis the critical distance used to promote a high density point as a seed (if -1 is set equal todc);
(
In the original article and implementation, four parameters were needed (dc, rhoc, deltao and deltac):
deltaois the maximum distance for a point to be linked to a nearest higher point (nowdm).deltacis the minimum distance for a local high density point to be promoted as a Seed (nowseed_dc). )
CLUEstering uses a spatial index to access and query spatial data points efficiently. Thus, a multi-layer tessellation is created which divides the space into fixed bins. The limits of the tessellated space are defined by the algorithm based on the points in input, while the size of the bins can be chosen by the user (as a fourth input parameter to the algorithm). This algorithm is detector agnostic, therefore it does not need any information on the detector geometry to run.
If the projects compiles without errors, you can go run the CLUE algorithm by
cd build/
./run gaudirun.py ../gaudi_opts/clue_gaudi_wrapper.pyCLUE parameters and input/output file name are contained in gaudi_opts/clue_gaudi_wrapper.py.
The input files are using the EDM4HEP data format and the ECALBarrel and ECALEndcap CalorimeterHit collections are required.
The output file output.root contains CLUEClusters (currently also transformed as CaloHits in CLUEClustersAsHits).
A simple recipe to run k4CLUE as part of the CLIC reconstruction chain can be found here.
If you encounter any error when compiling or running this project, please contact:
- Marco Rovere, [email protected]
- Felice Pantaleo, [email protected]
- Aurora Perego, [email protected]
