CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
CAHitNtupletGeneratorOnGPU< TrackerTraits > Class Template Reference

#include <CAHitNtupletGeneratorOnGPU.h>

Public Types

using CellNeighborsVector = caStructures::CellNeighborsVectorT< TrackerTraits >
 
using CellTracksVector = caStructures::CellTracksVectorT< TrackerTraits >
 
using Counters = caHitNtupletGenerator::Counters
 
using GPUCACell = GPUCACellT< TrackerTraits >
 
using hindex_type = typename TrackingRecHitSoA< TrackerTraits >::hindex_type
 
using HitContainer = typename TrackSoA< TrackerTraits >::HitContainer
 
using HitsConstView = TrackingRecHitSoAConstView< TrackerTraits >
 
using HitsOnDevice = TrackingRecHitSoADevice< TrackerTraits >
 
using HitsOnHost = TrackingRecHitSoAHost< TrackerTraits >
 
using HitsView = TrackingRecHitSoAView< TrackerTraits >
 
using HitToTuple = caStructures::HitToTupleT< TrackerTraits >
 
using OuterHitOfCell = caStructures::OuterHitOfCellT< TrackerTraits >
 
using Params = caHitNtupletGenerator::ParamsT< TrackerTraits >
 
using Quality = pixelTrack::Quality
 
using QualityCuts = pixelTrack::QualityCutsT< TrackerTraits >
 
using TrackSoADevice = TrackSoAHeterogeneousDevice< TrackerTraits >
 
using TrackSoAHost = TrackSoAHeterogeneousHost< TrackerTraits >
 
using Tuple = HitContainer
 
using TupleMultiplicity = caStructures::TupleMultiplicityT< TrackerTraits >
 

Public Member Functions

