![]() |
![]() |
00001 #ifndef RecoEgamma_EgammaPhotonProducers_ConversionTrackCandidateProducer_h 00002 #define RecoEgamma_EgammaPhotonProducers_ConversionTrackCandidateProducer_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 "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.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 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" 00033 00034 class OutInConversionSeedFinder; 00035 class InOutConversionSeedFinder; 00036 class OutInConversionTrackFinder; 00037 class InOutConversionTrackFinder; 00038 00039 // ConversionTrackCandidateProducer inherits from EDProducer, so it can be a module: 00040 class ConversionTrackCandidateProducer : public edm::EDProducer { 00041 00042 public: 00043 00044 ConversionTrackCandidateProducer (const edm::ParameterSet& ps); 00045 ~ConversionTrackCandidateProducer(); 00046 00047 00048 00049 virtual void beginRun (edm::Run &, edm::EventSetup const & es); 00050 virtual void endRun (edm::Run &, edm::EventSetup const & es); 00051 virtual void produce(edm::Event& evt, const edm::EventSetup& es); 00052 00053 private: 00054 00055 int nEvt_; 00056 00058 void setEventSetup( const edm::EventSetup& es ) ; 00059 00060 std::string OutInTrackCandidateCollection_; 00061 std::string InOutTrackCandidateCollection_; 00062 00063 00064 std::string OutInTrackSuperClusterAssociationCollection_; 00065 std::string InOutTrackSuperClusterAssociationCollection_; 00066 00067 edm::InputTag bcBarrelCollection_; 00068 edm::InputTag bcEndcapCollection_; 00069 edm::InputTag scHybridBarrelProducer_; 00070 edm::InputTag scIslandEndcapProducer_; 00071 edm::ParameterSet conf_; 00072 edm::InputTag hcalTowers_; 00073 00074 double hOverEConeSize_; 00075 double maxHOverE_; 00076 double minSCEt_; 00077 00078 edm::ESHandle<CaloGeometry> theCaloGeom_; 00079 00080 const NavigationSchool* theNavigationSchool_; 00081 OutInConversionSeedFinder* theOutInSeedFinder_; 00082 OutInConversionTrackFinder* theOutInTrackFinder_; 00083 InOutConversionSeedFinder* theInOutSeedFinder_; 00084 InOutConversionTrackFinder* theInOutTrackFinder_; 00085 00086 00087 std::vector<edm::Ptr<reco::CaloCluster> > caloPtrVecOutIn_; 00088 std::vector<edm::Ptr<reco::CaloCluster> > caloPtrVecInOut_; 00089 00090 std::vector<edm::Ref<reco::SuperClusterCollection> > vecOfSCRefForOutIn; 00091 std::vector<edm::Ref<reco::SuperClusterCollection> > vecOfSCRefForInOut; 00092 00093 void buildCollections( const edm::Handle<edm::View<reco::CaloCluster> > & scHandle, 00094 const edm::Handle<edm::View<reco::CaloCluster> > & bcHandle, 00095 const edm::Handle<CaloTowerCollection> & hcalTowersHandle, 00096 TrackCandidateCollection& outInTracks, 00097 TrackCandidateCollection& inOutTracks, 00098 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecOI, 00099 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecIO 00100 ); 00101 00102 00103 }; 00104 #endif