CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
reco::GhostTrackVertexFinder Class Reference

#include <GhostTrackVertexFinder.h>

Classes

struct  FinderInfo
 

Public Types

enum  FitType { kAlwaysWithGhostTrack, kSingleTracksWithGhostTrack, kRefitGhostTrackWithVertices }
 

Public Member Functions

 GhostTrackVertexFinder ()
 
 GhostTrackVertexFinder (double maxFitChi2, double mergeThreshold, double primcut, double seccut, FitType fitType)
 
std::vector< TransientVertexvertices (const GhostTrack &ghostTrack, const CachingVertex< 5 > &primary=CachingVertex< 5 >(), const reco::BeamSpot &beamSpot=reco::BeamSpot(), bool hasBeamSpot=false, bool hasPrimaries=false) const
 
std::vector< TransientVertexvertices (const GlobalPoint &primaryPosition, const GlobalError &primaryError, const GhostTrack &ghostTrack) const
 
std::vector< TransientVertexvertices (const GlobalPoint &primaryPosition, const GlobalError &primaryError, const GlobalVector &direction, double coneRadius, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &primaries, const std::vector< TransientTrack > &tracks) const
 
std::vector< TransientVertexvertices (const GlobalPoint &primaryPosition, const GlobalError &primaryError, const GlobalVector &direction, double coneRadius, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &tracks) const
 
std::vector< TransientVertexvertices (const GlobalPoint &primaryPosition, const GlobalError &primaryError, const GlobalVector &direction, double coneRadius, const std::vector< TransientTrack > &tracks) const
 
std::vector< TransientVertexvertices (const GlobalPoint &primaryPosition, const GlobalError &primaryError, const reco::BeamSpot &beamSpot, const GhostTrack &ghostTrack) const
 
std::vector< TransientVertexvertices (const GlobalPoint &primaryPosition, const GlobalError &primaryError, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &primaries, const GhostTrack &ghostTrack) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const GhostTrack &ghostTrack) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const GlobalVector &direction, double coneRadius, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &primaries, const std::vector< TransientTrack > &tracks) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const GlobalVector &direction, double coneRadius, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &tracks) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const GlobalVector &direction, double coneRadius, const std::vector< TransientTrack > &tracks) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const reco::BeamSpot &beamSpot, const GhostTrack &ghostTrack) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &primaries, const GhostTrack &ghostTrack) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const reco::Track &ghostTrack, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &primaries, const std::vector< TransientTrack > &tracks, const std::vector< float > &weights=std::vector< float >()) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const reco::Track &ghostTrack, const reco::BeamSpot &beamSpot, const std::vector< TransientTrack > &tracks, const std::vector< float > &weights=std::vector< float >()) const
 
std::vector< TransientVertexvertices (const reco::Vertex &primaryVertex, const reco::Track &ghostTrack, const std::vector< TransientTrack > &tracks, const std::vector< float > &weights=std::vector< float >()) const
 
 ~GhostTrackVertexFinder ()
 

Private Member Functions

GhostTrackFitterghostTrackFitter () const
 
std::vector< CachingVertex< 5 > > initialVertices (const FinderInfo &info) const
 
CachingVertex< 5 > mergeVertices (const CachingVertex< 5 > &vertex1, const CachingVertex< 5 > &vertex2, const FinderInfo &info, bool isPrimary) const
 
bool reassignTracks (std::vector< CachingVertex< 5 > > &vertices, const FinderInfo &info) const
 
bool recursiveMerge (std::vector< CachingVertex< 5 > > &vertices, const FinderInfo &info) const
 
void refitGhostTrack (std::vector< CachingVertex< 5 > > &vertices, FinderInfo &info) const
 
VertexFitter< 5 > & vertexFitter (bool primary) const
 

Static Private Member Functions

static double vertexCompat (const CachingVertex< 5 > &vtx1, const CachingVertex< 5 > &vtx2, const FinderInfo &info, double scale1=1.0, double scale2=1.0)
 

Private Attributes

FitType fitType_
 
std::unique_ptr< GhostTrackFitterghostTrackFitter_
 
double maxFitChi2_
 
double mergeThreshold_
 
double primcut_
 
std::unique_ptr< VertexFitter< 5 > > primVertexFitter_
 
double seccut_
 
std::unique_ptr< VertexFitter< 5 > > secVertexFitter_
 

Detailed Description

Definition at line 29 of file GhostTrackVertexFinder.h.

Member Enumeration Documentation

◆ FitType

Enumerator
kAlwaysWithGhostTrack 
kSingleTracksWithGhostTrack 
kRefitGhostTrackWithVertices 

Definition at line 31 of file GhostTrackVertexFinder.h.

Constructor & Destructor Documentation

◆ GhostTrackVertexFinder() [1/2]

GhostTrackVertexFinder::GhostTrackVertexFinder ( )

Definition at line 261 of file GhostTrackVertexFinder.cc.

◆ GhostTrackVertexFinder() [2/2]

GhostTrackVertexFinder::GhostTrackVertexFinder ( double  maxFitChi2,
double  mergeThreshold,
double  primcut,
double  seccut,
FitType  fitType 
)

◆ ~GhostTrackVertexFinder()

GhostTrackVertexFinder::~GhostTrackVertexFinder ( )

Definition at line 268 of file GhostTrackVertexFinder.cc.

268 {}

Member Function Documentation

◆ ghostTrackFitter()

GhostTrackFitter & GhostTrackVertexFinder::ghostTrackFitter ( ) const
private

Definition at line 270 of file GhostTrackVertexFinder.cc.

270  {
271  if (!ghostTrackFitter_.get())
272  ghostTrackFitter_ = std::make_unique<GhostTrackFitter>();
273 
274  return *ghostTrackFitter_;
275 }

References ghostTrackFitter_.

Referenced by vertices().

◆ initialVertices()

std::vector< CachingVertex< 5 > > GhostTrackVertexFinder::initialVertices ( const FinderInfo info) const
private

Definition at line 640 of file GhostTrackVertexFinder.cc.

640  {
641  std::vector<CachingVertex<5> > vertices;
642  for (std::vector<GhostTrackState>::const_iterator iter = info.states.begin(); iter != info.states.end(); ++iter) {
643  if (!iter->isValid())
644  continue;
645 
646  GhostTrackState state(*iter);
647  state.linearize(info.pred);
648 
649  if (!state.isValid())
650  continue;
651 
652  CachingVertex<5> vtx = vertexAtState(info.ghostTrack, info.pred, state);
653 
654  if (vtx.isValid()) // && fitChi2(vtx) < maxFitChi2_)
655  vertices.push_back(vtx);
656  }
657 
658  return vertices;
659 }

