Skip to content

Commit 8e34906

Browse files
committed
ITS: report current timeslice
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent be16c27 commit 8e34906

File tree

6 files changed

+31
-23
lines changed

6 files changed

+31
-23
lines changed

Detectors/ITSMFT/ITS/tracking/include/ITStracking/FastMultEstConfig.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ struct FastMultEstConfig : public o2::conf::ConfigurableParamHelper<FastMultEstC
4141
int randomSeed = 0; /// 0 - do not seet seed, >0 : set as is, <0 : use current time
4242
bool preferTriggered = true; /// prefer ROFs with highest number of physics triggers
4343

44-
bool isMultCutRequested() const { return cutMultClusLow >= 0.f && cutMultClusHigh > 0.f; };
45-
bool isVtxMultCutRequested() const { return cutMultVtxLow >= 0.f && cutMultVtxHigh > 0.f; };
44+
bool isMultCutRequested() const noexcept { return cutMultClusLow >= 0.f && cutMultClusHigh > 0.f; };
45+
bool isVtxMultCutRequested() const noexcept { return cutMultVtxLow >= 0.f && cutMultVtxHigh > 0.f; };
46+
bool isRandCutRequested() const noexcept { return cutRandomFraction >= 0.; }
47+
bool isRequested() const noexcept { return isMultCutRequested() || isVtxMultCutRequested() || isRandCutRequested(); }
4648
bool isPassingRandomRejection() const;
4749
bool isPassingMultCut(float mult) const { return mult >= cutMultClusLow && (mult <= cutMultClusHigh || cutMultClusHigh <= 0.f); }
4850
bool isPassingVtxMultCut(int mult) const { return mult >= cutMultVtxLow && (mult <= cutMultVtxHigh || cutMultVtxHigh <= 0.f); }

Detectors/ITSMFT/ITS/tracking/include/ITStracking/Tracker.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class Tracker
6262
void setMemoryPool(std::shared_ptr<BoundedMemoryResource> pool) { mMemoryPool = pool; }
6363
std::vector<TrackingParameters>& getParameters() { return mTrkParams; }
6464
void setBz(float bz) { mTraits->setBz(bz); }
65-
bool isMatLUT() const { return mTraits->isMatLUT(); }
65+
void setTimeSlice(size_t slice) noexcept { mTimeSlice = slice; }
6666
void setNThreads(int n, std::shared_ptr<tbb::task_arena>& arena) { mTraits->setNThreads(n, arena); }
6767
void printSummary() const;
6868
void computeTracksMClabels();
@@ -86,6 +86,7 @@ class Tracker
8686
std::vector<TrackingParameters> mTrkParams;
8787
o2::gpu::GPUChainITS* mRecoChain = nullptr;
8888

89+
size_t mTimeSlice{0}; // current timeslice
8990
unsigned int mNumberOfDroppedTFs{0};
9091
unsigned int mTimeFrameCounter{0};
9192
double mTotalTime{0};

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ class TrackerTraits
6060

6161
virtual void setBz(float bz);
6262
float getBz() const { return mBz; }
63-
bool isMatLUT() const;
6463
virtual const char* getName() const noexcept { return "CPU"; }
6564
virtual bool isGPU() const noexcept { return false; }
6665
void setMemoryPool(std::shared_ptr<BoundedMemoryResource> pool) noexcept { mMemoryPool = pool; }

Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include <format>
2424
#include <cstdlib>
2525
#include <string>
26-
#include <climits>
2726

