CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoEgamma/EgammaPhotonProducers/interface/ConversionTrackCandidateProducer.h

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 // ConversionTrackCandidateProducer inherits from EDProducer, so it can be a module:
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                         //edm::ESHandle<EcalChannelStatus>  chStatus,
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