7#ifndef CALORECGPU_TOPOAUTOMATONSPLITTING_H
8#define CALORECGPU_TOPOAUTOMATONSPLITTING_H
17#include "GaudiKernel/ServiceHandle.h"
19#include "CLHEP/Units/SystemOfUnits.h"
47 virtual StatusCode
execute (
const EventContext & ctx,
50 void * temporary_buffer)
const override;
52 virtual StatusCode
finalize()
override;
68 Gaudi::Property<std::vector<std::string>>
m_samplingNames {
this,
"SamplingNames", {},
"Name(s) of Calorimeter Samplings to consider for local maxima"};
77 Gaudi::Property<std::vector<std::string>>
m_secondarySamplingNames {
this,
"SecondarySamplingNames", {},
"Name(s) of secondary Calorimeter Samplings to consider for local maxima"};
86 Gaudi::Property<int>
m_nCells {
this,
"NumberOfCellsCut", 4,
"Local maxima need at least this number of neighbors to become seeds. Must be a non-negative number (obviously)."};
93 Gaudi::Property<float>
m_minEnergy {
this,
"EnergyCut", 500 * CLHEP::MeV,
"Minimal energy for a local max"};
114 Gaudi::Property<bool>
m_shareBorderCells {
this,
"ShareBorderCells",
false,
"Whether or not to share cells at the boundary between two clusters"};
129 Gaudi::Property<float>
m_emShowerScale {
this,
"EMShowerScale", 5 * CLHEP::cm,
"Typical EM shower distance for which the energy density should drop to 1/e"};
134 Gaudi::Property<bool>
m_absOpt {
this,
"WeightingOfNegClusters",
false,
"Should absolute value be used to identify potential seed cells"};
139 Gaudi::Property<bool>
m_treatL1PredictedCellsAsGood {
this,
"TreatL1PredictedCellsAsGood",
true,
"Treat bad cells with dead OTX if predicted from L1 as good"};
166 "Neighbor option to be used for cell neighborhood relations"};
178 false,
"Limit the neighbors in HEC IW and FCal2&3"};
188 false,
"Limit the neighbors in presampler Barrel and Endcap"};
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< std::vector< std::string > > m_secondarySamplingNames
vector of names of the secondary calorimeter samplings to consider.
Gaudi::Property< bool > m_restrictHECIWandFCalNeighbors
if set to true limit the neighbors in HEC IW and FCal2&3.
TASplitting::TASOptionsHolder m_options
Options for the algorithm, held in a GPU-friendly way.
TopoAutomatonSplitting(const std::string &type, const std::string &name, const IInterface *parent)
Gaudi::Property< bool > m_treatL1PredictedCellsAsGood
if set to true treat cells with a dead OTX which can be predicted by L1 trigger info as good instead ...
virtual ~TopoAutomatonSplitting()=default
Gaudi::Property< float > m_emShowerScale
typical EM shower scale to use for distance criteria in shared cells
virtual StatusCode initialize_non_CUDA() override
Initialization that does not invoke CUDA functions.
Gaudi::Property< bool > m_absOpt
if set to true, splitter only looks at absolute value of Energy in order to identify potential seed c...
Gaudi::Property< float > m_minEnergy
local maxima need at least this energy content
ServiceHandle< IGPUKernelSizeOptimizerSvc > m_kernelSizeOptimizer
Handle to the CUDA kernel block and grid size optimization service.
Gaudi::Property< bool > m_shareBorderCells
share cells at the border between two local maxima
virtual StatusCode initialize_CUDA() override
Initialization that invokes CUDA functions.
virtual StatusCode execute(const EventContext &ctx, const CaloRecGPU::ConstantDataHolder &constant_data, CaloRecGPU::EventDataHolder &event_data, void *temporary_buffer) const override
virtual StatusCode initialize() override
virtual StatusCode finalize() override
Gaudi::Property< std::string > m_neighborOptionString
type of neighbor relations to use.
Gaudi::Property< bool > m_restrictPSNeighbors
if set to true limit the neighbors in presampler Barrel and Endcap.
Gaudi::Property< std::vector< std::string > > m_samplingNames
vector of names of the calorimeter samplings to consider for seeds.
Gaudi::Property< int > m_nCells
local maxima need at least this number of neighbors to become seeds