Skip to content

Commit 3ebfa98

Browse files
committed
SVertexer: use InputHelper, avoid global DataRequest var.
1 parent 032baa8 commit 3ebfa98

File tree

3 files changed

+42
-47
lines changed

3 files changed

+42
-47
lines changed

Detectors/GlobalTrackingWorkflow/include/GlobalTrackingWorkflow/SecondaryVertexingSpec.h

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,17 @@
1313

1414
/// @file SecondaryVertexingSpec.h
1515

16-
#include "DetectorsVertexing/SVertexer.h"
16+
#include "ReconstructionDataFormats/GlobalTrackID.h"
1717
#include "Framework/DataProcessorSpec.h"
1818
#include "Framework/Task.h"
19-
#include "TStopwatch.h"
2019

2120
namespace o2
2221
{
2322
namespace vertexing
2423
{
2524

26-
using namespace o2::framework;
27-
28-
class SecondaryVertexingSpec : public Task
29-
{
30-
public:
31-
SecondaryVertexingSpec(bool enabCasc) : mEnableCascades(enabCasc) {}
32-
~SecondaryVertexingSpec() override = default;
33-
void init(InitContext& ic) final;
34-
void run(ProcessingContext& pc) final;
35-
void endOfStream(EndOfStreamContext& ec) final;
36-
37-
private:
38-
bool mEnableCascades = false;
39-
o2::vertexing::SVertexer mVertexer;
40-
TStopwatch mTimer;
41-
};
42-
4325
/// create a processor spec
44-
DataProcessorSpec getSecondaryVertexingSpec(o2::dataformats::GlobalTrackID::mask_t src, bool enableCasc);
26+
o2::framework::DataProcessorSpec getSecondaryVertexingSpec(o2::dataformats::GlobalTrackID::mask_t src, bool enableCasc);
4527

4628
} // namespace vertexing
4729
} // namespace o2

Detectors/GlobalTrackingWorkflow/src/SecondaryVertexingSpec.cxx

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <vector>
1414
#include "DataFormatsGlobalTracking/RecoContainer.h"
1515
#include "ReconstructionDataFormats/TrackTPCITS.h"
16+
#include "ReconstructionDataFormats/GlobalTrackID.h"
1617
#include "DataFormatsTPC/TrackTPC.h"
1718
#include "DataFormatsITS/TrackITS.h"
1819
#include "DetectorsBase/Propagator.h"
@@ -22,6 +23,9 @@
2223
#include "CommonDataFormat/BunchFilling.h"
2324
#include "SimulationDataFormat/DigitizationContext.h"
2425
#include "DetectorsCommonDataFormats/NameConf.h"
26+
#include "DetectorsVertexing/SVertexer.h"
27+
#include "TStopwatch.h"
28+
2529
#include "Framework/ConfigParamRegistry.h"
2630

2731
using namespace o2::framework;
@@ -33,15 +37,31 @@ using PVertex = const o2::dataformats::PrimaryVertex;
3337
using V0 = o2::dataformats::V0;
3438
using Cascade = o2::dataformats::Cascade;
3539
using RRef = o2::dataformats::RangeReference<int, int>;
40+
using DataRequest = o2::globaltracking::DataRequest;
3641

