7#ifndef CALORECGPU_TOPOAUTOMATONCLUSTERING_CUDA_H
8#define CALORECGPU_TOPOAUTOMATONCLUSTERING_CUDA_H
22 using CaloRecGPU::Tag_1_1_12_32_18::Tag_1_1_12_32_18;
40 [[nodiscard]]
static constexpr carrier make_seed_tag(
const uint32_t cell,
const uint32_t SNR_pattern,
const bool can_merge_with_others =
true)
62 return tag.is_part_of_cluster();
72 return tag.is_valid();
82 return tag.is_invalid();
92 return tag.is_non_assigned_terminal();
102 return tag.is_non_assigned_grow();
112 return tag.is_seed();
122 return tag.is_grow_or_seed();
132 return tag.propagate();
135 [[nodiscard]]
constexpr uint32_t
index()
const
145 [[nodiscard]]
constexpr uint32_t
SNR()
const
150 [[nodiscard]]
static constexpr uint32_t
SNR(
const TACTag tag)
155 [[nodiscard]]
constexpr uint32_t
counter()
const
162 return tag.counter();
172 return tag.clear_counter_and_no_merge();
187 return tag.can_merge();
197 return tag.cannot_merge();
207 return tag.clear_no_merge_flag();
274 const bool synchronize =
false,
281 const bool synchronize =
false,
288 const bool synchronize =
false,
Holds CPU and GPU versions of the geometry and cell noise information, which are assumed to be consta...
Holds the mutable per-event information (clusters and cells) and provides utilities to convert betwee...
Interface for GPU kernel size optimization (allowing adjustment of kernel sizes to the properties of ...
SimpleHolder< T, MemoryContext::CUDAGPU, true > CUDA_object
Holds an object of type T in CUDA GPU memory.
SimpleHolder< T, MemoryContext::CPU, true > CPU_object
Holds an object of type T in CPU memory.
void signalToNoise(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TACOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
void register_kernels(IGPUKernelSizeOptimizer &optimizer)
void clusterGrowing(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TACOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
void cellPairs(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TACOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
CaloRecGPU::TagBase::carrier carrier
A tag with two bit flags, then 12 bits (for a counter), 32 bits (for a float) and 18 bits (for a cell...
constexpr uint32_t get_18_bits() const
constexpr uint32_t get_12_bits() const
constexpr carrier unset_second_flag() const
static constexpr carrier make_generic_tag(const uint32_t bits_18, const uint32_t bits_32, const uint32_t bits_12, const bool flag_2, const bool flag_1)
static constexpr carrier s_12_bit_mask
static constexpr carrier s_second_flag_mask
static constexpr carrier s_18_bit_mask
constexpr uint32_t get_32_bits() const
static constexpr unsigned int s_12_bit_offset
constexpr bool get_second_flag() const
CaloRecGPU::Helpers::CPU_object< TopoAutomatonOptions > m_options
void sendToGPU(const bool clear_CPU=false)
CaloRecGPU::Helpers::CUDA_object< TopoAutomatonOptions > m_options_dev
constexpr uint32_t counter() const
static constexpr bool cannot_merge(const TACTag tag)
constexpr bool is_valid() const
static constexpr uint32_t index(const TACTag tag)
static constexpr bool is_grow_or_seed(const TACTag tag)
constexpr bool is_non_assigned_terminal() const
constexpr uint32_t index() const
static constexpr carrier make_grow_tag()
static constexpr bool is_non_assigned_terminal(const TACTag tag)
static constexpr carrier clear_no_merge_flag(const TACTag tag)
static constexpr bool is_non_assigned_grow(const TACTag tag)
constexpr bool is_invalid() const
static constexpr carrier s_no_can_merge_flag
constexpr uint32_t SNR() const
static constexpr bool is_part_of_cluster(const TACTag tag)
static constexpr bool is_valid(const TACTag tag)
static constexpr carrier s_grow_tag
static constexpr bool is_invalid(const TACTag tag)
constexpr bool can_merge() const
static constexpr uint32_t SNR(const TACTag tag)
static constexpr carrier s_tag_propagation_delta
constexpr carrier set_index(const uint32_t new_index) const
static constexpr bool can_merge(const TACTag tag)
constexpr bool is_part_of_cluster() const
static constexpr uint32_t s_start_counter
constexpr bool cannot_merge() const
static constexpr carrier propagate(const TACTag tag)
constexpr carrier clear_counter_and_no_merge() const
static constexpr uint32_t counter(const TACTag tag)
constexpr bool is_non_assigned_grow() const
constexpr bool is_grow_or_seed() const
constexpr bool is_seed() const
constexpr carrier propagate() const
static constexpr carrier make_seed_tag(const uint32_t cell, const uint32_t SNR_pattern, const bool can_merge_with_others=true)
static constexpr carrier clear_counter_and_no_merge(const TACTag tag)
static constexpr carrier s_minimum_seed_tag
static constexpr carrier s_terminal_tag
static constexpr carrier make_terminal_tag()
constexpr carrier clear_no_merge_flag() const
static constexpr bool is_seed(const TACTag tag)
unsigned int valid_calorimeter_by_sampling
bool treat_L1_predicted_as_good
bool keep_significant_cells
constexpr bool uses_calorimeter_by_sampling(const int sampling) const
Checks if the calorimeter is used through the sampling to which the cell belongs.
bool completely_exclude_cut_seeds
float snr_threshold_for_keeping_cells
bool limit_HECIW_and_FCal_neighs
unsigned int neighbour_options
unsigned int valid_sampling_seed
constexpr bool uses_seed_sampling(const int sampling) const