Go to the documentation of this file.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 #include <map>
00029 #include <boost/unordered_map.hpp>
00030
00031 class TransientTrackingRecHitBuilder;
00032 class TrajectoryFilter;
00033
00034 class CkfTrajectoryBuilder :public BaseCkfTrajectoryBuilder {
00035
00036 public:
00037
00038 typedef std::vector<Trajectory> TrajectoryContainer;
00039 typedef std::vector<TempTrajectory> TempTrajectoryContainer;
00040
00041 CkfTrajectoryBuilder(const edm::ParameterSet& conf,
00042 const TrajectoryStateUpdator* updator,
00043 const Propagator* propagatorAlong,
00044 const Propagator* propagatorOpposite,
00045 const Chi2MeasurementEstimatorBase* estimator,
00046 const TransientTrackingRecHitBuilder* recHitBuilder,
00047 const MeasurementTracker* measurementTracker,
00048 const TrajectoryFilter* filter);
00049
00050 ~CkfTrajectoryBuilder() {}
00051
00053 virtual TrajectoryContainer trajectories(const TrajectorySeed& seed) const;
00055 virtual void trajectories(const TrajectorySeed& seed, TrajectoryContainer &ret) const;
00056
00058 virtual void setEvent(const edm::Event& event) const;
00059
00060
00061
00062 protected:
00063 int theMaxCand;
00065 float theLostHitPenalty;
00066 bool theIntermediateCleaning;
00068 bool theAlwaysUseInvalidHits;
00069
00070
00071 protected:
00072 virtual void findCompatibleMeasurements( const TempTrajectory& traj, std::vector<TrajectoryMeasurement> & result) const;
00073
00074 void limitedCandidates( TempTrajectory& startingTraj, TrajectoryContainer& result) const;
00075 void limitedCandidates( TempTrajectoryContainer &candidates, TrajectoryContainer& result) const;
00076
00077 void updateTrajectory( TempTrajectory& traj, const TM& tm) const;
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 };
00091
00092 #endif