00001 #ifndef RecoEgamma_EgammaPhotonProducers_SoftConversionProducer_h 00002 #define RecoEgamma_EgammaPhotonProducers_SoftConversionProducer_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/TkDetLayers/interface/GeometricSearchTracker.h" 00021 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h" 00022 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00023 00024 class ConversionTrackEcalImpactPoint; 00025 class ConversionTrackPairFinder; 00026 class ConversionVertexFinder; 00027 class SoftConversionProducer : public edm::EDProducer { 00028 00029 public: 00030 00031 typedef std::vector<std::pair<reco::TrackRef, reco::CaloClusterPtr> > TrackClusterMap; 00032 00033 SoftConversionProducer (const edm::ParameterSet& ps); 00034 ~SoftConversionProducer(); 00035 00036 00037 virtual void beginRun (edm::Run& r, edm::EventSetup const & es); 00038 virtual void endRun(edm::Run &, edm::EventSetup const&); 00039 00040 virtual void produce(edm::Event& evt, const edm::EventSetup& es); 00041 bool trackQualityCut(const reco::TrackRef& trk); 00042 bool NotAlreadyIn(const reco::Conversion& thisConv, 00043 const std::auto_ptr<reco::ConversionCollection>& outputColl) const; 00044 00045 private: 00046 00047 std::string conversionOITrackProducer_; 00048 std::string conversionIOTrackProducer_; 00049 00050 std::string outInTrackClusterAssociationCollection_; 00051 std::string inOutTrackClusterAssociationCollection_; 00052 00053 std::string clusterType_; 00054 edm::InputTag clusterBarrelCollection_; 00055 edm::InputTag clusterEndcapCollection_; 00056 00057 std::string softConversionCollection_; 00058 double trackMaxChi2_; 00059 double trackMinHits_; 00060 double clustersMaxDeltaEta_; 00061 double clustersMaxDeltaPhi_; 00062 00063 edm::ParameterSet conf_; 00064 edm::ESHandle<MagneticField> theMF_; 00065 edm::ESHandle<GeometricSearchTracker> theGeomSearchTracker_; 00066 00067 ConversionTrackPairFinder* theTrackPairFinder_; 00068 ConversionVertexFinder* theVertexFinder_; 00069 ConversionTrackEcalImpactPoint* theEcalImpactPositionFinder_; 00070 00071 }; 00072 #endif