![]() |
![]() |
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 beginRun (edm::Run& r, edm::EventSetup const & es); 00048 virtual void endRun (edm::Run& r, edm::EventSetup const & es); 00049 virtual void produce(edm::Event& evt, const edm::EventSetup& es); 00050 00051 private: 00052 00053 int nEvt_; 00054 00056 void setEventSetup( const edm::EventSetup& es ) ; 00057 00058 std::string clusterType_; 00059 edm::InputTag clusterBarrelCollection_; 00060 edm::InputTag clusterEndcapCollection_; 00061 std::string OutInTrackCandidateCollection_; 00062 std::string InOutTrackCandidateCollection_; 00063 std::string OutInTrackClusterAssociationCollection_; 00064 std::string InOutTrackClusterAssociationCollection_; 00065 00066 edm::ParameterSet conf_; 00067 00068 edm::ESHandle<CaloGeometry> theCaloGeom_; 00069 00070 const NavigationSchool* theNavigationSchool_; 00071 OutInConversionSeedFinder* theOutInSeedFinder_; 00072 OutInConversionTrackFinder* theOutInTrackFinder_; 00073 InOutConversionSeedFinder* theInOutSeedFinder_; 00074 InOutConversionTrackFinder* theInOutTrackFinder_; 00075 00076 void buildCollections( const edm::Handle<edm::View<reco::CaloCluster> >& clusterHandle, 00077 TrackCandidateCollection& outInTracks, 00078 TrackCandidateCollection& inOutTracks, 00079 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecOI, 00080 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecIO); 00081 00082 }; 00083 #endif