CMS 3D CMS Logo

LST.cc
Go to the documentation of this file.
2 
3 #include "LSTEvent.h"
4 
6 
7 #include "Math/Vector3D.h"
8 #include "Math/VectorUtil.h"
10 
11 namespace {
12  XYZVector calculateR3FromPCA(const XYZVector& p3, float dxy, float dz) {
13  const float pt = p3.rho();
14  const float p = p3.r();
15  const float vz = dz * pt * pt / p / p;
16 
17  const float vx = -dxy * p3.y() / pt - p3.x() / p * p3.z() / p * dz;
18  const float vy = dxy * p3.x() / pt - p3.y() / p * p3.z() / p * dz;
19  return {vx, vy, vz};
20  }
21 
22  using namespace ALPAKA_ACCELERATOR_NAMESPACE::lst;
23  std::vector<unsigned int> getHitIdxs(short trackCandidateType,
24  Params_pT5::ArrayUxHits const& tcHitIndices,
25  unsigned int const* hitIndices) {
26  std::vector<unsigned int> hits;
27 
28  unsigned int maxNHits = 0;
29  if (trackCandidateType == LSTObjType::pT5)
30  maxNHits = Params_pT5::kHits;
31  else if (trackCandidateType == LSTObjType::pT3)
32  maxNHits = Params_pT3::kHits;
33  else if (trackCandidateType == LSTObjType::T5)
34  maxNHits = Params_T5::kHits;
35  else if (trackCandidateType == LSTObjType::pLS)
36  maxNHits = Params_pLS::kHits;
37 
38  for (unsigned int i = 0; i < maxNHits; i++) {
39  unsigned int hitIdxDev = tcHitIndices[i];
40  unsigned int hitIdx =
41  (trackCandidateType == LSTObjType::pLS)
42  ? hitIdxDev
43  : hitIndices[hitIdxDev]; // Hit indices are stored differently in the standalone for pLS.
44 
45  // For p objects, the 3rd and 4th hit maybe the same,
46  // due to the way pLS hits are stored in the standalone.
47  // This is because pixel seeds can be either triplets or quadruplets.
48  if (trackCandidateType != LSTObjType::T5 && hits.size() == 3 &&
49  hits.back() == hitIdx) // Remove duplicate 4th hits.
50  continue;
51 
52  hits.push_back(hitIdx);
53  }
54 
55  return hits;
56  }
57 
58 } // namespace
59 
60 void LST::prepareInput(std::vector<float> const& see_px,
61  std::vector<float> const& see_py,
62  std::vector<float> const& see_pz,
63  std::vector<float> const& see_dxy,
64  std::vector<float> const& see_dz,
65  std::vector<float> const& see_ptErr,
66  std::vector<float> const& see_etaErr,
67  std::vector<float> const& see_stateTrajGlbX,
68  std::vector<float> const& see_stateTrajGlbY,
69  std::vector<float> const& see_stateTrajGlbZ,
70  std::vector<float> const& see_stateTrajGlbPx,
71  std::vector<float> const& see_stateTrajGlbPy,
72  std::vector<float> const& see_stateTrajGlbPz,
73  std::vector<int> const& see_q,
74  std::vector<std::vector<int>> const& see_hitIdx,
75  std::vector<unsigned int> const& ph2_detId,
76  std::vector<float> const& ph2_x,
77  std::vector<float> const& ph2_y,
78  std::vector<float> const& ph2_z) {
79  in_trkX_.clear();
80  in_trkY_.clear();
81  in_trkZ_.clear();
82  in_hitId_.clear();
83  in_hitIdxs_.clear();
84  in_hitIndices_vec0_.clear();
85  in_hitIndices_vec1_.clear();
86  in_hitIndices_vec2_.clear();
87  in_hitIndices_vec3_.clear();
88  in_deltaPhi_vec_.clear();
89  in_ptIn_vec_.clear();
90  in_ptErr_vec_.clear();
91  in_px_vec_.clear();
92  in_py_vec_.clear();
93  in_pz_vec_.clear();
94  in_eta_vec_.clear();
95  in_etaErr_vec_.clear();
96  in_phi_vec_.clear();
97  in_charge_vec_.clear();
98  in_seedIdx_vec_.clear();
99  in_superbin_vec_.clear();
100  in_pixelType_vec_.clear();
101  in_isQuad_vec_.clear();
102 
103  unsigned int count = 0;
104  auto n_see = see_stateTrajGlbPx.size();
105  in_px_vec_.reserve(n_see);
106  in_py_vec_.reserve(n_see);
107  in_pz_vec_.reserve(n_see);
108  in_hitIndices_vec0_.reserve(n_see);
109  in_hitIndices_vec1_.reserve(n_see);
110  in_hitIndices_vec2_.reserve(n_see);
111  in_hitIndices_vec3_.reserve(n_see);
112  in_ptIn_vec_.reserve(n_see);
113  in_ptErr_vec_.reserve(n_see);
114  in_etaErr_vec_.reserve(n_see);
115  in_eta_vec_.reserve(n_see);
116  in_phi_vec_.reserve(n_see);
117  in_charge_vec_.reserve(n_see);
118  in_seedIdx_vec_.reserve(n_see);
119  in_deltaPhi_vec_.reserve(n_see);
120  in_trkX_ = ph2_x;
121  in_trkY_ = ph2_y;
122  in_trkZ_ = ph2_z;
124  in_hitIdxs_.resize(ph2_detId.size());
125 
126  std::iota(in_hitIdxs_.begin(), in_hitIdxs_.end(), 0);
127  const int hit_size = in_trkX_.size();
128 
129  for (size_t iSeed = 0; iSeed < n_see; iSeed++) {
131  float ptIn = p3LH.rho();
132  float eta = p3LH.eta();
133  float ptErr = see_ptErr[iSeed];
134 
135  if ((ptIn > 0.8 - 2 * ptErr)) {
136  XYZVector r3LH(see_stateTrajGlbX[iSeed], see_stateTrajGlbY[iSeed], see_stateTrajGlbZ[iSeed]);
137  XYZVector p3PCA(see_px[iSeed], see_py[iSeed], see_pz[iSeed]);
138  XYZVector r3PCA(calculateR3FromPCA(p3PCA, see_dxy[iSeed], see_dz[iSeed]));
139 
140  // The charge could be used directly in the line below
141  float pixelSegmentDeltaPhiChange = ROOT::Math::VectorUtil::DeltaPhi(p3LH, r3LH);
142  float etaErr = see_etaErr[iSeed];
143  float px = p3LH.x();
144  float py = p3LH.y();
145  float pz = p3LH.z();
146 
147  int charge = see_q[iSeed];
148  PixelType pixtype = PixelType::kInvalid;
149 
150  if (ptIn >= 2.0)
151  pixtype = PixelType::kHighPt;
152  else if (ptIn >= (0.8 - 2 * ptErr) and ptIn < 2.0) {
153  if (pixelSegmentDeltaPhiChange >= 0)
154  pixtype = PixelType::kLowPtPosCurv;
155  else
156  pixtype = PixelType::kLowPtNegCurv;
157  } else
158  continue;
159 
160  unsigned int hitIdx0 = hit_size + count;
161  count++;
162  unsigned int hitIdx1 = hit_size + count;
163  count++;
164  unsigned int hitIdx2 = hit_size + count;
165  count++;
166  unsigned int hitIdx3;
167  if (see_hitIdx[iSeed].size() <= 3)
168  hitIdx3 = hitIdx2;
169  else {
170  hitIdx3 = hit_size + count;
171  count++;
172  }
173 
174  in_trkX_.push_back(r3PCA.x());
175  in_trkY_.push_back(r3PCA.y());
176  in_trkZ_.push_back(r3PCA.z());
177  in_trkX_.push_back(p3PCA.rho());
178  float p3PCA_Eta = p3PCA.eta();
179  in_trkY_.push_back(p3PCA_Eta);
180  float p3PCA_Phi = p3PCA.phi();
181  in_trkZ_.push_back(p3PCA_Phi);
182  in_trkX_.push_back(r3LH.x());
183  in_trkY_.push_back(r3LH.y());
184  in_trkZ_.push_back(r3LH.z());
185  in_hitId_.push_back(1);
186  in_hitId_.push_back(1);
187  in_hitId_.push_back(1);
188  if (see_hitIdx[iSeed].size() > 3) {
189  in_trkX_.push_back(r3LH.x());
190  in_trkY_.push_back(see_dxy[iSeed]);
191  in_trkZ_.push_back(see_dz[iSeed]);
192  in_hitId_.push_back(1);
193  }
194  in_px_vec_.push_back(px);
195  in_py_vec_.push_back(py);
196  in_pz_vec_.push_back(pz);
197 
198  in_hitIndices_vec0_.push_back(hitIdx0);
199  in_hitIndices_vec1_.push_back(hitIdx1);
200  in_hitIndices_vec2_.push_back(hitIdx2);
201  in_hitIndices_vec3_.push_back(hitIdx3);
202  in_ptIn_vec_.push_back(ptIn);
203  in_ptErr_vec_.push_back(ptErr);
204  in_etaErr_vec_.push_back(etaErr);
205  in_eta_vec_.push_back(eta);
206  float phi = p3LH.phi();
207  in_phi_vec_.push_back(phi);
208  in_charge_vec_.push_back(charge);
209  in_seedIdx_vec_.push_back(iSeed);
210  in_deltaPhi_vec_.push_back(pixelSegmentDeltaPhiChange);
211 
212  in_hitIdxs_.push_back(see_hitIdx[iSeed][0]);
213  in_hitIdxs_.push_back(see_hitIdx[iSeed][1]);
214  in_hitIdxs_.push_back(see_hitIdx[iSeed][2]);
215  char isQuad = false;
216  if (see_hitIdx[iSeed].size() > 3) {
217  isQuad = true;
218  in_hitIdxs_.push_back(see_hitIdx[iSeed][3]);
219  }
220  float neta = 25.;
221  float nphi = 72.;
222  float nz = 25.;
223  int etabin = (p3PCA_Eta + 2.6) / ((2 * 2.6) / neta);
224  int phibin = (p3PCA_Phi + kPi) / ((2. * kPi) / nphi);
225  int dzbin = (see_dz[iSeed] + 30) / (2 * 30 / nz);
226  int isuperbin = (nz * nphi) * etabin + (nz)*phibin + dzbin;
227  in_superbin_vec_.push_back(isuperbin);
228  in_pixelType_vec_.push_back(pixtype);
229  in_isQuad_vec_.push_back(isQuad);
230  }
231  }
232 }
233 
235  out_tc_hitIdxs_.clear();
236  out_tc_len_.clear();
237  out_tc_seedIdx_.clear();
239 
240  auto const hits = event.getHits<HitsSoA>(/*inCMSSW*/ true, /*sync*/ false); // sync on next line
241  auto const& trackCandidates = event.getTrackCandidates(/*inCMSSW*/ true, /*sync*/ true);
242 
243  unsigned int nTrackCandidates = trackCandidates.nTrackCandidates();
244 
245  for (unsigned int idx = 0; idx < nTrackCandidates; idx++) {
246  short trackCandidateType = trackCandidates.trackCandidateType()[idx];
247  std::vector<unsigned int> hit_idx = getHitIdxs(trackCandidateType, trackCandidates.hitIndices()[idx], hits.idxs());
248 
249  out_tc_hitIdxs_.push_back(hit_idx);
250  out_tc_len_.push_back(hit_idx.size());
251  out_tc_seedIdx_.push_back(trackCandidates.pixelSeedIndex()[idx]);
253  }
254 }
255 
257  bool verbose,
258  LSTESData<Device> const* deviceESData,
259  std::vector<float> const& see_px,
260  std::vector<float> const& see_py,
261  std::vector<float> const& see_pz,
262  std::vector<float> const& see_dxy,
263  std::vector<float> const& see_dz,
264  std::vector<float> const& see_ptErr,
265  std::vector<float> const& see_etaErr,
266  std::vector<float> const& see_stateTrajGlbX,
267  std::vector<float> const& see_stateTrajGlbY,
268  std::vector<float> const& see_stateTrajGlbZ,
269  std::vector<float> const& see_stateTrajGlbPx,
270  std::vector<float> const& see_stateTrajGlbPy,
271  std::vector<float> const& see_stateTrajGlbPz,
272  std::vector<int> const& see_q,
273  std::vector<std::vector<int>> const& see_hitIdx,
274  std::vector<unsigned int> const& ph2_detId,
275  std::vector<float> const& ph2_x,
276  std::vector<float> const& ph2_y,
277  std::vector<float> const& ph2_z,
278  bool no_pls_dupclean,
279  bool tc_pls_triplets) {
280  auto event = LSTEvent(verbose, queue, deviceESData);
282  see_py,
283  see_pz,
284  see_dxy,
285  see_dz,
286  see_ptErr,
287  see_etaErr,
294  see_q,
295  see_hitIdx,
296  ph2_detId,
297  ph2_x,
298  ph2_y,
299  ph2_z);
300 
301  event.addHitToEvent(in_trkX_, in_trkY_, in_trkZ_, in_hitId_, in_hitIdxs_);
302  event.addPixelSegmentToEvent(in_hitIndices_vec0_,
307  in_ptIn_vec_,
309  in_px_vec_,
310  in_py_vec_,
311  in_pz_vec_,
312  in_eta_vec_,
314  in_phi_vec_,
320  event.createMiniDoublets();
321  if (verbose) {
322  alpaka::wait(queue); // event calls are asynchronous: wait before printing
323  printf("# of Mini-doublets produced: %d\n", event.getNumberOfMiniDoublets());
324  printf("# of Mini-doublets produced barrel layer 1: %d\n", event.getNumberOfMiniDoubletsByLayerBarrel(0));
325  printf("# of Mini-doublets produced barrel layer 2: %d\n", event.getNumberOfMiniDoubletsByLayerBarrel(1));
326  printf("# of Mini-doublets produced barrel layer 3: %d\n", event.getNumberOfMiniDoubletsByLayerBarrel(2));
327  printf("# of Mini-doublets produced barrel layer 4: %d\n", event.getNumberOfMiniDoubletsByLayerBarrel(3));
328  printf("# of Mini-doublets produced barrel layer 5: %d\n", event.getNumberOfMiniDoubletsByLayerBarrel(4));
329  printf("# of Mini-doublets produced barrel layer 6: %d\n", event.getNumberOfMiniDoubletsByLayerBarrel(5));
330  printf("# of Mini-doublets produced endcap layer 1: %d\n", event.getNumberOfMiniDoubletsByLayerEndcap(0));
331  printf("# of Mini-doublets produced endcap layer 2: %d\n", event.getNumberOfMiniDoubletsByLayerEndcap(1));
332  printf("# of Mini-doublets produced endcap layer 3: %d\n", event.getNumberOfMiniDoubletsByLayerEndcap(2));
333  printf("# of Mini-doublets produced endcap layer 4: %d\n", event.getNumberOfMiniDoubletsByLayerEndcap(3));
334  printf("# of Mini-doublets produced endcap layer 5: %d\n", event.getNumberOfMiniDoubletsByLayerEndcap(4));
335  }
336 
337  event.createSegmentsWithModuleMap();
338  if (verbose) {
339  alpaka::wait(queue); // event calls are asynchronous: wait before printing
340  printf("# of Segments produced: %d\n", event.getNumberOfSegments());
341  printf("# of Segments produced layer 1-2: %d\n", event.getNumberOfSegmentsByLayerBarrel(0));
342  printf("# of Segments produced layer 2-3: %d\n", event.getNumberOfSegmentsByLayerBarrel(1));
343  printf("# of Segments produced layer 3-4: %d\n", event.getNumberOfSegmentsByLayerBarrel(2));
344  printf("# of Segments produced layer 4-5: %d\n", event.getNumberOfSegmentsByLayerBarrel(3));
345  printf("# of Segments produced layer 5-6: %d\n", event.getNumberOfSegmentsByLayerBarrel(4));
346  printf("# of Segments produced endcap layer 1: %d\n", event.getNumberOfSegmentsByLayerEndcap(0));
347  printf("# of Segments produced endcap layer 2: %d\n", event.getNumberOfSegmentsByLayerEndcap(1));
348  printf("# of Segments produced endcap layer 3: %d\n", event.getNumberOfSegmentsByLayerEndcap(2));
349  printf("# of Segments produced endcap layer 4: %d\n", event.getNumberOfSegmentsByLayerEndcap(3));
350  printf("# of Segments produced endcap layer 5: %d\n", event.getNumberOfSegmentsByLayerEndcap(4));
351  }
352 
353  event.createTriplets();
354  if (verbose) {
355  alpaka::wait(queue); // event calls are asynchronous: wait before printing
356  printf("# of T3s produced: %d\n", event.getNumberOfTriplets());
357  printf("# of T3s produced layer 1-2-3: %d\n", event.getNumberOfTripletsByLayerBarrel(0));
358  printf("# of T3s produced layer 2-3-4: %d\n", event.getNumberOfTripletsByLayerBarrel(1));
359  printf("# of T3s produced layer 3-4-5: %d\n", event.getNumberOfTripletsByLayerBarrel(2));
360  printf("# of T3s produced layer 4-5-6: %d\n", event.getNumberOfTripletsByLayerBarrel(3));
361  printf("# of T3s produced endcap layer 1-2-3: %d\n", event.getNumberOfTripletsByLayerEndcap(0));
362  printf("# of T3s produced endcap layer 2-3-4: %d\n", event.getNumberOfTripletsByLayerEndcap(1));
363  printf("# of T3s produced endcap layer 3-4-5: %d\n", event.getNumberOfTripletsByLayerEndcap(2));
364  printf("# of T3s produced endcap layer 1: %d\n", event.getNumberOfTripletsByLayerEndcap(0));
365  printf("# of T3s produced endcap layer 2: %d\n", event.getNumberOfTripletsByLayerEndcap(1));
366  printf("# of T3s produced endcap layer 3: %d\n", event.getNumberOfTripletsByLayerEndcap(2));
367  printf("# of T3s produced endcap layer 4: %d\n", event.getNumberOfTripletsByLayerEndcap(3));
368  printf("# of T3s produced endcap layer 5: %d\n", event.getNumberOfTripletsByLayerEndcap(4));
369  }
370 
371  event.createQuintuplets();
372  if (verbose) {
373  alpaka::wait(queue); // event calls are asynchronous: wait before printing
374  printf("# of Quintuplets produced: %d\n", event.getNumberOfQuintuplets());
375  printf("# of Quintuplets produced layer 1-2-3-4-5-6: %d\n", event.getNumberOfQuintupletsByLayerBarrel(0));
376  printf("# of Quintuplets produced layer 2: %d\n", event.getNumberOfQuintupletsByLayerBarrel(1));
377  printf("# of Quintuplets produced layer 3: %d\n", event.getNumberOfQuintupletsByLayerBarrel(2));
378  printf("# of Quintuplets produced layer 4: %d\n", event.getNumberOfQuintupletsByLayerBarrel(3));
379  printf("# of Quintuplets produced layer 5: %d\n", event.getNumberOfQuintupletsByLayerBarrel(4));
380  printf("# of Quintuplets produced layer 6: %d\n", event.getNumberOfQuintupletsByLayerBarrel(5));
381  printf("# of Quintuplets produced endcap layer 1: %d\n", event.getNumberOfQuintupletsByLayerEndcap(0));
382  printf("# of Quintuplets produced endcap layer 2: %d\n", event.getNumberOfQuintupletsByLayerEndcap(1));
383  printf("# of Quintuplets produced endcap layer 3: %d\n", event.getNumberOfQuintupletsByLayerEndcap(2));
384  printf("# of Quintuplets produced endcap layer 4: %d\n", event.getNumberOfQuintupletsByLayerEndcap(3));
385  printf("# of Quintuplets produced endcap layer 5: %d\n", event.getNumberOfQuintupletsByLayerEndcap(4));
386  }
387 
388  event.pixelLineSegmentCleaning(no_pls_dupclean);
389 
390  event.createPixelQuintuplets();
391  if (verbose) {
392  alpaka::wait(queue); // event calls are asynchronous: wait before printing
393  printf("# of Pixel Quintuplets produced: %d\n", event.getNumberOfPixelQuintuplets());
394  }
395 
396  event.createPixelTriplets();
397  if (verbose) {
398  alpaka::wait(queue); // event calls are asynchronous: wait before printing
399  printf("# of Pixel T3s produced: %d\n", event.getNumberOfPixelTriplets());
400  }
401 
402  event.createTrackCandidates(no_pls_dupclean, tc_pls_triplets);
403  if (verbose) {
404  alpaka::wait(queue); // event calls are asynchronous: wait before printing
405  printf("# of TrackCandidates produced: %d\n", event.getNumberOfTrackCandidates());
406  printf(" # of Pixel TrackCandidates produced: %d\n", event.getNumberOfPixelTrackCandidates());
407  printf(" # of pT5 TrackCandidates produced: %d\n", event.getNumberOfPT5TrackCandidates());
408  printf(" # of pT3 TrackCandidates produced: %d\n", event.getNumberOfPT3TrackCandidates());
409  printf(" # of pLS TrackCandidates produced: %d\n", event.getNumberOfPLSTrackCandidates());
410  printf(" # of T5 TrackCandidates produced: %d\n", event.getNumberOfT5TrackCandidates());
411  }
412 
413  getOutput(event);
414 }
const int nphi
std::vector< unsigned int > in_hitIdxs_
Definition: LST.h:75
std::vector< float > in_phi_vec_
Definition: LST.h:88
const std::vector< int > & see_q()
Definition: Trktree.cc:6752
const std::vector< float > & see_py()
Definition: Trktree.cc:6727
std::vector< std::vector< unsigned int > > out_tc_hitIdxs_
Definition: LST.h:94
std::vector< PixelType > in_pixelType_vec_
Definition: LST.h:92
const std::vector< float > & ph2_z()
Definition: Trktree.cc:6860
Definition: performance.cc:3
const std::vector< float > & see_stateTrajGlbX()
Definition: Trktree.cc:6809
const std::vector< float > & see_stateTrajGlbY()
Definition: Trktree.cc:6810
const std::vector< float > & ph2_x()
Definition: Trktree.cc:6861
bool verbose
const std::vector< float > & see_ptErr()
Definition: Trktree.cc:6880
std::vector< float > in_trkX_
Definition: LST.h:71
void getOutput(LSTEvent &event)
Definition: LST.cc:234
std::vector< short > const & trackCandidateType() const
Definition: LST.h:45
std::vector< unsigned int > in_hitIndices_vec3_
Definition: LST.h:79
std::vector< int > in_charge_vec_
Definition: LST.h:89
ALPAKA_ACCELERATOR_NAMESPACE::lst::LSTEvent LSTEvent
Definition: lst.cc:5
std::vector< float > in_eta_vec_
Definition: LST.h:86
std::vector< float > in_py_vec_
Definition: LST.h:84
std::vector< int > in_superbin_vec_
Definition: LST.h:91
const std::vector< float > & see_stateTrajGlbPz()
Definition: Trktree.cc:6721
std::vector< char > in_isQuad_vec_
Definition: LST.h:93
const std::vector< float > & see_stateTrajGlbPy()
Definition: Trktree.cc:7008
PixelType
Definition: Common.h:18
ALPAKA_ACCELERATOR_NAMESPACE::Queue Queue
Definition: LSTEvent.dev.cc:14
std::vector< float > in_etaErr_vec_
Definition: LST.h:87
std::vector< unsigned int > in_hitIndices_vec2_
Definition: LST.h:78
const int neta
ALPAKA_FN_HOST_ACC ALPAKA_FN_INLINE float phi(TAcc const &acc, float x, float y)
Definition: Hit.h:29
TVector3 calculateR3FromPCA(const TVector3 &p3, const float dxy, const float dz)
Definition: trkCore.cc:575
std::vector< unsigned int > in_hitIndices_vec0_
Definition: LST.h:76
const std::vector< float > & see_stateTrajGlbPx()
Definition: Trktree.cc:6881
std::vector< std::vector< unsigned int > > const & hits() const
Definition: LST.h:42
HitsSoALayout<> HitsSoA
Definition: HitsSoA.h:29
std::vector< float > in_trkZ_
Definition: LST.h:73
std::vector< unsigned int > in_hitIndices_vec1_
Definition: LST.h:77
void run(Queue &queue, bool verbose, LSTESData< Device > const *deviceESData, std::vector< float > const &see_px, std::vector< float > const &see_py, std::vector< float > const &see_pz, std::vector< float > const &see_dxy, std::vector< float > const &see_dz, std::vector< float > const &see_ptErr, std::vector< float > const &see_etaErr, std::vector< float > const &see_stateTrajGlbX, std::vector< float > const &see_stateTrajGlbY, std::vector< float > const &see_stateTrajGlbZ, std::vector< float > const &see_stateTrajGlbPx, std::vector< float > const &see_stateTrajGlbPy, std::vector< float > const &see_stateTrajGlbPz, std::vector< int > const &see_q, std::vector< std::vector< int >> const &see_hitIdx, std::vector< unsigned int > const &ph2_detId, std::vector< float > const &ph2_x, std::vector< float > const &ph2_y, std::vector< float > const &ph2_z, bool no_pls_dupclean, bool tc_pls_triplets)
Definition: LST.cc:256
Transform3DPJ::Vector XYZVector
std::vector< float > in_pz_vec_
Definition: LST.h:85
std::vector< unsigned int > in_seedIdx_vec_
Definition: LST.h:90
std::vector< short > out_tc_trackCandidateType_
Definition: LST.h:97
const std::vector< float > & see_dz()
Definition: Trktree.cc:6911
std::vector< float > in_ptErr_vec_
Definition: LST.h:82
const std::vector< float > & see_etaErr()
Definition: Trktree.cc:6829
ALPAKA_STATIC_ACC_MEM_GLOBAL constexpr float kPi
Definition: Common.h:39
std::vector< float > in_deltaPhi_vec_
Definition: LST.h:80
std::vector< float > in_px_vec_
Definition: LST.h:83
const std::vector< float > & see_px()
Definition: Trktree.cc:6899
const std::vector< unsigned int > & ph2_detId()
Definition: Trktree.cc:6736
const std::vector< float > & see_dxy()
Definition: Trktree.cc:6779
std::vector< float > in_trkY_
Definition: LST.h:72
void prepareInput(std::vector< float > const &see_px, std::vector< float > const &see_py, std::vector< float > const &see_pz, std::vector< float > const &see_dxy, std::vector< float > const &see_dz, std::vector< float > const &see_ptErr, std::vector< float > const &see_etaErr, std::vector< float > const &see_stateTrajGlbX, std::vector< float > const &see_stateTrajGlbY, std::vector< float > const &see_stateTrajGlbZ, std::vector< float > const &see_stateTrajGlbPx, std::vector< float > const &see_stateTrajGlbPy, std::vector< float > const &see_stateTrajGlbPz, std::vector< int > const &see_q, std::vector< std::vector< int >> const &see_hitIdx, std::vector< unsigned int > const &ph2_detId, std::vector< float > const &ph2_x, std::vector< float > const &ph2_y, std::vector< float > const &ph2_z)
Definition: LST.cc:60
std::vector< unsigned int > out_tc_len_
Definition: LST.h:95
math::XYZVector XYZVector
Definition: RawParticle.h:26
std::vector< unsigned int > in_hitId_
Definition: LST.h:74
std::vector< int > out_tc_seedIdx_
Definition: LST.h:96
const std::vector< float > & see_pz()
Definition: Trktree.cc:6900
const std::vector< float > & ph2_y()
Definition: Trktree.cc:6862
Definition: event.py:1
std::vector< float > in_ptIn_vec_
Definition: LST.h:81
const std::vector< float > & see_stateTrajGlbZ()
Definition: Trktree.cc:6808
const std::vector< std::vector< int > > & see_hitIdx()
Definition: Trktree.cc:6734
ALPAKA_FN_HOST_ACC ALPAKA_FN_INLINE float eta(TAcc const &acc, float x, float y, float z)
Definition: Hit.h:11