ATLAS Offline Software
Loading...
Searching...
No Matches
BasicGPUClusterInfoCalculator.h
Go to the documentation of this file.
1//
2// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3//
4// Dear emacs, this is -*- c++ -*-
5//
6
7
8#ifndef CALORECGPU_BASICGPUCLUSTERINFOCALCULATOR_H
9#define CALORECGPU_BASICGPUCLUSTERINFOCALCULATOR_H
10
12
18
20
21#include "GaudiKernel/ServiceHandle.h"
22
24
25#include "CLHEP/Units/SystemOfUnits.h"
26
34
35
37 public extends<AthAlgTool, CaloClusterGPUProcessor>, public CaloGPUTimed, public CaloGPUCUDAInitialization
38{
39 public:
40
41 BasicGPUClusterInfoCalculator(const std::string & type, const std::string & name, const IInterface * parent);
42
43 virtual StatusCode initialize() override
44 {
46 }
47
48 virtual StatusCode initialize_non_CUDA() override;
49
50 virtual StatusCode initialize_CUDA() override;
51
52 virtual StatusCode execute (const EventContext & ctx,
53 const CaloRecGPU::ConstantDataHolder & constant_data,
54 CaloRecGPU::EventDataHolder & event_data,
55 void * temporary_buffer) const override;
56
57 virtual StatusCode finalize() override;
58
59 virtual ~BasicGPUClusterInfoCalculator() = default;
60
61 private:
62
67 Gaudi::Property<bool> m_cutClustersInAbsE {this, "ClusterCutsInAbsEt", true, "Do cluster cuts in Abs Et instead of Et"};
68
75
76 Gaudi::Property<float> m_clusterETThreshold {this, "ClusterEtorAbsEtCut", 0.*CLHEP::MeV, "Cluster E_t or Abs E_t cut"};
77
79 ServiceHandle<IGPUKernelSizeOptimizerSvc> m_kernelSizeOptimizer { this, "KernelSizeOptimizer", "GPUKernelSizeOptimizerSvc", "CUDA kernel size optimization service." };
80
82 ToolHandle<AthCUDA::IStreamTool> m_streamTool {this, "StreamTool", "", "CUDA stream tool."};
83
84};
85
86#endif //CALORECGPU_TOPOAUTOMATONCLUSTERING_H
Define macros for attributes used to control the static checker.
ServiceHandle< IGPUKernelSizeOptimizerSvc > m_kernelSizeOptimizer
Handle to the CUDA kernel block and grid size optimization service.
Gaudi::Property< bool > m_cutClustersInAbsE
if set to true cluster cuts are on , if false on .
virtual StatusCode initialize() override
virtual StatusCode execute(const EventContext &ctx, const CaloRecGPU::ConstantDataHolder &constant_data, CaloRecGPU::EventDataHolder &event_data, void *temporary_buffer) const override
BasicGPUClusterInfoCalculator(const std::string &type, const std::string &name, const IInterface *parent)
ToolHandle< AthCUDA::IStreamTool > m_streamTool
Tool providing the CUDA stream to use.
virtual ~BasicGPUClusterInfoCalculator()=default
virtual StatusCode initialize_non_CUDA() override
Initialization that does not invoke CUDA functions.
virtual StatusCode initialize_CUDA() override
Initialization that invokes CUDA functions.
Gaudi::Property< float > m_clusterETThreshold
cut on the clusters.
Base class to provide some basic common infrastructure for initializing CUDA only at the right place ...
CaloGPUTimed(T *ptr)
Holds CPU and GPU versions of the geometry and cell noise information, which are assumed to be consta...
Definition DataHolders.h:27
Holds the mutable per-event information (clusters and cells) and provides utilities to convert betwee...
Definition DataHolders.h:73