@@ -331,20 +331,24 @@ void TRDGlobalTracking::run(ProcessingContext& pc)
331331 mITSTrackClusIdx = inputTracks.getITSTracksClusterRefs ();
332332 mITSABRefsArray = inputTracks.getITSABRefs ();
333333 mITSABTrackClusIdx = inputTracks.getITSABClusterRefs ();
334- const auto clusITS = inputTracks.getITSClusters ();
335- const auto patterns = inputTracks.getITSClustersPatterns ();
336- auto pattIt = patterns.begin ();
337- mITSClustersArray .clear ();
338- mITSClustersArray .reserve (clusITS.size ());
334+ int nLr = mDataRequest ->getITSPerLayer () ? o2::globaltracking::MaxITSLayers : 1 ;
335+ mITSClustersArray .init (nLr);
336+ for (int lr = 0 ; lr < nLr; lr++) { // with a single (monolithic) input all clusters are in the layer slot 0
337+ mITSClustersArray .beginLayer (lr);
338+ const auto clusITS = inputTracks.getITSClusters (lr);
339+ auto pattIt = inputTracks.getITSClustersPatterns (lr).begin ();
340+ mITSClustersArray .getClusters ().reserve (mITSClustersArray .size () + clusITS.size ());
339341#ifdef ENABLE_UPGRADES
340- if (o2::GlobalParams::Instance ().withITS3 ) {
341- o2::its3::ioutils::convertCompactClusters (clusITS, pattIt, mITSClustersArray , mIT3Dict );
342- } else {
343- o2::its::ioutils::convertCompactClusters (clusITS, pattIt, mITSClustersArray , mITSDict );
344- }
342+ if (o2::GlobalParams::Instance ().withITS3 ) {
343+ o2::its3::ioutils::convertCompactClusters (clusITS, pattIt, mITSClustersArray . getClusters () , mIT3Dict );
344+ } else {
345+ o2::its::ioutils::convertCompactClusters (clusITS, pattIt, mITSClustersArray . getClusters () , mITSDict );
346+ }
345347#else
346- o2::its::ioutils::convertCompactClusters (clusITS, pattIt, mITSClustersArray , mITSDict );
348+ o2::its::ioutils::convertCompactClusters (clusITS, pattIt, mITSClustersArray . getClusters () , mITSDict );
347349#endif
350+ }
351+ mITSClustersArray .finalize ();
348352 }
349353
350354 LOGF (info, " There are %i tracklets in total from %i trigger records" , mChainTracking ->mIOPtrs .nTRDTracklets , mChainTracking ->mIOPtrs .nTRDTriggerRecords );
@@ -971,11 +975,12 @@ void TRDGlobalTracking::endOfStream(EndOfStreamContext& ec)
971975 mTimer .CpuTime (), mTimer .RealTime (), mTimer .Counter () - 1 );
972976}
973977
974- DataProcessorSpec getTRDGlobalTrackingSpec (bool useMC, GTrackID::mask_t src, bool trigRecFilterActive, bool strict, bool withPID, PIDPolicy policy, bool requestCTPLumi)
978+ DataProcessorSpec getTRDGlobalTrackingSpec (bool useMC, GTrackID::mask_t src, bool trigRecFilterActive, bool strict, bool withPID, PIDPolicy policy, bool requestCTPLumi, bool itsStag )
975979{
976980 std::vector<OutputSpec> outputs;
977981 uint32_t ss = o2::globaltracking::getSubSpec (strict ? o2::globaltracking::MatchingType::Strict : o2::globaltracking::MatchingType::Standard);
978982 std::shared_ptr<DataRequest> dataRequest = std::make_shared<DataRequest>();
983+ dataRequest->setITSPerLayer (itsStag);
979984 if (strict) {
980985 dataRequest->setMatchingInputStrict ();
981986 }
0 commit comments