References info(), vertexAtState(), vertices(), and extraflags_cff::vtx.

Referenced by vertices().

◆ mergeVertices()

CachingVertex< 5 > GhostTrackVertexFinder::mergeVertices ( const CachingVertex< 5 > &  vertex1,
const CachingVertex< 5 > &  vertex2,
const FinderInfo info,
bool  isPrimary 
) const
private

Definition at line 681 of file GhostTrackVertexFinder.cc.

684  {
685  VertexTrackFactory<5> vertexTrackFactory;
686 
687  VertexState state = stateMean(vertex1.vertexState(), vertex2.vertexState());
688  std::vector<RefCountedVertexTrack> linTracks;
689  VtxTrackIs isGhostTrack(info.ghostTrack);
690  RefCountedVertexTrack vtxGhostTrack;
691 
692  mergeTrackHelper(vertex1.tracks(), linTracks, state, isGhostTrack, vtxGhostTrack, vertexTrackFactory);
693  mergeTrackHelper(vertex2.tracks(), linTracks, state, isGhostTrack, vtxGhostTrack, vertexTrackFactory);
694 
695  if (vtxGhostTrack && (fitType_ == kAlwaysWithGhostTrack || linTracks.size() < 2))
696  linTracks.push_back(vertexTrackFactory.vertexTrack(vtxGhostTrack->linearizedTrack(), vtxGhostTrack->vertexState()));
697 
698  try {
700  if (info.hasBeamSpot && isPrimary)
701  vtx = vertexFitter(true).vertex(linTracks, info.beamSpot.position(), info.beamSpot.error());
702  else
703  vtx = vertexFitter(isPrimary).vertex(linTracks);
704  if (vtx.isValid())
705  return vtx;
706  } catch (const VertexException &e) {
707  // fit failed
708  }
709 
710  return CachingVertex<5>();
711 }

References MillePedeFileConverter_cfg::e, fitType_, info(), phase2tkutil::isPrimary(), kAlwaysWithGhostTrack, mergeTrackHelper(), stateMean(), CachingVertex< N >::tracks(), VertexFitter< N >::vertex(), vertexFitter(), CachingVertex< N >::vertexState(), VertexTrackFactory< N >::vertexTrack(), and extraflags_cff::vtx.

Referenced by recursiveMerge().

◆ reassignTracks()

bool GhostTrackVertexFinder::reassignTracks ( std::vector< CachingVertex< 5 > > &  vertices,
const FinderInfo info 
) const
private

Definition at line 785 of file GhostTrackVertexFinder.cc.

785  {
786  std::vector<std::pair<RefCountedVertexTrack, std::vector<RefCountedVertexTrack> > > trackBundles(vertices_.size());
787 
788  VtxTrackIs isGhostTrack(info.ghostTrack);
789 
790  bool assignmentChanged = false;
791  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices_.begin(); iter != vertices_.end(); ++iter) {
792  std::vector<RefCountedVertexTrack> vtxTracks = iter->tracks();
793 
794  if (vtxTracks.empty()) {
795  LinearizedTrackStateFactory linTrackFactory;
796  VertexTrackFactory<5> vertexTrackFactory;
797 
798  RefCountedLinearizedTrackState linState = linTrackFactory.linearizedTrackState(iter->position(), info.ghostTrack);
799 
800  trackBundles[iter - vertices_.begin()].first = vertexTrackFactory.vertexTrack(linState, iter->vertexState());
801  }
802 
803  for (std::vector<RefCountedVertexTrack>::const_iterator track = vtxTracks.begin(); track != vtxTracks.end();
804  ++track) {
805  if (isGhostTrack(*track)) {
806  trackBundles[iter - vertices_.begin()].first = *track;
807  continue;
808  }
809 
810  if ((*track)->weight() < 1e-3) {
811  trackBundles[iter - vertices_.begin()].second.push_back(*track);
812  continue;
813  }
814 
815  unsigned int idx = iter - vertices_.begin();
816  double best = 1.0e9;
817  for (std::vector<CachingVertex<5> >::const_iterator vtx = vertices_.begin(); vtx != vertices_.end(); ++vtx) {
818  if (info.pred.lambda(vtx->position()) < info.pred.lambda(vertices_[0].position()))
819  continue;
820 
821  double compat = sqr(trackVertexCompat(*vtx, *track));
822 
823  compat /= (vtx == vertices_.begin()) ? primcut_ : seccut_;
824 
825  if (compat < best) {
826  best = compat;
827  idx = vtx - vertices_.begin();
828  }
829  }
830 
831  if ((int)idx != iter - vertices_.begin())
832  assignmentChanged = true;
833 
834  trackBundles[idx].second.push_back(*track);
835  }
836  }
837 
838  if (!assignmentChanged)
839  return false;
840 
841  VertexTrackFactory<5> vertexTrackFactory;
842  std::vector<CachingVertex<5> > vertices;
843  vertices.reserve(vertices_.size());
844 
845  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices_.begin(); iter != vertices_.end(); ++iter) {
846  const std::vector<RefCountedVertexTrack> &tracks = trackBundles[iter - vertices_.begin()].second;
847  if (tracks.empty())
848  continue;
849 
851 
852  if (tracks.size() == 1) {
853  const TransientTrack &track = tracks[0]->linearizedTrack()->track();
854 
855  int idx = -1;
856  for (std::vector<GhostTrackState>::const_iterator iter = info.states.begin(); iter != info.states.end(); ++iter) {
857  if (iter->isTrack() && iter->track() == track) {
858  idx = iter - info.states.begin();
859  break;
860  }
861  }
862  if (idx < 0)
863  continue;
864 
865  vtx = vertexAtState(info.ghostTrack, info.pred, info.states[idx]);
866  if (!vtx.isValid())
867  continue;
868  } else {
869  std::vector<RefCountedVertexTrack> linTracks = relinearizeTracks(tracks, iter->vertexState());
870 
872  linTracks.push_back(
873  relinearizeTrack(trackBundles[iter - vertices_.begin()].first, iter->vertexState(), vertexTrackFactory));
874 
875  bool primary = iter == vertices_.begin();
876  try {
877  if (primary && info.hasBeamSpot)
878  vtx = vertexFitter(true).vertex(linTracks, info.beamSpot.position(), info.beamSpot.error());
879  else
880  vtx = vertexFitter(primary).vertex(linTracks);
881  } catch (const VertexException &e) {
882  // fit failed;
883  }
884  if (!vtx.isValid())
885  return false;
886  }
887 
888  vertices.push_back(vtx);
889  };
890 
891  std::swap(vertices_, vertices);
892  return true;
893 }