void beginJob ()
 
 CAHitNtupletGeneratorOnGPU (const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
 
 CAHitNtupletGeneratorOnGPU (const edm::ParameterSet &cfg, edm::ConsumesCollector &iC)
 
void endJob ()
 
template<>
void fillDescriptions (edm::ParameterSetDescription &desc)
 
template<>
void fillDescriptions (edm::ParameterSetDescription &desc)
 
TrackSoAHost makeTuples (HitsOnHost const &hits_d, float bfield) const
 
TrackSoADevice makeTuplesAsync (HitsOnDevice const &hits_d, float bfield, cudaStream_t stream) const
 

Static Public Member Functions

static void fillDescriptions (edm::ParameterSetDescription &desc)
 
static void fillDescriptionsCommon (edm::ParameterSetDescription &desc)
 

Private Member Functions

void buildDoublets (const HitsConstView &hh, cudaStream_t stream) const
 
void hitNtuplets (const HitsConstView &hh, const edm::EventSetup &es, bool useRiemannFit, cudaStream_t cudaStream)
 
void launchKernels (const HitsConstView &hh, bool useRiemannFit, cudaStream_t cudaStream) const
 

Private Attributes

Countersm_counters = nullptr
 
Params m_params
 

Detailed Description

template<typename TrackerTraits>
class CAHitNtupletGeneratorOnGPU< TrackerTraits >

Definition at line 28 of file CAHitNtupletGeneratorOnGPU.h.

Member Typedef Documentation

◆ CellNeighborsVector

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::CellNeighborsVector = caStructures::CellNeighborsVectorT<TrackerTraits>

Definition at line 46 of file CAHitNtupletGeneratorOnGPU.h.

◆ CellTracksVector

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::CellTracksVector = caStructures::CellTracksVectorT<TrackerTraits>

Definition at line 47 of file CAHitNtupletGeneratorOnGPU.h.

◆ Counters

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::Counters = caHitNtupletGenerator::Counters

Definition at line 53 of file CAHitNtupletGeneratorOnGPU.h.

◆ GPUCACell

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::GPUCACell = GPUCACellT<TrackerTraits>

Definition at line 40 of file CAHitNtupletGeneratorOnGPU.h.

◆ hindex_type

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::hindex_type = typename TrackingRecHitSoA<TrackerTraits>::hindex_type

Definition at line 34 of file CAHitNtupletGeneratorOnGPU.h.

◆ HitContainer

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::HitContainer = typename TrackSoA<TrackerTraits>::HitContainer

Definition at line 43 of file CAHitNtupletGeneratorOnGPU.h.

◆ HitsConstView

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::HitsConstView = TrackingRecHitSoAConstView<TrackerTraits>

Definition at line 31 of file CAHitNtupletGeneratorOnGPU.h.

◆ HitsOnDevice

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::HitsOnDevice = TrackingRecHitSoADevice<TrackerTraits>

Definition at line 32 of file CAHitNtupletGeneratorOnGPU.h.

◆ HitsOnHost

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::HitsOnHost = TrackingRecHitSoAHost<TrackerTraits>

Definition at line 33 of file CAHitNtupletGeneratorOnGPU.h.

◆ HitsView

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::HitsView = TrackingRecHitSoAView<TrackerTraits>

Definition at line 30 of file CAHitNtupletGeneratorOnGPU.h.

◆ HitToTuple

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::HitToTuple = caStructures::HitToTupleT<TrackerTraits>

Definition at line 36 of file CAHitNtupletGeneratorOnGPU.h.

◆ OuterHitOfCell

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::OuterHitOfCell = caStructures::OuterHitOfCellT<TrackerTraits>

Definition at line 38 of file CAHitNtupletGeneratorOnGPU.h.

◆ Params

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::Params = caHitNtupletGenerator::ParamsT<TrackerTraits>

Definition at line 52 of file CAHitNtupletGeneratorOnGPU.h.

◆ Quality

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::Quality = pixelTrack::Quality

Definition at line 49 of file CAHitNtupletGeneratorOnGPU.h.

◆ QualityCuts

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::QualityCuts = pixelTrack::QualityCutsT<TrackerTraits>

Definition at line 51 of file CAHitNtupletGeneratorOnGPU.h.

◆ TrackSoADevice

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::TrackSoADevice = TrackSoAHeterogeneousDevice<TrackerTraits>

Definition at line 42 of file CAHitNtupletGeneratorOnGPU.h.

◆ TrackSoAHost

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::TrackSoAHost = TrackSoAHeterogeneousHost<TrackerTraits>

Definition at line 41 of file CAHitNtupletGeneratorOnGPU.h.

◆ Tuple

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::Tuple = HitContainer

Definition at line 44 of file CAHitNtupletGeneratorOnGPU.h.

◆ TupleMultiplicity

template<typename TrackerTraits >
using CAHitNtupletGeneratorOnGPU< TrackerTraits >::TupleMultiplicity = caStructures::TupleMultiplicityT<TrackerTraits>

Definition at line 37 of file CAHitNtupletGeneratorOnGPU.h.

Constructor & Destructor Documentation

◆ CAHitNtupletGeneratorOnGPU() [1/2]

template<typename TrackerTraits >
CAHitNtupletGeneratorOnGPU< TrackerTraits >::CAHitNtupletGeneratorOnGPU ( const edm::ParameterSet cfg,
edm::ConsumesCollector &&  iC 
)
inline

Definition at line 56 of file CAHitNtupletGeneratorOnGPU.h.

CAHitNtupletGeneratorOnGPU(const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)

◆ CAHitNtupletGeneratorOnGPU() [2/2]

template<typename TrackerTraits >
CAHitNtupletGeneratorOnGPU< TrackerTraits >::CAHitNtupletGeneratorOnGPU ( const edm::ParameterSet cfg,
edm::ConsumesCollector iC 
)

Definition at line 135 of file CAHitNtupletGeneratorOnGPU.cc.

137  : m_params(makeCommonParams(cfg),
138  makeCellCuts<TrackerTraits>(cfg),
139  topologyCuts<TrackerTraits>::makeQualityCuts(cfg.getParameterSet("trackQualityCuts")),
140  topologyCuts<TrackerTraits>::makeCACuts(cfg)) {
141 #ifdef DUMP_GPU_TK_TUPLES
142  printf("TK: %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\n",
143  "tid",
144  "qual",
145  "nh",
146  "nl",
147  "charge",
148  "pt",
149  "eta",
150  "phi",
151  "tip",
152  "zip",
153  "chi2",
154  "h1",
155  "h2",
156  "h3",
157  "h4",
158  "h5",
159  "hn");
160 #endif
161 }

Member Function Documentation

◆ beginJob()

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::beginJob ( void  )

Definition at line 246 of file CAHitNtupletGeneratorOnGPU.cc.

References ecalDigis_cff::cuda, and cudaCheck.

246  {
247  if (m_params.onGPU_) {
248  // allocate pinned host memory only if CUDA is available
250  if (cuda and cuda->enabled()) {
251  cudaCheck(cudaMalloc(&m_counters, sizeof(Counters)));
252  cudaCheck(cudaMemset(m_counters, 0, sizeof(Counters)));
253  }
254  } else {
255  m_counters = new Counters();
256  memset(m_counters, 0, sizeof(Counters));
257  }
258 }
caHitNtupletGenerator::Counters Counters
#define cudaCheck(ARG,...)
Definition: cudaCheck.h:69

◆ buildDoublets()

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::buildDoublets ( const HitsConstView hh,
cudaStream_t  stream 
) const
private

◆ endJob()

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::endJob ( void  )

Definition at line 261 of file CAHitNtupletGeneratorOnGPU.cc.

References ecalDigis_cff::cuda, CAHitNtupletGeneratorKernelsGPU< TrackerTraits >::printCounters(), and CAHitNtupletGeneratorKernelsCPU< TrackerTraits >::printCounters().

261  {
262  if (m_params.onGPU_) {
263  // print the gpu statistics and free pinned host memory only if CUDA is available
265  if (cuda and cuda->enabled()) {
266  if (m_params.doStats_) {
267  // crash on multi-gpu processes
269  }
270  cudaFree(m_counters);
271  }
272  } else {
273  if (m_params.doStats_) {
275  }
276  delete m_counters;
277  }
278 }
static void printCounters(Counters const *counters)
static void printCounters(Counters const *counters)

◆ fillDescriptions() [1/3]

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::fillDescriptions ( edm::ParameterSetDescription desc)
static

Definition at line 164 of file CAHitNtupletGeneratorOnGPU.cc.

References submitPVResolutionJobs::desc.

164  {
166  edm::LogWarning("CAHitNtupletGeneratorOnGPU::fillDescriptions")
167  << "Note: this fillDescriptions is a dummy one. Most probably you are missing some parameters. \n"
168  "please implement your TrackerTraits descriptions in CAHitNtupletGeneratorOnGPU. \n";
169 }
static void fillDescriptionsCommon(edm::ParameterSetDescription &desc)
Log< level::Warning, false > LogWarning

◆ fillDescriptions() [2/3]

template<>
void CAHitNtupletGeneratorOnGPU< pixelTopology::Phase1 >::fillDescriptions ( edm::ParameterSetDescription desc)

Definition at line 172 of file CAHitNtupletGeneratorOnGPU.cc.

References submitPVResolutionJobs::desc, and HLT_2022v15_cff::trackQualityCuts.

172  {
174 
175  desc.add<bool>("idealConditions", true);
176  desc.add<bool>("includeJumpingForwardDoublets", false);
177 
179  trackQualityCuts.add<double>("chi2MaxPt", 10.)->setComment("max pT used to determine the pT-dependent chi2 cut");
180  trackQualityCuts.add<std::vector<double>>("chi2Coeff", {0.9, 1.8})->setComment("chi2 at 1GeV and at ptMax above");
181  trackQualityCuts.add<double>("chi2Scale", 8.)
182  ->setComment(
183  "Factor to multiply the pT-dependent chi2 cut (currently: 8 for the broken line fit, ?? for the Riemann "
184  "fit)");
185  trackQualityCuts.add<double>("tripletMinPt", 0.5)->setComment("Min pT for triplets, in GeV");
186  trackQualityCuts.add<double>("tripletMaxTip", 0.3)->setComment("Max |Tip| for triplets, in cm");
187  trackQualityCuts.add<double>("tripletMaxZip", 12.)->setComment("Max |Zip| for triplets, in cm");
188  trackQualityCuts.add<double>("quadrupletMinPt", 0.3)->setComment("Min pT for quadruplets, in GeV");
189  trackQualityCuts.add<double>("quadrupletMaxTip", 0.5)->setComment("Max |Tip| for quadruplets, in cm");
190  trackQualityCuts.add<double>("quadrupletMaxZip", 12.)->setComment("Max |Zip| for quadruplets, in cm");
191  desc.add<edm::ParameterSetDescription>("trackQualityCuts", trackQualityCuts)
192  ->setComment(
193  "Quality cuts based on the results of the track fit:\n - apply a pT-dependent chi2 cut;\n - apply \"region "
194  "cuts\" based on the fit results (pT, Tip, Zip).");
195 }
static void fillDescriptionsCommon(edm::ParameterSetDescription &desc)

◆ fillDescriptions() [3/3]

template<>
void CAHitNtupletGeneratorOnGPU< pixelTopology::Phase2 >::fillDescriptions ( edm::ParameterSetDescription desc)

Definition at line 198 of file CAHitNtupletGeneratorOnGPU.cc.

References submitPVResolutionJobs::desc, and HLT_2022v15_cff::trackQualityCuts.

198  {
200 
201  desc.add<bool>("idealConditions", false);
202  desc.add<bool>("includeFarForwards", true);
203  desc.add<bool>("includeJumpingForwardDoublets", true);
204 
206  trackQualityCuts.add<double>("maxChi2", 5.)->setComment("Max normalized chi2");
207  trackQualityCuts.add<double>("minPt", 0.5)->setComment("Min pT in GeV");
208  trackQualityCuts.add<double>("maxTip", 0.3)->setComment("Max |Tip| in cm");
209  trackQualityCuts.add<double>("maxZip", 12.)->setComment("Max |Zip|, in cm");
210  desc.add<edm::ParameterSetDescription>("trackQualityCuts", trackQualityCuts)
211  ->setComment(
212  "Quality cuts based on the results of the track fit:\n - apply cuts based on the fit results (pT, Tip, "
213  "Zip).");
214 }
static void fillDescriptionsCommon(edm::ParameterSetDescription &desc)

◆ fillDescriptionsCommon()

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::fillDescriptionsCommon ( edm::ParameterSetDescription desc)
static

Definition at line 217 of file CAHitNtupletGeneratorOnGPU.cc.

References submitPVResolutionJobs::desc, and HLT_2022v15_cff::maxNumberOfDoublets.

217  {
218  // 87 cm/GeV = 1/(3.8T * 0.3)
219  // take less than radius given by the hardPtCut and reject everything below
220  // auto hardCurvCut = 1.f/(0.35 * 87.f);
221  desc.add<double>("ptmin", 0.9f)->setComment("Cut on minimum pt");
222  desc.add<double>("CAThetaCutBarrel", 0.002f)->setComment("Cut on RZ alignement for Barrel");
223  desc.add<double>("CAThetaCutForward", 0.003f)->setComment("Cut on RZ alignment for Forward");
224  desc.add<double>("hardCurvCut", 1.f / (0.35 * 87.f))->setComment("Cut on minimum curvature");
225  desc.add<double>("dcaCutInnerTriplet", 0.15f)->setComment("Cut on origin radius when the inner hit is on BPix1");
226  desc.add<double>("dcaCutOuterTriplet", 0.25f)->setComment("Cut on origin radius when the outer hit is on BPix1");
227  desc.add<bool>("earlyFishbone", true);
228  desc.add<bool>("lateFishbone", false);
229  desc.add<bool>("fillStatistics", false);
230  desc.add<unsigned int>("minHitsPerNtuplet", 4);
231  desc.add<unsigned int>("maxNumberOfDoublets", TrackerTraits::maxNumberOfDoublets);
232  desc.add<unsigned int>("minHitsForSharingCut", 10)
233  ->setComment("Maximum number of hits in a tuple to clean also if the shared hit is on bpx1");
234 
235  desc.add<bool>("fitNas4", false)->setComment("fit only 4 hits out of N");
236  desc.add<bool>("doClusterCut", true);
237  desc.add<bool>("doZ0Cut", true);
238  desc.add<bool>("doPtCut", true);
239  desc.add<bool>("useRiemannFit", false)->setComment("true for Riemann, false for BrokenLine");
240  desc.add<bool>("doSharedHitCut", true)->setComment("Sharing hit nTuples cleaning");
241  desc.add<bool>("dupPassThrough", false)->setComment("Do not reject duplicate");
242  desc.add<bool>("useSimpleTripletCleaner", true)->setComment("use alternate implementation");
243 }

◆ hitNtuplets()

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::hitNtuplets ( const HitsConstView hh,
const edm::EventSetup es,
bool  useRiemannFit,
cudaStream_t  cudaStream 
)
private

◆ launchKernels()

template<typename TrackerTraits >
void CAHitNtupletGeneratorOnGPU< TrackerTraits >::launchKernels ( const HitsConstView hh,
bool  useRiemannFit,
cudaStream_t  cudaStream 
) const
private

◆ makeTuples()

template<typename TrackerTraits >
TrackSoAHeterogeneousHost< TrackerTraits > CAHitNtupletGeneratorOnGPU< TrackerTraits >::makeTuples ( HitsOnHost const &  hits_d,
float  bfield 
) const

Definition at line 315 of file CAHitNtupletGeneratorOnGPU.cc.

References HelixFitOnGPU< TrackerTraits >::allocateOnGPU(), cms::cuda::assert(), gather_cfg::cout, HelixFitOnGPU< TrackerTraits >::launchBrokenLineKernelsOnCPU(), HelixFitOnGPU< TrackerTraits >::launchRiemannKernelsOnCPU(), DMR_cfg::maxTracks, TrackingRecHitSoAHost< TrackerTraits >::nHits(), BeamSpotPI::nTracks, TrackingRecHitSoAHost< TrackerTraits >::offsetBPIX2(), pwdgSkimBPark_cfi::tracks, and cms::cuda::PortableHostCollection< T >::view().

316  {
320 
322 
323  CPUKernels kernels(m_params);
324  kernels.setCounters(m_counters);
325  kernels.allocateOnGPU(hits_h.nHits(), nullptr);
326 
327  kernels.buildDoublets(hits_h.view(), hits_h.offsetBPIX2(), nullptr);
328  kernels.launchKernels(hits_h.view(), tracks.view(), nullptr);
329 
330  if (0 == hits_h.nHits())
331  return tracks;
332 
333  // now fit
334  HelixFitOnGPU fitter(bfield, m_params.fitNas4_);
335  fitter.allocateOnGPU(kernels.tupleMultiplicity(), tracks.view());
336 
337  if (m_params.useRiemannFit_) {
338  fitter.launchRiemannKernelsOnCPU(hits_h.view(), hits_h.nHits(), TrackerTraits::maxNumberOfQuadruplets);
339  } else {
340  fitter.launchBrokenLineKernelsOnCPU(hits_h.view(), hits_h.nHits(), TrackerTraits::maxNumberOfQuadruplets);
341  }
342 
343  kernels.classifyTuples(hits_h.view(), tracks.view(), nullptr);
344 
345 #ifdef GPU_DEBUG
346  std::cout << "finished building pixel tracks on CPU" << std::endl;
347 #endif
348 
349  // check that the fixed-size SoA does not overflow
350  auto maxTracks = tracks.view().metadata().size();
351  auto nTracks = tracks.view().nTracks();
353  if (nTracks == maxTracks - 1) {
354  edm::LogWarning("PixelTracks") << "Unsorted reconstructed pixel tracks truncated to " << maxTracks - 1
355  << " candidates";
356  }
357 
358  return tracks;
359 }
assert(be >=bs)
maxTracks
Definition: DMR_cfg.py:158
Log< level::Warning, false > LogWarning

◆ makeTuplesAsync()

template<typename TrackerTraits >
TrackSoAHeterogeneousDevice< TrackerTraits > CAHitNtupletGeneratorOnGPU< TrackerTraits >::makeTuplesAsync ( HitsOnDevice const &  hits_d,
float  bfield,
cudaStream_t  stream 
) const

Definition at line 281 of file CAHitNtupletGeneratorOnGPU.cc.

References HelixFitOnGPU< TrackerTraits >::allocateOnGPU(), gather_cfg::cout, cudaCheck, HelixFitOnGPU< TrackerTraits >::launchBrokenLineKernels(), HelixFitOnGPU< TrackerTraits >::launchRiemannKernels(), TrackingRecHitSoADevice< TrackerTraits >::nHits(), TrackingRecHitSoADevice< TrackerTraits >::offsetBPIX2(), cms::cuda::stream, pwdgSkimBPark_cfi::tracks, and cms::cuda::PortableDeviceCollection< T >::view().

282  {
286 
288 
289  GPUKernels kernels(m_params);
290  kernels.setCounters(m_counters);
291  kernels.allocateOnGPU(hits_d.nHits(), stream);
292 
293  kernels.buildDoublets(hits_d.view(), hits_d.offsetBPIX2(), stream);
294 
295  kernels.launchKernels(hits_d.view(), tracks.view(), stream);
296 
297  HelixFitOnGPU fitter(bfield, m_params.fitNas4_);
298  fitter.allocateOnGPU(kernels.tupleMultiplicity(), tracks.view());
299  if (m_params.useRiemannFit_) {
300  fitter.launchRiemannKernels(hits_d.view(), hits_d.nHits(), TrackerTraits::maxNumberOfQuadruplets, stream);
301  } else {
302  fitter.launchBrokenLineKernels(hits_d.view(), hits_d.nHits(), TrackerTraits::maxNumberOfQuadruplets, stream);
303  }
304  kernels.classifyTuples(hits_d.view(), tracks.view(), stream);
305 #ifdef GPU_DEBUG
306  cudaDeviceSynchronize();
307  cudaCheck(cudaGetLastError());
308  std::cout << "finished building pixel tracks on GPU" << std::endl;
309 #endif
310 
311  return tracks;
312 }
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
#define cudaCheck(ARG,...)
Definition: cudaCheck.h:69

Member Data Documentation

◆ m_counters

template<typename TrackerTraits >
Counters* CAHitNtupletGeneratorOnGPU< TrackerTraits >::m_counters = nullptr
private

Definition at line 79 of file CAHitNtupletGeneratorOnGPU.h.

◆ m_params

template<typename TrackerTraits >
Params CAHitNtupletGeneratorOnGPU< TrackerTraits >::m_params
private

Definition at line 77 of file CAHitNtupletGeneratorOnGPU.h.