26 if(verbose_) {
std::cout <<
"TrackClusterizerInZ: algorithm=gap, zSeparation="<< zSep << std::endl;}
39 vector< vector<reco::TransientTrack> >
44 vector<reco::TransientTrack> tks =
tracks;
46 vector< vector<reco::TransientTrack> > clusters;
47 if (tks.empty())
return clusters;
50 stable_sort(tks.begin(), tks.end(), recTrackLessZ);
53 vector<reco::TransientTrack>::const_iterator it = tks.begin();
54 vector <reco::TransientTrack> currentCluster; currentCluster.push_back(*it);
57 for ( ; it != tks.end(); it++) {
59 double zPrev = currentCluster.back().stateAtBeamLine().trackStateAtPCA().position().z();
60 double zCurr = (*it).stateAtBeamLine().trackStateAtPCA().position().z();
62 if (
abs(zCurr - zPrev) < zSeparation() ) {
64 currentCluster.push_back(*it);
68 clusters.push_back(currentCluster);
69 currentCluster.clear();
70 currentCluster.push_back(*it);
75 clusters.push_back(currentCluster);
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
GapClusterizerInZ(const edm::ParameterSet &conf)
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
float zSeparation() const
Abs< T >::type abs(const T &t)
FTS const & trackStateAtPCA() const
std::vector< std::vector< reco::TransientTrack > > clusterize(const std::vector< reco::TransientTrack > &tracks) const
GlobalPoint position() const