31 (
const std::string &
t,
const std::string &
n,
const IInterface *
p) :
33 m_option_make2dimBarrelClusters(false),
34 m_option_errorStrategy(-1),
35 m_option_correctionStrategy(-1) {
37 declareInterface<IRIO_OnTrackCreator>(
this);
40 "flag if strip length should be part of the measurement");
42 "if ErrorStrategy < 0, keep previous errors else recompute");
44 "if CorrectionStrategy >= 0, apply a correction to the cluster position");
55 msg(MSG::INFO) <<
"A strategy to ";
57 case -1:
msg(MSG::INFO) <<
"keep the PRD errors";
60 case 0:
msg(MSG::INFO) <<
"apply simple pitch errors";
63 case 1:
msg(MSG::INFO) <<
"assign tuned SCT errors";
66 case 2:
msg(MSG::INFO) <<
"assign tuned, angle-dependent SCT errors";
69 default:
msg(MSG::INFO) <<
" -- NO, UNKNOWN. Pls check jobOptions!";
72 msg(MSG::INFO) <<
" will be applied during SCT_ClusterOnTrack making" <<
endmsg;
74 msg(MSG::INFO) <<
"SCT cluster positions will be corrected" <<
endmsg;
129 double sinAlpha =
EL->sinStereoLocal(
SC->localPosition());
130 double cosAlpha = std::sqrt(1 - sinAlpha * sinAlpha);
132 double pNormal = trackPar.
momentum().dot(
EL->normal());
144 if (!tbounds && !rbounds) {
149 if (
distance * cosAlpha > boundsy) {
177 if (colRow.x() == 1) {
179 }
else if (colRow.x() == 2) {
198 double sn =
EL->sinStereoLocal(
SC->localPosition());
199 double sn2 = sn * sn;
200 double cs2 = 1. - sn2;
201 double w =
EL->phiPitch(
SC->localPosition()) /
EL->phiPitch();
203 double v1 =
mat(1, 1);
204 mat(0, 0) = (cs2 *
v0 + sn2 * v1);
205 mat(1, 0) = (sn * std::sqrt(cs2) * (
v0 - v1));
207 mat(1, 1) = (sn2 *
v0 + cs2 * v1);
209 oldcov = std::move(
mat);
220 cov(0, 0) = oldcov(0, 0);
226 cov = Trk::ErrorScalingCast<SCTRIO_OnTrackErrorScaling>(*error_scaling)
227 ->getScaledCovariance(std::move(
cov),
false, 0.0);
233 cov = Trk::ErrorScalingCast<SCTRIO_OnTrackErrorScaling>(*error_scaling)
234 ->getScaledCovariance(std::move(
cov),
true,
235 EL->sinStereoLocal(
SC->localPosition()));
237 double Sn =
EL->sinStereoLocal(
SC->localPosition());
238 double Sn2 = Sn * Sn;
239 double Cs2 = (1. - Sn) * (1. + Sn);
240 double SC = Sn * std::sqrt(Cs2);
241 double W =
EL->phiPitch(loct) /
EL->phiPitch();
242 double dV0 = (Cs2 *
cov(0, 0) + Sn2 *
cov(1, 1) +
243 2. *
SC *
cov(1, 0)) * (
W *
W - 1.);
244 cov(0, 0) += (Cs2 * dV0);
245 cov(1, 0) += (
SC * dV0);
247 cov(1, 1) += (Sn2 * dV0);
262 constexpr
float corr1[30] = {
263 0.3, 0.8, 1.1, 1.5, 1.9, 1.9, 2.1, 2.4, 2.3, 2.6,
264 2.6, 2.7, 2.8, 2.7, 2.5, 2.6, 2.8, 2.6, 2.6, 2.7,
265 2.2, 1.8, 1.8, 1.6, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0
267 constexpr
float corr2[30] = {
268 0.0, 0.0, 0.0, 1.0, 1.5, 1.7, 1.7, 2.3, 2.1, 2.5,
269 2.5, 2.7, 2.7, 2.9, 3.0, 3.0, 3.0, 3.0, 3.4, 3.4,
270 3.0, 3.2, 2.6, 2.6, 3.0, 2.7, 2.5, 2.4, 1.7, 1.3
296 constexpr
float sigma1[60] = {
297 22.1, 21.8, 21.4, 21.0, 20.5, 20.0, 19.6, 19.1, 18.5, 18.0,
298 17.4, 17.0, 16.4, 15.8, 15.4, 14.9, 14.4, 14.1, 13.3, 13.1,
299 12.9, 12.4, 12.6, 12.2, 12.3, 12.6, 13.4, 14.2, 15.6, 19.3,
300 22.8, 29.5, 33.2, 41.8, 44.3, 48.4, 49.9, 54.0, 53.0, 56.3,
301 57.5, 56.3, 64.5, 65.7, 66.1, 69.4, 74.8, 78.3, 78.8, 79.8,
302 73.5, 73.8, 75.8, 84.3, 87.0, 99.9, 86.3, 0.0, 0.0, 0.0
304 constexpr
float sigma2[60] = {
305 22.2, 20.3, 18.8, 16.0, 14.6, 13.8, 12.9, 12.9, 12.7, 12.3,
306 12.7, 12.6, 13.0, 13.3, 14.0, 14.6, 15.3, 15.9, 16.6, 17.6,
307 18.4, 19.3, 19.9, 20.5, 21.0, 21.2, 21.5, 21.4, 21.3, 21.3,
308 20.9, 20.8, 20.6, 20.7, 20.3, 20.7, 21.7, 24.4, 26.5, 29.5,
309 34.6, 41.6, 48.5, 52.3, 54.5, 58.4, 61.8, 66.7, 69.9, 72.1,
310 78.9, 79.2, 81.8, 80.9, 87.5, 99.2, 0.0, 0.0, 0.0, 0.0
312 constexpr
float sigma3[60] = {
313 70.1, 73.6, 71.7, 66.9, 68.3, 66.8, 66.2, 64.8, 66.6, 63.3,
314 63.3, 60.4, 59.0, 57.1, 56.4, 54.4, 54.2, 54.4, 50.3, 48.9,
315 48.1, 41.9, 38.0, 31.8, 28.3, 23.1, 23.0, 20.3, 18.5, 17.6,
316 17.7, 16.8, 18.3, 19.3, 19.0, 20.0, 20.9, 21.6, 22.0, 22.2,
317 22.7, 22.4, 24.3, 24.8, 24.6, 27.0, 29.8, 37.0, 47.7, 49.3,
318 58.2, 60.2, 66.8, 70.8, 77.3, 80.6, 0.0, 0.0, 0.0, 0.0
320 constexpr
float sigma4[60] = {
321 103.2, 100.4, 100.7, 101.2, 107.4, 100.6, 100.9, 100.4, 96.3, 98.2,
322 96.7, 94.5, 96.9, 91.7, 90.5, 89.5, 86.3, 90.6, 82.4, 89.3,
323 87.3, 77.6, 75.7, 77.2, 77.3, 84.1, 80.1, 66.9, 73.7, 72.3,
324 58.1, 65.6, 64.2, 54.7, 47.2, 44.4, 34.6, 36.4, 29.1, 25.8,
325 18.8, 21.6, 18.6, 20.3, 22.7, 23.3, 24.1, 22.4, 24.7, 24.7,
326 27.3, 30.4, 37.0, 46.4, 59.4, 62.6, 65.3, 0.0, 0.0, 0.0
328 constexpr
float sigma5[60] = {
329 150.9, 139.7, 133.9, 139.8, 141.4, 134.9, 138.4, 129.3, 137.9, 128.7,
330 132.4, 130.1, 124.2, 115.8, 131.4, 115.2, 128.7, 112.8, 130.7, 129.0,
331 115.8, 101.3, 115.9, 116.1, 121.7, 109.9, 110.0, 97.2, 96.4, 107.3,
332 98.2, 80.0, 73.2, 87.0, 97.0, 88.5, 72.2, 73.9, 80.8, 75.7,
333 69.5, 67.1, 54.1, 58.9, 47.3, 50.6, 29.5, 26.6, 25.8, 20.9,
334 20.6, 21.9, 22.1, 21.1, 27.9, 41.6, 0.0, 0.0, 0.0, 0.0