Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "SimulationDataFormat/MCTruthContainer.h"
#include "SimulationDataFormat/ConstMCTruthContainer.h"
#include "DataFormatsCTP/LumiInfo.h"
#include "DataFormatsITSMFT/ClusterID.h"
#include <gsl/span>
#include <memory>

Expand Down Expand Up @@ -188,8 +189,8 @@ namespace globaltracking
{

// max number of layers for which the ITS/MFT clusters, ROF records and patterns can be provided separately
constexpr int MaxITSLayers = 7;
constexpr int MaxMFTLayers = 10;
constexpr int MaxITSLayers = o2::itsmft::MaxITSClusLayers;
constexpr int MaxMFTLayers = o2::itsmft::MaxMFTClusLayers;

// helper class to request DPL input data from the processor specs definition
struct DataRequest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,13 +221,6 @@ class TrackITSExt : public TrackITS

GPUhdDefault() TrackITSExt(const TrackITSExt& t) = default;

void setClusterIndex(int l, int i)
{
int ncl = getNumberOfClusters();
mIndex[ncl++] = (l << 28) + i;
getClusterRefs().setEntries(ncl);
}

GPUhdi() int getClusterIndex(int lr) const { return mIndex[lr]; }

GPUh() int getFirstLayerClusterIndex() const
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

/// \file ClusterID.h
/// \brief Composition/decomposition of the ITS/MFT cluster IDs referring to per-layer cluster arrays
/// \author ruben.shahoyan@cern.ch

#ifndef ALICEO2_ITSMFT_CLUSTERID_H
#define ALICEO2_ITSMFT_CLUSTERID_H

namespace o2::itsmft
{

// max number of layers for which the ITS/MFT clusters, ROF records and patterns can be provided separately
constexpr int MaxITSClusLayers = 7;
constexpr int MaxMFTClusLayers = 10;
constexpr int MaxClusLayers = MaxITSClusLayers > MaxMFTClusLayers ? MaxITSClusLayers : MaxMFTClusLayers;

///< With the per-layer (staggered readout) ITS/MFT clusters input the clusters are referred to by the
///< composed ID (layer << ClusLayerShift) + index_in_layer. With a single (monolithic) clusters input
///< all clusters sit in the layer slot 0, hence the composed ID coincides with the flat cluster index
///< and the same decoding works for both cases.
///< Note: the bit 31 is excluded from the layer field, since the negative values of the composed ID
///< are reserved for the "no cluster" flags.
constexpr int ClusLayerShift = 27;
constexpr int ClusIndexMask = (0x1 << ClusLayerShift) - 1;
static_assert((1 << (31 - ClusLayerShift)) >= MaxClusLayers, "ClusLayerShift leaves no room for the layer ID");

constexpr int composeClusID(int lr, int idx) { return (lr << ClusLayerShift) + idx; }
constexpr int clusID2Layer(int id) { return id >> ClusLayerShift; }
constexpr int clusID2Index(int id) { return id & ClusIndexMask; }

} // namespace o2::itsmft

#endif
179 changes: 121 additions & 58 deletions Detectors/GlobalTracking/include/GlobalTracking/MatchTPCITS.h

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ struct MatchTPCITSParams : public o2::conf::ConfigurableParamHelper<MatchTPCITSP
float nABSigmaZ = 4.; ///< nSigma cut on afterburner track-cluster Z distance
float err2ABExtraY = 0.1 * 0.1; ///< extra "systematic" error on Y
float err2ABExtraZ = 0.1 * 0.1; ///< extra "systematic" error on Z
float abROFMarginMUS = 0.f; ///< margin in \mus for matching interaction candidate time to ITS ROFs in the AfterBurner (clamped to below half of the shortest ROF length)
float itsTimeStampMarginBC = 1.f; ///< safety margin in BC applied to both edges of the ITS track time-stamp uncertainty interval

int verbosity = 0; ///< verbosit level

Expand Down
Loading
Loading