Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
a5a8469
ITS: staggered tracking
f3sch Mar 3, 2026
724ab6a
ITS: various fixes also for GPU
f3sch Mar 3, 2026
9026690
ITS: fix vertexer and move new types
f3sch Mar 5, 2026
28c8f1e
ITS: format
f3sch Mar 5, 2026
ac5e647
ITS: account for layer ROF bias in tracker
f3sch Mar 10, 2026
5ac4d54
ITS: sort tracks in time by lower edge
f3sch Mar 11, 2026
3dbfb76
ITS: ensure mc labels are nullptr
f3sch Mar 11, 2026
03d5582
ITSMFT: account for possible delay of received ROFs
f3sch Mar 11, 2026
d15f4bd
ITS: staggered STF decoder
f3sch Mar 11, 2026
a283dad
ITS: fix track time-assignment
f3sch Mar 12, 2026
37c9905
ITS: output vertices
f3sch Mar 13, 2026
5941b66
ITS: add macro to check staggering in data
f3sch Mar 13, 2026
00fde1d
Adapt ITS/MFT CTF machinery to staggered data
shahor02 Mar 14, 2026
36eba63
Fix compilation of ALICE3 tracking with staggering
mpuccio Mar 3, 2026
8de4135
Merge pull request #51 from shahor02/its_stag
f3sch Mar 16, 2026
6cecb46
Merge pull request #53 from mpuccio/its/trk/stag
f3sch Mar 16, 2026
7e038b4
ITS: modify staggering macro
f3sch Mar 16, 2026
00e49d9
ITSMFT: runtime staggering option
f3sch Mar 16, 2026
46dbe6b
ITSMFT: fix instantiation in namespace
f3sch Mar 16, 2026
cea6567
ITS3: fix compilation
f3sch Mar 16, 2026
a4501d5
Raw,CTF: add option to specify base cache dir for remote files
f3sch Mar 17, 2026
7606e68
ITS: tracking same as dev
f3sch Mar 17, 2026
f7ecc2d
ITS: add back datastreams
f3sch Mar 17, 2026
678b002
ITSMFT: improve logging
f3sch Mar 18, 2026
2e80fb9
ITS: add rofs for vertices back
f3sch Mar 18, 2026
10e66c2
add copyright to macro
f3sch Mar 18, 2026
928c399
ITS: hide print functions for device code
f3sch Mar 18, 2026
e00107b
ITSMFT: add shim file for alpide param
f3sch Mar 18, 2026
cc0d527
try to fix macro compilation
f3sch Mar 18, 2026
e714bcf
Avoid wildcarded subspecs in Digit/ClusterWriter
shahor02 Mar 18, 2026
103e115
Merge pull request #54 from shahor02/its_stag
f3sch Mar 18, 2026
3af5787
ITS: fix rof lut to work properly with added errors
f3sch Mar 18, 2026
7dec001
Fix/add some staggering options
shahor02 Mar 18, 2026
436ad9a
Add ITS/MFT staggering options to dpl-workflow.sh
shahor02 Mar 18, 2026
3ca055f
ITS: try fix for QC
f3sch Mar 19, 2026
1807af3
ITS: fix ROFLookpTables warning
f3sch Mar 19, 2026
e302f5e
ITS: fix tracklet formatting
f3sch Mar 19, 2026
c9517f4
ITS: set BCData properly for ROFs
f3sch Mar 19, 2026
f308c7b
ITS: remove deprecated settings
f3sch Mar 19, 2026
a4587e8
ITS: fix cluster label access for non-staggered
f3sch Mar 19, 2026
31c8b5c
Merge pull request #55 from shahor02/its_stag
f3sch Mar 19, 2026
83e4ed3
ITSMFT: fix staggering wfx option for digit-writer-workflow
f3sch Mar 19, 2026
6a27708
Fix loop condition for ITS tracking layers
f3sch Mar 19, 2026
6fb5be4
Fix/add some staggering options
shahor02 Mar 18, 2026
33bca14
Add ITS/MFT staggering options to dpl-workflow.sh
shahor02 Mar 18, 2026
ae4a1d3
ITSMFT: fix staggering wfx option for digit-writer-workflow
f3sch Mar 19, 2026
1023e9b
Fix loop condition for ITS tracking layers
f3sch Mar 19, 2026
91bcbb8
Make ITS vertex messageable
shahor02 Mar 20, 2026
d3aa1e2
remove unused variable
shahor02 Mar 20, 2026
3801e2c
Add/fix staggering options to all workflows reading ITS,MFT clusters
shahor02 Mar 20, 2026
7bd3f62
Merge pull request #57 from shahor02/its_stag
f3sch Mar 20, 2026
1bcddd0
ITSMFT: fix digit reader
f3sch Mar 20, 2026
7553fdd
Remove leftover NROFs configurable from dpl-workflow.sh
mpuccio Mar 23, 2026
f13ffb4
Merge pull request #58 from mpuccio/its/trk/stag
f3sch Mar 24, 2026
19d94af
ITS: fix time assignments
f3sch Mar 23, 2026
2ef458e
ITS: fix degenerate LSE for matrix solving
f3sch Mar 24, 2026
bd394b8
ITS: fix macro
f3sch Mar 24, 2026
18a8109
MFT: fix track writer
f3sch Mar 25, 2026
d423f9f
ITS: fix gpu compile due change in vertexer types
f3sch Mar 25, 2026
5453589
ITS: move lookup table creation to proper place
f3sch Mar 25, 2026
e48c4bd
Move FastMultEstimation to ITS tracking library
mpuccio Mar 25, 2026
4897a6a
ITS: add containedIn to TS
f3sch Mar 25, 2026
7f7c1bd
ITS: fix vertexer
f3sch Mar 25, 2026
507223a
ITS: improve STFDecoder&Clusterer error messages and account for dela…
f3sch Mar 26, 2026
dd608d6
Implement new kind of multiplicity mask
mpuccio Mar 27, 2026
32114cb
Adapt GPU code to the new mult mask
mpuccio Apr 2, 2026
821c93c
Merge pull request #59 from mpuccio/its/trk/stag
f3sch Apr 2, 2026
92cd379
ITS: finalize tracking code
f3sch Apr 2, 2026
be16c27
ITS: remove deltaRof for vertexer
f3sch Apr 4, 2026
8e34906
ITS: report current timeslice
f3sch Apr 5, 2026
db7c727
Vertex: also print time error
f3sch Apr 5, 2026
e725bd9
ITS: speedup vertexer
f3sch Apr 5, 2026
9995505
Merge branch 'dev' into its/trk/stag
f3sch Apr 6, 2026
40bfdc2
Merge branch 'dev' into its/trk/stag
f3sch Apr 13, 2026
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
Prev Previous commit
Next Next commit
Adapt ITS/MFT CTF machinery to staggered data
  • Loading branch information