3742
namespace o2
3843
{
3944
namespace vertexing
4045
{
4146

42-
o2::globaltracking::DataRequest dataRequestSV;
4347
namespace o2d = o2::dataformats;
4448

49+
class SecondaryVertexingSpec : public Task
50+
{
51+
public:
52+
SecondaryVertexingSpec(std::shared_ptr<DataRequest> dr, bool enabCasc) : mDataRequest(dr), mEnableCascades(enabCasc) {}
53+
~SecondaryVertexingSpec() override = default;
54+
void init(InitContext& ic) final;
55+
void run(ProcessingContext& pc) final;
56+
void endOfStream(EndOfStreamContext& ec) final;
57+
58+
private:
59+
std::shared_ptr<DataRequest> mDataRequest;
60+
bool mEnableCascades = false;
61+
o2::vertexing::SVertexer mVertexer;
62+
TStopwatch mTimer;
63+
};
64+
4565
void SecondaryVertexingSpec::init(InitContext& ic)
4666
{
4767
//-------- init geometry and field --------//
@@ -70,7 +90,7 @@ void SecondaryVertexingSpec::run(ProcessingContext& pc)
7090
mTimer.Start(false);
7191

7292
o2::globaltracking::RecoContainer recoData;
73-
recoData.collectData(pc, dataRequestSV);
93+
recoData.collectData(pc, *mDataRequest.get());
7494

7595
const auto pvertices = pc.inputs().get<gsl::span<o2::dataformats::PrimaryVertex>>("pvtx");
7696
const auto pvtxTracks = pc.inputs().get<gsl::span<o2::dataformats::VtxTrackIndex>>("pvtx_cont");
@@ -98,9 +118,13 @@ void SecondaryVertexingSpec::endOfStream(EndOfStreamContext& ec)
98118
DataProcessorSpec getSecondaryVertexingSpec(GTrackID::mask_t src, bool enableCasc)
99119
{
100120
std::vector<OutputSpec> outputs;
121+
auto dataRequest = std::make_shared<DataRequest>();
122+
101123
bool useMC = false;
102-
dataRequestSV.requestTracks(src, false);
103-
auto& inputs = dataRequestSV.inputs;
124+
dataRequest->requestTracks(src, false);
125+
126+
auto& inputs = dataRequest->inputs;
127+
104128
inputs.emplace_back("pvtx", "GLO", "PVTX", 0, Lifetime::Timeframe); // prim.vertices
105129
inputs.emplace_back("pvtx_cont", "GLO", "PVTX_TRMTC", 0, Lifetime::Timeframe); // global ids of associated tracks
106130
inputs.emplace_back("pvtx_tref", "GLO", "PVTX_TRMTCREFS", 0, Lifetime::Timeframe); // vertex - trackID refs
@@ -114,7 +138,7 @@ DataProcessorSpec getSecondaryVertexingSpec(GTrackID::mask_t src, bool enableCas
114138
"secondary-vertexing",
115139
inputs,
116140
outputs,
117-
AlgorithmSpec{adaptFromTask<SecondaryVertexingSpec>(enableCasc)},
141+
AlgorithmSpec{adaptFromTask<SecondaryVertexingSpec>(dataRequest, enableCasc)},
118142
Options{{"material-lut-path", VariantType::String, "", {"Path of the material LUT file"}},
119143
{"threads", VariantType::Int, 1, {"Number of threads"}}}};
120144
}

Detectors/GlobalTrackingWorkflow/src/secondary-vertexing-workflow.cxx

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "GlobalTrackingWorkflow/SecondaryVertexWriterSpec.h"
1313
#include "GlobalTrackingWorkflowReaders/TrackTPCITSReaderSpec.h"
1414
#include "GlobalTrackingWorkflowReaders/PrimaryVertexReaderSpec.h"
15+
#include "GlobalTrackingWorkflowHelpers/InputHelper.h"
1516
#include "ITSWorkflow/TrackReaderSpec.h"
1617
#include "TPCWorkflow/TrackReaderSpec.h"
1718
#include "TOFWorkflow/TOFMatchedReaderSpec.h"
@@ -50,7 +51,7 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
5051

5152
WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
5253
{
53-
GID::mask_t alowedSourcesSV = GID::getSourcesMask("ITS,ITS-TPC,ITS-TPC-TOF,TPC-TOF");
54+
GID::mask_t alowedSources = GID::getSourcesMask("ITS,ITS-TPC,ITS-TPC-TOF,TPC-TOF");
5455

5556
// Update the (declared) parameters if changed from the command line
5657
o2::conf::ConfigurableParam::updateFromString(configcontext.options().get<std::string>("configKeyValues"));
@@ -61,30 +62,18 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
6162
auto disableRootOut = configcontext.options().get<bool>("disable-root-output");
6263
auto enableCasc = !configcontext.options().get<bool>("disable-cascade-finder");
6364

64-
GID::mask_t srcSV = alowedSourcesSV & GID::getSourcesMask(configcontext.options().get<std::string>("vertexing-sources"));
65+
GID::mask_t src = alowedSources & GID::getSourcesMask(configcontext.options().get<std::string>("vertexing-sources"));
66+
GID::mask_t dummy, srcClus = GID::includesDet(DetID::TOF, src) ? GID::getSourceMask(GID::TOF) : dummy;
67+
6568
WorkflowSpec specs;
66-
if (!disableRootInp) {
67-
if (srcSV[GID::ITS]) {
68-
specs.emplace_back(o2::its::getITSTrackReaderSpec(useMC));
69-
}
70-
if (srcSV[GID::TPC]) {
71-
specs.emplace_back(o2::tpc::getTPCTrackReaderSpec(useMC));
72-
}
73-
if (srcSV[GID::ITSTPC] || srcSV[GID::ITSTPCTOF]) { // ITSTPCTOF does not provide tracks, only matchInfo
74-
specs.emplace_back(o2::globaltracking::getTrackTPCITSReaderSpec(useMC));
75-
}
76-
if (srcSV[GID::ITSTPCTOF]) {
77-
specs.emplace_back(o2::tof::getTOFMatchedReaderSpec(useMC, false, false)); // MC, MatchInfo_glo, no TOF_TPCtracks
78-
specs.emplace_back(o2::tof::getClusterReaderSpec(false)); // RSTODO Needed just to set the time of ITSTPC track, consider moving to MatchInfoTOF
79-
}
80-
if (srcSV[GID::TPCTOF]) {
81-
specs.emplace_back(o2::tof::getTOFMatchedReaderSpec(useMC, true, true)); // mc, MatchInfo_TPC, TOF_TPCtracks
82-
}
83-
specs.emplace_back(o2::vertexing::getPrimaryVertexReaderSpec(useMC));
84-
}
8569

86-
specs.emplace_back(o2::vertexing::getSecondaryVertexingSpec(srcSV, enableCasc));
70+
specs.emplace_back(o2::vertexing::getSecondaryVertexingSpec(src, enableCasc));
8771

72+
// only TOF clusters are needed if TOF is involved, no clusters MC needed
73+
o2::globaltracking::InputHelper::addInputSpecs(configcontext, specs, srcClus, src, src, useMC, srcClus);
74+
if (!disableRootInp) {
75+
specs.emplace_back(o2::vertexing::getPrimaryVertexReaderSpec(useMC)); // consider moving to RecoContainer
76+
}
8877
if (!disableRootOut) {
8978
specs.emplace_back(o2::vertexing::getSecondaryVertexWriterSpec());
9079
}

0 commit comments

Comments
 (0)