Skip to content
Snippets Groups Projects

Implementation of "Analogue clustering" calibration method in Tracking/Acts

This MR starts the port of the "Analogue Clustering" pixel measurement calibration strategy to the Acts side.

  • Implemented basic structure of tool, templated on trajectory type & the calibration data class (the latter is to keep implementation nominally decoupled from a specific detector)
  • Implemented position and error calibration within said tool
  • Implemented ITkAnalogueClusterizationTool as instantiation of the above
  • Implemented python-side config
  • Added a CI test

It is now possible to run with this calibration enabled, but it needs some tuning: see dcube output.

I propose we merge it now since it does work but leave it off as a default. I likely won't have significant time to look into this again for 1 or 2 weeks and I would like to avoid this developing conflicts in the meantime.

Edited by Louis-Guillaume Gagnon

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Carlo Varni
  • Carlo Varni
  • Carlo Varni
  • Carlo Varni
  • Carlo Varni
    Carlo Varni @cvarni started a thread on the diff
  • 20 {
    21 ATH_MSG_DEBUG("Initializing " << AthAlgTool::name() << " ...");
    22 ATH_CHECK(m_pixelDetEleCollKey.initialize());
    23 ATH_CHECK(m_clusterErrorKey.initialize());
    24 ATH_CHECK(m_lorentzAngleTool.retrieve());
    25 ATH_MSG_DEBUG(AthAlgTool::name() << " successfully initialized");
    26 return StatusCode::SUCCESS;
    27 }
    28
    29 template <typename calib_data_t, typename traj_t>
    30 const InDetDD::SiDetectorElement*
    31 AnalogueClusteringToolImpl<calib_data_t, traj_t>::getDetectorElement(xAOD::DetectorIDHashType id) const
    32 {
    33 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> pixelDetEleHandle(
    34 m_pixelDetEleCollKey,
    35 Gaudi::Hive::currentContext());
    • what about having the EventContext being passed by upstream instead?

    • Is there any pitfall with doing it this way? Ultimately this class is called from the Acts Kalman Fitter calibration interface, so we would have to stuff this into e.g. the GeometryContext.

      We could do thatm but I would leave this for a future development

    • no pitfalls, just cleaner code imho. If the change would be too complicated then we can stick with this

    • I agree it would be clearer & I do think it would be natural for the event context to be exposed from the Acts-side contextual objects, but I think we can have that discussion later. Since we don't have that now there is no other way since the call comes from deep inside the Acts fitter.

    • In principle, we have the calibration context for this purpose. Did you think about putting the event context in there? One could even go one step further and require setting up the context with the error data already, if we think the lookup down in the call chain is a performance issue.

      (@lgagnon @cvarni)

    • @pagessin I think exposing the event context through our context objects makes a lot of sense. For the error data, that's a good point -- we'd set it up once per event instead of once per calibration call, but I'm not sure if it's a measurably costly operation (@goetz maybe?). If we go this way, we'd need to be sure to only do this on-demand (i.e. not if not using calibration or using pixel NN or ....)

    • Please register or sign in to reply
  • Carlo Varni
  • Carlo Varni
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading