CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_7_hltpatch1/src/RecoHI/HiMuonAlgos/interface/FastMuPropagator.h

Go to the documentation of this file.
00001 #ifndef _TRACKER_FASTMUPROPAGATOR_H_
00002 #define _TRACKER_FASTMUPROPAGATOR_H_
00003 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h"
00004 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00005 #include "RecoHI/HiMuonAlgos/interface/FmpConst.h"
00006 #include "TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h"
00007 #include "MagneticField/Engine/interface/MagneticField.h"
00008 #include <string>
00009 #include <iostream>
00010 #include <map>
00011 #include <vector>
00012 
00017 namespace cms {
00018 class FastMuPropagator:public Propagator{
00019 public:
00020   FastMuPropagator(const MagneticField * mf, PropagationDirection dir = alongMomentum)
00021                                     {theFmpConst=new FmpConst(); field = mf;} 
00022                         
00023   FastMuPropagator(const MagneticField * mf, FmpConst* fmp, PropagationDirection dir = alongMomentum)
00024                                     {theFmpConst=fmp; field = mf;}
00025 
00026 
00027 
00028   virtual  ~FastMuPropagator() {
00029  //   delete theFmpConst;
00030   }
00031 
00032   TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
00033                                      const Cylinder& bound) const;
00034                                       
00035   TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts, 
00036                                      const Plane&) const;
00037 
00038   virtual FastMuPropagator * clone() const 
00039   {
00040   PropagationDirection dir = alongMomentum;  
00041   return new FastMuPropagator(field,dir);
00042   } 
00043    
00044   TrajectoryStateOnSurface propagate (const FreeTrajectoryState& fts,
00045                                       const Surface& surface) const{
00046     return Propagator::propagate( fts, surface);
00047   }
00048   
00049   virtual std::pair< TrajectoryStateOnSurface, double> 
00050   propagateWithPath (const FreeTrajectoryState& state, const Plane& bc) const {
00051   std::pair<TrajectoryStateOnSurface,double> tp;
00052     return tp;
00053   }
00054   virtual std::pair< TrajectoryStateOnSurface, double> 
00055   propagateWithPath (const FreeTrajectoryState& state, const Cylinder& bc) const{
00056   std::pair<TrajectoryStateOnSurface,double> tp;
00057     return tp;
00058   }
00059   
00060   virtual const MagneticField* magneticField() const {return field;}
00061     
00062 private:
00063   bool checkfts(const FreeTrajectoryState& fts) const;
00064   FmpConst* theFmpConst;
00065   const MagneticField * field;                                                
00066 };
00067 }
00068 #endif
00069 
00070 
00071