2827
namespace o2::its
2928
{
@@ -67,7 +66,7 @@ void Tracker<NLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
6766
mMemoryPool->print();
6867
mTimeFrame->wipe();
6968
++mNumberOfDroppedTFs;
70-
error("...Dropping Timeframe...");
69+
error(std::format("...Dropping TimeSlice {} (out of {} dropped {})...", mTimeSlice, mTimeFrameCounter, mNumberOfDroppedTFs));
7170
} else {
7271
throw err;
7372
}
@@ -104,7 +103,7 @@ void Tracker<NLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
104103
}
105104
}
106105
if constexpr (constants::DoTimeBenchmarks) {
107-
logger(std::format("=== TimeFrame {} processing completed in: {:.2f} ms using {} thread(s) ===", mTimeFrameCounter, total, mTraits->getNThreads()));
106+
logger(std::format("=== TimeSlice {} processing completed in: {:.2f} ms using {} thread(s) ===", mTimeSlice, total, mTraits->getNThreads()));
108107
}
109108
} catch (const BoundedMemoryResource::MemoryLimitExceeded& err) {
110109
handleException(err);

Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -970,12 +970,6 @@ void TrackerTraits<NLayers>::setBz(float bz)
970970
mTimeFrame->setBz(bz);
971971
}
972972

973-
template <int NLayers>
974-
bool TrackerTraits<NLayers>::isMatLUT() const
975-
{
976-
return o2::base::Propagator::Instance()->getMatLUT() && (mTrkParams[0].CorrType == o2::base::PropagatorImpl<float>::MatCorrType::USEMatCorrLUT);
977-
}
978-
979973
template <int NLayers>
980974
void TrackerTraits<NLayers>::setNThreads(int n, std::shared_ptr<tbb::task_arena>& arena)
981975
{

Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,11 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
124124
}
125125
}
126126