shahor02 authored and f3sch committed Mar 17, 2026
commit 00fde1d1d32124b95d6f6a3e833bea41eff5ddaa
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#include "ReconstructionDataFormats/TrackMCHMID.h"
#include "DataFormatsITSMFT/TrkClusRef.h"
#include "DataFormatsITSMFT/TopologyDictionary.h"
#include "ITSMFTBase/DPLAlpideParam.h"
#include "DataFormatsITSMFT/DPLAlpideParam.h"
// FIXME: ideally, the data formats definition should be independent of the framework
// collectData is using the input of ProcessingContext to extract the first valid
// header and the TF orbit from it
Expand Down
4 changes: 4 additions & 0 deletions DataFormats/Detectors/ITSMFT/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,17 @@ o2_add_library(DataFormatsITSMFT
src/TopologyDictionary.cxx
src/TimeDeadMap.cxx
src/CTF.cxx
src/DPLAlpideParam.cxx
PUBLIC_LINK_LIBRARIES O2::ITSMFTBase
O2::DetectorsCommonDataFormats
O2::ReconstructionDataFormats
O2::CommonUtils
Microsoft.GSL::GSL)

o2_target_root_dictionary(DataFormatsITSMFT
HEADERS include/DataFormatsITSMFT/ROFRecord.h
include/DataFormatsITSMFT/Digit.h
include/DataFormatsITSMFT/DPLAlpideParam.h
include/DataFormatsITSMFT/GBTCalibData.h
include/DataFormatsITSMFT/NoiseMap.h
include/DataFormatsITSMFT/TimeDeadMap.h
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ struct CTFHeader : public o2::ctf::CTFDictHeader {
uint32_t nPatternBytes = 0; /// number of bytes for explict patterns
uint32_t firstOrbit = 0; /// 1st orbit of TF
uint16_t firstBC = 0; /// 1st BC of TF
ClassDefNV(CTFHeader, 2);
uint8_t maxStreams = 1; /// Number of streams per TF (== NLayers for staggered ITS/MFT readout, 1 for non-staggered one)
uint8_t streamID = 0; /// ID of the stream (0:maxStreams-1)
ClassDefNV(CTFHeader, 3);
};

/// Compressed but not yet entropy-encoded clusters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

#ifndef ALICEO2_ITSMFTDPLBASEPARAM_H_
#define ALICEO2_ITSMFTDPLBASEPARAM_H_
#ifndef ALICEO2_ITSMFTALPIDEPARAM_H_
#define ALICEO2_ITSMFTALPIDEPARAM_H_

#include "DetectorsCommonDataFormats/DetID.h"
#include "CommonUtils/ConfigurableParam.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

#include "ITSMFTBase/DPLAlpideParam.h"
#include "DataFormatsITSMFT/DPLAlpideParam.h"

namespace o2
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ class o2::itsmft::DPLAlpideParam < o2::detectors::DetID::ITS> + ;
#pragma link C++ class o2::itsmft::DPLAlpideParam < o2::detectors::DetID::MFT> + ;
#pragma link C++ class o2::conf::ConfigurableParamHelper < o2::itsmft::DPLAlpideParam < o2::detectors::DetID::ITS>> + ;
#pragma link C++ class o2::conf::ConfigurableParamHelper < o2::itsmft::DPLAlpideParam < o2::detectors::DetID::MFT>> + ;

#pragma link C++ class o2::itsmft::Digit + ;
#pragma link C++ class o2::itsmft::NoiseMap + ;
#pragma link C++ class o2::itsmft::TimeDeadMap + ;
Expand Down
2 changes: 1 addition & 1 deletion Detectors/AOD/src/AODProducerWorkflowSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
#include "GlobalTracking/MatchGlobalFwd.h"
#include "MCHTracking/TrackExtrap.h"
#include "MCHTracking/TrackParam.h"
#include "ITSMFTBase/DPLAlpideParam.h"
#include "DataFormatsITSMFT/DPLAlpideParam.h"
#include "DetectorsVertexing/PVertexerParams.h"
#include "ReconstructionDataFormats/GlobalFwdTrack.h"
#include "ReconstructionDataFormats/GlobalTrackID.h"
Expand Down
2 changes: 1 addition & 1 deletion Detectors/Align/Workflow/src/BarrelAlignmentSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
#include "DataFormatsTPC/ClusterNative.h"
#include "DataFormatsTPC/WorkflowHelper.h"
#include "ITSBase/GeometryTGeo.h"
#include "ITSMFTBase/DPLAlpideParam.h"
#include "DataFormatsITSMFT/DPLAlpideParam.h"
*/

using namespace o2::framework;
Expand Down
4 changes: 2 additions & 2 deletions Detectors/CTF/test/test_ctf_io_itsmft.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ BOOST_DATA_TEST_CASE(CompressedClustersTest, boost_data::make(ANSVersions), ansV
sw.Start();
std::vector<o2::ctf::BufferType> vec;
{
CTFCoder coder(o2::ctf::CTFCoderBase::OpType::Encoder, o2::detectors::DetID::ITS);
CTFCoder<o2::detectors::DetID::ITS> coder(o2::ctf::CTFCoderBase::OpType::Encoder);
coder.setANSVersion(ansVersion);
coder.encode(vec, rofRecVec, cclusVec, pattVec, pattIdConverter, 0); // compress
}
Expand Down Expand Up @@ -120,7 +120,7 @@ BOOST_DATA_TEST_CASE(CompressedClustersTest, boost_data::make(ANSVersions), ansV
sw.Start();
const auto ctfImage = o2::itsmft::CTF::getImage(vec.data());
{
CTFCoder coder(o2::ctf::CTFCoderBase::OpType::Decoder, o2::detectors::DetID::ITS);
CTFCoder<o2::detectors::DetID::ITS> coder(o2::ctf::CTFCoderBase::OpType::Decoder);
coder.decode(ctfImage, rofRecVecD, cclusVecD, pattVecD, nullptr, clPattLookup); // decompress
}
sw.Stop();
Expand Down
77 changes: 60 additions & 17 deletions Detectors/CTF/workflow/src/CTFReaderSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "CommonUtils/NameConf.h"
#include "DetectorsCommonDataFormats/CTFHeader.h"
#include "Headers/STFHeader.h"
#include "DataFormatsITSMFT/DPLAlpideParam.h"
#include "DataFormatsITSMFT/CTF.h"
#include "DataFormatsTPC/CTF.h"
#include "DataFormatsTRD/CTF.h"
Expand Down Expand Up @@ -188,6 +189,50 @@ void CTFReaderSpec::init(InitContext& ic)
}
}

///_______________________________________
template <>
void CTFReaderSpec::processDetector<o2::itsmft::CTF>(DetID det, const CTFHeader& ctfHeader, ProcessingContext& pc) const
{
if (mInput.detMask[det]) {
std::string lbl = det.getName();
int nLayers = 1;
if (det == DetID::ITS) {
const auto& par = o2::itsmft::DPLAlpideParam<DetID::ITS>::Instance();
nLayers = par.supportsStaggering() ? par.getNLayers() : 1;
} else if (det == DetID::MFT) {
const auto& par = o2::itsmft::DPLAlpideParam<DetID::MFT>::Instance();
nLayers = par.supportsStaggering() ? par.getNLayers() : 1;
} else {
LOGP(fatal, "This specialization is define only for ITS and MFT detectors, {} provided", det.getName());
}
for (int iLayer = 0; iLayer < nLayers; iLayer++) {
auto& bufVec = pc.outputs().make<std::vector<o2::ctf::BufferType>>({lbl, mInput.subspec * 100 + iLayer}, ctfHeader.detectors[det] ? sizeof(o2::itsmft::CTF) : 0);
if (ctfHeader.detectors[det]) {
auto brName = nLayers == 1 ? lbl : fmt::format("{}_{}", lbl, iLayer);
o2::itsmft::CTF::readFromTree(bufVec, *(mCTFTree.get()), brName, mCurrTreeEntry);
} else if (!mInput.allowMissingDetectors) {
throw std::runtime_error(fmt::format("Requested detector {} is missing in the CTF", lbl));
}
}
}
}

///_______________________________________
template <typename C>
void CTFReaderSpec::processDetector(DetID det, const CTFHeader& ctfHeader, ProcessingContext& pc) const
{
if (mInput.detMask[det]) {
const auto lbl = det.getName();
auto& bufVec = pc.outputs().make<std::vector<o2::ctf::BufferType>>({lbl, mInput.subspec}, ctfHeader.detectors[det] ? sizeof(C) : 0);
if (ctfHeader.detectors[det]) {
C::readFromTree(bufVec, *(mCTFTree.get()), lbl, mCurrTreeEntry);
} else if (!mInput.allowMissingDetectors) {
throw std::runtime_error(fmt::format("Requested detector {} is missing in the CTF", lbl));
}
// setMessageHeader(pc, ctfHeader, lbl);
}
}

void CTFReaderSpec::runTimeRangesToIRFrameSelector(const o2::framework::TimingInfo& timingInfo)
{
// convert entries in the runTimeRanges to IRFrameSelector, if needed, convert time to orbit
Expand Down Expand Up @@ -562,22 +607,6 @@ void CTFReaderSpec::setMessageHeader(ProcessingContext& pc, const CTFHeader& ctf
dph->creation = ctfHeader.creationTime;
}

///_______________________________________
template <typename C>
void CTFReaderSpec::processDetector(DetID det, const CTFHeader& ctfHeader, ProcessingContext& pc) const
{
if (mInput.detMask[det]) {
const auto lbl = det.getName();
auto& bufVec = pc.outputs().make<std::vector<o2::ctf::BufferType>>({lbl, mInput.subspec}, ctfHeader.detectors[det] ? sizeof(C) : 0);
if (ctfHeader.detectors[det]) {
C::readFromTree(bufVec, *(mCTFTree.get()), lbl, mCurrTreeEntry);
} else if (!mInput.allowMissingDetectors) {
throw std::runtime_error(fmt::format("Requested detector {} is missing in the CTF", lbl));
}
// setMessageHeader(pc, ctfHeader, lbl);
}
}

///_______________________________________
void CTFReaderSpec::tryToFixCTFHeader(CTFHeader& ctfHeader) const
{
Expand Down Expand Up @@ -636,7 +665,21 @@ DataProcessorSpec getCTFReaderSpec(const CTFReaderInp& inp)
for (auto id = DetID::First; id <= DetID::Last; id++) {
if (inp.detMask[id]) {
DetID det(id);
outputs.emplace_back(OutputLabel{det.getName()}, det.getDataOrigin(), "CTFDATA", inp.subspec, Lifetime::Timeframe);
if (det == DetID::ITS) {
const auto& par = o2::itsmft::DPLAlpideParam<DetID::ITS>::Instance();
uint32_t nLayers = par.supportsStaggering() ? par.getNLayers() : 1;
for (uint32_t iLayer = 0; iLayer < nLayers; iLayer++) {
outputs.emplace_back(OutputLabel{det.getName()}, det.getDataOrigin(), "CTFDATA", inp.subspec * 100 + iLayer, Lifetime::Timeframe);
}
} else if (det == DetID::MFT) {
const auto& par = o2::itsmft::DPLAlpideParam<DetID::MFT>::Instance();
uint32_t nLayers = par.supportsStaggering() ? par.getNLayers() : 1;
for (uint32_t iLayer = 0; iLayer < nLayers; iLayer++) {
outputs.emplace_back(OutputLabel{det.getName()}, det.getDataOrigin(), "CTFDATA", inp.subspec * 100 + iLayer, Lifetime::Timeframe);
}
} else {
outputs.emplace_back(OutputLabel{det.getName()}, det.getDataOrigin(), "CTFDATA", inp.subspec, Lifetime::Timeframe);
}
}
}
if (!inp.fileIRFrames.empty() || !inp.fileRunTimeSpans.empty()) {
Expand Down
Loading