References MillePedeFileConverter_cfg::e, fitType_, heavyIonCSV_trainingSettings::idx, info(), kAlwaysWithGhostTrack, LinearizedTrackStateFactory::linearizedTrackState(), primcut_, relinearizeTrack(), relinearizeTracks(), seccut_, sqr(), std::swap(), HLT_FULL_cff::track, tracks, trackVertexCompat(), trackerHitRTTI::vector, VertexFitter< N >::vertex(), vertexAtState(), vertexFitter(), VertexTrackFactory< N >::vertexTrack(), vertices(), and extraflags_cff::vtx.

Referenced by vertices().

◆ recursiveMerge()

bool GhostTrackVertexFinder::recursiveMerge ( std::vector< CachingVertex< 5 > > &  vertices,
const FinderInfo info 
) const
private

Definition at line 713 of file GhostTrackVertexFinder.cc.

713  {
714  typedef std::pair<unsigned int, unsigned int> Indices;
715 
716  std::multimap<float, Indices> compatMap;
717  unsigned int n = vertices.size();
718  for (unsigned int i = 0; i < n; i++) {
719  const CachingVertex<5> &v1 = vertices[i];
720  for (unsigned int j = i + 1; j < n; j++) {
721  const CachingVertex<5> &v2 = vertices[j];
722 
723  float compat = vertexCompat(v1, v2, info, i == 0 ? primcut_ : seccut_, seccut_);
724 
725  if (compat > mergeThreshold_)
726  continue;
727 
728  compatMap.insert(std::make_pair(compat, Indices(i, j)));
729  }
730  }
731 
732  bool changesMade = false;
733  bool repeat = true;
734  while (repeat) {
735  repeat = false;
736  for (std::multimap<float, Indices>::const_iterator iter = compatMap.begin(); iter != compatMap.end(); ++iter) {
737  unsigned int v1 = iter->second.first;
738  unsigned int v2 = iter->second.second;
739 
741  if (!newVtx.isValid() || (v1 != 0 && fitChi2(newVtx) > maxFitChi2_))
742  continue;
743 
744  std::swap(vertices[v1], newVtx);
745  vertices.erase(vertices.begin() + v2);
746  n--;
747 
748  std::multimap<float, Indices> newCompatMap;
749  for (++iter; iter != compatMap.end(); ++iter) {
750  if (iter->second.first == v1 || iter->second.first == v2 || iter->second.second == v1 ||
751  iter->second.second == v2)
752  continue;
753 
754  Indices indices = iter->second;
755  indices.first -= indices.first > v2;
756  indices.second -= indices.second > v2;
757 
758  newCompatMap.insert(std::make_pair(iter->first, indices));
759  }
760  std::swap(compatMap, newCompatMap);
761 
762  for (unsigned int i = 0; i < n; i++) {
763  if (i == v1)
764  continue;
765 
766  const CachingVertex<5> &other = vertices[i];
767  float compat =
768  vertexCompat(vertices[v1], other, info, v1 == 0 ? primcut_ : seccut_, i == 0 ? primcut_ : seccut_);
769 
770  if (compat > mergeThreshold_)
771  continue;
772 
773  compatMap.insert(std::make_pair(compat, Indices(std::min(i, v1), std::max(i, v1))));
774  }
775 
776  changesMade = true;
777  repeat = true;
778  break;
779  }
780  }
781 
782  return changesMade;
783 }

References fitChi2(), mps_fire::i, dqmdumpme::indices, info(), dqmiolumiharvest::j, SiStripPI::max, maxFitChi2_, mergeThreshold_, mergeVertices(), min(), dqmiodumpmetadata::n, BeamSpotFilterParameters_cfi::newVtx, trackingPlots::other, primcut_, seccut_, std::swap(), vertexCompat(), and vertices().

Referenced by vertices().

◆ refitGhostTrack()

void GhostTrackVertexFinder::refitGhostTrack ( std::vector< CachingVertex< 5 > > &  vertices,
FinderInfo info 
) const
private

Definition at line 895 of file GhostTrackVertexFinder.cc.

895  {
896  VtxTrackIs isGhostTrack(info.ghostTrack);
897 
898  std::vector<GhostTrackState> states;
899  std::vector<unsigned int> oldStates;
900  oldStates.reserve(info.states.size());
901 
902  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices.begin(); iter != vertices.end(); ++iter) {
903  std::vector<RefCountedVertexTrack> vtxTracks = iter->tracks();
904 
905  oldStates.clear();
906  for (std::vector<RefCountedVertexTrack>::const_iterator track = vtxTracks.begin(); track != vtxTracks.end();
907  ++track) {
908  if (isGhostTrack(*track) || (*track)->weight() < 1e-3)
909  continue;
910 
911  const TransientTrack &tt = (*track)->linearizedTrack()->track();
912 
913  int idx = -1;
914  for (std::vector<GhostTrackState>::const_iterator iter = info.states.begin(); iter != info.states.end(); ++iter) {
915  if (iter->isTrack() && iter->track() == tt) {
916  idx = iter - info.states.begin();
917  break;
918  }
919  }
920 
921  if (idx >= 0)
922  oldStates.push_back(idx);
923  }
924 
925  if (oldStates.size() == 1)
926  states.push_back(info.states[oldStates[0]]);
927  else
928  states.push_back(GhostTrackState(iter->vertexState()));
929  }
930 
931  KalmanGhostTrackUpdater updater;
933  double ndof, chi2;
934  info.pred = fitter.fit(updater, info.prior, states, ndof, chi2);
935  TransientTrack ghostTrack = transientGhostTrack(info.pred, info.field);
936 
937  std::swap(info.states, states);
938  states.clear();
939 
940  std::vector<CachingVertex<5> > newVertices;
941  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices.begin(); iter != vertices.end(); ++iter) {
942  std::vector<RefCountedVertexTrack> vtxTracks = iter->tracks();
943 
944  int idx = -1;
945  bool redo = false;
946  for (std::vector<RefCountedVertexTrack>::iterator track = vtxTracks.begin(); track != vtxTracks.end(); ++track) {
947  if (isGhostTrack(*track)) {
948  LinearizedTrackStateFactory linTrackFactory;
949  VertexTrackFactory<5> vertexTrackFactory;
950 
951  *track = vertexTrackFactory.vertexTrack(linTrackFactory.linearizedTrackState(iter->position(), ghostTrack),
952  iter->vertexState());
953  redo = true;
954  continue;
955  }
956 
957  const TransientTrack &tt = (*track)->linearizedTrack()->track();
958 
959  if (idx >= 0) {
960  idx = -1;
961  break;
962  }
963 
964  for (std::vector<GhostTrackState>::const_iterator it = info.states.begin(); it != info.states.end(); ++it) {
965  if (!it->isTrack())
966  continue;
967 
968  if (it->track() == tt) {
969  idx = it - info.states.begin();
970  break;
971  }
972  }
973  }
974 
975  if (idx >= 0) {
976  CachingVertex<5> vtx = vertexAtState(ghostTrack, info.pred, info.states[idx]);
977  if (vtx.isValid())
978  newVertices.push_back(vtx);
979  } else if (redo) {
980  bool primary = iter == vertices.begin();
982  if (primary && info.hasBeamSpot)
983  vtx = vertexFitter(true).vertex(vtxTracks, info.beamSpot.position(), info.beamSpot.error());
984  else
985  vtx = vertexFitter(primary).vertex(vtxTracks);
986  if (vtx.isValid())
987  newVertices.push_back(vtx);
988  } else
989  newVertices.push_back(*iter);
990  }
991 
992  std::swap(newVertices, vertices);
993  info.ghostTrack = ghostTrack;
994 }

