CMS 3D CMS Logo

HICSimpleNavigationSchool.h

Go to the documentation of this file.
00001 #ifndef RecoHIMuon_HICSimpleNavigationSchool_H
00002 #define RecoHIMuon_HICSimpleNavigationSchool_H
00003 
00004 #include "TrackingTools/DetLayers/interface/NavigationSchool.h"
00005 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
00006 
00007 #include <vector>
00008 
00009 class DetLayer;
00010 class BarrelDetLayer;
00011 class ForwardDetLayer;
00012 class SymmetricLayerFinder;
00013 class SimpleBarrelNavigableLayer;
00014 class SimpleForwardNavigableLayer;
00015 class MagneticField;
00016 
00020 class HICSimpleNavigationSchool : public NavigationSchool {
00021 public:
00022   
00023   HICSimpleNavigationSchool() : theField(0),theTracker(0){};
00024   HICSimpleNavigationSchool(const GeometricSearchTracker* theTracker,
00025                          const MagneticField* field);
00026   
00027   // from base class
00028   virtual StateType navigableLayers() const;
00029 
00030 //private:
00031 protected:
00032 
00033   typedef std::vector<const DetLayer*>              DLC;
00034 //  typedef std::vector<DetLayer*>                    theDetLayers; 
00035   typedef std::vector<BarrelDetLayer*>              BDLC;
00036   typedef std::vector<ForwardDetLayer*>             FDLC;
00037   typedef DLC::iterator                        DLI;
00038   typedef BDLC::iterator                       BDLI;
00039   typedef FDLC::iterator                       FDLI;
00040   typedef BDLC::const_iterator                 ConstBDLI;
00041   typedef FDLC::const_iterator                 ConstFDLI;
00042  
00043   BDLC theBarrelLayers;
00044   FDLC theForwardLayers;  
00045   FDLC theRightLayers;
00046   FDLC theLeftLayers;
00047   float theBarrelLength;
00048 
00049   typedef std::vector< SimpleBarrelNavigableLayer*>   BNLCType;
00050   typedef std::vector< SimpleForwardNavigableLayer*>  FNLCType;
00051   BNLCType  theBarrelNLC;
00052   FNLCType  theForwardNLC;
00053 
00054   virtual void linkBarrelLayers( SymmetricLayerFinder& symFinder);
00055   virtual void linkForwardLayers( SymmetricLayerFinder& symFinder);
00056 
00057   virtual void linkNextForwardLayer( BarrelDetLayer*, FDLC&);
00058 
00059   virtual void linkNextLargerLayer( BDLI, BDLI, BDLC&);
00060 
00061   virtual void linkNextBarrelLayer( ForwardDetLayer* fl, BDLC&);
00062 
00063   virtual void linkOuterGroup( ForwardDetLayer* fl,
00064                        const FDLC& group,
00065                        FDLC& reachableFL);
00066 
00067   virtual void linkWithinGroup( FDLI fl, const FDLC& group, FDLC& reachableFL);
00068   
00069   virtual ConstFDLI outerRadiusIncrease( FDLI fl, const FDLC& group);
00070 
00071   virtual std::vector<FDLC> splitForwardLayers();
00072 
00073   virtual float barrelLength();
00074 
00075   virtual void establishInverseRelations();
00076 
00077   virtual void linkNextLayerInGroup( FDLI fli, const FDLC& group, FDLC& reachableFL);
00078 
00079   std::vector<DetLayer*>                    theDetLayers;
00080   const MagneticField* theField;
00081   const GeometricSearchTracker* theTracker;
00082 };
00083 
00084 #endif // SimpleNavigationSchool_H

Generated on Tue Jun 9 17:43:37 2009 for CMSSW by  doxygen 1.5.4