2929#include " TRKWorkflow/TrackerSpec.h"
3030#include < TGeoGlobalMagField.h>
3131
32+ #ifdef O2_WITH_ACTS
33+ #include " TRKReconstruction/TrackerACTS.h"
34+ #endif
35+
3236#include < TFile.h>
3337#include < TTree.h>
3438
@@ -61,6 +65,10 @@ void TrackerDPL::init(InitContext& ic)
6165 // mITSTrackingInterface.setTraitsFromProvider(mChainITS->GetITSVertexerTraits(),
6266 // mChainITS->GetITSTrackerTraits(),
6367 // mChainITS->GetITSTimeframe());
68+
69+ #ifdef O2_WITH_ACTS
70+ mUseACTS = ic.options ().get <bool >(" useACTS" );
71+ #endif
6472}
6573
6674void TrackerDPL::stop ()
@@ -276,14 +284,13 @@ void TrackerDPL::run(ProcessingContext& pc)
276284 itsTrackerTraits.setMemoryPool (mMemoryPool );
277285 itsTrackerTraits.setNThreads (mTaskArena ->max_concurrency (), mTaskArena );
278286 itsTrackerTraits.adoptTimeFrame (static_cast <o2::its::TimeFrame<11 >*>(&timeFrame));
279- itsTracker.adoptTimeFrame (timeFrame);
280287 itsTrackerTraits.setBz (mHitRecoConfig [" geometry" ][" bz" ].get <float >());
281288 auto field = new field::MagneticField (" ALICE3Mag" , " ALICE 3 Magnetic Field" , mHitRecoConfig [" geometry" ][" bz" ].get <float >() / 5 .f , 0.0 , o2::field::MagFieldParam::k5kGUniform);
282289 TGeoGlobalMagField::Instance ()->SetField (field);
283290 TGeoGlobalMagField::Instance ()->Lock ();
291+ itsTracker.adoptTimeFrame (timeFrame);
284292
285- int nRofs = timeFrame.loadROFsFromHitTree (hitsTree, gman, mHitRecoConfig );
286-
293+ const int nRofs = timeFrame.loadROFsFromHitTree (hitsTree, gman, mHitRecoConfig );
287294 const int inROFpileup{mHitRecoConfig .contains (" inROFpileup" ) ? mHitRecoConfig [" inROFpileup" ].get <int >() : 1 };
288295
289296 // Add primary vertices from MC headers for each ROF
@@ -293,6 +300,16 @@ void TrackerDPL::run(ProcessingContext& pc)
293300
294301 itsTrackerTraits.updateTrackingParameters (trackingParams);
295302
303+ #ifdef O2_WITH_ACTS
304+ if (mUseACTS ) {
305+ LOG (info) << " Running the tracking with ACTS" ;
306+ o2::trk::TrackerACTS<11 > actsTracker;
307+ actsTracker.setBz (mHitRecoConfig [" geometry" ][" bz" ].get <float >());
308+ actsTracker.adoptTimeFrame (timeFrame);
309+ actsTracker.clustersToTracks ();
310+ }
311+ #endif
312+
296313 const auto trackingLoopStart = std::chrono::steady_clock::now ();
297314 for (size_t iter{0 }; iter < trackingParams.size (); ++iter) {
298315 LOGP (info, " {}" , trackingParams[iter].asString ());
@@ -391,7 +408,12 @@ DataProcessorSpec getTrackerSpec(bool useMC, const std::string& hitRecoConfig, o
391408 useMC,
392409 hitRecoConfig,
393410 dType)},
394- Options{ConfigParamSpec{" max-loops" , VariantType::Int, 1 , {" max number of loops" }}}};
411+ Options{ConfigParamSpec{" max-loops" , VariantType::Int, 1 , {" max number of loops" }}
412+ #ifdef O2_WITH_ACTS
413+ ,
414+ {" useACTS" , o2::framework::VariantType::Bool, false , {" Use ACTS for tracking" }}
415+ #endif
416+ }};
395417 }
396418
397419 inputs.emplace_back (" dummy" , " TRK" , " DUMMY" , 0 , Lifetime::Timeframe);
0 commit comments