References hltPixelTracks_cff::chi2, MillePedeFileConverter_cfg::e, reco::SequentialGhostTrackFitter::fit(), heavyIonCSV_trainingSettings::idx, info(), LinearizedTrackStateFactory::linearizedTrackState(), ndof, std::swap(), HLT_FULL_cff::track, transientGhostTrack(), groupFilesInBlocks::tt, trackerHitRTTI::vector, VertexFitter< N >::vertex(), vertexAtState(), vertexFitter(), VertexTrackFactory< N >::vertexTrack(), vertices(), and extraflags_cff::vtx.

Referenced by vertices().

◆ vertexCompat()

double GhostTrackVertexFinder::vertexCompat ( const CachingVertex< 5 > &  vtx1,
const CachingVertex< 5 > &  vtx2,
const FinderInfo info,
double  scale1 = 1.0,
double  scale2 = 1.0 
)
staticprivate

Definition at line 232 of file GhostTrackVertexFinder.cc.

233  {
234  Vector3 diff = conv(vtx2.position() - vtx1.position());
235  Matrix3S cov = scale1 * vtx1.error().matrix() + scale2 * vtx2.error().matrix();
236 
237  return sqr(ROOT::Math::Dot(diff, diff)) / ROOT::Math::Similarity(cov, diff);
238 }

References conv, change_name::diff, CachingVertex< N >::error(), GlobalErrorBase< T, ErrorWeightType >::matrix(), CachingVertex< N >::position(), and sqr().

Referenced by recursiveMerge().

◆ vertexFitter()

VertexFitter< 5 > & GhostTrackVertexFinder::vertexFitter ( bool  primary) const
private

Definition at line 277 of file GhostTrackVertexFinder.cc.

277  {
278  std::unique_ptr<VertexFitter<5> > *ptr = primary ? &primVertexFitter_ : &secVertexFitter_;
279  if (!ptr->get())
280  *ptr = std::make_unique<AdaptiveVertexFitter>(GeometricAnnealing(primary ? primcut_ : seccut_));
281 
282  return **ptr;
283 }

References primcut_, primVertexFitter_, seccut_, and secVertexFitter_.

Referenced by mergeVertices(), reassignTracks(), and refitGhostTrack().

◆ vertices() [1/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GhostTrack ghostTrack,
const CachingVertex< 5 > &  primary = CachingVertex<5>(),
const reco::BeamSpot beamSpot = reco::BeamSpot(),
bool  hasBeamSpot = false,
bool  hasPrimaries = false 
) const

Definition at line 998 of file GhostTrackVertexFinder.cc.

1002  {
1003  FinderInfo info(primary, ghostTrack, beamSpot, hasBeamSpot, hasPrimaries);
1004 
1005  std::vector<TransientVertex> result;
1006  if (info.states.empty())
1007  return result;
1008 
1009  info.field = info.states[0].track().field();
1010  info.ghostTrack = transientGhostTrack(info.pred, info.field);
1011 
1012  std::vector<CachingVertex<5> > vertices = initialVertices(info);
1013  if (primary.isValid()) {
1014  vertices.push_back(primary);
1015  if (vertices.size() > 1)
1016  std::swap(vertices.front(), vertices.back());
1017  }
1018 
1019  unsigned int reassigned = 0;
1020  while (reassigned < 3) {
1021  if (vertices.size() < 2)
1022  break;
1023 
1024 #ifdef DEBUG
1025  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices.begin(); iter != vertices.end(); ++iter)
1026 
1027  debugVertex(*iter, ghostTrack.prediction());
1028 
1029  std::cout << "----- recursive merging: ---------" << std::endl;
1030 #endif
1031 
1032  bool changed = recursiveMerge(vertices, info);
1033  if ((!changed && !reassigned) || vertices.size() < 2)
1034  break;
1035  if (changed)
1036  reassigned = 0;
1037 
1040  changed = true;
1041  }
1042 
1043  try {
1044 #ifdef DEBUG
1045  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices.begin(); iter != vertices.end(); ++iter)
1046  debugVertex(*iter, ghostTrack.prediction());
1047  std::cout << "----- reassignment: ---------" << std::endl;
1048 #endif
1049  if (reassignTracks(vertices, info)) {
1050  reassigned++;
1051  changed = true;
1052  } else
1053  reassigned = 0;
1054  } catch (const VertexException &e) {
1055  // just keep vertices as they are
1056  }
1057 
1058  if (!changed)
1059  break;
1060  }
1061 
1062  for (std::vector<CachingVertex<5> >::const_iterator iter = vertices.begin(); iter != vertices.end(); ++iter) {
1063  std::vector<RefCountedVertexTrack> tracks = iter->tracks();
1064  std::vector<RefCountedVertexTrack> newTracks;
1065  newTracks.reserve(tracks.size());
1066 
1067  std::remove_copy_if(tracks.begin(), tracks.end(), std::back_inserter(newTracks), VtxTrackIs(info.ghostTrack));
1068 
1069  if (newTracks.empty())
1070  continue;
1071 
1072  CachingVertex<5> vtx(iter->vertexState(), newTracks, iter->totalChiSquared());
1073  result.push_back(vtx);
1074  }
1075 
1076  return result;
1077 }

