1616#ifndef ALICEO2_ITS_TRACKITS_H
1717#define ALICEO2_ITS_TRACKITS_H
1818
19+ #include < algorithm>
1920#include < cstdint>
2021
2122#include " GPUCommonDef.h"
23+ #include " GPUCommonMath.h"
2224#include " ReconstructionDataFormats/Track.h"
2325#include " CommonDataFormat/RangeReference.h"
2426#include " DataFormatsITS/TimeEstBC.h"
@@ -36,7 +38,8 @@ namespace its
3638class TrackITS : public o2 ::track::TrackParCov
3739{
3840 enum UserBits {
39- kSharedClusters = 1 << 28
41+ kSharedClusters = 1 << 28 ,
42+ kUPCIteration = 1 << 29
4043 };
4144
4245 using Cluster = o2::itsmft::Cluster;
@@ -127,31 +130,27 @@ class TrackITS : public o2::track::TrackParCov
127130
128131 void setSharedClusters (bool toggle = true ) { mClusterSizes = toggle ? (mClusterSizes | kSharedClusters ) : (mClusterSizes & ~kSharedClusters ); }
129132 bool hasSharedClusters () const { return mClusterSizes & kSharedClusters ; }
133+ void setUPCIteration () { mClusterSizes |= kUPCIteration ; }
134+ bool isUPCIteration () const noexcept { return mClusterSizes & kUPCIteration ; }
130135
131136 void setClusterSize (int l, int size)
132137 {
133138 if (l >= 8 ) {
134139 return ;
135140 }
136- if (size > 15 ) {
137- size = 15 ;
138- }
141+ size = o2::gpu::CAMath::Min (size, 15 );
139142 mClusterSizes &= ~(0xf << (l * 4 ));
140143 mClusterSizes |= (size << (l * 4 ));
141144 }
142145
143- int getClusterSize (int l)
146+ int getClusterSize (int l) const
144147 {
145148 if (l >= 7 ) {
146149 return 0 ;
147150 }
148151 return (mClusterSizes >> (l * 4 )) & 0xf ;
149152 }
150-
151- int getClusterSizes () const
152- {
153- return mClusterSizes ;
154- }
153+ auto getClusterSizes () const { return mClusterSizes ; }
155154
156155 private:
157156 o2::track::TrackParCov mParamOut ; // /< parameter at largest radius
@@ -171,13 +170,7 @@ class TrackITSExt : public TrackITS
171170 static constexpr int MaxClusters = 16 ; // / Prepare for overlaps and new detector configurations
172171 using TrackITS::TrackITS; // inherit base constructors
173172
174- GPUh () TrackITSExt(o2::track::TrackParCov&& parCov, short ncl, float chi2, o2::track::TrackParCov&& outer, std::array<int , MaxClusters> cls)
175- : TrackITS(parCov, chi2, outer), mIndex {cls}
176- {
177- setNumberOfClusters (ncl);
178- }
179-
180- GPUh () TrackITSExt(o2::track::TrackParCov& parCov, short ncl, float chi2, std::uint32_t rof, o2::track::TrackParCov& outer, std::array<int , MaxClusters> cls)
173+ GPUh () TrackITSExt(const o2::track::TrackParCov& parCov, short ncl, float chi2, const o2::track::TrackParCov& outer, std::array<int , MaxClusters> cls)
181174 : TrackITS(parCov, chi2, outer), mIndex {cls}
182175 {
183176 setNumberOfClusters (ncl);
0 commit comments