|
ATLAS Offline Software
|
Go to the documentation of this file.
7 #ifndef CALORECGPU_TOPOAUTOMATONSPLITTING_CUDA_H
8 #define CALORECGPU_TOPOAUTOMATONSPLITTING_CUDA_H
25 using CaloRecGPU::Tag_1_1_12_32_18::Tag_1_1_12_32_18;
53 [[nodiscard]] constexpr int32_t
index()
const
70 return tag.energy_bits();
73 [[nodiscard]] constexpr int32_t
counter()
const
95 return tag.is_primary();
105 return tag.is_secondary();
145 return tag.set_primary();
155 return tag.clear_primary();
165 return tag.set_shared();
175 return tag.clear_shared();
185 return tag.is_valid();
195 return tag.is_invalid();
207 return tag.is_part_of_original_cluster();
217 return tag.is_part_of_splitter_cluster();
227 return tag.is_shared();
237 return tag.is_non_assigned_part_of_split_cluster();
273 return tag.ordering_bits();
296 return tag.is_secondary_maximum_seed();
311 return tag.is_secondary_maxima_eliminator();
321 return tag.propagate();
380 template <
size_t i = 0,
class Type =
float>
384 "Cannot access outside of temporary bounds...");
389 template <
size_t i = 0,
class Type =
float>
393 "Cannot access outside of temporary bounds...");
398 template <
size_t i = 0,
class Type =
float>
401 return this->get_cells_extra_array<i, Type>()[j];
404 template <
size_t i = 0,
class Type =
float>
407 return this->get_cells_extra_array<i, Type>()[j];
410 template <
size_t i = 0,
class Type =
float>
414 "Cannot access outside of temporary bounds...");
419 template <
size_t i = 0,
class Type =
float>
423 "Cannot access outside of temporary bounds...");
428 template <
size_t i = 0,
class Type =
float>
431 return this->get_cluster_extra_array<i, Type>()[j];
434 template <
size_t i = 0,
class Type =
float>
437 return this->get_cluster_extra_array<i, Type>()[j];
496 const bool synchronize =
false,
503 const bool synchronize =
false,
510 const bool synchronize =
false,
517 const bool synchronize =
false,
524 const bool synchronize =
false,
528 #endif //CALORECGPU_TOPOAUTOMATONSPLITTING_CUDA_H
constexpr bool is_secondary() const
constexpr carrier set_primary() const
constexpr carrier clear_primary() const
static constexpr bool is_part_of_original_cluster(const TASTag tag)
constexpr bool get_second_flag() const
constexpr carrier prepare_for_sharing(const TASTag other_tag) const
void sendToGPU(const bool clear_CPU=false)
static constexpr carrier clear_primary(const TASTag tag)
static constexpr carrier clear_shared(const TASTag tag)
constexpr bool is_non_assigned_part_of_split_cluster() const
static constexpr carrier s_last_non_assigned_tag
constexpr static unsigned int s_12_bit_offset
static constexpr carrier s_tag_propagation_delta
constexpr static int s_size
IEEE754_like< 23, 8 > StandardFloat
constexpr carrier clear_energy() const
Holds one objects of type \T in memory context Context.
void splitClusterGrowing(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TASOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
constexpr Type * get_cells_extra_array()
constexpr static bool is_shared(const TASTag tag)
unsigned int valid_sampling_primary
constexpr bool is_valid() const
static constexpr uint32_t s_start_counter
constexpr static uint32_t energy_to_storage(const uint32_t energy_pattern)
constexpr uint32_t energy_bits() const
CaloRecGPU::Helpers::CPU_object< TopoAutomatonSplittingOptions > m_options
constexpr uint32_t get_18_bits() const
constexpr carrier update_index(const uint32_t new_index) const
constexpr static int32_t index(const TASTag tag)
constexpr const Type * get_cluster_extra_array() const
constexpr bool get_first_flag() const
constexpr carrier propagate() const
constexpr carrier update_cell(const uint32_t new_index, const uint32_t new_energy) const
constexpr bool uses_primary_sampling(const unsigned int sampling) const
constexpr bool is_secondary_maxima_eliminator() const
static constexpr carrier s_secondary_maxima_eliminator_tag
constexpr carrier clear_shared() const
static constexpr carrier set_primary(const TASTag tag)
static constexpr carrier make_cluster_cell_tag(const uint16_t original_cluster_index)
int original_cluster_map[CaloRecGPU::NMaxClusters]
static constexpr bool is_valid(const TASTag tag)
constexpr carrier set_second_flag() const
static constexpr carrier propagate(const TASTag tag)
TagBase::carrier tag_type
unsigned int valid_sampling_secondary
constexpr static uint32_t storage_to_energy(const uint32_t storage_pattern)
static constexpr carrier make_original_cluster_tag(const uint16_t original_cluster_index)
static constexpr carrier set_shared(const TASTag tag)
constexpr carrier set_first_flag() const
int cell_to_cluster_map[CaloRecGPU::NCaloCells]
constexpr carrier unset_second_flag() const
constexpr bool is_secondary_maximum_seed() const
Just to be semantically clearer for the maxima exclusion.
static constexpr int32_t max_counter()
constexpr carrier update_energy(const uint32_t new_energy) const
void register_kernels(IGPUKernelSizeOptimizer &optimizer)
constexpr bool uses_secondary_sampling(const unsigned int sampling) const
constexpr static carrier s_12_bit_mask
constexpr carrier set_shared() const
constexpr static carrier s_second_flag_mask
constexpr Type & get_cells_extra_array(const int j)
void cellWeightingAndFinalization(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TASOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
void excludeSecondaryMaxima(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TASOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
unsigned int neighbour_options
constexpr carrier ordering_bits() const
CaloRecGPU::tag_type secondary_array[CaloRecGPU::NCaloCells]
constexpr int32_t index() const
constexpr static unsigned int s_32_bit_offset
constexpr carrier unset_first_flag() const
constexpr bool is_part_of_splitter_cluster() const
static constexpr bool is_invalid(const TASTag tag)
constexpr static unsigned int s_18_bit_offset
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)
constexpr int32_t counter() const
constexpr uint32_t get_12_bits() const
constexpr bool uses_sampling(const unsigned int sampling) const
constexpr Type * get_cluster_extra_array()
static constexpr bool is_secondary_maxima_eliminator(const TASTag tag)
static constexpr carrier make_shared_tag(const int32_t index, const uint32_t energy_pattern, const int32_t counter)
Expects energy_pattern to be the bit pattern of the float that represents the energy.
static constexpr int32_t counter(const TASTag tag)
CaloRecGPU::Helpers::CUDA_object< TopoAutomatonSplittingOptions > m_options_dev
constexpr static carrier s_32_bit_mask
constexpr carrier update_counter(const uint32_t new_counter) const
constexpr Type & get_cluster_extra_array(const int j)
CaloRecGPU::TagBase::carrier carrier
constexpr static carrier s_18_bit_mask
constexpr static bool is_secondary_maximum_seed(const TASTag tag)
constexpr const Type & get_cells_extra_array(const int j) const
static constexpr bool is_non_assigned_part_of_split_cluster(const TASTag tag)
constexpr static carrier counter_delta()
void findLocalMaxima(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TASOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
constexpr int NMaxClusters
static constexpr carrier secondary_maxima_eliminator()
static constexpr carrier make_maximum_tag(const int32_t index, const uint32_t maximum_energy_pattern, const bool is_primary)
Expects maximum_energy_pattern to be the bit pattern of the float that represents the energy.
constexpr static carrier s_first_flag_mask
static constexpr carrier ordering_bits(const TASTag tag)
constexpr uint32_t get_32_bits() const
constexpr bool is_primary() const
constexpr bool is_invalid() const
constexpr static int s_intermediate_mark
constexpr static uint32_t energy_bits(const TASTag tag)
constexpr bool is_shared() const
void fillNeighbours(CaloRecGPU::EventDataHolder &holder, const CaloRecGPU::ConstantDataHolder &instance_data, const TASOptionsHolder &options, const IGPUKernelSizeOptimizer &optimizer, const bool synchronize=false, CaloRecGPU::CUDA_Helpers::CUDAStreamPtrHolder stream_to_use={})
constexpr static bool is_primary(const TASTag tag)
constexpr bool is_part_of_original_cluster() const
Interface for GPU kernel size optimization (allowing adjustment of kernel sizes to the properties of ...
CaloRecGPU::tag_type tertiary_array[CaloRecGPU::NCaloCells]
bool treat_L1_predicted_as_good
constexpr const Type * get_cells_extra_array() const
constexpr static bool is_secondary(const TASTag tag)
constexpr const Type & get_cluster_extra_array(const int j) const
static constexpr bool is_part_of_splitter_cluster(const TASTag tag)
bool limit_HECIW_and_FCal_neighs