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