Navigation School Algorithm

Complete: 1

Goal of the page

State what the reader is expected to learn from this page, e.g., This page is intended to familiarize you with ...



Usage of the algorithm

Explain what a user needs to know when using the algorithm:
  • when to use this algorithm
  • configuration sequences
  • default parameters and how (and why) to change them
  • products

Software architecture

Explain the design of the algorithm to ensure that the software can be maintained once the existing authors have left:
  • design arguments - why this is done as it is done
  • description of algorithm.


Under construction

Purpose of this page.

Describe the relationship between the silicon tracker layer used during ctf pattern recognition. This page deals with the functionality of the C++ classes designed for track reconstruction. The description given here is also partially true for track reconstruction in the muon system, but the stress is put here on silicon tracker track reconstruction.


Tracking reconstructed hits are located on module identified by a detector id. The module ares categorized by layers with the DetLayer object. The GeometricSearchTracker holds a look up table of DetLayer by detector id. The DetLayer set-up is constant as long as the tracker geometry does not change.

The DetLayer holds a pointer to a NavigableLayer, which allows to know what DetLayer is reachable from a given DetLayer. The NavigableLayer setup is not constant throughout an event since track reconstruction might be performed for different track topology (Cosmics, beam-halo, IP,...) and the "Navigation" that is supposed to happen between different layers is set by the SWGuideNavigationSchool.

The concrete type of NavigableLayer used in the tracker is SimpleNavigableLayer which is then splitted in SimpleBarrelNavigatbleLayer and SimpleForwardNavigableLayer. The NavigableLayer concrete class does implement the nextLayers(...) methods which provides the user with the next reachable layers.


Behavior of SimpleNavigableLayer

In this section is describe the behavior of the search from the nextLayers within the allowed reachable layers defined by the SWGuideNavigationSchool

Prior to RecoTracker/TkNavigation V02-05-00

Not documented yet. This is the version of the tracker navigable layers in 16X and prior.

As of RecoTracker/TkNavigation V02-05-00

This tag is included in 17X and 18X cycle.

The decision on which set of layers to look for a compatible layer is based on the following boolean

Short name Variable name Logical value
v1 isInOutTrackBarrel>0
v2 isInOutTrackFWD pz*z>0
v3 along propagation along momentum
v4 opposite not along
v5 forward pz>0
d1 dirOppositeXORisInOutTrackBarrel opposite XOR isInOutTrackBarrel
d2 dirOppositeXORisInOutTrackFWD opposite XOR isInOutTrackFWD
d3 signZmomentumXORdir forward XOR along


The following set of layers are defined from the global tracking geometry.
Set of layers definition
theInnerBarrelLayers innner barrel layers
theOuterBarrelLayers outer barrel layers
theInnerRightForwardLayers (z>0) forward inner layers
theInnerLeftForwardLayers (z<0) forward inner layers
theOuterRighForwardLayers (z>0) forward outer layers
theOuterLeftForwardLayers (z<0) forward outer layers
thePosInnerLayers inner barrel layers and (z>0) forward inner layers
theNegInnerLayers inner barrel layers and (z>0) forward inner layers
thePosOuterLayers outer barrel layers and (z<0) forward outer layers
thePosOuterLayers outer barrel layers and (z<0) forward outer layers

The set of layers used according to the value of the logical variable is

case number d1 d2 d3 Set of layers
1 0 0 0 thePosInnerLayers
2 1 0 0 theOuterBarrelLayers and theInnerRightForwardLayers
3 0 1 0 theInnerBarrelLayers and theOuterRightForwardLayers
4 1 1 0 thePosOuterLayers
5 0 0 1 theNegInnerLayers
6 1 0 1 theOuterBarrelLayers and theInnerLeftForwardLayers
7 0 1 1 theInnerBarrelLayers and theOuterLeftForwardLayers
8 1 1 1 theNegOuterLayers

The different cases are drawn in the following pictures to illustrate what layers are searched for next layers.

Obviously, the case 1 and 5 described above are inverted and should be swap.


The following set of layers are defined from the global tracking geometry.
Set of layers definition
theInnerForwardLayers inner forward layers
theOuterForwardLayers outer forward layers
theInnerBarrelLayers inner barrel layers
theOuterBarrelLayers outer barrel layers
theInnerLayers inner forward layers and inner barrel layers
theOuterLayers outer forward layers and outer barrel layers

