99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
1111
12+ #include " GPUO2Interface.h" // Needed for propper settings in GPUParam.h
13+ #include " GPUParam.h"
14+ #include " GPUParam.inc"
15+ #ifdef WITH_OPENMP
16+ #include < omp.h>
17+ #endif
18+
1219#include < TTree.h>
1320#include < cassert>
1421#include < algorithm>
5057#include " ITS3Reconstruction/IOUtils.h"
5158#endif
5259
53- #include " GPUO2Interface.h" // Needed for propper settings in GPUParam.h
54- #include " GPUParam.h"
55- #include " GPUParam.inc"
56- #ifdef WITH_OPENMP
57- #include < omp.h>
58- #endif
59-
6060using namespace o2 ::globaltracking;
6161
6262using MatrixDSym4 = ROOT::Math::SMatrix<double , 4 , 4 , ROOT::Math::MatRepSym<double , 4 >>;
@@ -68,6 +68,8 @@ constexpr float MatchTPCITS::Tan70, MatchTPCITS::Cos70I2, MatchTPCITS::MaxSnp, M
6868
6969LinksPoolMT* TPCABSeed::gLinksPool = nullptr ;
7070
71+ const o2::gpu::GPUTPCGeometry MatchTPCITS::TPCGeometry{};
72+
7173// ______________________________________________
7274MatchTPCITS::MatchTPCITS () = default;
7375
@@ -428,6 +430,12 @@ int MatchTPCITS::addTPCSeed(const o2::track::TrackParCov& _tr, float t0, float t
428430 if (clRow > mParams ->askMinTPCRow [clSect]) {
429431 return -9 ;
430432 }
433+ const auto & clus = mTPCClusterIdxStruct ->clusters [clSect][clRow][clIdx];
434+ uint8_t padFromEdge = uint8_t (clus.getPad ());
435+ if (padFromEdge > TPCGeometry.NPads (clRow) / 2 ) {
436+ padFromEdge = TPCGeometry.NPads (clRow) - 1 - padFromEdge;
437+ }
438+
431439 // create working copy of track param
432440 bool extConstrained = srcGID.getSource () != GTrackID::TPC;
433441 if (extConstrained) {
@@ -442,6 +450,8 @@ int MatchTPCITS::addTPCSeed(const o2::track::TrackParCov& _tr, float t0, float t
442450 tpcID,
443451 srcGID,
444452 MinusOne,
453+ clRow,
454+ padFromEdge,
445455 (extConstrained || tpcOrig.hasBothSidesClusters ()) ? TrackLocTPC::Constrained : (tpcOrig.hasASideClustersOnly () ? TrackLocTPC::ASide : TrackLocTPC::CSide)});
446456 // propagate to matching Xref
447457 const auto & trackTune = TrackTuneParams::Instance ();
@@ -2872,7 +2882,7 @@ void MatchTPCITS::dumpTPCOrig(bool acc, int tpcIndex)
28722882 // /< fill debug tree for TPC original tracks (passing pT cut)
28732883 mTimer [SWDBG].Start (false );
28742884 const auto & tpcOrig = mTPCTracksArray [tpcIndex];
2875- uint8_t clSect = 0 , clRow = 0 , prevRow = 0xff ;
2885+ uint8_t clSect = 0 , clRow = 0 , prevRow = 0xff , padFromEdge = - 1 ;
28762886 uint32_t clIdx = 0 ;
28772887 int nshared = 0 ;
28782888 std::array<bool , 152 > shMap{};
@@ -2888,6 +2898,11 @@ void MatchTPCITS::dumpTPCOrig(bool acc, int tpcIndex)
28882898 prevRawShared = true ;
28892899 }
28902900 }
2901+ const auto & clus = mTPCClusterIdxStruct ->clusters [clSect][clRow][clIdx];
2902+ padFromEdge = uint8_t (clus.getPad ());
2903+ if (padFromEdge > TPCGeometry.NPads (clRow) / 2 ) {
2904+ padFromEdge = TPCGeometry.NPads (clRow) - 1 - padFromEdge;
2905+ }
28912906 int tb = tpcOrig.getTime0 () * mNTPCOccBinLengthInv ;
28922907 float mltTPC = tb < 0 ? mTBinClOcc [0 ] : (tb >= mTBinClOcc .size () ? mTBinClOcc .back () : mTBinClOcc [tb]);
28932908 (*mDBGOut ) << " tpcOrig"
@@ -2900,6 +2915,7 @@ void MatchTPCITS::dumpTPCOrig(bool acc, int tpcIndex)
29002915 << " time0=" << tpcOrig.getTime0 ()
29012916 << " trc=" << ((o2::track::TrackParCov&)tpcOrig)
29022917 << " minRow=" << clRow
2918+ << " padFromEdge=" << padFromEdge
29032919 << " multTPC=" << mltTPC;
29042920 if (mMCTruthON ) {
29052921 (*mDBGOut ) << " tpcOrig"
0 commit comments