7 max3DIPSignificance(params.getParameter<double>(
"seedMax3DIPSignificance")),
8 max3DIPValue(params.getParameter<double>(
"seedMax3DIPValue")),
9 min3DIPSignificance(params.getParameter<double>(
"seedMin3DIPSignificance")),
10 min3DIPValue(params.getParameter<double>(
"seedMin3DIPValue")),
21 const std::vector<reco::TransientTrack> &
tracks,
25 std::vector<reco::TransientTrack>
result;
30 float pvDistance = ipSeed.second.value();
31 for (std::vector<reco::TransientTrack>::const_iterator
tt = tracks.begin();
tt != tracks.end(); ++
tt) {
37 GlobalError ttPointErr =
tt->impactPointState().cartesianError().position();
51 float distanceFromPV = (dist.
points().second -
pv).
mag();
54 tt->impactPointState().globalDirection().x(),
tt->impactPointState().globalDirection().y(), 0.);
59 float dotprodTrack = (dist.
points().first -
pv).
unit().
dot(
tt->impactPointState().globalDirection().unit());
62 float w = distanceFromPV * distanceFromPV / (pvDistance *
distance);
82 <<
" crossingtoPV: " << distanceFromPV <<
" dis*scal " << distance *
distanceRatio <<
" < " 84 "timeSig: " << timeSig << std::endl;
87 result.push_back(*
tt);
89 GlobalPoint(
cp.x() * w + seedingPoint.
x(),
cp.
y() * w + seedingPoint.
y(),
cp.z() * w + seedingPoint.
z());
96 GlobalPoint(seedingPoint.
x() / sumWeights, seedingPoint.
y() / sumWeights, seedingPoint.
z() / sumWeights);
97 return std::pair<std::vector<reco::TransientTrack>,
GlobalPoint>(
result, seedingPoint);
102 using namespace reco;
103 std::vector<TransientTrack> seeds;
104 for (std::vector<TransientTrack>::const_iterator it = selectedTracks.begin(); it != selectedTracks.end(); it++) {
109 std::cout <<
"new seed " << it - selectedTracks.begin() <<
" ref " << it->trackBaseRef().key() <<
" " 110 << ip.second.value() <<
" " << ip.second.significance() <<
" " 111 << it->track().hitPattern().trackerLayersWithMeasurement() <<
" " << it->track().pt() <<
" " 112 << it->track().eta() << std::endl;
114 seeds.push_back(*it);
120 for (std::vector<TransientTrack>::const_iterator
s = seeds.begin();
s != seeds.end(); ++
s, ++
i) {
122 std::cout <<
"Seed N. " << i << std::endl;
127 ntracks.first.push_back(*
s);
131 aCl.
tracks = ntracks.first;
132 clusters.push_back(aCl);
double clusterMaxSignificance
std::pair< std::vector< reco::TransientTrack >, GlobalPoint > nearTracks(const reco::TransientTrack &seed, const std::vector< reco::TransientTrack > &tracks, const reco::Vertex &primaryVertex) const
double max3DIPSignificance
std::pair< GlobalPoint, GlobalPoint > points() const override
std::vector< Cluster > clusters(const reco::Vertex &pv, const std::vector< reco::TransientTrack > &selectedTracks)
double min3DIPSignificance
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Global3DPoint GlobalPoint
const CartesianTrajectoryError cartesianError() const
std::vector< reco::TransientTrack > tracks
double covariance(int i, int j) const
(i, j)-th element of error matrix, i, j = 0, ... 2
constexpr bool isFinite(T x)
const Point & position() const
position
bool calculate(const TrajectoryStateOnSurface &sta, const TrajectoryStateOnSurface &stb) override
reco::TransientTrack seedingTrack
Measurement1D distance(const GlobalPoint &vtx1Position, const GlobalError &vtx1PositionError, const GlobalPoint &vtx2Position, const GlobalError &vtx2PositionError) const override
double maxTimeSignificance
Abs< T >::type abs(const T &t)
double clusterMaxDistance
GlobalPoint crossingPoint() const override
double clusterMinAngleCosine
float y() const
Same as rapidity().
Vector3DBase unit() const
double significance() const
float distance() const override
const GlobalError position() const
Position error submatrix.
double dtErrorExt() const
TracksClusteringFromDisplacedSeed(const edm::ParameterSet ¶ms)
TrajectoryStateOnSurface impactPointState() const
primaryVertex
hltOfflineBeamSpot for HLTMON
Power< A, B >::type pow(const A &a, const B &b)
GlobalVector globalDirection() const
Basic3DVector unit() const
T dot(const Basic3DVector &rh) const
Scalar product, or "dot" product, with a vector of same type.