File indexing completed on 2024-04-06 12:24:54
0001
0002
0003
0004
0005
0006
0007 #ifndef PFBlockBasedIsolation_H
0008 #define PFBlockBasedIsolation_H
0009
0010 #include "DataFormats/Common/interface/Handle.h"
0011 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0012 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0014
0015 namespace reco {
0016 class PFBlockElementCluster;
0017 }
0018
0019 class PFBlockBasedIsolation {
0020 public:
0021 PFBlockBasedIsolation();
0022
0023 ~PFBlockBasedIsolation();
0024
0025 void setup(const edm::ParameterSet& conf);
0026
0027 public:
0028 std::vector<reco::PFCandidateRef> calculate(math::XYZTLorentzVectorD p4,
0029 const reco::PFCandidateRef pfEGCand,
0030 const edm::Handle<reco::PFCandidateCollection> pfCandidateHandle);
0031
0032 private:
0033 const reco::PFBlockElementCluster* getHighestEtECALCluster(const reco::PFCandidate& pfCand);
0034 bool passesCleaningPhoton(const reco::PFCandidateRef& pfCand, const reco::PFCandidateRef& pfEGCand);
0035 bool passesCleaningNeutralHadron(const reco::PFCandidateRef& pfCand, const reco::PFCandidateRef& pfEGCand);
0036
0037 bool passesCleaningChargedHadron(const reco::PFCandidateRef& pfCand, const reco::PFCandidateRef& pfEGCand);
0038 bool elementPassesCleaning(const reco::PFCandidateRef& pfCand, const reco::PFCandidateRef& pfEGCand);
0039
0040 private:
0041 double coneSize_;
0042 };
0043
0044 #endif