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"
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
2731using namespace o2 ::framework;
@@ -33,15 +37,31 @@ using PVertex = const o2::dataformats::PrimaryVertex;
3337using V0 = o2::dataformats::V0;
3438using Cascade = o2::dataformats::Cascade;
3539using RRef = o2::dataformats::RangeReference<int , int >;
40+ using DataRequest = o2::globaltracking::DataRequest;
3641
3742namespace o2
3843{
3944namespace vertexing
4045{
4146
42- o2::globaltracking::DataRequest dataRequestSV;
4347namespace 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+
4565void 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)
98118DataProcessorSpec 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}
0 commit comments