CMS 3D CMS Logo

NavigationSetter Class Reference

This class sets the navigation state given by the NavigationSchool, and saves the previous state for the affected layers. More...

#include <TrackingTools/DetLayers/interface/NavigationSetter.h>

List of all members.

Public Types

typedef std::vector
< NavigableLayer * > 
StateType

Public Member Functions

 NavigationSetter (const NavigationSchool &)
 ~NavigationSetter ()

Private Member Functions

void cleanState ()
void saveState ()
void setState (const StateType &)

Private Attributes

const NavigationSchooltheNav
StateType theSavedState


Detailed Description

This class sets the navigation state given by the NavigationSchool, and saves the previous state for the affected layers.

It must be instatiated as a local variable in the method that needs the navigation of the school, before using the navigation methods. The constructor saves the current state and sets the new one, and the destructod restores the previous state. This allows different reconstruction algorithms to use different navigations in the same set of DetLayers.

Definition at line 20 of file NavigationSetter.h.


Member Typedef Documentation

typedef std::vector<NavigableLayer*> NavigationSetter::StateType

Definition at line 23 of file NavigationSetter.h.


Constructor & Destructor Documentation

NavigationSetter::NavigationSetter ( const NavigationSchool school  ) 

Definition at line 7 of file NavigationSetter.cc.

References cleanState(), NavigationSchool::navigableLayers(), saveState(), and setState().

00008   : theNav(school)
00009 {
00010   //save the current state from all layer in the system which is being set: allow to set it back
00011   saveState();
00012 
00013   //remove any links from the detlayer in the system: allow partial navigation (BeamHalo)
00014   cleanState();
00015 
00016   //set the current navigation
00017   setState(school.navigableLayers());
00018 }

NavigationSetter::~NavigationSetter (  ) 

Definition at line 20 of file NavigationSetter.cc.

References cleanState(), setState(), and theSavedState.

00021 {
00022   //remove any link from the detlyaer in the system which has been set
00023   cleanState();
00024   /*  
00025       LogDebug("NavigationSetter")<<"NavigationSchool settings are totally reset in the destructor of NavigationSetter.\n"
00026       <<"this is the designed behavior. If you do not get track reconstruction, please refer to\n"
00027       <<"httpss://twiki.cern.ch/twiki/bin/view/CMS/NavigationSchool \n"
00028       <<"to properly use the NavigationSetter.";
00029   */
00030 
00031   //restore the previous layer DetLayer settings within the system which has been set.
00032   setState( theSavedState);
00033 }


Member Function Documentation

void NavigationSetter::cleanState (  )  [private]

Definition at line 45 of file NavigationSetter.cc.

References NavigationSchool::allLayersInSystem(), end, i, and theNav.

Referenced by NavigationSetter(), and ~NavigationSetter().

00045                                  {
00046   //set no navigable layer to all detlayers in the system
00047   std::vector<DetLayer*>::const_iterator i = theNav.allLayersInSystem().begin();
00048   std::vector<DetLayer*>::const_iterator end = theNav.allLayersInSystem().end();
00049   for (; i != end; ++i){
00050     if (*i !=0) (*i)->setNavigableLayer(0);
00051   }
00052 }

void NavigationSetter::saveState (  )  [private]

Definition at line 36 of file NavigationSetter.cc.

References NavigationSchool::allLayersInSystem(), end, i, theNav, and theSavedState.

Referenced by NavigationSetter().

00036                                  {
00037   //remember all navigable layers from all layer in the system.
00038   std::vector<DetLayer*>::const_iterator i = theNav.allLayersInSystem().begin();
00039   std::vector<DetLayer*>::const_iterator end = theNav.allLayersInSystem().end();
00040   for (; i != end; ++i){ 
00041     if (*i !=0) theSavedState.push_back( (*i)->navigableLayer());
00042   }
00043 }

void NavigationSetter::setState ( const StateType newState  )  [private]

Definition at line 54 of file NavigationSetter.cc.

References end, and i.

Referenced by NavigationSetter(), and ~NavigationSetter().

00054                                                           {
00055   //set DetLayer->NavigableLayer link from navigable layer in given state
00056   StateType::const_iterator i = newState.begin();
00057   StateType::const_iterator end = newState.end();
00058   for (; i != end; i++) {
00059     if ( *i != 0) (**i).detLayer()->setNavigableLayer(*i);
00060   }
00061 }


Member Data Documentation

const NavigationSchool& NavigationSetter::theNav [private]

Definition at line 31 of file NavigationSetter.h.

Referenced by cleanState(), and saveState().

StateType NavigationSetter::theSavedState [private]

Definition at line 33 of file NavigationSetter.h.

Referenced by saveState(), and ~NavigationSetter().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:28:58 2009 for CMSSW by  doxygen 1.5.4