00001 #ifndef CkfTrajectoryBuilder_H 00002 #define CkfTrajectoryBuilder_H 00003 00004 #include <vector> 00005 00006 class Propagator; 00007 class TrajectoryStateUpdator; 00008 class MeasurementEstimator; 00009 class TrajectorySeed; 00010 class TrajectoryStateOnSurface; 00011 class TrajectoryFilter; 00012 00013 #include "FWCore/Framework/interface/ESHandle.h" 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 #include "FWCore/Framework/interface/EventSetup.h" 00016 #include "FWCore/Framework/interface/Event.h" 00017 00018 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" 00019 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" 00020 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" 00021 00022 #include "RecoTracker/CkfPattern/interface/BaseCkfTrajectoryBuilder.h" 00023 00024 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00025 #include "TrackingTools/PatternTools/interface/TempTrajectory.h" 00026 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h" 00027 00028 00029 class TransientTrackingRecHitBuilder; 00030 class TrajectoryFilter; 00031 00032 class CkfTrajectoryBuilder :public BaseCkfTrajectoryBuilder { 00033 00034 public: 00035 00036 typedef std::vector<Trajectory> TrajectoryContainer; 00037 typedef std::vector<TempTrajectory> TempTrajectoryContainer; 00038 00039 CkfTrajectoryBuilder(const edm::ParameterSet& conf, 00040 const TrajectoryStateUpdator* updator, 00041 const Propagator* propagatorAlong, 00042 const Propagator* propagatorOpposite, 00043 const Chi2MeasurementEstimatorBase* estimator, 00044 const TransientTrackingRecHitBuilder* recHitBuilder, 00045 const MeasurementTracker* measurementTracker, 00046 const TrajectoryFilter* filter); 00047 00048 ~CkfTrajectoryBuilder() {} 00049 00051 virtual TrajectoryContainer trajectories(const TrajectorySeed& seed) const; 00053 virtual void trajectories(const TrajectorySeed& seed, TrajectoryContainer &ret) const; 00054 00056 virtual void setEvent(const edm::Event& event) const; 00057 00058 00059 protected: 00060 int theMaxCand; 00062 float theLostHitPenalty; 00063 bool theIntermediateCleaning; 00065 bool theAlwaysUseInvalidHits; 00066 00067 00068 protected: 00069 virtual void findCompatibleMeasurements( const TempTrajectory& traj, std::vector<TrajectoryMeasurement> & result) const; 00070 00071 void limitedCandidates( TempTrajectory& startingTraj, TrajectoryContainer& result) const; 00072 00073 void updateTrajectory( TempTrajectory& traj, const TM& tm) const; 00074 00075 }; 00076 00077 #endif