16#ifndef ALICEO2_ITS_TRACKITS_H
17#define ALICEO2_ITS_TRACKITS_H
44 kSharedClusters = 1 << 28
51 using o2::track::TrackParCov::TrackParCov;
68 GPUhdi()
float getChi2()
const {
return mChi2; }
69 GPUhdi() int getNClusters()
const {
return mClusRef.getEntries(); }
70 GPUhdi() int getNumberOfClusters()
const {
return getNClusters(); }
75 mClusRef.setFirstEntry(mClusRef.getFirstEntry() + bias);
79 mClusRef.setFirstEntry(offs);
83 mClusRef.setEntries(
n);
91 mClusRef.set(firstEntry,
n);
115 template <
int NLayers>
118 return (NLayers >= 32) ? 0xffffffffu : ((1u << NLayers) - 1u);
120 template <
int NLayers>
123 pattern &= getLayerPatternMask<NLayers>();
129 template <
int NLayers>
132 const auto mask = getLayerPatternMask<NLayers>();
139 return getUserField() &
mask;
144 getParamOut().setUserField(0);
157 while (!(mPattern & (1 <<
s))) {
164 void setSharedClusters(
bool toggle =
true) { mClusterSizes = toggle ? (mClusterSizes | kSharedClusters) : (mClusterSizes & ~kSharedClusters); }
175 mClusterSizes &= ~(0xf << (l * 4));
176 mClusterSizes |= (
size << (l * 4));
184 return (mClusterSizes >> (l * 4)) & 0xf;
189 return mClusterSizes;
208 using TrackITS::TrackITS;
224 GPUhdi()
int getClusterIndex(
int lr)
const {
return mIndex[lr]; }
226 GPUh() int getFirstLayerClusterIndex()
const
228 return getClusterIndex(getFirstClusterLayer());
250 size_t hash(
uint16_t layerMask = 0xFFFF,
bool inward =
true) const noexcept
252 size_t h1 = 0, h2 = 0;
253 int from = (int)getLastClusterLayer(), to = -1,
step = -1;
255 from = (int)getFirstClusterLayer();
262 int idx = mIndex[slot++];
264 size_t v = std::hash<int>{}(
idx);
266 h2 +=
v * 0x9e3779b97f4a7c15ULL;
270 return h1 ^ (h2 << 1);
275 std::array<int, MaxClusters> mIndex = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
276 ClassDefNV(TrackITSExt, 3);
unsigned short int uint16_t
configStandalone Light OpenGL display display_light Apply smoothing to points Enable Z buffer Highlight links Highlight seeds Highlight sector tracks Highlight final tracks Show individual Show related Highlight grid Show only individual collision Color clusters belonging to track objects Set line Enable drawing TPC data Enable drawing TOF data Enable drawing magnetic field Set field line step count Invert colors configStandalone Heavy OpenGL display display_heavy Show tracks with ITS contribution Show tracks with TOF contribution Enable propagation of loopers Show clusters at nominal x of pad row for early transformed data Split CE tracks when they cross the central Mark clusters Mark adjacent clusters Hide rejected tracks Apply filter on tracks to be displayed Separate increase X h configStandalone Camera window renderer OpenGL display display_camera Orient the camera such that the y axis is always upwards Full Screen MultiSample Anti Downsampling Anti Enable Vertical Sync Target frame or if the backend cannot limit to the refresh Use OpenGL indirect draws to reduce number of draw calls Display h configStandalone Vulkan display display_vulkan Have uniform buffers in host accessible device memory h configStandalone Internal display display_internal Number of updates the Qt GUI may send ahead of the last one the display has before it waits for the display Opacity of the console background Number of console lines the history is shortened to this when it reaches twice the size Time in seconds an info message fades out after setInfoTime h OpenGL display display Font size Do not use Freetype for font auto
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error s
configStandalone Reconstruction rec_tpc multiplier for the combined cluster track error during track following area in cm for the search of for z only used if decrease removal by when above this local occupancy rowx Shift of TPC revert cluster flag edge bit distance to edge exceeds this ZOffset for secondary multiple of radius max P of electron K BB bands crossing max P of electron p BB bands crossing max P of electron d BB bands crossing max P of electron t BB bands crossing min accepted dEdxMaxTPC of the track Additive extra cluster error for Y2 if edge flag set Additive extra cluster error for Y2 if single set Additive extra cluster error for Y2 if or single set Additive extra cluster error for Z2 if or single set Extra errors to add to track when crossing depending on addErrorsCECrossing Inner portion of y range in sector that is not used in searching for extrapolated track candidates factor2YS for track merging factor2K for track merging Margin in cm of Y position when rejecting edge clusters based on uncorrected track Y Max fraction of shared clusters for tracklet Except pad from cluster finding if total number of charges in a fragment is above this Except pad from cluster finding if number of consecutive charges in a fragment is above this Threshold where a timebin is considered disabling the noisy pad check for that pad Treat signal above this minimum as saturated Smoothing factor for the exponential Highly Ionising Particle tail filter Number of timebins to use for the averaging Add additional custom track errors when crossing relative as fraction of Do N fit passes in final fit of< 0:reject at max -n hits") AddOptionRTC(rejectIFCLowRadiusCluster, uint8_t, 1, "", 0, "Reject clusters that get the IFC mask error during refit") AddOptionRTC(dEdxTruncLow, uint8_t, 2, "", 0, "Low truncation threshold, fraction of 128") AddOptionRTC(dEdxTruncHigh, uint8_t, 77, "", 0, "High truncation threshold, fraction of 128") AddOptionRTC(extrapolationTracking, int8_t, 1, "", 0, "Enable Extrapolation Tracking(prolong tracks to adjacent sectors to find short segments)") AddOptionRTC(disableRefitAttachment, uint8_t, 0, "", 0, "Bitmask to disable certain attachment steps during refit(1:attachment, 2:propagation, 4:loop following, 8:mirroring)") AddOptionRTC(rejectionStrategy, uint8_t, o2::gpu::GPUSettings::RejectionStrategyA, "", 0, "Enable rejection of TPC clusters for compression(0=no, 1=strategy A, 2=strategy B)") AddOptionRTC(mergeLoopersAfterburner, uint8_t, 1, "", 0, "Run afterburner for additional looper merging") AddOptionRTC(compressionTypeMask, uint8_t, o2::gpu::GPUSettings::CompressionFull, "", 0, "TPC Compression mode bits(1=truncate charge/width LSB, 2=differences, 4=track-model)") AddOptionRTC(compressionSortOrder, uint8_t, o2::gpu::GPUSettings::SortTime, "", 0, "Sort order of TPC compression(0=time, 1=pad, 2=Z-time-pad, 3=Z-pad-time, 4=no sorting(use incoming order))") AddOptionRTC(sigBitsCharge, uint8_t, 4, "", 0, "Number of significant bits for TPC cluster charge in compression mode 1") AddOptionRTC(sigBitsWidth, uint8_t, 3, "", 0, "Number of significant bits for TPC cluster width in compression mode 1") AddOptionRTC(dropLoopers, uint8_t, 0, "", 0, "Drop looping tracks starting from second loop") AddOptionRTC(mergerInterpolateErrors, uint8_t, 1, "", 0, "Use interpolation instead of extrapolation for chi2 based cluster rejection") AddOptionRTC(mergerInterpolateRejectAlsoOnCurrentPosition, uint8_t, 1, "", 0, "When using mergerInterpolateErrors, reject based on chi2 twice computed with interpolated and current track position starting from NDF > mergerNonInterpolateRejectMinNDF Merge tracks accross the central electrode Enable PID response Add sub threshold clusters in TPC dEdx computation OR mask of TPC flags that will reject the cluster in alternative dEdx Reject edge clusters based on uncorrected track Y during track fit Increase decrease removal by when on this number of pads from the edge h configStandalone Reconstruction rec_trd Max chi2 for TRD tracklets to be matched to a track Chi2 cut for strict matching mode Number of sigmas for ITS TPC track time error estimate Addition to search road around track prolongation along Y in cm Optimal tracklet rphi resolution in maximum chi2 per attached tracklet for TRD tracks take into account the full likelihood of the slope including exponential tails Tracks with less attached tracklets are discarded after the tracking Post trigger Pile up integration time in BCs fits all iterations but the last one in projections Use material lookup table for TPC refit Apply workarounds to avoid cyclic merge should not be needed tpc dyn configStandalone Processing proc_rtc Replace constant variables static by constexpr expressions false
Class to refer to the 1st entry and N elements of some group in the continuous container.
o2::track::TrackParCov TrackParCov
HMPID cluster implementation.
GPUhdDefault() TrackITSExt(const TrackITSExt &t)=default
size_t hash(uint16_t layerMask=0xFFFF, bool inward=true) const noexcept
GPUh() int getFirstLayerClusterIndex() const
GPUhdi() void setExternalClusterIndex(int layer
int bool MaxClusters & getClusterIndexes()
static constexpr int MaxClusters
< heavy version of TrackITS, with clusters embedded
GPUhdi() int getClusterIndex(int lr) const
GPUhdi() void setExtendedLayerPattern(uint32_t pattern)
GPUhdi() auto &getTimeStamp()
bool operator<(const TrackITS &o) const
bool hasHitOnLayer(uint32_t i) const
GPUhdi() const auto &getTimeStamp() const
const ClusRefs & getClusterRefs() const
void setClusterRefs(int firstEntry, int n)
GPUhdi() int getNClusters() const
int getNFakeClusters() const
static constexpr int MaxClusters
GPUhdi() ClusRefs &getClusterRefs()
GPUhdi() uint32_t getLastClusterLayer() const
void getImpactParams(float x, float y, float z, float bz, float ip[2]) const
GPUhdDefault() TrackITS &operator
int getClusterEntry(int i) const
void shiftFirstClusterEntry(int bias)
void setNumberOfClusters(int n)
GPUhdi() uint32_t getPattern() const
int getClusterSize(int l)
GPUhdi() uint32_t getFirstClusterLayer() const
bool isFakeOnLayer(uint32_t i) const
GPUhdi() uint32_t getExtendedLayerPattern() const
void setClusterSize(int l, int size)
GPUhdi() int getNumberOfClusters() const
int getFirstClusterEntry() const
int getClusterSizes() const
GPUhdi() float getChi2() const
void setFirstClusterEntry(int offs)
bool propagate(float alpha, float x, float bz)
bool hasSharedClusters() const
GPUhd() TrackITS(const o2
static constexpr unsigned int ExtendedPatternShift
void setSharedClusters(bool toggle=true)
static constexpr int MaxLayersInTrackPattern
GPUhdDefault() TrackITS()=default
GPUhdi() void clearExtendedLayerPattern()
bool isBetter(const TrackITS &best, float maxChi2) const
bool isExtendedOnLayer(uint32_t i) const
bool update(const Cluster &c, float chi2)
GPUhdi() void setChi2(float chi2)
GPUhdi() static const expr uint32_t getLayerPatternMask()
Cluster class for the ITSMFT.
GLfloat GLfloat GLfloat alpha
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
GLenum GLuint GLint GLint layer
GLdouble GLdouble GLdouble z
const bool const bool const int FollowDirection BestTrial TrackITSInternal< NLayers > & best
const float const float const float bz
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::array< uint16_t, 5 > pattern