The set of layers used according to the value of the logical variable is

case number d1 d2 Set of layers
1 0 0 theInnerLayers
2 1 0 theInnerForwardLayers and theOuterBarrelLayers
3 0 1 theInnerBarrelLayers and theOuterForwardLayers
4 1 1 theOuterLayers

The different cases are drawn in the following pictures to illustrate what layers are searched for next layers.

Defining a SWGuideNavigationSchool.

In special cases, a dedicated SWGuideNavigationSchool is necessary. There already exists three flavour of SWGuideNavigationSchool used in different cases. There should be no need to defining a new one. Please contact the administrator or the developers of RecoTracker/TkNavigation, TrackingTools/DetLayers if you feel the need for implementing a specific one.

Retrieving a SWGuideNavigationSchool

The access to SWGuideNavigationSchool should be made through EventSetup.
edm::ESHandle<NavigationSchool> nav;
eventSetup.get<NavigationSchoolRecord>().get(navigationSchoolName, nav);  
Where the possibilities for navigationSchoolName are
  • SimpleSWGuideNavigationSchool
    To reconstruct tracks coming from the interaction region.
  • BeamHaloSWGuideNavigationSchool
    To reconstruct tracks that are mostly "horizontal" to the beam line. cf Beam halo muon reconstruction.
  • CosmicSWGuideNavigationSchool
    To reconstruct tracks from cosmic showers. cf Cosmic track reconstruction.

Setting the SWGuideNavigationSchool

Once a SWGuideNavigationSchool is retrieved, one must "tell" the DetLayer system what is the current allowed navigation from layer to layers.
NavigationSetter setter(*nav.product());
The navigation which is set will hold as long as the setter object exist, or another NavigationSetter is instentiated.

NOTA BENE If no SWGuideNavigationSchool was set prior to your use of the NavigationSetter, then you are safe. However, if a different SWGuideNavigationSchool was set, your setting of the SWGuideNavigationSchool will actually not survive the NavigationSetter object you instantiate.

In CMSSW, there are cases for which it will happen, and pattern recognition will not have the expected behavior.

Analyzing a SWGuideNavigationSchool

In order to review what are the links between layers allowed by a SWGuideNavigationSchool, you can use the following module.
module navigationSchoolAnalyzer = NavigationSchoolAnalyzer  {
   string navigationSchoolName = "SimpleNavigationSchool"
Or use the configuration file RecoTracker/TkNavigation/test/NavigationSchoolAnalyzer.cfg, changing the navigation name if desired. Making sure the required navigation school is produced to the event setup. Here is a brief description of the available SWGuideNavigationSchool. One should use the NavigationSchoolAnalyzer module to determine exactly which layers are link from one another.


Basically used for IP originating tracks. It is as simple as it can be, although forward geometry requires tricky links. There are extra useless links between:
  • TIB3 and TOB2
  • TOB2 and TOB4


None of the barrel layers are part of this navigation school. Links are set between forward layers (disks) only in order to reconstruct tracks parallel to the beam line. Extra links are set to link the end-caps with one another. As mention in the twiki page of beam halo reconstruction, there is the need for a special track propagator between the end-cap because of the way material is taken into account in the standard propagator used for track reconstruction (AnalyticalPropagator, PropagatorWithMaterial and RungeKuttaPropagtor).


To be documented ! Dedicated to the reconstruction of tracks from cosmic showers.

Bug fixes

  • The SimpleBarrelnavigationLayer has to be fixed for the inverted case 1 and 5.
  • The behavior or the usage of the NavigationSetter needs to be modified according to one of the following:
    • SWGuideNavigationSchool settings survive the NavigationSetter destructor AND no further change is required on the user side.
    • SWGuideNavigationSchool settings are clearly reset in the NavigationSetter destructor AND changes are required on the user side so that the NavigationSetter properly persists in the relevant scope.

Review status

Reviewer/Editor and Date (copy from screen) Comments
KatiLassilaPerini - 29 Jan 2008 created template page

Responsible: ResponsibleIndividual
Last reviewed by: Most recent reviewer

Edit | Attach | Watch | Print version | History: r13 < r12 < r11 < r10 < r9 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r13 - 2009-04-22 - JeanrochVlimant
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback