![]() |
![]() |
00001 #ifndef TrackProducerWithSCAssociation_h 00002 #define TrackProducerWithSCAssociation_h 00003 00015 #include "RecoTracker/TrackProducer/interface/TrackProducerBase.h" 00016 #include "RecoTracker/TrackProducer/interface/TrackProducerAlgorithm.h" 00017 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00018 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00019 00020 class TrackProducerWithSCAssociation : public TrackProducerBase<reco::Track>, public edm::EDProducer { 00021 public: 00022 00023 explicit TrackProducerWithSCAssociation(const edm::ParameterSet& iConfig); 00024 00025 00026 virtual void produce(edm::Event&, const edm::EventSetup&); 00027 00028 std::vector<reco::TransientTrack> getTransient(edm::Event&, const edm::EventSetup&); 00029 00030 private: 00031 std::string myname_; 00032 TrackProducerAlgorithm<reco::Track> theAlgo; 00033 std::string conversionTrackCandidateProducer_; 00034 std::string trackCSuperClusterAssociationCollection_; 00035 std::string trackSuperClusterAssociationCollection_; 00036 edm::OrphanHandle<reco::TrackCollection> rTracks_; 00037 bool myTrajectoryInEvent_; 00038 bool validTrackCandidateSCAssociationInput_; 00039 00040 00041 //Same recipe as Ursula's for electrons. Copy this from TrackProducerBase to get the OrphanHandle 00042 //ugly temporary solution!! I agree ! 00043 void putInEvt(edm::Event& evt, 00044 std::auto_ptr<TrackingRecHitCollection>& selHits, 00045 std::auto_ptr<reco::TrackCollection>& selTracks, 00046 std::auto_ptr<reco::TrackExtraCollection>& selTrackExtras, 00047 std::auto_ptr<std::vector<Trajectory> >& selTrajectories, 00048 AlgoProductCollection& algoResults); 00049 }; 00050 00051 #endif