00001 #ifndef MuonIsolation_CaloExtractorByAssociator_H 00002 #define MuonIsolation_CaloExtractorByAssociator_H 00003 00017 #include <string> 00018 00019 #include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h" 00020 00021 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h" 00022 #include "DataFormats/TrackReco/interface/Track.h" 00023 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00024 00025 00026 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" 00027 00028 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00029 00030 class TrackAssociatorParameters; 00031 class TrackDetectorAssociator; 00032 class MuonServiceProxy; 00033 00034 namespace muonisolation { 00035 00036 class CaloExtractorByAssociator : public reco::isodeposit::IsoDepositExtractor { 00037 00038 public: 00039 00041 CaloExtractorByAssociator(){}; 00042 CaloExtractorByAssociator(const edm::ParameterSet& par); 00043 00045 virtual ~CaloExtractorByAssociator(); 00046 00048 virtual void fillVetos (const edm::Event & ev, const edm::EventSetup & evSetup, const reco::TrackCollection & tracks); 00050 virtual reco::IsoDeposit 00051 deposit(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Track & track) const; 00053 virtual std::vector<reco::IsoDeposit> 00054 deposits(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Track & track) const; 00055 00056 private: 00057 00059 bool theUseRecHitsFlag; 00060 00062 std::string theDepositLabel; 00063 00065 std::vector<std::string> theDepositInstanceLabels; 00066 00068 std::string thePropagatorName; 00069 00072 double theThreshold_E; 00073 double theThreshold_H; 00074 double theThreshold_HO; 00075 00077 double theDR_Veto_E; 00078 double theDR_Veto_H; 00079 double theDR_Veto_HO; 00082 bool theCenterConeOnCalIntersection; 00084 double theDR_Max; 00085 00088 double theNoise_EB; 00089 double theNoise_EE; 00090 double theNoise_HB; 00091 double theNoise_HE; 00092 double theNoise_HO; 00093 double theNoiseTow_EB; 00094 double theNoiseTow_EE; 00095 00097 std::vector<DetId> theVetoCollection; 00098 00100 MuonServiceProxy* theService; 00101 00102 00104 TrackAssociatorParameters* theAssociatorParameters; 00105 TrackDetectorAssociator* theAssociator; 00106 00108 bool thePrintTimeReport; 00109 00111 double noiseEcal(const CaloTower& tower) const; 00112 double noiseHcal(const CaloTower& tower) const; 00113 double noiseHOcal(const CaloTower& tower) const; 00114 double noiseRecHit(const DetId& detId) const; 00115 00116 }; 00117 00118 } 00119 00120 #endif