@@ -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