00001 #ifndef MuonIsolation_CaloExtractor_H 00002 #define MuonIsolation_CaloExtractor_H 00003 00004 #include <string> 00005 00006 #include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h" 00007 00008 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h" 00009 #include "DataFormats/TrackReco/interface/Track.h" 00010 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00011 00012 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" 00013 00014 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00015 00016 namespace muonisolation { 00017 00018 class CaloExtractor : public reco::isodeposit::IsoDepositExtractor { 00019 00020 public: 00021 00022 CaloExtractor(){}; 00023 CaloExtractor(const edm::ParameterSet& par); 00024 00025 virtual ~CaloExtractor(){} 00026 00027 virtual void fillVetos (const edm::Event & ev, const edm::EventSetup & evSetup, const reco::TrackCollection & tracks); 00028 virtual reco::IsoDeposit deposit (const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Track & track) const; 00029 00031 static GlobalPoint MuonAtCaloPosition(const reco::Track& muon, const double bz, const GlobalPoint& endpos, bool fixVxy=false, bool fixVz=false); 00032 00033 private: 00034 // CaloTower Collection Label 00035 edm::InputTag theCaloTowerCollectionLabel; 00036 00037 // Label of deposit 00038 std::string theDepositLabel; 00039 00040 // Cone cuts and thresholds 00041 double theWeight_E; 00042 double theWeight_H; 00043 double theThreshold_E; 00044 double theThreshold_H; 00045 double theDR_Veto_E; 00046 double theDR_Veto_H; 00047 double theDR_Max; 00048 bool vertexConstraintFlag_XY; 00049 bool vertexConstraintFlag_Z; 00050 00051 // Vector of calo Ids to veto 00052 std::vector<DetId> theVetoCollection; 00053 00054 // Determine noise for HCAL and ECAL (take some defaults for the time being) 00055 double noiseEcal(const CaloTower& tower) const; 00056 double noiseHcal(const CaloTower& tower) const; 00057 }; 00058 00059 } 00060 00061 #endif