127+
const auto& tfInfo = pc.services().get<o2::framework::TimingInfo>();
127128
gsl::span<const o2::itsmft::PhysTrigger> physTriggers;
128129
std::vector<o2::itsmft::PhysTrigger> fromTRD;
129130
if (mUseTriggers == 2) { // use TRD triggers
130-
o2::InteractionRecord ir{0, pc.services().get<o2::framework::TimingInfo>().firstTForbit};
131+
o2::InteractionRecord ir{0, tfInfo.firstTForbit};
131132
auto trdTriggers = pc.inputs().get<gsl::span<o2::trd::TriggerRecord>>("phystrig");
132133
for (const auto& trig : trdTriggers) {
133134
if (trig.getBCData() >= ir && trig.getNumberOfTracklets()) {
@@ -166,6 +167,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
166167
}
167168

168169
mTracker->setBz(o2::base::Propagator::Instance()->getNominalBz());
170+
mTracker->setTimeSlice(tfInfo.timeslice);
169171

170172
for (int iLayer = 0; iLayer < ((mDoStaggering) ? NLayers : 1); ++iLayer) {
171173
gsl::span<const unsigned char>::iterator pattIt = patterns[iLayer].begin();
@@ -177,9 +179,8 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
177179
auto errorLogger = [&](const std::string& s) { LOG(error) << s; };
178180

179181
FastMultEst multEst; // mult estimator
180-
const auto firstTForbit = pc.services().get<o2::framework::TimingInfo>().firstTForbit;
181182
o2::its::ROFMaskTable<NLayers> processMultiplictyMask{mTimeFrame->getROFOverlapTable()}, processUPCMask{mTimeFrame->getROFOverlapTable()};
182-
multEst.selectROFs(rofsinput, compClusters, physTriggers, firstTForbit, mDoStaggering, mTimeFrame->getROFOverlapTableView(), processMultiplictyMask);
183+
multEst.selectROFs(rofsinput, compClusters, physTriggers, tfInfo.firstTForbit, mDoStaggering, mTimeFrame->getROFOverlapTableView(), processMultiplictyMask);
183184
mTimeFrame->setMultiplicityCutMask(processMultiplictyMask);
184185
for (int iLayer = 0; iLayer < ((mDoStaggering) ? NLayers : 1); ++iLayer) {
185186
mTimeFrame->getROFMaskView().print(iLayer);
@@ -272,13 +273,12 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc)
272273
// the number of ROFs does not necessarily reflect the actual ROFs
273274
// due to possible delay of other layers, however it is guaranteed to be >=0
274275
// tracks are guaranteed to be sorted here by their lower edge
275-
const auto firstTForbit = pc.services().get<o2::framework::TimingInfo>().firstTForbit;
276276
const auto& clock = mTimeFrame->getROFOverlapTableView().getClock();
277277
const auto& clockLayer = mTimeFrame->getROFOverlapTableView().getClockLayer();
278278
auto setBCData = [&](auto& rofs) {
279279
for (size_t iROF{0}; iROF < rofs.size(); ++iROF) { // set BC data
280280
auto& rof = rofs[iROF];
281-
int orb = (iROF * par.getROFLengthInBC(clock) / o2::constants::lhc::LHCMaxBunches) + firstTForbit;
281+
int orb = (iROF * par.getROFLengthInBC(clock) / o2::constants::lhc::LHCMaxBunches) + tfInfo.firstTForbit;
282282
int bc = (iROF * par.getROFLengthInBC(clock) % o2::constants::lhc::LHCMaxBunches) + par.getROFDelayInBC(clock);
283283
o2::InteractionRecord ir(bc, orb);
284284
rof.setBCData(ir);
@@ -373,15 +373,23 @@ void ITSTrackingInterface::updateTimeDependentParams(framework::ProcessingContex
373373
initialise();
374374

375375
if (pc.services().get<const o2::framework::DeviceSpec>().inputTimesliceId == 0) { // print settings only for the 1st pipeling
376-
o2::its::FastMultEstConfig::Instance().printKeyValues(true, true);
377-
o2::its::VertexerParamConfig::Instance().printKeyValues(true, true);
378-
o2::its::TrackerParamConfig::Instance().printKeyValues(true, true);
376+
// print all used settings
377+
if (o2::its::FastMultEstConfig::Instance().isRequested()) {
378+
o2::its::FastMultEstConfig::Instance().printKeyValues(true, true);
379+
}
379380
const auto& vtxParams = mVertexer->getParameters();
381+
if (!vtxParams.empty()) {
382+
o2::its::VertexerParamConfig::Instance().printKeyValues(true, true);
383+
}
384+
const auto& trParams = mTracker->getParameters();
385+
if (!trParams.empty()) {
386+
o2::its::TrackerParamConfig::Instance().printKeyValues(true, true);
387+
}
388+
// quick summary
380389
for (size_t it = 0; it < vtxParams.size(); it++) {
381390
const auto& par = vtxParams[it];
382391
LOGP(info, "vtxIter#{} : {}", it, par.asString());
383392
}
384-
const auto& trParams = mTracker->getParameters();
385393
for (size_t it = 0; it < trParams.size(); it++) {
386394
const auto& par = trParams[it];
387395
LOGP(info, "recoIter#{} : {}", it, par.asString());
@@ -396,7 +404,12 @@ void ITSTrackingInterface::updateTimeDependentParams(framework::ProcessingContex
396404
const auto& trackParams = mTracker->getParameters();
397405
for (int iLayer = 0; iLayer < NLayers; ++iLayer) {
398406
const unsigned int nROFsPerOrbit = o2::constants::lhc::LHCMaxBunches / par.getROFLengthInBC(iLayer);
399-
const LayerTiming timing{.mNROFsTF = (nROFsPerOrbit * nOrbitsPerTF), .mROFLength = (uint32_t)par.getROFLengthInBC(iLayer), .mROFDelay = (uint32_t)par.getROFDelayInBC(iLayer), .mROFBias = (uint32_t)par.getROFBiasInBC(iLayer), .mROFAddTimeErr = (trackParams.empty() ? 0 : trackParams[0].AddTimeError[iLayer])};
407+
const LayerTiming timing{
408+
.mNROFsTF = (nROFsPerOrbit * nOrbitsPerTF),
409+
.mROFLength = (uint32_t)par.getROFLengthInBC(iLayer),
410+
.mROFDelay = (uint32_t)par.getROFDelayInBC(iLayer),
411+
.mROFBias = (uint32_t)par.getROFBiasInBC(iLayer),
412+
.mROFAddTimeErr = (trackParams.empty() ? o2::its::TrackerParamConfig::Instance().addTimeError[iLayer] : trackParams[0].AddTimeError[iLayer])};
400413
rofTable.defineLayer(iLayer, timing);
401414
vtxTable.defineLayer(iLayer, timing);
402415
}

0 commit comments

Comments
 (0)