References pwdgSkimBPark_cfi::beamSpot, gather_cfg::cout, MillePedeFileConverter_cfg::e, fitType_, info(), initialVertices(), CachingVertex< N >::isValid(), kRefitGhostTrackWithVertices, reco::GhostTrack::prediction(), reassignTracks(), recursiveMerge(), refitGhostTrack(), mps_fire::result, std::swap(), tracks, transientGhostTrack(), trackerHitRTTI::vector, vertices(), and extraflags_cff::vtx.

◆ vertices() [2/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GlobalPoint primaryPosition,
const GlobalError primaryError,
const GhostTrack ghostTrack 
) const

Definition at line 447 of file GhostTrackVertexFinder.cc.

449  {
450  CachingVertex<5> primary(primaryPosition, primaryError, std::vector<RefCountedVertexTrack>(), 0.);
451 
452  std::vector<TransientVertex> result = vertices(ghostTrack, primary);
453 
454 #ifdef DEBUG
455  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
456  debugVertex(*iter, ghostTrack.prediction());
457 #endif
458 
459  return result;
460 }

References reco::GhostTrack::prediction(), mps_fire::result, and vertices().

◆ vertices() [3/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GlobalPoint primaryPosition,
const GlobalError primaryError,
const GlobalVector direction,
double  coneRadius,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  primaries,
const std::vector< TransientTrack > &  tracks 
) const

Definition at line 412 of file GhostTrackVertexFinder.cc.

418  {
419  GhostTrack ghostTrack = ghostTrackFitter().fit(primaryPosition, primaryError, direction, coneRadius, tracks);
420 
421  std::vector<RefCountedVertexTrack> primaryVertexTracks;
422  if (!primaries.empty()) {
423  LinearizedTrackStateFactory linTrackFactory;
424  VertexTrackFactory<5> vertexTrackFactory;
425 
426  VertexState state(primaryPosition, primaryError);
427 
428  for (std::vector<TransientTrack>::const_iterator iter = primaries.begin(); iter != primaries.end(); ++iter) {
429  RefCountedLinearizedTrackState linState = linTrackFactory.linearizedTrackState(primaryPosition, *iter);
430 
431  primaryVertexTracks.push_back(vertexTrackFactory.vertexTrack(linState, state));
432  }
433  }
434 
435  CachingVertex<5> primary(primaryPosition, primaryError, primaryVertexTracks, 0.);
436 
437  std::vector<TransientVertex> result = vertices(ghostTrack, primary, beamSpot, true, true);
438 
439 #ifdef DEBUG
440  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
441  debugVertex(*iter, ghostTrack.prediction());
442 #endif
443 
444  return result;
445 }

References pwdgSkimBPark_cfi::beamSpot, reco::GhostTrackFitter::fit(), ghostTrackFitter(), LinearizedTrackStateFactory::linearizedTrackState(), reco::GhostTrack::prediction(), mps_fire::result, tracks, VertexTrackFactory< N >::vertexTrack(), and vertices().

◆ vertices() [4/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GlobalPoint primaryPosition,
const GlobalError primaryError,
const GlobalVector direction,
double  coneRadius,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  tracks 
) const

Definition at line 392 of file GhostTrackVertexFinder.cc.

397  {
398  GhostTrack ghostTrack = ghostTrackFitter().fit(primaryPosition, primaryError, direction, coneRadius, tracks);
399 
400  CachingVertex<5> primary(primaryPosition, primaryError, std::vector<RefCountedVertexTrack>(), 0.);
401 
402  std::vector<TransientVertex> result = vertices(ghostTrack, primary, beamSpot, true);
403 
404 #ifdef DEBUG
405  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
406  debugVertex(*iter, ghostTrack.prediction());
407 #endif
408 
409  return result;
410 }

References pwdgSkimBPark_cfi::beamSpot, reco::GhostTrackFitter::fit(), ghostTrackFitter(), reco::GhostTrack::prediction(), mps_fire::result, tracks, and vertices().

◆ vertices() [5/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GlobalPoint primaryPosition,
const GlobalError primaryError,
const GlobalVector direction,
double  coneRadius,
const std::vector< TransientTrack > &  tracks 
) const

Definition at line 373 of file GhostTrackVertexFinder.cc.

377  {
378  GhostTrack ghostTrack = ghostTrackFitter().fit(primaryPosition, primaryError, direction, coneRadius, tracks);
379 
380  CachingVertex<5> primary(primaryPosition, primaryError, std::vector<RefCountedVertexTrack>(), 0.);
381 
382  std::vector<TransientVertex> result = vertices(ghostTrack, primary);
383 
384 #ifdef DEBUG
385  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
386  debugVertex(*iter, ghostTrack.prediction());
387 #endif
388 
389  return result;
390 }

References reco::GhostTrackFitter::fit(), ghostTrackFitter(), reco::GhostTrack::prediction(), mps_fire::result, tracks, and vertices().

◆ vertices() [6/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GlobalPoint primaryPosition,
const GlobalError primaryError,
const reco::BeamSpot beamSpot,
const GhostTrack ghostTrack 
) const

Definition at line 462 of file GhostTrackVertexFinder.cc.

465  {
466  CachingVertex<5> primary(primaryPosition, primaryError, std::vector<RefCountedVertexTrack>(), 0.);
467 
468  std::vector<TransientVertex> result = vertices(ghostTrack, primary, beamSpot, true);
469 
470 #ifdef DEBUG
471  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
472  debugVertex(*iter, ghostTrack.prediction());
473 #endif
474 
475  return result;
476 }

References pwdgSkimBPark_cfi::beamSpot, reco::GhostTrack::prediction(), mps_fire::result, and vertices().

◆ vertices() [7/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const GlobalPoint primaryPosition,
const GlobalError primaryError,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  primaries,
const GhostTrack ghostTrack 
) const

Definition at line 478 of file GhostTrackVertexFinder.cc.

482  {
483  std::vector<RefCountedVertexTrack> primaryVertexTracks;
484  if (!primaries.empty()) {
485  LinearizedTrackStateFactory linTrackFactory;
486  VertexTrackFactory<5> vertexTrackFactory;
487 
488  VertexState state(primaryPosition, primaryError);
489 
490  for (std::vector<TransientTrack>::const_iterator iter = primaries.begin(); iter != primaries.end(); ++iter) {
491  RefCountedLinearizedTrackState linState = linTrackFactory.linearizedTrackState(primaryPosition, *iter);
492 
493  primaryVertexTracks.push_back(vertexTrackFactory.vertexTrack(linState, state));
494  }
495  }
496 
497  CachingVertex<5> primary(primaryPosition, primaryError, primaryVertexTracks, 0.);
498 
499  std::vector<TransientVertex> result = vertices(ghostTrack, primary, beamSpot, true, true);
500 
501 #ifdef DEBUG
502  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
503  debugVertex(*iter, ghostTrack.prediction());
504 #endif
505 
506  return result;
507 }

