CMS 3D CMS Logo

List of all members | Public Member Functions
calibPixel::CalibDigisPhase2 Struct Reference

#include <CalibPixel.h>

Public Member Functions

template<typename TAcc >
ALPAKA_FN_ACC void operator() (const TAcc &acc, SiPixelClusterThresholds clusterThresholds, SiPixelDigisSoAView view, SiPixelClustersSoAView clus_view, int numElements) const
 

Detailed Description

Definition at line 90 of file CalibPixel.h.

Member Function Documentation

◆ operator()()

template<typename TAcc >
ALPAKA_FN_ACC void calibPixel::CalibDigisPhase2::operator() ( const TAcc &  acc,
SiPixelClusterThresholds  clusterThresholds,
SiPixelDigisSoAView  view,
SiPixelClustersSoAView  clus_view,
int  numElements 
) const
inline

Definition at line 92 of file CalibPixel.h.

References SiPixelClusterThresholds::electronPerADCGain, HLT_2023v12_cff::ElectronPerADCGain, cms::alpakatools::for_each_element_in_grid_strided(), mps_fire::i, createfilelist::int, pixelClustering::invalidModuleId, SiStripPI::max, SiStripPI::min, ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, phase2PixelTopology::numberOfModules, gpuClustering::numElements, cms::alpakatools::once_per_grid(), SiPixelClusterThresholds::phase2DigiBaseline, HLT_2023v12_cff::Phase2DigiBaseline, SiPixelClusterThresholds::phase2KinkADC, HLT_2023v12_cff::Phase2KinkADC, SiPixelClusterThresholds::phase2ReadoutMode, and HLT_2023v12_cff::Phase2ReadoutMode.

96  {
97  const float ElectronPerADCGain = clusterThresholds.electronPerADCGain;
98  const int8_t Phase2ReadoutMode = clusterThresholds.phase2ReadoutMode;
99  const uint16_t Phase2DigiBaseline = clusterThresholds.phase2DigiBaseline;
100  const uint8_t Phase2KinkADC = clusterThresholds.phase2KinkADC;
101 
102  // zero for next kernels...
104  clus_view[0].clusModuleStart() = clus_view[0].moduleStart() = 0;
105  }
106 
108  acc, phase2PixelTopology::numberOfModules, [&](uint32_t i) { clus_view[i].clusInModule() = 0; });
110  auto dvgi = view[i];
111  if (pixelClustering::invalidModuleId != dvgi.moduleId()) {
112  const int mode = (Phase2ReadoutMode < -1 ? -1 : Phase2ReadoutMode);
113  int adc_int = dvgi.adc();
114  if (mode < 0)
115  adc_int = int(adc_int * ElectronPerADCGain);
116  else {
117  if (adc_int < Phase2KinkADC)
118  adc_int = int((adc_int + 0.5) * ElectronPerADCGain);
119  else {
120  const int8_t dspp = (Phase2ReadoutMode < 10 ? Phase2ReadoutMode : 10);
121  const int8_t ds = int8_t(dspp <= 1 ? 1 : (dspp - 1) * (dspp - 1));
122  adc_int -= Phase2KinkADC;
123  adc_int *= ds;
124  adc_int += Phase2KinkADC;
125  adc_int = ((adc_int + 0.5 * ds) * ElectronPerADCGain);
126  }
127  adc_int += int(Phase2DigiBaseline);
128  }
129  dvgi.adc() = std::min(adc_int, int(std::numeric_limits<uint16_t>::max()));
130  }
131  });
132  }
ALPAKA_FN_ACC void for_each_element_in_grid_strided(const TAcc &acc, const Idx maxNumberOfElements, const Idx elementIdxShift, const Func func, const unsigned int dimIndex=0)
Definition: workdivision.h:975
uint16_t *__restrict__ uint16_t const *__restrict__ uint32_t const *__restrict__ uint32_t *__restrict__ uint32_t const *__restrict__ int32_t *__restrict__ uint32_t numElements
ALPAKA_FN_ACC constexpr bool once_per_grid(TAcc const &acc)
Definition: workdivision.h:793
constexpr uint16_t numberOfModules
constexpr uint16_t invalidModuleId