7 max3DIPSignificance(params.getParameter<double>(
"seedMax3DIPSignificance")),
8 max3DIPValue(params.getParameter<double>(
"seedMax3DIPValue")),
9 min3DIPSignificance(params.getParameter<double>(
"seedMin3DIPSignificance")),
10 min3DIPValue(params.getParameter<double>(
"seedMin3DIPValue")),
11 clusterMaxDistance(params.getParameter<double>(
"clusterMaxDistance")),
12 clusterMaxSignificance(params.getParameter<double>(
"clusterMaxSignificance")),
13 distanceRatio(params.getParameter<double>(
"distanceRatio")),
14 clusterMinAngleCosine(params.getParameter<double>(
"clusterMinAngleCosine")),
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) {
127 ntracks.first.push_back(*
s);
131 aCl.
tracks = ntracks.first;
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
tuple maxTimeSignificance
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
auto const & tracks
cannot be loose
GlobalPoint crossingPoint() const override
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
double maxTimeSignificance
Abs< T >::type abs(const T &t)
std::pair< GlobalPoint, GlobalPoint > points() const override
double clusterMaxDistance
double clusterMinAngleCosine
Measurement1D distance(const GlobalPoint &vtx1Position, const GlobalError &vtx1PositionError, const GlobalPoint &vtx2Position, const GlobalError &vtx2PositionError) const override
Vector3DBase unit() const
double significance() const
const GlobalError position() const
Position error submatrix.
double dtErrorExt() const
TracksClusteringFromDisplacedSeed(const edm::ParameterSet ¶ms)
TrajectoryStateOnSurface impactPointState() const
float distance() const override
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.