References pwdgSkimBPark_cfi::beamSpot, LinearizedTrackStateFactory::linearizedTrackState(), reco::GhostTrack::prediction(), mps_fire::result, VertexTrackFactory< N >::vertexTrack(), and vertices().

◆ vertices() [8/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const GhostTrack ghostTrack 
) const

◆ vertices() [9/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const GlobalVector direction,
double  coneRadius,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  primaries,
const std::vector< TransientTrack > &  tracks 
) const

Definition at line 358 of file GhostTrackVertexFinder.cc.

363  {
364  return vertices(RecoVertex::convertPos(primaryVertex.position()),
366  direction,
367  coneRadius,
368  beamSpot,
369  primaries,
370  tracks);
371 }

References pwdgSkimBPark_cfi::beamSpot, RecoVertex::convertError(), RecoVertex::convertPos(), BeamMonitor_cff::primaryVertex, tracks, and vertices().

◆ vertices() [10/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const GlobalVector direction,
double  coneRadius,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  tracks 
) const

Definition at line 345 of file GhostTrackVertexFinder.cc.

349  {
350  return vertices(RecoVertex::convertPos(primaryVertex.position()),
352  direction,
353  coneRadius,
354  beamSpot,
355  tracks);
356 }

References pwdgSkimBPark_cfi::beamSpot, RecoVertex::convertError(), RecoVertex::convertPos(), BeamMonitor_cff::primaryVertex, tracks, and vertices().

◆ vertices() [11/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const GlobalVector direction,
double  coneRadius,
const std::vector< TransientTrack > &  tracks 
) const

Definition at line 334 of file GhostTrackVertexFinder.cc.

337  {
338  return vertices(RecoVertex::convertPos(primaryVertex.position()),
340  direction,
341  coneRadius,
342  tracks);
343 }

References RecoVertex::convertError(), RecoVertex::convertPos(), BeamMonitor_cff::primaryVertex, and tracks.

Referenced by initialVertices(), reassignTracks(), recursiveMerge(), refitGhostTrack(), and vertices().

◆ vertices() [12/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const reco::BeamSpot beamSpot,
const GhostTrack ghostTrack 
) const

◆ vertices() [13/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  primaries,
const GhostTrack ghostTrack 
) const

Definition at line 524 of file GhostTrackVertexFinder.cc.

527  {
528  return vertices(RecoVertex::convertPos(primaryVertex.position()),
530  beamSpot,
531  primaries,
532  ghostTrack);
533 }

References pwdgSkimBPark_cfi::beamSpot, RecoVertex::convertError(), RecoVertex::convertPos(), BeamMonitor_cff::primaryVertex, and vertices().

◆ vertices() [14/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const reco::Track ghostTrack,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  primaries,
const std::vector< TransientTrack > &  tracks,
const std::vector< float > &  weights = std::vector<float>() 
) const

Definition at line 595 of file GhostTrackVertexFinder.cc.

600  {
601  GhostTrack ghostTrack_(ghostTrack,
602  tracks,
603  weights,
604  dummyPrediction(primaryVertex, ghostTrack),
606  true);
607 
608  std::vector<RefCountedVertexTrack> primaryVertexTracks;
609  if (!primaries.empty()) {
610  LinearizedTrackStateFactory linTrackFactory;
611  VertexTrackFactory<5> vertexTrackFactory;
612 
615 
616  for (std::vector<TransientTrack>::const_iterator iter = primaries.begin(); iter != primaries.end(); ++iter) {
617  RefCountedLinearizedTrackState linState = linTrackFactory.linearizedTrackState(state.position(), *iter);
618 
619  primaryVertexTracks.push_back(vertexTrackFactory.vertexTrack(linState, state));
620  }
621  }
622 
625  primaryVertexTracks,
626  0.);
627 
628  std::vector<TransientVertex> result = vertices(ghostTrack_, primary, beamSpot, true, true);
629 
630 #ifdef DEBUG
631  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
632  debugVertex(*iter, ghostTrack_.prediction());
633 #endif
634 
635  return result;
636 }

References pwdgSkimBPark_cfi::beamSpot, RecoVertex::convertError(), RecoVertex::convertPos(), dummyPrediction(), LinearizedTrackStateFactory::linearizedTrackState(), reco::GhostTrack::prediction(), BeamMonitor_cff::primaryVertex, mps_fire::result, tracks, VertexTrackFactory< N >::vertexTrack(), vertices(), and HLT_FULL_cff::weights.

◆ vertices() [15/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const reco::Track ghostTrack,
const reco::BeamSpot beamSpot,
const std::vector< TransientTrack > &  tracks,
const std::vector< float > &  weights = std::vector<float>() 
) const

Definition at line 568 of file GhostTrackVertexFinder.cc.

572  {
573  GhostTrack ghostTrack_(ghostTrack,
574  tracks,
575  weights,
576  dummyPrediction(primaryVertex, ghostTrack),
578  true);
579 
582  std::vector<RefCountedVertexTrack>(),
583  0.);
584 
585  std::vector<TransientVertex> result = vertices(ghostTrack_, primary, beamSpot, true);
586 
587 #ifdef DEBUG
588  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
589  debugVertex(*iter, ghostTrack_.prediction());
590 #endif
591 
592  return result;
593 }

References pwdgSkimBPark_cfi::beamSpot, RecoVertex::convertError(), RecoVertex::convertPos(), dummyPrediction(), reco::GhostTrack::prediction(), BeamMonitor_cff::primaryVertex, mps_fire::result, tracks, vertices(), and HLT_FULL_cff::weights.

◆ vertices() [16/16]

std::vector< TransientVertex > GhostTrackVertexFinder::vertices ( const reco::Vertex primaryVertex,
const reco::Track ghostTrack,
const std::vector< TransientTrack > &  tracks,
const std::vector< float > &  weights = std::vector<float>() 
) const

Definition at line 542 of file GhostTrackVertexFinder.cc.

