64 double bx = p1.x()+translationX;
65 double by = p1.y()+translationY;
66 double cx = p2.x()+translationX;
67 double cy = p2.y()+translationY;
68 double dx = p3.x()+translationX;
69 double dy = p3.y()+translationY;
71 double temp = cx*cx+cy*cy;
74 double bc = (bx*bx + by*by - temp)/2.0;
75 double cd = (temp - dx*dx - dy*dy)/2.0;
76 double det = (bx-cx)*(cy-dy)-(cx-dx)*(by-cy);
85 double cRx= (bc*(cy-dy)-cd*(by-cy))*det;
86 double cRy = ((bx-cx)*cd-(cx-dx)*bc)*det;
90 m_radius = sqrt((cRx-bx)*(cRx-bx)+(cRy-by)*(cRy-by));
97 double theta = 1./3*(p1.theta() + p2.theta() + p3.theta());
98 double r1 = p1.perp();
100 double deltaz = r1/tan(
theta);
103 m_eta = 1./3*(p1.eta() + p2.eta() + p3.eta());
111 if (p3.perp() < p1.perp()) closestMeasurement =
Amg::Vector2D(p3.x(),p3.y());
121 m_phi0 = directionOne.dot(toFirstMeas) > 0. ? directionOne.phi() : directionTwo.phi();
126 double signD0 = pocaDir.cross(momDir).z() > 0. ? 1. : -1.;
136 std::vector<Amg::Vector3D> pos;
137 std::vector<const Trk::PrepRawData* >::const_iterator prdIter = prdvec.
prds.begin();
138 std::vector<const Trk::PrepRawData* >::const_iterator prdIterE = prdvec.
prds.end();
141 for (
int i = 0; i < 3 && prdIter != prdIterE; ++ prdIter ){
142 if(
m_atlasId->is_pixel((*prdIter)->identify()) ){
145 if(!pos.empty() && (pos.back()-pixclus->
globalPosition()).squaredNorm() < 9)
150 else if(
m_atlasId->is_sct((*prdIter)->identify()) ){
153 if(!pos.empty() && (pos.back()-sctclus->
globalPosition()).squaredNorm() < 9)
158 else if(
m_atlasId->is_trt((*prdIter)->identify()) ){
165 if( pos.size() != 3 )
return false;