8#ifndef CALORECGPU_TOPOAUTOMATONCLUSTERING_H
9#define CALORECGPU_TOPOAUTOMATONCLUSTERING_H
21#include "CLHEP/Units/SystemOfUnits.h"
26#include "GaudiKernel/ServiceHandle.h"
52 virtual StatusCode
execute (
const EventContext & ctx,
55 void * temporary_buffer)
const override;
57 virtual StatusCode
finalize()
override;
72 Gaudi::Property<std::vector<std::string>>
m_caloNames {
this,
"CalorimeterNames", {},
"Name(s) of Calorimeters to use for clustering"};
84 Gaudi::Property<std::vector<std::string>>
m_samplingNames {
this,
"SeedSamplingNames", {},
"Name(s) of Calorimeter Samplings to consider for seeds"};
134 Gaudi::Property<bool>
m_seedCutsInAbsE {
this,
"SeedCutsInAbsE",
true,
"Seed cuts in Abs E instead of E"};
142 Gaudi::Property<bool>
m_neighborCutsInAbsE {
this,
"NeighborCutsInAbsE",
true,
"Neighbor (grow) cuts in Abs E instead of E"};
150 Gaudi::Property<bool>
m_cellCutsInAbsE {
this,
"CellCutsInAbsE",
true,
"Cell (terminal) cuts in Abs E instead of E"};
155 Gaudi::Property<bool>
m_cutCellsInTime {
this,
"SeedCutsInT",
false,
"Do seed cuts in time"};
159 Gaudi::Property<float>
m_timeThreshold {
this,
"SeedThresholdOnTAbs", 12.5 * CLHEP::ns,
"Time thresholds (in abs. val.)"};
163 Gaudi::Property<float>
m_thresholdForKeeping {
this,
"TimeCutUpperLimit", 20.,
"Significance upper limit for applying time cut"};
169 Gaudi::Property<bool>
m_treatL1PredictedCellsAsGood {
this,
"TreatL1PredictedCellsAsGood",
true,
"Treat bad cells with dead OTX if predicted from L1 as good"};
179 Gaudi::Property<bool>
m_keepSignificantCells {
this,
"UseTimeCutUpperLimit",
false,
"Do not apply time cut on cells of large significance"};
184 Gaudi::Property<bool>
m_twoGaussianNoise{
this,
"TwoGaussianNoise",
false,
"Use 2-gaussian noise description for TileCal"};
212 "Neighbor option to be used for cell neighborhood relations"};
224 false,
"Limit the neighbors in HEC IW and FCal2&3"};
234 false,
"Limit the neighbors in presampler Barrel and Endcap"};
242 false,
"Relax time window (if timing is used) in EM2 when xTalk is present"};
248 15 * CLHEP::ns,
"Delta T to add to upper time threshold for EM2 cells affected by xtalk."};
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< bool > m_twoGaussianNoise
if set to true use 2-gaussian noise description for TileCal
Gaudi::Property< std::vector< std::string > > m_caloNames
vector of names of the calorimeters to consider.
virtual ~TopoAutomatonClustering()=default
Gaudi::Property< bool > m_restrictHECIWandFCalNeighbors
if set to true limit the neighbors in HEC IW and FCal2&3.
virtual StatusCode execute(const EventContext &ctx, const CaloRecGPU::ConstantDataHolder &constant_data, CaloRecGPU::EventDataHolder &event_data, void *temporary_buffer) const override
Gaudi::Property< bool > m_xtalkEM2
If set to true, the time window is softened in the EMB2 and EME2_OW due to crosstalk from direct neig...
Gaudi::Property< bool > m_cellCutsInAbsE
if set to true cell cuts are on and .
Gaudi::Property< float > m_timeThreshold
threshold used for timing cut on seed cells.
Gaudi::Property< float > m_xtalkDeltaT
Additional maximum delta t added to the upper limit time window in case crosstalk in EM2 should be ac...
TopoAutomatonClustering(const std::string &type, const std::string &name, const IInterface *parent)
TAGrowing::TACOptionsHolder m_options
Options for the algorithm, held in a GPU-friendly way.
Gaudi::Property< float > m_cellThresholdOnEorAbsEinSigma
all cells have to satisfy
virtual StatusCode initialize() override
Gaudi::Property< float > m_seedThresholdOnEorAbsEinSigma
cells with start a cluster
Gaudi::Property< bool > m_restrictPSNeighbors
if set to true limit the neighbors in presampler Barrel and Endcap.
Gaudi::Property< std::string > m_neighborOptionString
type of neighbor relations to use.
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 ...
Gaudi::Property< bool > m_neighborCutsInAbsE
if set to true neighbor cuts are on and .
Gaudi::Property< float > m_neighborThresholdOnEorAbsEinSigma
cells with extend the cluster
Gaudi::Property< std::vector< std::string > > m_samplingNames
vector of names of the calorimeter samplings to consider for seeds.
Gaudi::Property< bool > m_excludeCutSeedsFromClustering
if set to true, seed cells failing the time cut are also excluded from cluster at all
Gaudi::Property< bool > m_cutCellsInTime
if set to true, time cut is applied to seed cells, no cut otherwise
virtual StatusCode finalize() override
Gaudi::Property< float > m_thresholdForKeeping
upper limit on the energy significance, for applying the cell time cut
virtual StatusCode initialize_CUDA() override
Initialization that invokes CUDA functions.
virtual StatusCode initialize_non_CUDA() override
Initialization that does not invoke CUDA functions.
ServiceHandle< IGPUKernelSizeOptimizerSvc > m_kernelSizeOptimizer
Handle to the CUDA kernel block and grid size optimization service.
Gaudi::Property< bool > m_keepSignificantCells
if set to true, the time cut is not applied on cell of large significance
Gaudi::Property< bool > m_seedCutsInAbsE
if set to true seed cuts are on and .