CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
NavigationSetter Class Reference

#include <NavigationSetter.h>

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

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().

8  : theNav(school)
9 {
10  //save the current state from all layer in the system which is being set: allow to set it back
11  saveState();
12 
13  //remove any links from the detlayer in the system: allow partial navigation (BeamHalo)
14  cleanState();
15 
16  //set the current navigation
17  setState(school.navigableLayers());
18 }
virtual StateType navigableLayers() const =0
const NavigationSchool & theNav
void setState(const StateType &)
NavigationSetter::~NavigationSetter ( )

Definition at line 20 of file NavigationSetter.cc.

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

21 {
22  //remove any link from the detlyaer in the system which has been set
23  cleanState();
24  /*
25  LogDebug("NavigationSetter")<<"NavigationSchool settings are totally reset in the destructor of NavigationSetter.\n"
26  <<"this is the designed behavior. If you do not get track reconstruction, please refer to\n"
27  <<"https://twiki.cern.ch/twiki/bin/view/CMS/NavigationSchool \n"
28  <<"to properly use the NavigationSetter.";
29  */
30 
31  //restore the previous layer DetLayer settings within the system which has been set.
33 }
StateType theSavedState
void setState(const StateType &)

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().

45  {
46  //set no navigable layer to all detlayers in the system
47  std::vector<DetLayer*>::const_iterator i = theNav.allLayersInSystem().begin();
48  std::vector<DetLayer*>::const_iterator end = theNav.allLayersInSystem().end();
49  for (; i != end; ++i){
50  if (*i !=0) (*i)->setNavigableLayer(0);
51  }
52 }
int i
Definition: DBlmapReader.cc:9
const NavigationSchool & theNav
const std::vector< DetLayer * > & allLayersInSystem() const
#define end
Definition: vmac.h:38
void NavigationSetter::saveState ( )
private

Definition at line 36 of file NavigationSetter.cc.

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

Referenced by NavigationSetter().

36  {
37  //remember all navigable layers from all layer in the system.
38  std::vector<DetLayer*>::const_iterator i = theNav.allLayersInSystem().begin();
39  std::vector<DetLayer*>::const_iterator end = theNav.allLayersInSystem().end();
40  for (; i != end; ++i){
41  if (*i !=0) theSavedState.push_back( (*i)->navigableLayer());
42  }
43 }
StateType theSavedState
int i
Definition: DBlmapReader.cc:9
const NavigationSchool & theNav
const std::vector< DetLayer * > & allLayersInSystem() const
#define end
Definition: vmac.h:38
void NavigationSetter::setState ( const StateType newState)
private

Definition at line 54 of file NavigationSetter.cc.

References end, and i.

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

54  {
55  //set DetLayer->NavigableLayer link from navigable layer in given state
56  StateType::const_iterator i = newState.begin();
57  StateType::const_iterator end = newState.end();
58  for (; i != end; i++) {
59  if ( *i != 0) (**i).detLayer()->setNavigableLayer(*i);
60  }
61 }
int i
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:38

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().