00001 #ifndef _TRACKER_MU_HIC_PROPAGATOR_H_ 00002 #define _TRACKER_MU_HIC_PROPAGATOR_H_ 00003 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h" 00004 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00005 #include "RecoHIMuon/HiMuSeed/interface/HICConst.h" 00006 #include "TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h" 00007 #include "MagneticField/Engine/interface/MagneticField.h" 00008 00009 #include <string> 00010 #include <iostream> 00011 namespace cms { 00012 class HICMuonPropagator:public Propagator{ 00013 public: 00014 HICMuonPropagator(const MagneticField * mf){field = mf;} 00015 virtual ~HICMuonPropagator(){} 00016 TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts, 00017 const Cylinder& cylin) const; 00018 00019 TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts, 00020 const Plane& plane) const; 00021 00022 void setHICConst(HICConst* hh) {theHICConst = hh;} 00023 00024 virtual HICMuonPropagator * clone() const 00025 { 00026 return new HICMuonPropagator(field); 00027 } 00028 00029 TrajectoryStateOnSurface propagate (const FreeTrajectoryState& fts, 00030 const Surface& surface) const{ 00031 return Propagator::propagate( fts, surface); 00032 } 00033 00034 virtual std::pair< TrajectoryStateOnSurface, double> 00035 propagateWithPath (const FreeTrajectoryState& state, const Plane& bc) const { 00036 std::pair<TrajectoryStateOnSurface,double> tp; 00037 return tp; 00038 } 00039 virtual std::pair< TrajectoryStateOnSurface, double> 00040 propagateWithPath (const FreeTrajectoryState& state, const Cylinder& bc) const{ 00041 std::pair<TrajectoryStateOnSurface,double> tp; 00042 return tp; 00043 } 00044 00045 virtual const MagneticField* magneticField() const {return field;} 00046 private: 00047 HICConst* theHICConst; 00048 const MagneticField * field; 00049 }; 00050 } 00051 #endif 00052 00053 00054