00001 #ifndef RecoTauTag_RecoTau_RecoTauIsolationMasking_h 00002 #define RecoTauTag_RecoTau_RecoTauIsolationMasking_h 00003 00004 /* 00005 * Mask isolation quantities in PFTau objects 00006 * 00007 * The masking is one by collecting HCAL and ECAL PF objects in cones about the 00008 * charged hadrons associated to the tau. The HCAL and ECAL objects are then 00009 * eaten, (HCAL first, ordered by DR from track), until the total associated 00010 * calo energy is within maxSigmas standard deviations of the track energy. 00011 * 00012 * Authors: Evan K. Friis, Christian Veelken (UC DAvis) 00013 * 00014 */ 00015 00016 #include "DataFormats/TauReco/interface/PFTau.h" 00017 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00018 00019 // foward declaration 00020 class PFEnergyResolution; 00021 00022 namespace reco { namespace tau { 00023 00024 class RecoTauIsolationMasking { 00025 public: 00026 // Structure containing new, maksed isolation collections 00027 struct IsoMaskResult { 00028 std::list<reco::PFCandidateRef> gammas; 00029 std::list<reco::PFCandidateRef> h0s; 00030 }; 00031 RecoTauIsolationMasking(const edm::ParameterSet& pset); 00032 ~RecoTauIsolationMasking(); 00034 IsoMaskResult mask(const reco::PFTau&) const; 00035 00036 void setMaxSigmas(double maxSigmas) {maxSigmas_ = maxSigmas;} 00037 private: 00038 // Get the energy resoltuion of a gamma or h0 candidate 00039 double resolution(const reco::PFCandidate& cand) const; 00040 // Check if the candidate is in the correct cone 00041 bool inCone(const reco::PFCandidate& track, 00042 const reco::PFCandidate& cand) const; 00043 00044 double ecalCone_; 00045 double hcalCone_; 00046 double maxSigmas_; 00047 double finalHcalCone_; 00048 std::auto_ptr<PFEnergyResolution> resolutions_; 00049 }; 00050 00051 }} 00052 #endif