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
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