545  {
546  GhostTrack ghostTrack_(ghostTrack,
547  tracks,
548  weights,
549  dummyPrediction(primaryVertex, ghostTrack),
551  true);
552 
555  std::vector<RefCountedVertexTrack>(),
556  0.);
557 
558  std::vector<TransientVertex> result = vertices(ghostTrack_, primary);
559 
560 #ifdef DEBUG
561  for (std::vector<TransientVertex>::const_iterator iter = result.begin(); iter != result.end(); ++iter)
562  debugVertex(*iter, ghostTrack_.prediction());
563 #endif
564 
565  return result;
566 }

References RecoVertex::convertError(), RecoVertex::convertPos(), dummyPrediction(), reco::GhostTrack::prediction(), BeamMonitor_cff::primaryVertex, mps_fire::result, tracks, vertices(), and HLT_FULL_cff::weights.

Member Data Documentation

◆ fitType_

FitType reco::GhostTrackVertexFinder::fitType_
private

Definition at line 155 of file GhostTrackVertexFinder.h.

Referenced by mergeVertices(), reassignTracks(), and vertices().

◆ ghostTrackFitter_

std::unique_ptr<GhostTrackFitter> reco::GhostTrackVertexFinder::ghostTrackFitter_
mutableprivate

Definition at line 157 of file GhostTrackVertexFinder.h.

Referenced by ghostTrackFitter().

◆ maxFitChi2_

double reco::GhostTrackVertexFinder::maxFitChi2_
private

Definition at line 151 of file GhostTrackVertexFinder.h.

Referenced by recursiveMerge().

◆ mergeThreshold_

double reco::GhostTrackVertexFinder::mergeThreshold_
private

Definition at line 152 of file GhostTrackVertexFinder.h.

Referenced by recursiveMerge().

◆ primcut_

double reco::GhostTrackVertexFinder::primcut_
private

Definition at line 153 of file GhostTrackVertexFinder.h.

Referenced by reassignTracks(), recursiveMerge(), and vertexFitter().

◆ primVertexFitter_

std::unique_ptr<VertexFitter<5> > reco::GhostTrackVertexFinder::primVertexFitter_
mutableprivate

Definition at line 158 of file GhostTrackVertexFinder.h.

Referenced by vertexFitter().

◆ seccut_

double reco::GhostTrackVertexFinder::seccut_
private

Definition at line 154 of file GhostTrackVertexFinder.h.

Referenced by reassignTracks(), recursiveMerge(), and vertexFitter().

◆ secVertexFitter_

std::unique_ptr<VertexFitter<5> > reco::GhostTrackVertexFinder::secVertexFitter_
mutableprivate

Definition at line 159 of file GhostTrackVertexFinder.h.

Referenced by vertexFitter().

