Skip to content

Commit 2ac91a0

Browse files
committed
fix in track propagation to TOF for MC
1 parent c0c70ae commit 2ac91a0

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

Detectors/GlobalTracking/src/MatchTOF.cxx

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -932,6 +932,33 @@ void MatchTOF::doMatching(int sec)
932932
}
933933
//Printf("nStepsInsideSameStrip[nStripsCrossedInPropagation-1] = %d", nStepsInsideSameStrip[nStripsCrossedInPropagation - 1]);
934934
if (nStepsInsideSameStrip[nStripsCrossedInPropagation - 1] == 0) {
935+
// fine propagation inside the strip -> 1 mm step
936+
if(MCTruthON){ // for the moment to be applied only for MC -> condition to be removed for new 2025 data
937+
// temporary variables since propagation can fail
938+
int detIdTemp2[5] = {0, 0, 0, 0, 0};
939+
float deltaPosTemp2[3] = {deltaPosTemp[0], deltaPosTemp[1], deltaPosTemp[2]};
940+
while(deltaPosTemp2[1] < -0.1 && detIdTemp2[2] != -1){ // continuing propagation if dy is negative and we are still inside the strip volume
941+
propagateToRefX(trefTrk, reachedPoint, 0.1, intLT);
942+
reachedPoint = 0.1;
943+
trefTrk.getXYZGlo(pos);
944+
for (int ii = 0; ii < 3; ii++) { // we need to change the type...
945+
posFloat[ii] = pos[ii];
946+
}
947+
948+
Geo::getPadDxDyDz(posFloat, detIdTemp2, deltaPosTemp2, sec);
949+
if (detIdTemp2[2] != -1) { // if propation was succesful -> update params
950+
detIdTemp[0] = detIdTemp2[0];
951+
detIdTemp[1] = detIdTemp2[1];
952+
detIdTemp[2] = detIdTemp2[2];
953+
detIdTemp[3] = detIdTemp2[3];
954+
detIdTemp[4] = detIdTemp2[4];
955+
deltaPosTemp[0] = deltaPosTemp2[0];
956+
deltaPosTemp[1] = deltaPosTemp2[1];
957+
deltaPosTemp[2] = deltaPosTemp2[2];
958+
}
959+
}
960+
}
961+
935962
detId[nStripsCrossedInPropagation - 1][0] = detIdTemp[0];
936963
detId[nStripsCrossedInPropagation - 1][1] = detIdTemp[1];
937964
detId[nStripsCrossedInPropagation - 1][2] = detIdTemp[2];
@@ -1290,6 +1317,33 @@ void MatchTOF::doMatchingForTPC(int sec)
12901317

12911318
//Printf("nStepsInsideSameStrip[nStripsCrossedInPropagation-1] = %d", nStepsInsideSameStrip[nStripsCrossedInPropagation - 1]);
12921319
if (nStepsInsideSameStrip[ibc][nStripsCrossedInPropagation[ibc] - 1] == 0) {
1320+
// fine propagation inside the strip -> 1 mm step
1321+
if(MCTruthON){ // for the moment to be applied only for MC -> condition to be removed for new 2025 data
1322+
// temporary variables since propagation can fail
1323+
int detIdTemp2[5] = {0, 0, 0, 0, 0};
1324+
float deltaPosTemp2[3] = {deltaPosTemp[0], deltaPosTemp[1], deltaPosTemp[2]};
1325+
while(deltaPosTemp2[1] < -0.1 && detIdTemp2[2] != -1){ // continuing propagation if dy is negative and we are still inside the strip volume
1326+
propagateToRefX(trefTrk, reachedPoint, 0.1, intLT);
1327+
reachedPoint = 0.1;
1328+
trefTrk.getXYZGlo(pos);
1329+
for (int ii = 0; ii < 3; ii++) { // we need to change the type...
1330+
posFloat[ii] = pos[ii];
1331+
}
1332+
1333+
Geo::getPadDxDyDz(posFloat, detIdTemp2, deltaPosTemp2, sec);
1334+
if (detIdTemp2[2] != -1) { // if propation was succesful -> update params
1335+
detIdTemp[0] = detIdTemp2[0];
1336+
detIdTemp[1] = detIdTemp2[1];
1337+
detIdTemp[2] = detIdTemp2[2];
1338+
detIdTemp[3] = detIdTemp2[3];
1339+
detIdTemp[4] = detIdTemp2[4];
1340+
deltaPosTemp[0] = deltaPosTemp2[0];
1341+
deltaPosTemp[1] = deltaPosTemp2[1];
1342+
deltaPosTemp[2] = deltaPosTemp2[2];
1343+
}
1344+
}
1345+
}
1346+
12931347
detId[ibc][nStripsCrossedInPropagation[ibc] - 1][0] = detIdTemp[0];
12941348
detId[ibc][nStripsCrossedInPropagation[ibc] - 1][1] = detIdTemp[1];
12951349
detId[ibc][nStripsCrossedInPropagation[ibc] - 1][2] = detIdTemp[2];

0 commit comments

Comments
 (0)