@@ -72,19 +72,20 @@ int loadROFrameDataITS3(its::TimeFrame<7>* tf,
7272
7373 // check for missing/empty/unset rofs
7474 // the code requires consistent monotonically increasing input without gaps
75- const auto & timing = tf->getROFOverlapTableView ().getLayer (layer);
75+ const auto & timing = tf->getROFOverlapTableView ().getLayer (layer >= 0 ? layer : 0 );
7676 if (timing.mNROFsTF != rofs.size ()) {
7777 LOGP (fatal, " Received inconsistent number of rofs on layer:{} expected:{} received:{}" , layer, timing.mNROFsTF , rofs.size ());
7878 }
7979
80- its::bounded_vector<uint8_t > clusterSizeVec (clusters.size (), tf->getMemoryPool ().get ());
80+ its::bounded_vector<uint8_t > clusterSizeVec (tf->getMemoryPool ().get ());
81+ clusterSizeVec.reserve (clusters.size ());
8182
8283 for (size_t iRof{0 }; iRof < rofs.size (); ++iRof) {
8384 const auto & rof = rofs[iRof];
8485 for (int clusterId{rof.getFirstEntry ()}; clusterId < rof.getFirstEntry () + rof.getNEntries (); ++clusterId) {
8586 const auto & c = clusters[clusterId];
8687 const auto sensorID = c.getSensorID ();
87- const auto layer = geom->getLayer (sensorID);
88+ const auto lay = geom->getLayer (sensorID);
8889
8990 float sigmaY2{0 }, sigmaZ2{0 }, sigmaYZ{0 };
9091 uint8_t clusterSize{0 };
@@ -110,30 +111,37 @@ int loadROFrameDataITS3(its::TimeFrame<7>* tf,
110111 }
111112 math_utils::detail::bringToPMPi (alpha); // alpha is defined on -Pi,Pi
112113
113- tf->addTrackingFrameInfoToLayer (layer , gloXYZ.x (), gloXYZ.y (), gloXYZ.z (), x, alpha,
114+ tf->addTrackingFrameInfoToLayer (lay , gloXYZ.x (), gloXYZ.y (), gloXYZ.z (), x, alpha,
114115 std::array<float , 2 >{y, trkXYZ.z ()},
115116 std::array<float , 3 >{sigmaY2, sigmaYZ, sigmaZ2});
116117
117118 // / Rotate to the global frame
118- tf->addClusterToLayer (layer, gloXYZ.x (), gloXYZ.y (), gloXYZ.z (), tf->getUnsortedClusters ()[layer].size ());
119- tf->addClusterExternalIndexToLayer (layer, clusterId);
119+ tf->addClusterToLayer (lay, gloXYZ.x (), gloXYZ.y (), gloXYZ.z (), tf->getUnsortedClusters ()[lay].size ());
120+ tf->addClusterExternalIndexToLayer (lay, clusterId);
121+ }
122+ // effectively calculating an exclusive sum
123+ if (layer >= 0 ) {
124+ tf->mROFramesClusters [layer][iRof + 1 ] = tf->mUnsortedClusters [layer].size ();
125+ } else {
126+ for (unsigned int iL{0 }; iL < tf->mUnsortedClusters .size (); ++iL) {
127+ tf->mROFramesClusters [iL][iRof + 1 ] = tf->mUnsortedClusters [iL].size ();
128+ }
120129 }
121- tf->mROFramesClusters [layer][iRof + 1 ] = (int )tf->getUnsortedClusters ()[layer].size ();
122130 }
123131
124132 tf->setClusterSize (layer, clusterSizeVec);
125133
126- if (layer == 1 ) {
127- for (auto & v : tf->mNTrackletsPerCluster ) {
128- v.resize (tf->getUnsortedClusters ()[1 ].size ());
129- }
130- for (auto & v : tf->mNTrackletsPerClusterSum ) {
131- v.resize (tf->getUnsortedClusters ()[1 ].size () + 1 );
134+ if (layer == 1 || layer == -1 ) {
135+ for (auto i = 0 ; i < tf->mNTrackletsPerCluster .size (); ++i) {
136+ tf->mNTrackletsPerCluster [i].resize (tf->mUnsortedClusters [1 ].size ());
137+ tf->mNTrackletsPerClusterSum [i].resize (tf->mUnsortedClusters [1 ].size () + 1 );
132138 }
133139 }
134140
135141 if (mcLabels != nullptr ) {
136- tf->mClusterLabels [layer] = mcLabels;
142+ tf->mClusterLabels [layer >= 0 ? layer : 0 ] = mcLabels;
143+ } else {
144+ tf->mClusterLabels [layer >= 0 ? layer : 0 ] = nullptr ;
137145 }
138146 return 0 ;
139147}
0 commit comments