change_name.diff
diff
Definition: change_name.py:13
relinearizeTrack
static RefCountedVertexTrack relinearizeTrack(const RefCountedVertexTrack &track, const VertexState &state, const VertexTrackFactory< 5 > factory)
Definition: GhostTrackVertexFinder.cc:211
mps_fire.i
i
Definition: mps_fire.py:428
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
reco::GhostTrackVertexFinder::ghostTrackFitter_
std::unique_ptr< GhostTrackFitter > ghostTrackFitter_
Definition: GhostTrackVertexFinder.h:157
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
groupFilesInBlocks.tt
int tt
Definition: groupFilesInBlocks.py:144
VertexException
Common base class.
Definition: VertexException.h:12
min
T min(T a, T b)
Definition: MathUtil.h:58
CachingVertex< 5 >
reco::GhostTrackVertexFinder::kSingleTracksWithGhostTrack
Definition: GhostTrackVertexFinder.h:31
reco::GhostTrackVertexFinder::seccut_
double seccut_
Definition: GhostTrackVertexFinder.h:154
reco::GhostTrackVertexFinder::refitGhostTrack
void refitGhostTrack(std::vector< CachingVertex< 5 > > &vertices, FinderInfo &info) const
Definition: GhostTrackVertexFinder.cc:895
gather_cfg.cout
cout
Definition: gather_cfg.py:144
dummyPrediction
static GhostTrackPrediction dummyPrediction(const Vertex &primaryVertex, const Track &ghostTrack)
Definition: GhostTrackVertexFinder.cc:535
reco::KalmanGhostTrackUpdater
Definition: KalmanGhostTrackUpdater.h:11
sqr
int sqr(const T &t)
Definition: pfalgo_common_ref.h:9
CachingVertex::vertexState
const VertexState & vertexState() const
Definition: CachingVertex.h:137
mergeTrackHelper
static void mergeTrackHelper(const std::vector< RefCountedVertexTrack > &tracks, std::vector< RefCountedVertexTrack > &newTracks, const VertexState &state, const VtxTrackIs &ghostTrackFinder, RefCountedVertexTrack &ghostTrack, const VertexTrackFactory< 5 > &factory)
Definition: GhostTrackVertexFinder.cc:661
reco::GhostTrackVertexFinder::fitType_
FitType fitType_
Definition: GhostTrackVertexFinder.h:155
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
reco::GhostTrackVertexFinder::secVertexFitter_
std::unique_ptr< VertexFitter< 5 > > secVertexFitter_
Definition: GhostTrackVertexFinder.h:159
relinearizeTracks
static std::vector< RefCountedVertexTrack > relinearizeTracks(const std::vector< RefCountedVertexTrack > &tracks, const VertexState &state)
Definition: GhostTrackVertexFinder.cc:219
GlobalErrorBase::matrix
const AlgebraicSymMatrix33 matrix() const
Definition: GlobalErrorBase.h:121
Indices
Indices
Definition: EdmEventSize.cc:28
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
reco::SequentialGhostTrackFitter::fit
GhostTrackPrediction fit(const GhostTrackFitter::PredictionUpdater &updater, const GhostTrackPrediction &prior, std::vector< GhostTrackState > &states, double &ndof, double &chi2) override
Definition: SequentialGhostTrackFitter.cc:22
ghostTrackVertexReco_cff.fitType
fitType
Definition: ghostTrackVertexReco_cff.py:10
LinearizedTrackStateFactory::linearizedTrackState
RefCountedLinearizedTrackState linearizedTrackState(const GlobalPoint &linP, const reco::TransientTrack &track) const override
Definition: LinearizedTrackStateFactory.cc:9
reco::GhostTrackState
Definition: GhostTrackState.h:21
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
HLT_FULL_cff.primcut
primcut
Definition: HLT_FULL_cff.py:51972
ndof
Definition: HIMultiTrackSelector.h:49
BeamMonitor_cff.primaryVertex
primaryVertex
hltOfflineBeamSpot for HLTMON
Definition: BeamMonitor_cff.py:7
reco::GhostTrackVertexFinder::mergeThreshold_
double mergeThreshold_
Definition: GhostTrackVertexFinder.h:152
LinearizedTrackStateFactory
Definition: LinearizedTrackStateFactory.h:14
reco::GhostTrackVertexFinder::vertexFitter
VertexFitter< 5 > & vertexFitter(bool primary) const
Definition: GhostTrackVertexFinder.cc:277
transientGhostTrack
static TransientTrack transientGhostTrack(const GhostTrackPrediction &pred, const MagneticField *field)
Definition: GhostTrackVertexFinder.cc:115
trackVertexCompat
static double trackVertexCompat(const CachingVertex< 5 > &vtx, const RefCountedVertexTrack &vertexTrack)
Definition: GhostTrackVertexFinder.cc:240
reco::GhostTrack::prediction
const GhostTrackPrediction & prediction() const
Definition: GhostTrack.h:41
std::swap
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Definition: DataFrameContainer.h:209
CachingVertex::error
GlobalError error() const
Definition: CachingVertex.cc:318
stateMean
static VertexState stateMean(const VertexState &v1, const VertexState &v2)
Definition: GhostTrackVertexFinder.cc:134
HLT_FULL_cff.weights
weights
Definition: HLT_FULL_cff.py:99207
trackingPlots.other
other
Definition: trackingPlots.py:1464
ghostTrackVertexReco_cff.maxFitChi2
maxFitChi2
Definition: ghostTrackVertexReco_cff.py:6
reco::GhostTrackVertexFinder::ghostTrackFitter
GhostTrackFitter & ghostTrackFitter() const
Definition: GhostTrackVertexFinder.cc:270
reco::GhostTrackFitter::fit
GhostTrack fit(const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, double coneRadius, const std::vector< TransientTrack > &tracks) const
Definition: GhostTrackFitter.cc:30
VertexFitter::vertex
virtual CachingVertex< N > vertex(const std::vector< reco::TransientTrack > &tracks) const =0
VertexTrackFactory< 5 >
RecoVertex::convertError
reco::Vertex::Error convertError(const GlobalError &ge)
Definition: ConvertError.h:8
reco::SequentialGhostTrackFitter
Definition: SequentialGhostTrackFitter.h:13
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:176
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
phase2tkutil::isPrimary
bool isPrimary(const SimTrack &simTrk, const PSimHit *simHit)
Definition: TrackerPhase2ValidationUtil.cc:2
CachingVertex::position
GlobalPoint position() const
Definition: CachingVertex.cc:308
reco::GhostTrackVertexFinder::primVertexFitter_
std::unique_ptr< VertexFitter< 5 > > primVertexFitter_
Definition: GhostTrackVertexFinder.h:158
reco::GhostTrack
Definition: GhostTrack.h:16
reco::GhostTrackVertexFinder::vertices
std::vector< TransientVertex > vertices(const reco::Vertex &primaryVertex, const GlobalVector &direction, double coneRadius, const std::vector< TransientTrack > &tracks) const
Definition: GhostTrackVertexFinder.cc:334
GeometricAnnealing
Definition: GeometricAnnealing.h:7
reco::GhostTrackVertexFinder::initialVertices
std::vector< CachingVertex< 5 > > initialVertices(const FinderInfo &info) const
Definition: GhostTrackVertexFinder.cc:640
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
CachingVertex::tracks
std::vector< RefCountedVertexTrack > tracks() const
Definition: CachingVertex.h:147
reco::GhostTrackVertexFinder::recursiveMerge
bool recursiveMerge(std::vector< CachingVertex< 5 > > &vertices, const FinderInfo &info) const
Definition: GhostTrackVertexFinder.cc:713
reco::GhostTrackVertexFinder::maxFitChi2_
double maxFitChi2_
Definition: GhostTrackVertexFinder.h:151
reco::GhostTrackVertexFinder::kRefitGhostTrackWithVertices
Definition: GhostTrackVertexFinder.h:31
VertexTrackFactory::vertexTrack
RefCountedVertexTrack vertexTrack(const RefCountedLinearizedTrackState lt, const VertexState vs, float weight=1.0) const
Definition: VertexTrackFactory.h:27
vertexAtState
static CachingVertex< 5 > vertexAtState(const TransientTrack &ghostTrack, const GhostTrackPrediction &pred, const GhostTrackState &state)
Definition: GhostTrackVertexFinder.cc:160
reco::GhostTrackVertexFinder::mergeVertices
CachingVertex< 5 > mergeVertices(const CachingVertex< 5 > &vertex1, const CachingVertex< 5 > &vertex2, const FinderInfo &info, bool isPrimary) const
Definition: GhostTrackVertexFinder.cc:681
reco::TransientTrack
Definition: TransientTrack.h:19
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:19
VertexState
Definition: VertexState.h:13
reco::GhostTrackVertexFinder::vertexCompat
static double vertexCompat(const CachingVertex< 5 > &vtx1, const CachingVertex< 5 > &vtx2, const FinderInfo &info, double scale1=1.0, double scale2=1.0)
Definition: GhostTrackVertexFinder.cc:232
CachingVertex::isValid
bool isValid() const
Definition: CachingVertex.h:154
reco::GhostTrackVertexFinder::reassignTracks
bool reassignTracks(std::vector< CachingVertex< 5 > > &vertices, const FinderInfo &info) const
Definition: GhostTrackVertexFinder.cc:785
RecoVertex::convertPos
reco::Vertex::Point convertPos(const GlobalPoint &p)
Definition: ConvertToFromReco.h:7
mps_fire.result
result
Definition: mps_fire.py:311
dqmdumpme.indices
indices
Definition: dqmdumpme.py:50
fitChi2
static double fitChi2(const CachingVertex< 5 > &vtx)
Definition: GhostTrackVertexFinder.cc:638
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HLT_FULL_cff.seccut
seccut
Definition: HLT_FULL_cff.py:51973
reco::GhostTrackVertexFinder::kAlwaysWithGhostTrack
Definition: GhostTrackVertexFinder.h:31
ghostTrackVertexReco_cff.mergeThreshold
mergeThreshold
Definition: ghostTrackVertexReco_cff.py:7
BeamSpotFilterParameters_cfi.newVtx
newVtx
Definition: BeamSpotFilterParameters_cfi.py:6
reco::GhostTrackVertexFinder::primcut_
double primcut_
Definition: GhostTrackVertexFinder.h:153
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
conv
EPOS::IO_EPOS conv
Definition: ReggeGribovPartonMCHadronizer.cc:42