Skip to content

Commit c40c61d

Browse files
committed
Support per-layer ITS clusters in cosmics-match-workflow
1 parent b26eb7a commit c40c61d

5 files changed

Lines changed: 21 additions & 13 deletions

File tree

‎Detectors/GlobalTracking/include/GlobalTracking/MatchCosmics.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "ReconstructionDataFormats/GlobalTrackAccessor.h"
2424
#include "ReconstructionDataFormats/BaseCluster.h"
2525
#include "DataFormatsITSMFT/TopologyDictionary.h"
26+
#include "DataFormatsITSMFT/ClustersPerLayer.h"
2627
#include "SimulationDataFormat/MCCompLabel.h"
2728
#include "GlobalTracking/MatchCosmicsParams.h"
2829
#include "CommonUtils/TreeStreamRedirector.h"
@@ -134,7 +135,7 @@ class MatchCosmics
134135
bool validateMatch(int partner0);
135136
void selectWinners();
136137
void refitWinners(const o2::globaltracking::RecoContainer& data);
137-
std::vector<o2::BaseCluster<float>> prepareITSClusters(const o2::globaltracking::RecoContainer& data) const;
138+
o2::itsmft::ClustersPerLayer<o2::BaseCluster<float>> prepareITSClusters(const o2::globaltracking::RecoContainer& data) const;
138139

139140
std::vector<TrackSeed> mSeeds;
140141
std::vector<MatchRecord> mRecords;

‎Detectors/GlobalTracking/src/MatchCosmics.cxx‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -622,17 +622,22 @@ void MatchCosmics::init()
622622
}
623623

624624
//________________________________________________________
625-
std::vector<o2::BaseCluster<float>> MatchCosmics::prepareITSClusters(const o2::globaltracking::RecoContainer& data) const
625+
o2::itsmft::ClustersPerLayer<o2::BaseCluster<float>> MatchCosmics::prepareITSClusters(const o2::globaltracking::RecoContainer& data) const
626626
{
627-
std::vector<o2::BaseCluster<float>> itscl;
628-
const auto& clusITS = data.getITSClusters();
629-
if (clusITS.size()) {
630-
const auto& patterns = data.getITSClustersPatterns();
631-
itscl.reserve(clusITS.size());
632-
auto pattIt = patterns.begin();
633-
o2::its::ioutils::convertCompactClusters(clusITS, pattIt, itscl, mITSDict);
627+
o2::itsmft::ClustersPerLayer<o2::BaseCluster<float>> itscl;
628+
int nLr = data.getITSPerLayer() ? o2::globaltracking::MaxITSLayers : 1;
629+
itscl.init(nLr);
630+
for (int lr = 0; lr < nLr; lr++) {
631+
itscl.beginLayer(lr);
632+
const auto& clusITS = data.getITSClusters(lr);
633+
if (clusITS.size()) {
634+
auto pattIt = data.getITSClustersPatterns(lr).begin();
635+
itscl.getClusters().reserve(itscl.size() + clusITS.size());
636+
o2::its::ioutils::convertCompactClusters(clusITS, pattIt, itscl.getClusters(), mITSDict);
637+
}
634638
}
635-
return std::move(itscl);
639+
itscl.finalize();
640+
return itscl;
636641
}
637642

638643
//______________________________________________

‎Detectors/GlobalTrackingWorkflow/include/GlobalTrackingWorkflow/CosmicsMatchingSpec.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace globaltracking
2424
{
2525

2626
/// create a processor spec
27-
framework::DataProcessorSpec getCosmicsMatchingSpec(o2::dataformats::GlobalTrackID::mask_t src, bool usePV, bool useMC);
27+
framework::DataProcessorSpec getCosmicsMatchingSpec(o2::dataformats::GlobalTrackID::mask_t src, bool usePV, bool useMC, bool itsStag);
2828

2929
} // namespace globaltracking
3030
} // namespace o2

‎Detectors/GlobalTrackingWorkflow/src/CosmicsMatchingSpec.cxx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,15 @@ void CosmicsMatchingSpec::endOfStream(EndOfStreamContext& ec)
183183
mTimer.CpuTime(), mTimer.RealTime(), mTimer.Counter() - 1);
184184
}
185185

186-
DataProcessorSpec getCosmicsMatchingSpec(GTrackID::mask_t src, bool usePV, bool useMC)
186+
DataProcessorSpec getCosmicsMatchingSpec(GTrackID::mask_t src, bool usePV, bool useMC, bool itsStag)
187187
{
188188
std::vector<OutputSpec> outputs;
189189
Options opts{
190190
{"material-lut-path", VariantType::String, "", {"Path of the material LUT file"}},
191191
{"debug-tree-flags", VariantType::Int, 0, {"DebugFlagTypes bit-pattern for debug tree"}}};
192192

193193
auto dataRequest = std::make_shared<DataRequest>();
194+
dataRequest->setITSPerLayer(itsStag);
194195

195196
dataRequest->requestTracks(src, useMC);
196197
dataRequest->requestClusters(src, false); // no MC labels for clusters needed for refit only

‎Detectors/GlobalTrackingWorkflow/src/cosmics-match-workflow.cxx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
8888
o2::conf::ConfigurableParam::writeINI("o2match-cosmics-workflow_configuration.ini");
8989
auto sclOpt = o2::tpc::CorrectionMapsOptions::parseGlobalOptions(configcontext.options());
9090
auto useMC = !configcontext.options().get<bool>("disable-mc");
91+
auto doStag = o2::itsmft::DPLAlpideParamInitializer::isITSStaggeringEnabled(configcontext);
9192
auto disableRootOut = configcontext.options().get<bool>("disable-root-output");
9293

9394
GID::mask_t src = alowedSources & GID::getSourcesMask(configcontext.options().get<std::string>("track-sources"));
@@ -110,7 +111,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
110111
specs.emplace_back(o2::tpc::getTPCScalerSpec(sclOpt));
111112
}
112113
bool usePV = configcontext.options().get<bool>("use-pv-info");
113-
specs.emplace_back(o2::globaltracking::getCosmicsMatchingSpec(src, usePV, useMC));
114+
specs.emplace_back(o2::globaltracking::getCosmicsMatchingSpec(src, usePV, useMC, doStag));
114115

115116
o2::globaltracking::InputHelper::addInputSpecs(configcontext, specs, src, src, src, useMC, dummy); // clusters MC is not needed
116117
if (usePV) {

0 commit comments

Comments
 (0)