Skip to content

Acts tracker: refactor MpdTpcDetector & move away from TGeoDetector

Summary of tasks that needed to be done

  1. Mpd::Tpc::Detector should directly inherit from ActsExamples::Detector base class
  2. The issue of layer overlap must be investigated (not critical) and possibly fixed
  3. The bug with navigator ending up outside the volume must be fixed (critical)
  4. Json file read must be included in our own library
  5. Virtual geometry must be generated once, then read from file

as part of moving to v38.2.0 where all detectors inherit from ActsExamples::Detector base class

The current implementation is buggy, giving messages like:

00:47:47 LayerArrayCr ERROR Layers are overlapping at: 403.275. This should never happen. Please check your geometry description.

The tracking then can crash giving the message
root.exe: /cvmfs/nica.jinr.ru/sw/202309/slc9_x86-64/ACTS/v38.1.0-1/include/Acts/Propagator/Navigator.hpp:340: void Acts::Navigator::initialize(propagator_state_t&, const stepper_t&) const [with propagator_state_t = Acts::PropagatorState<Acts::PropagatorOptions<Acts::SympyStepper::Options, Options, Acts::ActorList<Acts::CombinatorialKalmanFilter<Acts::Propagator<Acts::SympyStepper, Acts::Navigator>, Acts::TrackContainer<Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, std::shared_ptr> >::Actor<Acts::Delegate<std::pair<Acts::SourceLinkAdapterIterator<boost::container::vec_iterator<ActsExamples::IndexSourceLink*, true> >, Acts::SourceLinkAdapterIterator<boost::container::vec_iterator<ActsExamples::IndexSourceLink*, true> > >(const Acts::Surface&), void, Acts::DelegateType::NonOwning>, Acts::GenericBoundTrackParameters<Acts::ParticleHypothesis> >, Acts::CombinatorialKalmanFilter<Acts::Propagator<Acts::SympyStepper, Acts::Navigator>, Acts::TrackContainer<Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, std::shared_ptr> >::StubPathLimitReached> >, Acts::SympyStepper::State, State, Acts::CombinatorialKalmanFilterResult<Acts::TrackContainer<Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, std::shared_ptr> > >; stepper_t = Acts::SympyStepper]: Assertion state.navigation.startVolume->inside( stepper.position(state.stepping), state.options.surfaceTolerance) && "We did not end up inside the volume."' failed.`

Edited by Slavomir Hnatic
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information