Go to the documentation of this file.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 #include "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.h"
00034 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
00035 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00036
00037 class OutInConversionSeedFinder;
00038 class InOutConversionSeedFinder;
00039 class OutInConversionTrackFinder;
00040 class InOutConversionTrackFinder;
00041
00042
00043 class ConversionTrackCandidateProducer : public edm::EDProducer {
00044
00045 public:
00046
00047 ConversionTrackCandidateProducer (const edm::ParameterSet& ps);
00048 ~ConversionTrackCandidateProducer();
00049
00050 virtual void beginRun (edm::Run const&, edm::EventSetup const & es) override final;
00051 virtual void endRun (edm::Run const&, edm::EventSetup const & es) override final;
00052 virtual void produce(edm::Event& evt, const edm::EventSetup& es);
00053
00054 private:
00055
00056 int nEvt_;
00057
00059 void setEventSetup( const edm::EventSetup& es ) ;
00060
00061 std::string OutInTrackCandidateCollection_;
00062 std::string InOutTrackCandidateCollection_;
00063
00064
00065 std::string OutInTrackSuperClusterAssociationCollection_;
00066 std::string InOutTrackSuperClusterAssociationCollection_;
00067
00068 edm::InputTag bcBarrelCollection_;
00069 edm::InputTag bcEndcapCollection_;
00070 edm::InputTag scHybridBarrelProducer_;
00071 edm::InputTag scIslandEndcapProducer_;
00072 edm::ParameterSet conf_;
00073 edm::InputTag hcalTowers_;
00074 edm::InputTag barrelecalCollection_;
00075 edm::InputTag endcapecalCollection_;
00076
00077 double hOverEConeSize_;
00078 double maxHOverE_;
00079 double minSCEt_;
00080 double isoConeR_ ;
00081 double isoInnerConeR_ ;
00082 double isoEtaSlice_ ;
00083 double isoEtMin_ ;
00084 double isoEMin_ ;
00085 bool vetoClusteredHits_ ;
00086 bool useNumXtals_;
00087
00088 std::vector<int> flagsexclEB_;
00089 std::vector<int> flagsexclEE_;
00090 std::vector<int> severitiesexclEB_;
00091 std::vector<int> severitiesexclEE_;
00092
00093 double ecalIsoCut_offset_;
00094 double ecalIsoCut_slope_;
00095
00096
00097 edm::ESHandle<CaloGeometry> theCaloGeom_;
00098
00099 const NavigationSchool* theNavigationSchool_;
00100 OutInConversionSeedFinder* theOutInSeedFinder_;
00101 OutInConversionTrackFinder* theOutInTrackFinder_;
00102 InOutConversionSeedFinder* theInOutSeedFinder_;
00103 InOutConversionTrackFinder* theInOutTrackFinder_;
00104
00105
00106 std::vector<edm::Ptr<reco::CaloCluster> > caloPtrVecOutIn_;
00107 std::vector<edm::Ptr<reco::CaloCluster> > caloPtrVecInOut_;
00108
00109 std::vector<edm::Ref<reco::SuperClusterCollection> > vecOfSCRefForOutIn;
00110 std::vector<edm::Ref<reco::SuperClusterCollection> > vecOfSCRefForInOut;
00111
00112 void buildCollections(bool detector,
00113 const edm::Handle<edm::View<reco::CaloCluster> > & scHandle,
00114 const edm::Handle<edm::View<reco::CaloCluster> > & bcHandle,
00115 edm::Handle<EcalRecHitCollection> ecalRecHitHandle,
00116 CaloRecHitMetaCollectionV* metaEcalRecHits,
00117 const EcalSeverityLevelAlgo* sevLev,
00118
00119 const edm::Handle<CaloTowerCollection> & hcalTowersHandle,
00120 TrackCandidateCollection& outInTracks,
00121 TrackCandidateCollection& inOutTracks,
00122 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecOI,
00123 std::vector<edm::Ptr<reco::CaloCluster> >& vecRecIO);
00124
00125 };
00126 #endif