00001 #ifndef FastSimulation_Tracking_TrackCandidateProducer_h 00002 #define FastSimulation_Tracking_TrackCandidateProducer_h 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/ParameterSet/interface/InputTag.h" 00006 00007 class TrackerGeometry; 00008 class TrajectoryStateOnSurface; 00009 00010 namespace edm { 00011 class ParameterSet; 00012 class Event; 00013 class EventSetup; 00014 } 00015 00016 namespace reco { 00017 class Track; 00018 } 00019 00020 class TrackerRecHit; 00021 00022 #include <vector> 00023 00024 class TrackCandidateProducer : public edm::EDProducer 00025 { 00026 public: 00027 00028 explicit TrackCandidateProducer(const edm::ParameterSet& conf); 00029 00030 virtual ~TrackCandidateProducer(); 00031 00032 virtual void beginRun(edm::Run & run, const edm::EventSetup & es); 00033 00034 virtual void produce(edm::Event& e, const edm::EventSetup& es); 00035 00036 private: 00037 00038 int findId(const reco::Track& aTrack) const; 00039 00040 void addSplitHits(const TrackerRecHit&, std::vector<TrackerRecHit>&); 00041 00042 private: 00043 00044 const TrackerGeometry* theGeometry; 00045 00046 edm::InputTag seedProducer; 00047 edm::InputTag hitProducer; 00048 // edm::InputTag trackProducer; 00049 std::vector<edm::InputTag> trackProducers; 00050 00051 unsigned int minNumberOfCrossedLayers; 00052 unsigned int maxNumberOfCrossedLayers; 00053 00054 bool rejectOverlaps; 00055 bool splitHits; 00056 bool seedCleaning; 00057 bool keepFittedTracks; 00058 00059 }; 00060 00061 #endif