  | 
  
    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