Skip to content

PRELIMINARY MkFinderV2p2#165

Open
osschar wants to merge 4 commits intomasterfrom
thick-layers-and-seeds
Open

PRELIMINARY MkFinderV2p2#165
osschar wants to merge 4 commits intomasterfrom
thick-layers-and-seeds

Conversation

@osschar
Copy link
Collaborator

@osschar osschar commented Jul 9, 2025

First implementation of V2p2 track building.
Currently set up for best-hit-like search over single layers.

The most important additions are in the new class MkFinderV2p2, the new supporting
classes (MkBins, HotTub) and MiniPropagators (Hermite 3D interpolation and plane
intersection solver).

Needs to be rebased onto master.

Changes

  • RecoTracker/MkFitCMS/standalone/mkFit.cc

    • Add option --build-mimi-v2p2, setting Config::mimiUseV2p2 to true.
  • RecoTracker/MkFitCMS/standalone/buildtestMPlex.cc

    • In runBtpCe_MultiIter(), if Config::mimiUseV2p2 is true, run
      MkBuilder::findTracksStandardv2p2() instead of findTracksCloneEngine().
  • RecoTracker/MkFitCMS/standalone/Shell.cc

  • RecoTracker/MkFitCMS/standalone/Shell.h

    • In ProcessEvent(), if Config::mimiUseV2p2 is true, run
      MkBuilder::findTracksStandardv2p2() instead of findTracksCloneEngine().
    • Add SetUseV2p2(bool) to set value of Config::mimiUseV2p2.
    • Add FindInterestingSimTracks() helper for selecting tracks with specific
      hit patterns.
    • Prototype REve stuff for showing tracks and hits, ShowSimTrack().
  • RecoTracker/MkFitCore/interface/SteeringParams.h

    • Add ability for double layer in LayerControl.
    • Add helper functions for filling up layer-plan with double (swtiched)
      layers.
  • RecoTracker/MkFitCore/src/KalmanUtilsMPlex.cc

  • RecoTracker/MkFitCore/src/KalmanUtilll pepesMPlex.h

    • Move common charge-flip detection code to inline kalmanCheckChargeFlip().
  • RecoTracker/MkFitCore/src/Matriplex/Matriplex.h

    • Add (const) T* Elements(i,j) for direct access to sub-aray and
      loadElements(i,j, const T* src) for seting them.
    • Add atan(), fast_atan() and corresponding operators.
  • RecoTracker/MkFitCore/src/Matrix.h

    • Add typedefs MPlex3V and MPlex4V.
  • RecoTracker/MkFitCore/src/MiniPropagators.cc

  • RecoTracker/MkFitCore/src/MiniPropagators.h

    • In propagate_to functions add up alpha, do not reset to 0 first.
    • Add classes Hermite3D and Hermite3DOnPlane for trajectory interpalotion
      within two points (layer boundaries) and for doing trajectory-plane
      intersection.
    • Use vector funcs in Matriplex, remove local ones.
  • RecoTracker/MkFitCore/src/MkBuilder.cc

    • Simplifed findTracksStandardv2p2() -- most logic is MkFinderV2p2 now.
  • RecoTracker/MkFitCore/src/MkFinder.cc

    • Move local class Bins (used by selectHitIndicesV2) to a new top-level class, MkBins.
    • Remove old prototype for V2p2, now in new file MkFinderV2p2.cc.
  • RecoTracker/MkFitCore/src/PropagationMPlex.h

  • RecoTracker/MkFitCore/src/PropagationMPlexPlane.cc

    • Restructure to make it possible to do propToPlane() in full and
      with pre-computed path-length / track parameters.
    • propagateHelixToPlaneMPlex() and helixAtPlane() get a new MPlexQF-ptr argument.

New Files

  • RecoTracker/MkFitCore/src/HotTub.h

    • Classes HotTubItem, HotTub and HotTubConsumer for storing and managing
      a smallish, rabidly changing set of objects with minimal memory
      allocation overhead.
  • RecoTracker/MkFitCore/src/MkBins.cc

  • RecoTracker/MkFitCore/src/MkBins.h

    • Class MkBins for setting up of layer / layer-pair queries
      related to bin ranges
  • RecoTracker/MkFitCore/src/MkFinderV2p2.cc

  • RecoTracker/MkFitCore/src/MkFinderV2p2.h

    • Steering code for the new hit preselection and track finding.

Minor Changes

  • RecoTracker/MkFitCore/interface/TrackerInfo.h

    • Use ROOT::Math::Cross() instead of hand-written expr.
  • RecoTracker/MkFitCore/interface/TrackStructures.h

    • Comment fix.
  • RecoTracker/MkFitCore/interface/MatrixSTypes.h

    • Add formatting options to dumpMatrix().
  • RecoTracker/MkFitCore/interface/MkJob.h

    • Make get_mask_for_layer() const.
  • RecoTracker/MkFitCore/src/Hit.cc

    • Improve formatting in print(MeasurementState&).
  • RecoTracker/MkFitCore/src/Track.cc

    • Improve formatting of some debug print functions.
  • RecoTracker/MkFitCore/standalone/Event.cc

  • RecoTracker/MkFitCore/standalone/Event.h

    • Add a new debug printout function for track + hits.

- Consolidate extraction of seed quality vie Event.
- Add Shell::StudySimAndSeeds().
…nd explicit PS double layer handling.

* Shell:
  - Seed preselection
  - Honor --num-iters
  - In ProcessEvent() temporarily hardcode call to findTracksStandardv2p2()
    instead of findTracksCloneEngine(). To be made configurable, somehow.

