Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:45

0001 #ifndef METReco_PFMET_h
0002 #define METReco_PFMET_h
0003 
0004 /*
0005 class: PFMET
0006 description:  MET made from Particle Flow candidates
0007 authors: R. Remington (UF), R. Cavanaugh (UIC/Fermilab)
0008 date: 10/27/08
0009 */
0010 
0011 // Note : Data members refer to transverse quantities as is indicated by the accessors .
0012 //        Eventually, we will change them accordingly when backward compatibility is not required
0013 // Date : 10/14/09
0014 
0015 #include "DataFormats/METReco/interface/MET.h"
0016 #include "DataFormats/METReco/interface/SpecificPFMETData.h"
0017 namespace reco {
0018   class PFMET : public MET {
0019   public:
0020     PFMET();
0021     PFMET(const SpecificPFMETData& pf_data_,
0022           double sumet_,
0023           const LorentzVector& fP4,
0024           const Point& fVertex,
0025           bool isWeighted = false)
0026         : MET(sumet_, fP4, fVertex, isWeighted), pf_data(pf_data_) {}
0027 
0028     ~PFMET() override {}
0029 
0030     //getters
0031     double photonEtFraction() const { return pf_data.NeutralEMFraction; }
0032     double photonEt() const { return pf_data.NeutralEMFraction * sumEt(); }
0033 
0034     double neutralHadronEtFraction() const { return pf_data.NeutralHadFraction; }
0035     double neutralHadronEt() const { return pf_data.NeutralHadFraction * sumEt(); }
0036 
0037     double electronEtFraction() const { return pf_data.ChargedEMFraction; }
0038     double electronEt() const { return pf_data.ChargedEMFraction * sumEt(); }
0039 
0040     double chargedHadronEtFraction() const { return pf_data.ChargedHadFraction; }
0041     double chargedHadronEt() const { return pf_data.ChargedHadFraction * sumEt(); }
0042 
0043     double muonEtFraction() const { return pf_data.MuonFraction; }
0044     double muonEt() const { return pf_data.MuonFraction * sumEt(); }
0045 
0046     double HFHadronEtFraction() const { return pf_data.Type6Fraction; }
0047     double HFHadronEt() const { return pf_data.Type6Fraction * sumEt(); }
0048 
0049     double HFEMEtFraction() const { return pf_data.Type7Fraction; }
0050     double HFEMEt() const { return pf_data.Type7Fraction * sumEt(); }
0051 
0052     // Old accessors (should be removed in future)
0053     double NeutralEMEtFraction() const { return pf_data.NeutralEMFraction; }
0054     double NeutralEMEt() const { return pf_data.NeutralEMFraction * sumEt(); }
0055     double NeutralHadEtFraction() const { return pf_data.NeutralHadFraction; }
0056     double NeutralHadEt() const { return pf_data.NeutralHadFraction * sumEt(); }
0057     double ChargedEMEtFraction() const { return pf_data.ChargedEMFraction; }
0058     double ChargedEMEt() const { return pf_data.ChargedEMFraction * sumEt(); }
0059     double ChargedHadEtFraction() const { return pf_data.ChargedHadFraction; }
0060     double ChargedHadEt() const { return pf_data.ChargedHadFraction * sumEt(); }
0061     double MuonEtFraction() const { return pf_data.MuonFraction; }
0062     double MuonEt() const { return pf_data.MuonFraction * sumEt(); }
0063     double Type6EtFraction() const { return pf_data.Type6Fraction; }
0064     double Type6Et() const { return pf_data.Type6Fraction * sumEt(); }
0065     double Type7EtFraction() const { return pf_data.Type7Fraction; }
0066     double Type7Et() const { return pf_data.Type7Fraction * sumEt(); }
0067     double NeutralEMFraction() const { return pf_data.NeutralEMFraction; }
0068     double NeutralHadFraction() const { return pf_data.NeutralHadFraction; }
0069     double ChargedEMFraction() const { return pf_data.ChargedEMFraction; }
0070     double ChargedHadFraction() const { return pf_data.ChargedHadFraction; }
0071     double MuonFraction() const { return pf_data.MuonFraction; }
0072 
0073     // block accessors
0074     SpecificPFMETData getSpecific() const { return pf_data; }
0075 
0076   private:
0077     SpecificPFMETData pf_data;
0078   };
0079 }  // namespace reco
0080 #endif