00001 #ifndef TrackingTools_PatternTools_TrajectoryBuilder_h 00002 #define TrackingTools_PatternTools_TrajectoryBuilder_h 00003 00004 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h" 00005 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00006 #include "FWCore/Framework/interface/Event.h" 00007 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00008 00009 class TrajectorySeed; 00010 00018 class TrajectoryBuilder { 00019 public: 00020 00021 typedef std::vector<Trajectory> TrajectoryContainer; 00022 typedef TrajectoryContainer::iterator TrajectoryIterator; 00023 00024 virtual ~TrajectoryBuilder() {}; 00025 00026 virtual TrajectoryContainer trajectories(const TrajectorySeed&) const = 0; 00027 00028 virtual void trajectories(const TrajectorySeed& seed, TrajectoryContainer &out) const { 00029 TrajectoryContainer ret = trajectories(seed); 00030 out.swap(ret); 00031 } 00032 00036 virtual void rebuildSeedingRegion(const TrajectorySeed&, 00037 TrajectoryContainer& result) const { 00038 LogDebug("TrajectoryBuilding") 00039 << "WARNING: you are using a trajectory builder which is not overloading the rebuildSeedingRegion method because there is not an implementation yet: output TrajectoryContainer is equal to inputTrajectoryContainer"; 00040 } 00041 00042 virtual void setEvent(const edm::Event& event) const = 0; 00043 virtual void unset() const {}; 00044 }; 00045 00046 00047 #endif