Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:54

0001 //--------------------------------------------------------------------------------------------------
0002 //
0003 //  PfBlockBasedIsolationCalculator.cc
0004 // Authors: N. Marinelli Univ. of Notre Dame
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