CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Private Attributes
l1tVertexFinder::VertexFinder Class Reference

#include <VertexFinder.h>

Classes

struct  SortTracksByPt
 
struct  SortTracksByZ0
 Helper structs/classes. More...
 

Public Member Functions

void adaptiveVertexReconstruction ()
 Adaptive Vertex Reconstruction algorithm. More...
 
void AdaptiveVertexReconstruction ()
 Vertexing algorithms. More...
 
void agglomerativeHierarchicalClustering ()
 Simple Merge Algorithm. More...
 
void AgglomerativeHierarchicalClustering ()
 Simple Merge Algorithm. More...
 
void associatePrimaryVertex (double trueZ0)
 Associate the primary vertex with the real one. More...
 
float centralDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find distance between centres of two clusters. More...
 
float CentralDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find distance between centres of two clusters. More...
 
void computeAndSetVertexParameters (RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
 Compute the vertex parameters. More...
 
void DBSCAN ()
 DBSCAN algorithm. More...
 
void fastHisto (const TrackerTopology *tTopo)
 Histogramming algorithm. More...
 
void FastHisto (const TrackerTopology *tTopo)
 Histogramming algorithm. More...
 
void fastHistoLooseAssociation ()
 High pT Vertex Algorithm. More...
 
void FastHistoLooseAssociation ()
 TDR histogramming algorithmn. More...
 
void findPrimaryVertex ()
 Find the primary vertex. More...
 
const FitTrackCollectionfitTracks () const
 Storage for tracks out of the L1 Track finder. More...
 
void GapClustering ()
 Gap Clustering Algorithm. More...
 
void HPV ()
 High pT Vertex Algorithm. More...
 
unsigned int IterationsPerTrack () const
 Accessors. More...
 
unsigned int iterationsPerTrack () const
 Number of iterations. More...
 
void Kmeans ()
 Kmeans Algorithm. More...
 
float maxDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find maximum distance in two clusters of tracks. More...
 
float MaxDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find maximum distance in two clusters of tracks. More...
 
float meanDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find average distance in two clusters of tracks. More...
 
float MeanDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find average distance in two clusters of tracks. More...
 
float minDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find minimum distance in two clusters of tracks. More...
 
float MinDistance (RecoVertex<> cluster0, RecoVertex<> cluster1)
 Find minimum distance in two clusters of tracks. More...
 
unsigned int numInputTracks () const
 Storage for tracks out of the L1 Track finder. More...
 
unsigned int NumIterations () const
 Number of iterations. More...
 
unsigned int numIterations () const
 Number of iterations. More...
 
unsigned int numVertices () const
 Number of reconstructed vertices. More...
 
RecoVertex primaryVertex () const
 Reconstructed Primary Vertex. More...
 
unsigned int primaryVertexId () const
 Reconstructed Primary Vertex Id. More...
 
void PVR ()
 Principal Vertex Reconstructor algorithm. More...
 
void SortVerticesInPt ()
 Sort vertices in pT. More...
 
void SortVerticesInZ0 ()
 Sort vertices in z. More...
 
template<typename ForwardIterator , typename T >
void strided_iota (ForwardIterator first, ForwardIterator last, T value, T stride)
 
 VertexFinder (FitTrackCollection &fitTracks, const AlgoSettings &settings)
 Constructor and destructor. More...
 
const std::vector< RecoVertex<> > & vertices () const
 Returns the z positions of the reconstructed primary vertices. More...
 
 ~VertexFinder ()
 

Private Attributes

FitTrackCollection fitTracks_
 
unsigned int iterations_
 
unsigned int numMatchedVertices_
 
unsigned int pv_index_
 
const AlgoSettingssettings_
 
std::vector< RecoVertex<> > vertices_
 

Detailed Description

Definition at line 21 of file VertexFinder.h.

Constructor & Destructor Documentation

l1tVertexFinder::VertexFinder::VertexFinder ( FitTrackCollection fitTracks,
const AlgoSettings settings 
)
inline

Constructor and destructor.

Definition at line 24 of file VertexFinder.h.

References fitTracks(), fitTracks_, and settings_.

24  {
26  settings_ = &settings;
27  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
const FitTrackCollection & fitTracks() const
Storage for tracks out of the L1 Track finder.
Definition: VertexFinder.h:65
const AlgoSettings * settings_
Definition: VertexFinder.h:146
l1tVertexFinder::VertexFinder::~VertexFinder ( )
inline

Definition at line 28 of file VertexFinder.h.

28 {}

Member Function Documentation

void l1tVertexFinder::VertexFinder::adaptiveVertexReconstruction ( )

Adaptive Vertex Reconstruction algorithm.

Definition at line 306 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::chi2, l1tVertexFinder::RecoVertex< T >::insert(), or, command_line::start, HLT_FULL_cff::track, and l1tVertexFinder::L1Track::z0().

Referenced by VertexProducer::produce().

306  {
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()) {
357  RecoVertex vertex;
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  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::vector< L1Track > FitTrackCollection
Definition: VertexFinder.h:18
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
unsigned int vx_minTracks() const
Definition: AlgoSettings.h:39
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
void l1tVertexFinder::VertexFinder::AdaptiveVertexReconstruction ( )

Vertexing algorithms.

Adaptive Vertex Reconstruction algorithm

void l1tVertexFinder::VertexFinder::agglomerativeHierarchicalClustering ( )

Simple Merge Algorithm.

Definition at line 124 of file VertexFinder.cc.

References mps_fire::i, or, HLT_FULL_cff::track, and tracks.

Referenced by VertexProducer::produce().

124  {
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  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
unsigned int vx_distanceType() const
For Agglomerative cluster algorithm, select a definition of distance between clusters.
Definition: AlgoSettings.h:33
float maxDistance(RecoVertex<> cluster0, RecoVertex<> cluster1)
Find maximum distance in two clusters of tracks.
Definition: VertexFinder.cc:78
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
float meanDistance(RecoVertex<> cluster0, RecoVertex<> cluster1)
Find average distance in two clusters of tracks.
float centralDistance(RecoVertex<> cluster0, RecoVertex<> cluster1)
Find distance between centres of two clusters.
auto const & tracks
cannot be loose
float minDistance(RecoVertex<> cluster0, RecoVertex<> cluster1)
Find minimum distance in two clusters of tracks.
Definition: VertexFinder.cc:91
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
unsigned int vx_minTracks() const
Definition: AlgoSettings.h:39
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
void l1tVertexFinder::VertexFinder::AgglomerativeHierarchicalClustering ( )

Simple Merge Algorithm.

void l1tVertexFinder::VertexFinder::associatePrimaryVertex ( double  trueZ0)

Associate the primary vertex with the real one.

Definition at line 452 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::distance, and gpuClustering::id.

452  {
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  }
uint16_t *__restrict__ id
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
float l1tVertexFinder::VertexFinder::centralDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find distance between centres of two clusters.

Definition at line 117 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::distance, and l1tVertexFinder::RecoVertex< T >::z0().

117  {
118  computeAndSetVertexParameters(cluster0, {}, {});
119  computeAndSetVertexParameters(cluster1, {}, {});
120  float distance = std::abs(cluster0.z0() - cluster1.z0());
121  return distance;
122  }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
float l1tVertexFinder::VertexFinder::CentralDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find distance between centres of two clusters.

void l1tVertexFinder::VertexFinder::computeAndSetVertexParameters ( RecoVertex<> &  vertex,
const std::vector< float > &  bin_centers,
const std::vector< unsigned int > &  counts 
)

Compute the vertex parameters.

Definition at line 7 of file VertexFinder.cc.

References funct::abs(), l1tVertexFinder::RecoVertex< T >::numTracks(), funct::pow(), DiDispStaMuonMonitor_cfi::pt, l1tVertexFinder::RecoVertex< T >::setParameters(), mathSSE::sqrt(), HLT_FULL_cff::track, listHistos::trackPt, and l1tVertexFinder::RecoVertex< T >::tracks().

9  {
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  }
float vx_TrackMaxPtBehavior() const
Definition: AlgoSettings.h:65
tuple trackPt
Definition: listHistos.py:120
T sqrt(T t)
Definition: SSEVec.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
unsigned int vx_weightedmean() const
Definition: AlgoSettings.h:41
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
void l1tVertexFinder::VertexFinder::DBSCAN ( )

DBSCAN algorithm.

Definition at line 177 of file VertexFinder.cc.

References funct::abs(), spr::find(), mps_fire::i, gpuClustering::id, l1tVertexFinder::RecoVertex< T >::insert(), isotrackApplyRegressor::k, l1tVertexFinder::RecoVertex< T >::numTracks(), DiDispStaMuonMonitor_cfi::pt, and class-composition::visited.

Referenced by VertexProducer::produce().

177  {
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 {
210  RecoVertex vertex;
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  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
uint16_t *__restrict__ id
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
unsigned int vx_minTracks() const
Definition: AlgoSettings.h:39
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
void l1tVertexFinder::VertexFinder::fastHisto ( const TrackerTopology tTopo)

Histogramming algorithm.

Definition at line 486 of file VertexFinder.cc.

References funct::abs(), SplitLinear::begin, reco::ceil(), dqmiodumpmetadata::counts, HLT_FULL_cff::distance, spr::find(), newFWLiteAna::found, gpuVertexFinder::hist, mps_fire::i, dqmiolumiharvest::j, cuda_std::lower_bound(), hlt_dqm_clientPB-live_cfg::nbins, GetRecoTauVFromDQM_MC_cff::next, StripSubdetector::TID, TrackerTopology::tidRing(), StripSubdetector::TOB, TrackerTopology::tobLayer(), HLT_FULL_cff::track, align::Tracker, and cuda_std::upper_bound().

Referenced by VertexProducer::produce().

486  {
487  // Create the histogram
488  int nbins =
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),
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
constexpr int32_t ceil(float num)
float vx_TrackMaxChi2() const
Definition: AlgoSettings.h:66
double vx_histogram_max() const
Definition: AlgoSettings.h:49
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
unsigned int tidRing(const DetId &id) const
double vx_histogram_binwidth() const
Definition: AlgoSettings.h:50
unsigned int vx_windowSize() const
Window size of the sliding window.
Definition: AlgoSettings.h:45
unsigned int vx_nvtx() const
Number of vertices to return for FastHisto.
Definition: AlgoSettings.h:57
__host__ __device__ constexpr RandomIt upper_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr auto TOB
__shared__ Hist hist
void strided_iota(ForwardIterator first, ForwardIterator last, T value, T stride)
Definition: VertexFinder.h:107
Definition: DetId.h:17
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
double vx_histogram_min() const
Definition: AlgoSettings.h:48
bool vx_DoPtComp() const
FastHisto track selection control.
Definition: AlgoSettings.h:54
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
Log< level::Warning, false > LogWarning
static constexpr auto TID
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
unsigned int tobLayer(const DetId &id) const
void l1tVertexFinder::VertexFinder::FastHisto ( const TrackerTopology tTopo)

Histogramming algorithm.

void l1tVertexFinder::VertexFinder::fastHistoLooseAssociation ( )

High pT Vertex Algorithm.

Definition at line 462 of file VertexFinder.cc.

References funct::abs(), l1tVertexFinder::RecoVertex< T >::insert(), l1tVertexFinder::RecoVertex< T >::pt(), l1tVertexFinder::RecoVertex< T >::setZ0(), and HLT_FULL_cff::track.

Referenced by VertexProducer::produce().

462  {
463  float vxPt = 0.;
464  RecoVertex leading_vertex;
465 
466  for (float z = settings_->vx_histogram_min(); z < settings_->vx_histogram_max();
468  RecoVertex vertex;
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
double vx_histogram_max() const
Definition: AlgoSettings.h:49
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
double vx_histogram_binwidth() const
Definition: AlgoSettings.h:50
float vx_width() const
FastHisto assumed vertex width.
Definition: AlgoSettings.h:52
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
double vx_histogram_min() const
Definition: AlgoSettings.h:48
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
void l1tVertexFinder::VertexFinder::FastHistoLooseAssociation ( )

TDR histogramming algorithmn.

void l1tVertexFinder::VertexFinder::findPrimaryVertex ( )

Find the primary vertex.

Definition at line 440 of file VertexFinder.cc.

References mps_fire::i, and DiDispStaMuonMonitor_cfi::pt.

Referenced by VertexProducer::produce().

440  {
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  }
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
const FitTrackCollection& l1tVertexFinder::VertexFinder::fitTracks ( ) const
inline

Storage for tracks out of the L1 Track finder.

Definition at line 65 of file VertexFinder.h.

References fitTracks_.

Referenced by VertexFinder().

65 { return fitTracks_; }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
void l1tVertexFinder::VertexFinder::GapClustering ( )

Gap Clustering Algorithm.

Definition at line 60 of file VertexFinder.cc.

References l1tVertexFinder::RecoVertex< T >::clear(), mps_fire::i, l1tVertexFinder::RecoVertex< T >::insert(), l1tVertexFinder::RecoVertex< T >::numTracks(), and or.

Referenced by VertexProducer::produce().

60  {
61  sort(fitTracks_.begin(), fitTracks_.end(), SortTracksByZ0());
62  iterations_ = 0;
63  RecoVertex Vertex;
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  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
unsigned int vx_minTracks() const
Definition: AlgoSettings.h:39
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
void l1tVertexFinder::VertexFinder::HPV ( )

High pT Vertex Algorithm.

Definition at line 371 of file VertexFinder.cc.

References funct::abs(), first, and HLT_FULL_cff::track.

Referenced by VertexProducer::produce().

371  {
372  iterations_ = 0;
373  sort(fitTracks_.begin(), fitTracks_.end(), SortTracksByPt());
374 
375  RecoVertex vertex;
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  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
unsigned int l1tVertexFinder::VertexFinder::IterationsPerTrack ( ) const
inline

Accessors.

Number of iterations

Definition at line 44 of file VertexFinder.h.

References fitTracks_, and iterations_.

44 { return double(iterations_) / double(fitTracks_.size()); }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
unsigned int l1tVertexFinder::VertexFinder::iterationsPerTrack ( ) const
inline

Number of iterations.

Definition at line 104 of file VertexFinder.h.

References fitTracks_, and iterations_.

104 { return double(iterations_) / double(fitTracks_.size()); }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
void l1tVertexFinder::VertexFinder::Kmeans ( )

Kmeans Algorithm.

Definition at line 396 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::distance, mps_fire::i, gpuClustering::id, fastsim::Constants::NA, and HLT_FULL_cff::track.

Referenced by VertexProducer::produce().

396  {
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())
435  }
436  iterations++;
437  }
438  }
static double constexpr NA
Avogadro&#39;s number.
Definition: Constants.h:16
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
uint16_t *__restrict__ id
unsigned int vx_kmeans_nclusters() const
Definition: AlgoSettings.h:62
unsigned int vx_kmeans_iterations() const
Definition: AlgoSettings.h:61
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
unsigned int vx_minTracks() const
Definition: AlgoSettings.h:39
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
float l1tVertexFinder::VertexFinder::maxDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find maximum distance in two clusters of tracks.

Definition at line 78 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::distance, and l1tVertexFinder::RecoVertex< T >::tracks().

78  {
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  }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float l1tVertexFinder::VertexFinder::MaxDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find maximum distance in two clusters of tracks.

float l1tVertexFinder::VertexFinder::meanDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find average distance in two clusters of tracks.

Definition at line 104 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::distance, l1tVertexFinder::RecoVertex< T >::numTracks(), and l1tVertexFinder::RecoVertex< T >::tracks().

104  {
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  }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float l1tVertexFinder::VertexFinder::MeanDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find average distance in two clusters of tracks.

float l1tVertexFinder::VertexFinder::minDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find minimum distance in two clusters of tracks.

Definition at line 91 of file VertexFinder.cc.

References funct::abs(), HLT_FULL_cff::distance, and l1tVertexFinder::RecoVertex< T >::tracks().

91  {
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  }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float l1tVertexFinder::VertexFinder::MinDistance ( RecoVertex<>  cluster0,
RecoVertex<>  cluster1 
)

Find minimum distance in two clusters of tracks.

unsigned int l1tVertexFinder::VertexFinder::numInputTracks ( ) const
inline

Storage for tracks out of the L1 Track finder.

Definition at line 46 of file VertexFinder.h.

References fitTracks_.

46 { return fitTracks_.size(); }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
unsigned int l1tVertexFinder::VertexFinder::NumIterations ( ) const
inline

Number of iterations.

Definition at line 48 of file VertexFinder.h.

References iterations_.

48 { return iterations_; }
unsigned int l1tVertexFinder::VertexFinder::numIterations ( ) const
inline

Number of iterations.

Definition at line 102 of file VertexFinder.h.

References iterations_.

102 { return iterations_; }
unsigned int l1tVertexFinder::VertexFinder::numVertices ( ) const
inline

Number of reconstructed vertices.

Definition at line 50 of file VertexFinder.h.

References vertices_.

50 { return vertices_.size(); }
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
RecoVertex l1tVertexFinder::VertexFinder::primaryVertex ( ) const
inline

Reconstructed Primary Vertex.

Definition at line 52 of file VertexFinder.h.

References pv_index_, and vertices_.

52  {
53  if (pv_index_ < vertices_.size())
54  return vertices_[pv_index_];
55  else {
56  edm::LogWarning("VertexFinder") << "PrimaryVertex::No Primary Vertex has been found.";
57  return RecoVertex<>();
58  }
59  }
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
Log< level::Warning, false > LogWarning
unsigned int l1tVertexFinder::VertexFinder::primaryVertexId ( ) const
inline

Reconstructed Primary Vertex Id.

Definition at line 61 of file VertexFinder.h.

References pv_index_.

61 { return pv_index_; }
void l1tVertexFinder::VertexFinder::PVR ( )

Principal Vertex Reconstructor algorithm.

Definition at line 241 of file VertexFinder.cc.

References funct::abs(), l1tVertexFinder::RecoVertex< T >::insert(), or, command_line::start, HLT_FULL_cff::track, and l1tVertexFinder::L1Track::z0().

Referenced by VertexProducer::produce().

241  {
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()) {
292  RecoVertex vertex;
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  }
FitTrackCollection fitTracks_
Definition: VertexFinder.h:149
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
std::vector< L1Track > FitTrackCollection
Definition: VertexFinder.h:18
unsigned int debug() const
Definition: AlgoSettings.h:71
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const AlgoSettings * settings_
Definition: VertexFinder.h:146
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
unsigned int vx_minTracks() const
Definition: AlgoSettings.h:39
void computeAndSetVertexParameters(RecoVertex<> &vertex, const std::vector< float > &bin_centers, const std::vector< unsigned int > &counts)
Compute the vertex parameters.
Definition: VertexFinder.cc:7
void l1tVertexFinder::VertexFinder::SortVerticesInPt ( )
inline

Sort vertices in pT.

Definition at line 90 of file VertexFinder.h.

References l1tVertexFinder::RecoVertex< T >::pt(), and vertices_.

Referenced by VertexProducer::produce().

90  {
91  std::sort(vertices_.begin(), vertices_.end(), [](const RecoVertex<>& vertex0, const RecoVertex<>& vertex1) {
92  return (vertex0.pt() > vertex1.pt());
93  });
94  }
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
void l1tVertexFinder::VertexFinder::SortVerticesInZ0 ( )
inline

Sort vertices in z.

Definition at line 96 of file VertexFinder.h.

References vertices_, and l1tVertexFinder::RecoVertex< T >::z0().

96  {
97  std::sort(vertices_.begin(), vertices_.end(), [](const RecoVertex<>& vertex0, const RecoVertex<>& vertex1) {
98  return (vertex0.z0() < vertex1.z0());
99  });
100  }
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147
template<typename ForwardIterator , typename T >
void l1tVertexFinder::VertexFinder::strided_iota ( ForwardIterator  first,
ForwardIterator  last,
T  value,
T  stride 
)
inline

Definition at line 107 of file VertexFinder.h.

References gpuPixelDoublets::stride, and relativeConstraints::value.

107  {
108  while (first != last) {
109  *first++ = value;
110  value += stride;
111  }
112  }
tuple last
Definition: dqmdumpme.py:56
const std::vector<RecoVertex<> >& l1tVertexFinder::VertexFinder::vertices ( ) const
inline

Returns the z positions of the reconstructed primary vertices.

Definition at line 63 of file VertexFinder.h.

References vertices_.

Referenced by VertexProducer::produce().

63 { return vertices_; }
std::vector< RecoVertex<> > vertices_
Definition: VertexFinder.h:147

Member Data Documentation

FitTrackCollection l1tVertexFinder::VertexFinder::fitTracks_
private
unsigned int l1tVertexFinder::VertexFinder::iterations_
private
unsigned int l1tVertexFinder::VertexFinder::numMatchedVertices_
private

Definition at line 148 of file VertexFinder.h.

unsigned int l1tVertexFinder::VertexFinder::pv_index_
private

Definition at line 150 of file VertexFinder.h.

Referenced by primaryVertex(), and primaryVertexId().

const AlgoSettings* l1tVertexFinder::VertexFinder::settings_
private

Definition at line 146 of file VertexFinder.h.

Referenced by VertexFinder().

std::vector<RecoVertex<> > l1tVertexFinder::VertexFinder::vertices_
private