00001 #ifndef KFSwitching1DUpdator_H_ 00002 #define KFSwitching1DUpdator_H_ 00003 00013 #include "TrackingTools/PatternTools/interface/TrajectoryStateUpdator.h" 00014 #include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" 00015 #include "TrackingTools/KalmanUpdators/interface/KFStrip1DUpdator.h" 00016 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h" 00017 00018 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00019 00020 class KFSwitching1DUpdator : public TrajectoryStateUpdator { 00021 00022 private: 00023 typedef TrajectoryStateOnSurface TSOS; 00024 00025 public: 00026 00027 KFSwitching1DUpdator(const edm::ParameterSet * pset=0) : theLocalUpdator(new KFUpdator()), 00028 theStripUpdator(new KFStrip1DUpdator()) { 00029 if (pset){ 00030 theDoEndCap=pset->getParameter<bool>("doEndCap"); 00031 } 00032 else 00033 { 00034 theDoEndCap=false; 00035 } 00036 } 00037 00038 ~KFSwitching1DUpdator() {} 00039 00041 virtual TSOS update(const TSOS& aTsos, const TransientTrackingRecHit& aHit) const; 00042 00043 virtual KFSwitching1DUpdator * clone() const 00044 { 00045 return new KFSwitching1DUpdator(*this); 00046 } 00047 00048 private: 00050 const KFUpdator& localUpdator() const {return *theLocalUpdator;} 00052 const KFStrip1DUpdator& stripUpdator() const {return *theStripUpdator;} 00053 00054 private: 00055 DeepCopyPointerByClone<const KFUpdator> theLocalUpdator; 00056 DeepCopyPointerByClone<const KFStrip1DUpdator> theStripUpdator; 00057 00058 bool theDoEndCap; 00059 }; 00060 00061 #endif// KFSwitching1DUpdator_H_