16 #include "AthLinks/ElementLink.h"
29 #include "CLHEP/Geometry/Transform3D.h"
37 static const InterfaceID IID_ISingleTrackConversionTool(
"InDet::SingleTrackConversionTool", 1, 0);
43 const std::string&
name,
47 , m_minInitR_noBLay(120.)
48 , m_singleThreshold(0.1)
52 declareInterface<SingleTrackConversionTool>(
this);
59 "Only check TRT PID if all hits are Xe hits");
71 return IID_ISingleTrackConversionTool;
78 return StatusCode::SUCCESS;
85 return StatusCode::SUCCESS;
99 unsigned int index(0);
131 double Ax[3] = { T(0, 0), T(1, 0), T(2, 0) };
132 double Ay[3] = { T(0, 1), T(1, 1), T(2, 1) };
141 double A11 = a11 * p11 + a12 * p21;
142 double A12 = a11 * p12 + a12 * p22;
143 double A21 = a21 * p11 + a22 * p21;
144 double A22 = a21 * p12 + a22 * p22;
145 double A31 = a31 * p11 + a32 * p21;
146 double A32 = a31 * p12 + a32 * p22;
149 double P11 = a11 * A11 + A12 * a12;
150 double P12 = A11 * a21 + A12 * a22;
151 double P13 = A11 * a31 + A12 * a32;
152 double P21 = A21 * a11 + A22 * a12;
153 double P22 = A21 * a21 + A22 * a22;
154 double P23 = A21 * a31 + A22 * a32;
155 double P31 = A31 * a11 + A32 * a12;
156 double P32 = A31 * a21 + A32 * a22;
157 double P33 = A31 * a31 + A32 * a32;
179 double A[3] = {T(0,2),T(1,2),T(2,2)};
187 double Bx = A[1]*Pz-A[2]*
Py;
188 double By = A[2]*Px-A[0]*Pz;
189 double Bz = A[0]*
Py-A[1]*Px;
190 double Bn = 1./sqrt(Bx*Bx+By*By+Bz*Bz); Bx*=Bn; By*=Bn; Bz*=Bn;
191 double a11 = Bx;
double a12 = A[0];
192 double a21 = By;
double a22 = A[1];
193 double a31 = Bz;
double a32 = A[2];
196 double A11 = a11*p11 + a12*p21;
double A12 = a11*p12 + a12*p22;
197 double A21 = a21*p11 + a22*p21;
double A22 = a21*p12 + a22*p22;
198 double A31 = a31*p11 + a32*p21;
double A32 = a31*p12 + a32*p22;
201 double P11 = a11*A11 + A12*a12;
double P12 = A11*a21 + A12*a22;
double P13 = A11*a31 + A12*a32;
202 double P21 = A21*a11 + A22*a12;
double P22 = A21*a21 + A22*a22;
double P23 = A21*a31 + A22*a32;
203 double P31 = A31*a11 + A32*a12;
double P32 = A31*a21 + A32*a22;
double P33 = A31*a31 + A32*a32;
206 nCovVtx(0,0) = P11; nCovVtx(0,1) = P12; nCovVtx(0,2) = P13;
207 nCovVtx(1,0) = P21; nCovVtx(1,1) = P22; nCovVtx(1,2) = P23;
208 nCovVtx(2,0) = P31; nCovVtx(2,1) = P32; nCovVtx(2,2) = P33;
218 vertex->setCovariancePosition(nCovVtx);
220 vertex->setFitQuality( 0, 0);
233 for(
unsigned int i(0);
i<
track->numberOfParameters() ; ++
i ){
240 ATH_MSG_WARNING(
"Track Particle does not contain first Measurement track parameters");
248 uint8_t expectedHitInBLayer(0);
250 expectedHitInBLayer =
dummy;
252 float Rfirst = trk_meas.
position().perp();
253 if (expectedHitInBLayer)
258 ATH_MSG_DEBUG(
"BLayer hit expected. Radius of first hit (" <<
268 ATH_MSG_DEBUG(
"No BLayer hit expected. Radius of first hit (" <<
281 nTrtOutliers =
dummy;
283 uint8_t ntrt = nTrtHits + nTrtOutliers;
287 nTrtXenonHits =
dummy;