7#ifndef CALORECGPU_GPUCLUSTERINFOANDMOMENTSCALCULATOR_H
8#define CALORECGPU_GPUCLUSTERINFOANDMOMENTSCALCULATOR_H
19#include "GaudiKernel/ServiceHandle.h"
23#include "CLHEP/Units/SystemOfUnits.h"
49 virtual StatusCode
execute (
const EventContext & ctx,
52 void * temporary_buffer)
const override;
54 virtual StatusCode
finalize()
override;
63 Gaudi::Property<double>
m_maxAxisAngle {
this,
"MaxAxisAngle", 20 * CLHEP::deg,
"The maximal allowed deviation from the IP-to-ClusterCenter-axis"};
71 Gaudi::Property<double>
m_minRLateral {
this,
"MinRLateral", 4 * CLHEP::cm,
"The minimal r in the definition of the Lateral moment"};
81 Gaudi::Property<double>
m_minLLongitudinal {
this,
"MinLLongitudinal", 10 * CLHEP::cm,
"The minimal lambda in the definition of the Longitudinal moment"};
89 Gaudi::Property<double>
m_minBadLArQuality {
this,
"MinBadLArQuality", 4000,
"The minimal cell quality in the LAr for declaring a cell bad"};
94 Gaudi::Property<bool>
m_absOpt {
this,
"WeightingOfNegClusters",
false,
"If set to true use abs E value of cells to calculate cluster moments"};
98 Gaudi::Property<double>
m_etaInnerWheel {
this,
"EMECAbsEtaWheelTransition", 2.52,
"Transition from outer to inner wheel in EME2"};
103 Gaudi::Property<bool>
m_twoGaussianNoise {
this,
"TwoGaussianNoise",
false,
"If set to true use 2-gaussian noise description for TileCal"};
108 Gaudi::Property<bool>
m_skipInvalidClusters {
this,
"SkipInvalidClusters",
true,
"Check for and skip invalid clusters during moments calculation."};
Define macros for attributes used to control the static checker.
Base class to provide some basic common infrastructure for initializing CUDA only at the right place ...
virtual StatusCode initialize()
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...
Gaudi::Property< double > m_etaInnerWheel
Transition from outer to inner wheel in EME2.
Gaudi::Property< double > m_minBadLArQuality
the minimal cell quality in the LAr for declaring a cell bad
virtual StatusCode initialize() override
Gaudi::Property< double > m_maxAxisAngle
the maximal allowed deviation from the IP-to-ClusterCenter-axis.
ClusterMomentsCalculator::CMCOptionsHolder m_options
Options for the algorithm, held in a GPU-friendly way.
Gaudi::Property< double > m_minRLateral
the minimal in the definition of the Lateral moment
virtual StatusCode finalize() override
GPUClusterInfoAndMomentsCalculator(const std::string &type, const std::string &name, const IInterface *parent)
Gaudi::Property< double > m_minLLongitudinal
the minimal in the definition of the Longitudinal moment
Gaudi::Property< bool > m_absOpt
if set to true use abs E value of cells to calculate cluster moments
Gaudi::Property< bool > m_twoGaussianNoise
if set to true use 2-gaussian noise description for TileCal
virtual StatusCode initialize_CUDA() override
Initialization that invokes CUDA functions.
ServiceHandle< IGPUKernelSizeOptimizerSvc > m_kernelSizeOptimizer
Handle to the CUDA kernel block and grid size optimization service.
Gaudi::Property< bool > m_skipInvalidClusters
If false, do the moment calculation even for invalid clusters (which may waste computation).
virtual StatusCode execute(const EventContext &ctx, const CaloRecGPU::ConstantDataHolder &constant_data, CaloRecGPU::EventDataHolder &event_data, void *temporary_buffer) const override
virtual StatusCode initialize_non_CUDA() override
Initialization that does not invoke CUDA functions.
virtual ~GPUClusterInfoAndMomentsCalculator()=default