* MkBuilder
  - Sketch-up findTracksStandardv2p2() to fiddle with the PS layer processing
    and selectHitIndicesV2().

* MkFinder
  - Extract struct Bins out of selectHitIndicesV2() so it can be used
    in different contexts.
  - Implement  selectHitIndicesV2p2() - a variant of selectHitIndicesV2().

* SteeringParams
  - Implement fill_plan_swap_pairs() to simplify PS layer swapping.

* Makefile.config
  - Separate out CXXFLAGS Werror=array-bounds - it needs to be disabled
    for MPT_SIZE=1 for some reason.
  - Add separatevariable CXX_STD := 20 to make it easier to re-set it
    to the same version ROOT was built with when building WITH_ROOT.
Currently set up for best-hit-like search over single layers.

The most important additions are in the new class MkFinderV2p2, the new supporting
classes (MkBins, HotTub) and MiniPropagators (Hermite 3D interpolation and plane
intersection solver).

* RecoTracker/MkFitCMS/standalone/mkFit.cc
  - Add option --build-mimi-v2p2, setting Config::mimiUseV2p2 to true.

* RecoTracker/MkFitCMS/standalone/buildtestMPlex.cc
  - In runBtpCe_MultiIter(), if Config::mimiUseV2p2 is true, run
    MkBuilder::findTracksStandardv2p2() instead of findTracksCloneEngine().

* RecoTracker/MkFitCMS/standalone/Shell.cc
* RecoTracker/MkFitCMS/standalone/Shell.h
  - In ProcessEvent(), if Config::mimiUseV2p2 is true, run
    MkBuilder::findTracksStandardv2p2() instead of findTracksCloneEngine().
  - Add SetUseV2p2(bool) to set value of Config::mimiUseV2p2.
  - Add FindInterestingSimTracks() helper for selecting tracks with specific
    hit patterns.
  - Prototype REve stuff for showing tracks and hits, ShowSimTrack().

* RecoTracker/MkFitCore/interface/SteeringParams.h
  - Add ability for double layer in LayerControl.
  - Add helper functions for filling up layer-plan with double (swtiched)
    layers.

* RecoTracker/MkFitCore/src/KalmanUtilsMPlex.cc
* RecoTracker/MkFitCore/src/KalmanUtilll pepesMPlex.h
  - Move common charge-flip detection code to inline kalmanCheckChargeFlip().

* RecoTracker/MkFitCore/src/Matriplex/Matriplex.h
  - Add (const) T* Elements(i,j) for direct access to sub-aray and
    loadElements(i,j, const T* src) for seting them.
  - Add atan(), fast_atan() and corresponding operators.

* RecoTracker/MkFitCore/src/Matrix.h
  - Add typedefs MPlex3V and MPlex4V.

* RecoTracker/MkFitCore/src/MiniPropagators.cc
* RecoTracker/MkFitCore/src/MiniPropagators.h
  - In propagate_to functions add up alpha, do not reset to 0 first.
  - Add classes Hermite3D and Hermite3DOnPlane for trajectory interpalotion
    within two points (layer boundaries) and for doing trajectory-plane
    intersection.
  - Use vector funcs in Matriplex, remove local ones.

* RecoTracker/MkFitCore/src/MkBuilder.cc
  - Simplifed findTracksStandardv2p2() -- most logic is MkFinderV2p2 now.

* RecoTracker/MkFitCore/src/MkFinder.cc
  - Move local class Bins (used by selectHitIndicesV2) to a new top-level class, MkBins.
  - Remove old prototype for V2p2, now in new file MkFinderV2p2.cc.

* RecoTracker/MkFitCore/src/PropagationMPlex.h
* RecoTracker/MkFitCore/src/PropagationMPlexPlane.cc
  - Restructure to make it possible to do propToPlane() in full and
    with pre-computed path-length / track parameters.
  - propagateHelixToPlaneMPlex() and helixAtPlane() get a new MPlexQF-ptr argument.

* RecoTracker/MkFitCore/src/HotTub.h
  - Classes HotTubItem, HotTub and HotTubConsumer for storing and managing
    a smallish, rabidly changing set of objects with minimal memory
    allocation overhead.

* RecoTracker/MkFitCore/src/MkBins.cc
* RecoTracker/MkFitCore/src/MkBins.h
  - Class MkBins for setting up of layer / layer-pair queries
    related to bin ranges

* RecoTracker/MkFitCore/src/MkFinderV2p2.cc
* RecoTracker/MkFitCore/src/MkFinderV2p2.h
  - Steering code for the new hit preselection and track finding.

* RecoTracker/MkFitCore/interface/TrackerInfo.h
  - Use ROOT::Math::Cross() instead of hand-written expr.

* RecoTracker/MkFitCore/interface/TrackStructures.h
  - Comment fix.

* RecoTracker/MkFitCore/interface/MatrixSTypes.h
  - Add formatting options to dumpMatrix().

* RecoTracker/MkFitCore/interface/MkJob.h
  - Make get_mask_for_layer() const.

* RecoTracker/MkFitCore/src/Hit.cc
  - Improve formatting in print(MeasurementState&).

* RecoTracker/MkFitCore/src/Track.cc
  - Improve formatting of some debug print functions.

* RecoTracker/MkFitCore/standalone/Event.cc
* RecoTracker/MkFitCore/standalone/Event.h
  - Add a new debug printout function for track + hits.
…ling printout of good seeds lost during cleaning.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant