00001 #ifndef RecoEgamma_EgammaPhotonProducers_SoftConversionTrackCandidateProducer_h 00002 #define RecoEgamma_EgammaPhotonProducers_SoftConversionTrackCandidateProducer_h 00003 00013 #include "FWCore/Framework/interface/EDProducer.h" 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 #include "FWCore/Framework/interface/Event.h" 00016 #include "FWCore/Framework/interface/EventSetup.h" 00017 #include "FWCore/Framework/interface/ESHandle.h" 00018 00019 #include "MagneticField/Engine/interface/MagneticField.h" 00020 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h" 00021 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00022 #include "RecoEgamma/EgammaTools/interface/HoECalculator.h" 00023 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h" 00024 #include "TrackingTools/DetLayers/interface/NavigationSetter.h" 00025 #include "TrackingTools/DetLayers/interface/NavigationSchool.h" 00026 #include "RecoTracker/TkNavigation/interface/SimpleNavigationSchool.h" 00027 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" 00028 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" 00029 #include "DataFormats/CaloRecHit/interface/CaloCluster.h" 00030 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h" 00031 #include "DataFormats/Common/interface/View.h" 00032 00033 class OutInConversionSeedFinder; 00034 class InOutConversionSeedFinder; 00035 class OutInConversionTrackFinder; 00036 class InOutConversionTrackFinder; 00037 00038 // SoftConversionTrackCandidateProducer inherits from EDProducer, so it can be a module: 00039 class SoftConversionTrackCandidateProducer : public edm::EDProducer { 00040 00041 public: 00042 00043 SoftConversionTrackCandidateProducer (const edm::ParameterSet& ps); 00044 ~SoftConversionTrackCandidateProducer(); 00045 00046 00047 virtual void beginJob (edm::EventSetup const & es); 00048 virtual void produce(edm::Event& evt, const edm::EventSetup& es); 00049 00050 private: 00051 00052 int nEvt_; 00053 00055 void setEventSetup( const edm::EventSetup& es ) ; 00056 00057 std::string clusterType_; 00058 edm::InputTag clusterBarrelCollection_; 00059 edm::InputTag clusterEndcapCollection_; 00060 std::string OutInTrackCandidateCollection_; 00061 std::string InOutTrackCandidateCollection_; 00062 std::string OutInTrackClusterAssociationCollection_; 00063 std::string InOutTrackClusterAssociationCollection_; 00064 00065 edm::ParameterSet conf_; 00066 00067 edm::ESHandle<CaloGeometry> theCaloGeom_; 00068 00069 const NavigationSchool* theNavigationSchool_; 00070 OutInConversionSeedFinder* theOutInSeedFinder_; 00071 OutInConversionTrackFinder* theOutInTrackFinder_; 00072 InOutConversionSeedFinder* theInOutSeedFinder_; 00073 InOutConversionTrackFinder* theInOutTrackFinder_; 00074 00075 void buildCollections( const edm::Handle<edm::View<reco::CaloCluster> >& clusterHandle, 00076 TrackCandidateCollection& outInTracks, 00077 TrackCandidateCollection& inOutTracks, 00078 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecOI, 00079 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecIO); 00080 00081 }; 00082 #endif