CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoEgamma/EgammaIsolationAlgos/plugins/EgammaRecHitExtractor.h

Go to the documentation of this file.
00001 #ifndef EgammaIsolationProducers_EgammaRecHitExtractor_h
00002 #define EgammaIsolationProducers_EgammaRecHitExtractor_h
00003 //*****************************************************************************
00004 // File:      EgammaRecHitExtractor.h
00005 // ----------------------------------------------------------------------------
00006 // OrigAuth:  Matthias Mozer, adapted from EgammaHcalExtractor by S. Harper
00007 // Institute: IIHE-VUB, RAL
00008 //=============================================================================
00009 //*****************************************************************************
00010 
00011 //C++ includes
00012 #include <vector>
00013 #include <functional>
00014 
00015 //CMSSW includes
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include "DataFormats/Candidate/interface/Candidate.h"
00018 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00019 #include "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.h"
00020 
00021 #include "FWCore/Framework/interface/Event.h"
00022 #include "FWCore/Framework/interface/EventSetup.h"
00023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00024 #include "FWCore/Utilities/interface/InputTag.h"
00025 
00026 #include "DataFormats/TrackReco/interface/Track.h"
00027 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00028 #include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h"
00029 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00030 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00031 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00032 
00033 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
00034 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00035 
00036 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00037 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
00038 
00039 namespace egammaisolation {
00040 
00041   class EgammaRecHitExtractor : public reco::isodeposit::IsoDepositExtractor {
00042   public:
00043     EgammaRecHitExtractor(const edm::ParameterSet& par); 
00044     virtual ~EgammaRecHitExtractor() ; 
00045     virtual void fillVetos(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::TrackCollection & tracks) { }
00046     virtual reco::IsoDeposit deposit(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Track & track) const {
00047       throw cms::Exception("Configuration Error") << "This extractor " << (typeid(this).name()) << " is not made for tracks";
00048     }
00049     virtual reco::IsoDeposit deposit(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Candidate & c) const ;
00050     
00051   private:
00052     void collect(reco::IsoDeposit &deposit, 
00053                  const reco::SuperClusterRef& sc, const CaloSubdetectorGeometry* subdet,
00054                  const CaloGeometry* caloGeom,
00055                  const EcalRecHitCollection &hits,
00056                  //const EcalChannelStatus* chStatus,
00057                  const EcalSeverityLevelAlgo* sevLevel,
00058                  bool barrel) const;
00059     
00060     double etMin_ ;
00061     double energyMin_ ;
00062     double extRadius_ ;
00063     double intRadius_ ;
00064     double intStrip_ ;
00065     edm::InputTag barrelEcalHitsTag_;
00066     edm::InputTag endcapEcalHitsTag_;
00067     bool fakeNegativeDeposit_;
00068     bool  tryBoth_;
00069     bool  useEt_;
00070     bool  vetoClustered_;
00071     bool  sameTag_;
00072     //int   severityLevelCut_;
00073     //float severityRecHitThreshold_;
00074     //std::string spIdString_;
00075     //float spIdThreshold_;
00076     //EcalSeverityLevelAlgo::SpikeId spId_;
00077     //std::vector<int> v_chstatus_;
00078     std::vector<int> severitiesexclEB_;
00079     std::vector<int> severitiesexclEE_;
00080     std::vector<int> flagsexclEB_;
00081     std::vector<int> flagsexclEE_; 
00082   };
00083 }
00084 #endif