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
00057
00058 TempTrajectory buildTrajectories (const TrajectorySeed&,
00059 TrajectoryContainer &ret,
00060 const TrajectoryFilter*) const;
00061
00062
00063 void rebuildTrajectories(TempTrajectory const& startingTraj, const TrajectorySeed&,
00064 TrajectoryContainer& result) const {}
00065
00067
00068
00069
00070
00071 protected:
00072 int theMaxCand;
00074 float theLostHitPenalty;
00075 bool theIntermediateCleaning;
00077 bool theAlwaysUseInvalidHits;
00078
00079
00080 protected:
00081 virtual void findCompatibleMeasurements(const TrajectorySeed&seed, const TempTrajectory& traj, std::vector<TrajectoryMeasurement> & result) const;
00082
00083 void limitedCandidates(const TrajectorySeed&seed, TempTrajectory& startingTraj, TrajectoryContainer& result) const;
00084 void limitedCandidates(const boost::shared_ptr<const TrajectorySeed> & sharedSeed, TempTrajectoryContainer &candidates, TrajectoryContainer& result) const;
00085
00086 void updateTrajectory( TempTrajectory& traj, const TM& tm) const;
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 };
00100
00101 #endif