CMS 3D CMS Logo

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 "RecoHIMuon/HiMuPropagator/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() {delete theFmpConst;}
00029 
00030   TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
00031                                      const Cylinder& bound) const;
00032                                       
00033   TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts, 
00034                                      const Plane&) const;
00035 
00036   virtual FastMuPropagator * clone() const 
00037   {
00038   PropagationDirection dir = alongMomentum;  
00039   return new FastMuPropagator(field,dir);
00040   } 
00041    
00042   TrajectoryStateOnSurface propagate (const FreeTrajectoryState& fts,
00043                                       const Surface& surface) const{
00044     return Propagator::propagate( fts, surface);
00045   }
00046   
00047   virtual std::pair< TrajectoryStateOnSurface, double> 
00048   propagateWithPath (const FreeTrajectoryState& state, const Plane& bc) const {
00049   std::pair<TrajectoryStateOnSurface,double> tp;
00050     return tp;
00051   }
00052   virtual std::pair< TrajectoryStateOnSurface, double> 
00053   propagateWithPath (const FreeTrajectoryState& state, const Cylinder& bc) const{
00054   std::pair<TrajectoryStateOnSurface,double> tp;
00055     return tp;
00056   }
00057   
00058   virtual const MagneticField* magneticField() const {return field;}
00059     
00060 private:
00061   bool checkfts(const FreeTrajectoryState& fts) const;
00062   FmpConst* theFmpConst;
00063   const MagneticField * field;                                                
00064 };
00065 }
00066 #endif
00067 
00068 
00069 

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