CMS 3D CMS Logo

VertexFinder.cc
Go to the documentation of this file.
2 
3 using namespace std;
4 
5 namespace l1tVertexFinder {
6 
7  void VertexFinder::computeAndSetVertexParameters(RecoVertex<>& vertex,
8  const std::vector<float>& bin_centers,
9  const std::vector<unsigned int>& counts) {
10  double pt = 0.;
11  double z0 = 0.;
12  double z0width = 0.;
13  bool highPt = false;
14  double highestPt = 0.;
15  unsigned int numHighPtTracks = 0;
16 
17  float SumZ = 0.;
18  float z0square = 0.;
19  float trackPt = 0.;
20 
21  std::vector<double> bin_pt(bin_centers.size(), 0.0);
22  unsigned int ibin = 0;
23  unsigned int itrack = 0;
24 
25  for (const L1Track* track : vertex.tracks()) {
26  itrack++;
27  trackPt = track->pt();
28  if (trackPt > settings_->vx_TrackMaxPt()) {
29  highPt = true;
30  numHighPtTracks++;
31  highestPt = (trackPt > highestPt) ? trackPt : highestPt;
32  if (settings_->vx_TrackMaxPtBehavior() == 0)
33  continue; // ignore this track
34  else if (settings_->vx_TrackMaxPtBehavior() == 1)
35  trackPt = settings_->vx_TrackMaxPt(); // saturate
36  }
37 
38  pt += std::pow(trackPt, settings_->vx_weightedmean());
39  if (bin_centers.empty() && counts.empty()) {
40  SumZ += track->z0() * std::pow(trackPt, settings_->vx_weightedmean());
41  z0square += track->z0() * track->z0();
42  } else {
43  bin_pt[ibin] += std::pow(trackPt, settings_->vx_weightedmean());
44  if (itrack == counts[ibin]) {
45  SumZ += bin_centers[ibin] * bin_pt[ibin];
46  z0square += bin_centers[ibin] * bin_centers[ibin];
47  itrack = 0;
48  ibin++;
49  }
50  }
51  }
52 
53  z0 = SumZ / ((settings_->vx_weightedmean() > 0) ? pt : vertex.numTracks());
54  z0square /= vertex.numTracks();
55  z0width = sqrt(std::abs(z0 * z0 - z0square));
56 
57  vertex.setParameters(pt, z0, z0width, highPt, numHighPtTracks, highestPt);
58  }
59 
60  void VertexFinder::GapClustering() {
61  sort(fitTracks_.begin(), fitTracks_.end(), SortTracksByZ0());
62  iterations_ = 0;
64  for (unsigned int i = 0; i < fitTracks_.size(); ++i) {
65  Vertex.insert(&fitTracks_[i]);
66  iterations_++;
67  if ((i + 1 < fitTracks_.size() and fitTracks_[i + 1].z0() - fitTracks_[i].z0() > settings_->vx_distance()) or
68  i == fitTracks_.size() - 1) {
69  if (Vertex.numTracks() >= settings_->vx_minTracks()) {
70  computeAndSetVertexParameters(Vertex, {}, {});
71  vertices_.push_back(Vertex);
72  }
73  Vertex.clear();
74  }
75  }
76  }
77 
79  float distance = 0;
80  for (const L1Track* track0 : cluster0.tracks()) {
81  for (const L1Track* track1 : cluster1.tracks()) {
82  if (std::abs(track0->z0() - track1->z0()) > distance) {
83  distance = std::abs(track0->z0() - track1->z0());
84  }
85  }
86  }
87 
88  return distance;
89  }
90 
91  float VertexFinder::minDistance(RecoVertex<> cluster0, RecoVertex<> cluster1) {
92  float distance = 9999;
93  for (const L1Track* track0 : cluster0.tracks()) {
94  for (const L1Track* track1 : cluster1.tracks()) {
95  if (std::abs(track0->z0() - track1->z0()) < distance) {
96  distance = std::abs(track0->z0() - track1->z0());
97  }
98  }
99  }
100 
101  return distance;
102  }
103 
104  float VertexFinder::meanDistance(RecoVertex<> cluster0, RecoVertex<> cluster1) {
105  float distanceSum = 0;
106 
107  for (const L1Track* track0 : cluster0.tracks()) {
108  for (const L1Track* track1 : cluster1.tracks()) {
109  distanceSum += std::abs(track0->z0() - track1->z0());
110  }
111  }
112 
113  float distance = distanceSum / (cluster0.numTracks() * cluster1.numTracks());
114  return distance;
115  }
116 
117  float VertexFinder::centralDistance(RecoVertex<> cluster0, RecoVertex<> cluster1) {
118  computeAndSetVertexParameters(cluster0, {}, {});
119  computeAndSetVertexParameters(cluster1, {}, {});
120  float distance = std::abs(cluster0.z0() - cluster1.z0());
121  return distance;
122  }
123 
124  void VertexFinder::agglomerativeHierarchicalClustering() {
125  iterations_ = 0;
126 
127  sort(fitTracks_.begin(), fitTracks_.end(), SortTracksByZ0());
128 
129  std::vector<RecoVertex<>> vClusters;
130  vClusters.resize(fitTracks_.size());
131 
132  for (unsigned int i = 0; i < fitTracks_.size(); ++i) {
133  vClusters[i].insert(&fitTracks_[i]);
134  // iterations_++;
135  }
136 
137  while (true) {
138  float MinimumScore = 9999;
139 
140  unsigned int clusterId0 = 0;
141  unsigned int clusterId1 = 0;
142  for (unsigned int iClust = 0; iClust < vClusters.size() - 1; iClust++) {
143  iterations_++;
144 
145  float M = 0;
146  if (settings_->vx_distanceType() == 0)
147  M = maxDistance(vClusters[iClust], vClusters[iClust + 1]);
148  else if (settings_->vx_distanceType() == 1)
149  M = minDistance(vClusters[iClust], vClusters[iClust + 1]);
150  else if (settings_->vx_distanceType() == 2)
151  M = meanDistance(vClusters[iClust], vClusters[iClust + 1]);
152  else
153  M = centralDistance(vClusters[iClust], vClusters[iClust + 1]);
154 
155  if (M < MinimumScore) {
156  MinimumScore = M;
157  clusterId0 = iClust;
158  clusterId1 = iClust + 1;
159  }
160  }
161  if (MinimumScore > settings_->vx_distance() or vClusters[clusterId1].tracks().empty())
162  break;
163  for (const L1Track* track : vClusters[clusterId0].tracks()) {
164  vClusters[clusterId1].insert(track);
165  }
166  vClusters.erase(vClusters.begin() + clusterId0);
167  }
168 
169  for (RecoVertex clust : vClusters) {
170  if (clust.numTracks() >= settings_->vx_minTracks()) {
171  computeAndSetVertexParameters(clust, {}, {});
172  vertices_.push_back(clust);
173  }
174  }
175  }
176 
177  void VertexFinder::DBSCAN() {
178  // std::vector<RecoVertex> vClusters;
179  std::vector<unsigned int> visited;
180  std::vector<unsigned int> saved;
181 
182  sort(fitTracks_.begin(), fitTracks_.end(), SortTracksByPt());
183  iterations_ = 0;
184 
185  for (unsigned int i = 0; i < fitTracks_.size(); ++i) {
186  if (find(visited.begin(), visited.end(), i) != visited.end())
187  continue;
188 
189  // if(fitTracks_[i]->pt()>10.){
190  visited.push_back(i);
191  std::set<unsigned int> neighbourTrackIds;
192  unsigned int numDensityTracks = 0;
193  if (fitTracks_[i].pt() > settings_->vx_dbscan_pt())
194  numDensityTracks++;
195  else
196  continue;
197  for (unsigned int k = 0; k < fitTracks_.size(); ++k) {
198  iterations_++;
199  if (k != i and std::abs(fitTracks_[k].z0() - fitTracks_[i].z0()) < settings_->vx_distance()) {
200  neighbourTrackIds.insert(k);
201  if (fitTracks_[k].pt() > settings_->vx_dbscan_pt()) {
202  numDensityTracks++;
203  }
204  }
205  }
206 
207  if (numDensityTracks < settings_->vx_dbscan_mintracks()) {
208  // mark track as noise
209  } else {
211  vertex.insert(&fitTracks_[i]);
212  saved.push_back(i);
213  for (unsigned int id : neighbourTrackIds) {
214  if (find(visited.begin(), visited.end(), id) == visited.end()) {
215  visited.push_back(id);
216  std::vector<unsigned int> neighbourTrackIds2;
217  for (unsigned int k = 0; k < fitTracks_.size(); ++k) {
218  iterations_++;
219  if (std::abs(fitTracks_[k].z0() - fitTracks_[id].z0()) < settings_->vx_distance()) {
220  neighbourTrackIds2.push_back(k);
221  }
222  }
223 
224  // if (neighbourTrackIds2.size() >= settings_->vx_minTracks()) {
225  for (unsigned int id2 : neighbourTrackIds2) {
226  neighbourTrackIds.insert(id2);
227  }
228  // }
229  }
230  if (find(saved.begin(), saved.end(), id) == saved.end())
231  vertex.insert(&fitTracks_[id]);
232  }
233  computeAndSetVertexParameters(vertex, {}, {});
234  if (vertex.numTracks() >= settings_->vx_minTracks())
235  vertices_.push_back(vertex);
236  }
237  // }
238  }
239  }
240 
241  void VertexFinder::PVR() {
242  bool start = true;
243  FitTrackCollection discardedTracks, acceptedTracks;
244  iterations_ = 0;
245  for (const L1Track& track : fitTracks_) {
246  acceptedTracks.push_back(track);
247  }
248 
249  while (discardedTracks.size() >= settings_->vx_minTracks() or start == true) {
250  start = false;
251  bool removing = true;
252  discardedTracks.clear();
253  while (removing) {
254  float oldDistance = 0.;
255 
256  if (settings_->debug() > 2)
257  edm::LogInfo("VertexFinder") << "PVR::AcceptedTracks " << acceptedTracks.size();
258 
259  float z0start = 0;
260  for (const L1Track& track : acceptedTracks) {
261  z0start += track.z0();
262  iterations_++;
263  }
264 
265  z0start /= acceptedTracks.size();
266  if (settings_->debug() > 2)
267  edm::LogInfo("VertexFinder") << "PVR::z0 vertex " << z0start;
268  FitTrackCollection::iterator badTrackIt = acceptedTracks.end();
269  removing = false;
270 
271  for (FitTrackCollection::iterator it = acceptedTracks.begin(); it < acceptedTracks.end(); ++it) {
272  const L1Track* track = &*it;
273  iterations_++;
274  if (std::abs(track->z0() - z0start) > settings_->vx_distance() and
275  std::abs(track->z0() - z0start) > oldDistance) {
276  badTrackIt = it;
277  oldDistance = std::abs(track->z0() - z0start);
278  removing = true;
279  }
280  }
281 
282  if (removing) {
283  const L1Track badTrack = *badTrackIt;
284  if (settings_->debug() > 2)
285  edm::LogInfo("VertexFinder") << "PVR::Removing track " << badTrack.z0() << " at distance " << oldDistance;
286  discardedTracks.push_back(badTrack);
287  acceptedTracks.erase(badTrackIt);
288  }
289  }
290 
291  if (acceptedTracks.size() >= settings_->vx_minTracks()) {
293  for (const L1Track& track : acceptedTracks) {
294  vertex.insert(&track);
295  }
296  computeAndSetVertexParameters(vertex, {}, {});
297  vertices_.push_back(vertex);
298  }
299  if (settings_->debug() > 2)
300  edm::LogInfo("VertexFinder") << "PVR::DiscardedTracks size " << discardedTracks.size();
301  acceptedTracks.clear();
302  acceptedTracks = discardedTracks;
303  }
304  }
305 
306  void VertexFinder::adaptiveVertexReconstruction() {
307  bool start = true;
308  iterations_ = 0;
309  FitTrackCollection discardedTracks, acceptedTracks, discardedTracks2;
310 
311  for (const L1Track& track : fitTracks_) {
312  discardedTracks.push_back(track);
313  }
314 
315  while (discardedTracks.size() >= settings_->vx_minTracks() or start == true) {
316  start = false;
317  discardedTracks2.clear();
318  FitTrackCollection::iterator it = discardedTracks.begin();
319  const L1Track track = *it;
320  acceptedTracks.push_back(track);
321  float z0sum = track.z0();
322 
323  for (FitTrackCollection::iterator it2 = discardedTracks.begin(); it2 < discardedTracks.end(); ++it2) {
324  if (it2 != it) {
325  const L1Track secondTrack = *it2;
326  // Calculate new vertex z0 adding this track
327  z0sum += secondTrack.z0();
328  float z0vertex = z0sum / (acceptedTracks.size() + 1);
329  // Calculate chi2 of new vertex
330  float chi2 = 0.;
331  float dof = 0.;
332  for (const L1Track& accTrack : acceptedTracks) {
333  iterations_++;
334  float Residual = accTrack.z0() - z0vertex;
335  if (std::abs(accTrack.eta()) < 1.2)
336  Residual /= 0.1812; // Assumed z0 resolution
337  else if (std::abs(accTrack.eta()) >= 1.2 && std::abs(accTrack.eta()) < 1.6)
338  Residual /= 0.2912;
339  else if (std::abs(accTrack.eta()) >= 1.6 && std::abs(accTrack.eta()) < 2.)
340  Residual /= 0.4628;
341  else
342  Residual /= 0.65;
343 
344  chi2 += Residual * Residual;
345  dof = (acceptedTracks.size() + 1) * 2 - 1;
346  }
347  if (chi2 / dof < settings_->vx_chi2cut()) {
348  acceptedTracks.push_back(secondTrack);
349  } else {
350  discardedTracks2.push_back(secondTrack);
351  z0sum -= secondTrack.z0();
352  }
353  }
354  }
355 
356  if (acceptedTracks.size() >= settings_->vx_minTracks()) {
358  for (const L1Track& track : acceptedTracks) {
359  vertex.insert(&track);
360  }
361  computeAndSetVertexParameters(vertex, {}, {});
362  vertices_.push_back(vertex);
363  }
364 
365  acceptedTracks.clear();
366  discardedTracks.clear();
367  discardedTracks = discardedTracks2;
368  }
369  }
370 
371  void VertexFinder::HPV() {
372  iterations_ = 0;
373  sort(fitTracks_.begin(), fitTracks_.end(), SortTracksByPt());
374 
376  bool first = true;
377  float z = 99.;
378  for (const L1Track& track : fitTracks_) {
379  if (track.pt() < 50.) {
380  if (first) {
381  first = false;
382  z = track.z0();
383  vertex.insert(&track);
384  } else {
385  if (std::abs(track.z0() - z) < settings_->vx_distance())
386  vertex.insert(&track);
387  }
388  }
389  }
390 
391  computeAndSetVertexParameters(vertex, {}, {});
392  vertex.setZ0(z);
393  vertices_.push_back(vertex);
394  }
395 
396  void VertexFinder::Kmeans() {
397  unsigned int NumberOfClusters = settings_->vx_kmeans_nclusters();
398 
399  vertices_.resize(NumberOfClusters);
400  float ClusterSeparation = 30. / NumberOfClusters;
401 
402  for (unsigned int i = 0; i < NumberOfClusters; ++i) {
403  float ClusterCentre = -15. + ClusterSeparation * (i + 0.5);
404  vertices_[i].setZ0(ClusterCentre);
405  }
406  unsigned int iterations = 0;
407  // Initialise Clusters
408  while (iterations < settings_->vx_kmeans_iterations()) {
409  for (unsigned int i = 0; i < NumberOfClusters; ++i) {
410  vertices_[i].clear();
411  }
412 
413  for (const L1Track& track : fitTracks_) {
414  float distance = 9999;
415  if (iterations == settings_->vx_kmeans_iterations() - 3)
416  distance = settings_->vx_distance() * 2;
417  if (iterations > settings_->vx_kmeans_iterations() - 3)
418  distance = settings_->vx_distance();
419  unsigned int ClusterId;
420  bool NA = true;
421  for (unsigned int id = 0; id < NumberOfClusters; ++id) {
422  if (std::abs(track.z0() - vertices_[id].z0()) < distance) {
423  distance = std::abs(track.z0() - vertices_[id].z0());
424  ClusterId = id;
425  NA = false;
426  }
427  }
428  if (!NA) {
429  vertices_[ClusterId].insert(&track);
430  }
431  }
432  for (unsigned int i = 0; i < NumberOfClusters; ++i) {
433  if (vertices_[i].numTracks() >= settings_->vx_minTracks())
434  computeAndSetVertexParameters(vertices_[i], {}, {});
435  }
436  iterations++;
437  }
438  }
439 
440  void VertexFinder::findPrimaryVertex() {
441  double vertexPt = 0;
442  pv_index_ = 0;
443 
444  for (unsigned int i = 0; i < vertices_.size(); ++i) {
445  if (vertices_[i].pt() > vertexPt) {
446  vertexPt = vertices_[i].pt();
447  pv_index_ = i;
448  }
449  }
450  }
451 
452  void VertexFinder::associatePrimaryVertex(double trueZ0) {
453  double distance = 999.;
454  for (unsigned int id = 0; id < vertices_.size(); ++id) {
455  if (std::abs(trueZ0 - vertices_[id].z0()) < distance) {
456  distance = std::abs(trueZ0 - vertices_[id].z0());
457  pv_index_ = id;
458  }
459  }
460  }
461 
462  void VertexFinder::fastHistoLooseAssociation() {
463  float vxPt = 0.;
464  RecoVertex leading_vertex;
465 
466  for (float z = settings_->vx_histogram_min(); z < settings_->vx_histogram_max();
467  z += settings_->vx_histogram_binwidth()) {
469  for (const L1Track& track : fitTracks_) {
470  if (std::abs(z - track.z0()) < settings_->vx_width()) {
471  vertex.insert(&track);
472  }
473  }
474  computeAndSetVertexParameters(vertex, {}, {});
475  vertex.setZ0(z);
476  if (vertex.pt() > vxPt) {
477  leading_vertex = vertex;
478  vxPt = vertex.pt();
479  }
480  }
481 
482  vertices_.emplace_back(leading_vertex);
483  pv_index_ = 0; // by default fastHistoLooseAssociation algorithm finds only hard PV
484  } // end of fastHistoLooseAssociation
485 
486  void VertexFinder::fastHisto(const TrackerTopology* tTopo) {
487  // Create the histogram
488  int nbins =
489  std::ceil((settings_->vx_histogram_max() - settings_->vx_histogram_min()) / settings_->vx_histogram_binwidth());
490  std::vector<RecoVertex<>> hist(nbins);
491  std::vector<RecoVertex<>> sums(nbins - settings_->vx_windowSize());
492  std::vector<float> bounds(nbins + 1);
493  strided_iota(std::begin(bounds),
494  std::next(std::begin(bounds), nbins + 1),
495  settings_->vx_histogram_min(),
496  settings_->vx_histogram_binwidth());
497 
498  // Loop over the tracks and fill the histogram
499  for (const L1Track& track : fitTracks_) {
500  if ((track.z0() < settings_->vx_histogram_min()) || (track.z0() > settings_->vx_histogram_max()))
501  continue;
502  if (track.getTTTrackPtr()->chi2() > settings_->vx_TrackMaxChi2())
503  continue;
504  if (track.pt() < settings_->vx_TrackMinPt())
505  continue;
506 
507  // Get the number of stubs and the number of stubs in PS layers
508  float nPS = 0., nstubs = 0;
509 
510  // Get pointers to stubs associated to the L1 track
511  const auto& theStubs = track.getTTTrackPtr()->getStubRefs();
512  if (theStubs.empty()) {
513  edm::LogWarning("VertexFinder") << "fastHisto::Could not retrieve the vector of stubs.";
514  continue;
515  }
516 
517  // Loop over the stubs
518  for (const auto& stub : theStubs) {
519  nstubs++;
520  bool isPS = false;
521  DetId detId(stub->getDetId());
522  if (detId.det() == DetId::Detector::Tracker) {
523  if (detId.subdetId() == StripSubdetector::TOB && tTopo->tobLayer(detId) <= 3)
524  isPS = true;
525  else if (detId.subdetId() == StripSubdetector::TID && tTopo->tidRing(detId) <= 9)
526  isPS = true;
527  }
528  if (isPS)
529  nPS++;
530  } // End loop over stubs
531  if (nstubs < settings_->vx_NStubMin())
532  continue;
533  if (nPS < settings_->vx_NStubPSMin())
534  continue;
535 
536  // Quality cuts, may need to be re-optimized
537  int trk_nstub = (int)track.getTTTrackPtr()->getStubRefs().size();
538  float chi2dof = track.getTTTrackPtr()->chi2() / (2 * trk_nstub - 4);
539 
540  if (settings_->vx_DoPtComp()) {
541  float trk_consistency = track.getTTTrackPtr()->stubPtConsistency();
542  if (trk_nstub == 4) {
543  if (std::abs(track.eta()) < 2.2 && trk_consistency > 10)
544  continue;
545  else if (std::abs(track.eta()) > 2.2 && chi2dof > 5.0)
546  continue;
547  }
548  }
549  if (settings_->vx_DoTightChi2()) {
550  if (track.pt() > 10.0 && chi2dof > 5.0)
551  continue;
552  }
553 
554  // Assign the track to the correct vertex
555  auto upper_bound = std::lower_bound(bounds.begin(), bounds.end(), track.z0());
556  int index = std::distance(bounds.begin(), upper_bound) - 1;
557  hist.at(index).insert(&track);
558  } // end loop over tracks
559 
560  // Compute the sums
561  // sliding windows ... sum_i_i+(w-1) where i in (0,nbins-w) and w is the window size
562  std::vector<float> bin_centers(settings_->vx_windowSize(), 0.0);
563  std::vector<unsigned int> counts(settings_->vx_windowSize(), 0);
564  for (unsigned int i = 0; i < sums.size(); i++) {
565  for (unsigned int j = 0; j < settings_->vx_windowSize(); j++) {
566  bin_centers[j] = settings_->vx_histogram_min() + ((i + j) * settings_->vx_histogram_binwidth()) +
567  (0.5 * settings_->vx_histogram_binwidth());
568  counts[j] = hist.at(i + j).numTracks();
569  sums.at(i) += hist.at(i + j);
570  }
571  computeAndSetVertexParameters(sums.at(i), bin_centers, counts);
572  }
573 
574  // Find the maxima of the sums
575  float sigma_max = -999;
576  int imax = -999;
577  std::vector<int> found;
578  found.reserve(settings_->vx_nvtx());
579  for (unsigned int ivtx = 0; ivtx < settings_->vx_nvtx(); ivtx++) {
580  sigma_max = -999;
581  imax = -999;
582  for (unsigned int i = 0; i < sums.size(); i++) {
583  // Skip this window if it will already be returned
584  if (find(found.begin(), found.end(), i) != found.end())
585  continue;
586  if (sums.at(i).pt() > sigma_max) {
587  sigma_max = sums.at(i).pt();
588  imax = i;
589  }
590  }
591 
592  found.push_back(imax);
593  vertices_.emplace_back(sums.at(imax));
594  }
595  pv_index_ = 0;
596  } // end of fastHisto
597 
598 } // namespace l1tVertexFinder
l1tVertexFinder
Definition: AlgoSettings.h:10
pfDeepBoostedJetPreprocessParams_cfi.upper_bound
upper_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:16
DOFs::dof
dof
Definition: AlignPCLThresholdsWriter.cc:37
mps_fire.i
i
Definition: mps_fire.py:428
start
Definition: start.py:1
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
l1tVertexFinder::Vertex::insert
void insert(TP &tp)
Assign TP to this vertex.
Definition: Vertex.h:28
l1tVertexFinder::Vertex::numTracks
unsigned int numTracks() const
Number of tracks originating from this vertex.
Definition: Vertex.h:26
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
TrackerTopology
Definition: TrackerTopology.h:16
l1tVertexFinder::RecoVertex::tracks
const std::vector< const T * > & tracks() const
Tracks in the vertex.
Definition: RecoVertex.h:57
particleFlowClusterHGC_cfi.maxDistance
maxDistance
Definition: particleFlowClusterHGC_cfi.py:23
l1tVertexFinder::RecoVertex::z0
double z0() const
Vertex z0 position [cm].
Definition: RecoVertex.h:73
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
TrackerTopology::tidRing
unsigned int tidRing(const DetId &id) const
Definition: TrackerTopology.h:218
align::Tracker
Definition: StructureType.h:70
DetId
Definition: DetId.h:17
reco::ceil
constexpr int32_t ceil(float num)
Definition: constexpr_cmath.h:7
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
LaserClient_cfi.nbins
nbins
Definition: LaserClient_cfi.py:51
l1tVertexFinder::FitTrackCollection
std::vector< L1Track > FitTrackCollection
Definition: VertexFinder.h:18
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
class-composition.visited
visited
Definition: class-composition.py:83
dqmdumpme.k
k
Definition: dqmdumpme.py:60
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:125
pfDeepBoostedJetPreprocessParams_cfi.lower_bound
lower_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:15
RecoVertex
Definition: ConvertError.h:7
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:176
gpuVertexFinder::hist
__shared__ Hist hist
Definition: gpuClusterTracksDBSCAN.h:48
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
createfilelist.int
int
Definition: createfilelist.py:10
l1tVertexFinder::VertexFinder::SortTracksByPt
Definition: VertexFinder.h:35
l1tVertexFinder::VertexFinder::SortTracksByZ0
Helper structs/classes.
Definition: VertexFinder.h:31
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
std
Definition: JetResolutionObject.h:76
HltBtagValidation_cff.Vertex
Vertex
Definition: HltBtagValidation_cff.py:32
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
dqmiodumpmetadata.counts
counts
Definition: dqmiodumpmetadata.py:25
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
VertexFinder.h
l1tVertexFinder::RecoVertex
Definition: RecoVertex.h:15
l1tVertexFinder::RecoVertex::numTracks
unsigned int numTracks() const
Number of tracks originating from this vertex.
Definition: RecoVertex.h:49
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
l1tVertexFinder::Vertex
Definition: Vertex.h:10
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
globals_cff.id2
id2
Definition: globals_cff.py:34
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HLT_FULL_cff.distance
distance
Definition: HLT_FULL_cff.py:7746
edm::Log
Definition: MessageLogger.h:70
listHistos.trackPt
trackPt
Definition: listHistos.py:120
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
l1tVertexFinder::L1Track
Simple wrapper class for TTTrack.
Definition: L1Track.h:17
GetRecoTauVFromDQM_MC_cff.next
next
Definition: GetRecoTauVFromDQM_MC_cff.py:31
l1tVertexFinder::L1Track::z0
float z0() const
Definition: L1Track.h:25
fastsim::Constants::NA
static constexpr double NA
Avogadro's number.
Definition: Constants.h:16