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")),
15 maxTimeSignificance(params.getParameter<double>(
"maxTimeSignificance"))
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 ) {
33 if(*
tt==seed)
continue;
38 GlobalError ttPointErr =
tt->impactPointState().cartesianError().position();
52 float distanceFromPV = (dist.
points().second-
pv).
mag();
54 GlobalVector trackDir2D(
tt->impactPointState().globalDirection().x(),
tt->impactPointState().globalDirection().y(),0.);
58 float dotprodTrack = (dist.
points().first-
pv).
unit().dot(
tt->impactPointState().globalDirection().unit());
61 float w = distanceFromPV*distanceFromPV/(pvDistance*
distance);
77 <<
"timeSig: " << timeSig << std::endl;
81 result.push_back(*
tt);
82 seedingPoint =
GlobalPoint(
cp.x()*w+seedingPoint.
x(),
cp.
y()*w+seedingPoint.
y(),
cp.z()*w+seedingPoint.
z());
88 seedingPoint =
GlobalPoint(seedingPoint.
x()/sumWeights,seedingPoint.
y()/sumWeights,seedingPoint.
z()/sumWeights);
89 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() <<
" " << ip.second.value() <<
" " << ip.second.significance() <<
" " << it->track().hitPattern().trackerLayersWithMeasurement() <<
" " << it->track().pt() <<
" " << it->track().eta() << std::endl;
111 seeds.push_back(*it);
118 for(std::vector<TransientTrack>::const_iterator
s = seeds.begin();
119 s != seeds.end(); ++
s, ++
i)
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
Power< A, B >::type pow(const A &a, const B &b)
GlobalVector globalDirection() const