CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10/src/RecoHI/HiMuonAlgos/interface/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   HICSimpleNavigationSchool(const GeometricSearchTracker* theTracker,
00027                             const MagneticField* field,int j, int l);
00028 
00029   void setExcludedBarrelLayer(int& j){excludedBarrelLayer=j;}; 
00030 
00031   int getExcludedBarrelLayer() {return excludedBarrelLayer;};
00032 
00033   // from base class
00034   virtual StateType navigableLayers() const;
00035 
00036 //private:
00037 protected:
00038 
00039   int                                             excludedBarrelLayer;
00040   int                                             excludedForwardLayer;
00041   typedef std::vector<const DetLayer*>            DLC;
00042   typedef std::vector<BarrelDetLayer*>            BDLC;
00043   typedef std::vector<ForwardDetLayer*>           FDLC;
00044   typedef DLC::iterator                           DLI;
00045   typedef BDLC::iterator                          BDLI;
00046   typedef FDLC::iterator                          FDLI;
00047   typedef BDLC::const_iterator                    ConstBDLI;
00048   typedef FDLC::const_iterator                    ConstFDLI;
00049  
00050   BDLC theBarrelLayers;
00051   FDLC theForwardLayers;  
00052   FDLC theRightLayers;
00053   FDLC theLeftLayers;
00054   float theBarrelLength;
00055 
00056   typedef std::vector< SimpleBarrelNavigableLayer*>   BNLCType;
00057   typedef std::vector< SimpleForwardNavigableLayer*>  FNLCType;
00058   BNLCType  theBarrelNLC;
00059   FNLCType  theForwardNLC;
00060 
00061   virtual void linkBarrelLayers( SymmetricLayerFinder& symFinder);
00062   virtual void linkForwardLayers( SymmetricLayerFinder& symFinder);
00063 
00064   virtual void linkNextForwardLayer( BarrelDetLayer*, FDLC&);
00065 
00066   virtual void linkNextLargerLayer( BDLI, BDLI, BDLC&);
00067 
00068   virtual void linkNextBarrelLayer( ForwardDetLayer* fl, BDLC&);
00069 
00070   virtual void linkOuterGroup( ForwardDetLayer* fl,
00071                        const FDLC& group,
00072                        FDLC& reachableFL);
00073 
00074   virtual void linkWithinGroup( FDLI fl, const FDLC& group, FDLC& reachableFL);
00075   
00076   virtual ConstFDLI outerRadiusIncrease( FDLI fl, const FDLC& group);
00077 
00078   virtual std::vector<FDLC> splitForwardLayers();
00079 
00080   virtual float barrelLength();
00081 
00082   virtual void establishInverseRelations();
00083 
00084   virtual void linkNextLayerInGroup( FDLI fli, const FDLC& group, FDLC& reachableFL);
00085 
00086   std::vector<DetLayer*>                    theDetLayers;
00087   const MagneticField* theField;
00088   const GeometricSearchTracker* theTracker;
00089 };
00090 
00091 #endif // SimpleNavigationSchool_H