PFMET

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
#ifndef METReco_PFMET_h
#define METReco_PFMET_h

/*
class: PFMET
description:  MET made from Particle Flow candidates
authors: R. Remington (UF), R. Cavanaugh (UIC/Fermilab)
date: 10/27/08
*/

// Note : Data members refer to transverse quantities as is indicated by the accessors .
//        Eventually, we will change them accordingly when backward compatibility is not required
// Date : 10/14/09

#include "DataFormats/METReco/interface/MET.h"
#include "DataFormats/METReco/interface/SpecificPFMETData.h"
namespace reco {
  class PFMET : public MET {
  public:
    PFMET();
    PFMET(const SpecificPFMETData& pf_data_,
          double sumet_,
          const LorentzVector& fP4,
          const Point& fVertex,
          bool isWeighted = false)
        : MET(sumet_, fP4, fVertex, isWeighted), pf_data(pf_data_) {}

    ~PFMET() override {}

    //getters
    double photonEtFraction() const { return pf_data.NeutralEMFraction; }
    double photonEt() const { return pf_data.NeutralEMFraction * sumEt(); }

    double neutralHadronEtFraction() const { return pf_data.NeutralHadFraction; }
    double neutralHadronEt() const { return pf_data.NeutralHadFraction * sumEt(); }

    double electronEtFraction() const { return pf_data.ChargedEMFraction; }
    double electronEt() const { return pf_data.ChargedEMFraction * sumEt(); }

    double chargedHadronEtFraction() const { return pf_data.ChargedHadFraction; }
    double chargedHadronEt() const { return pf_data.ChargedHadFraction * sumEt(); }

    double muonEtFraction() const { return pf_data.MuonFraction; }
    double muonEt() const { return pf_data.MuonFraction * sumEt(); }

    double HFHadronEtFraction() const { return pf_data.Type6Fraction; }
    double HFHadronEt() const { return pf_data.Type6Fraction * sumEt(); }

    double HFEMEtFraction() const { return pf_data.Type7Fraction; }
    double HFEMEt() const { return pf_data.Type7Fraction * sumEt(); }

    // Old accessors (should be removed in future)
    double NeutralEMEtFraction() const { return pf_data.NeutralEMFraction; }
    double NeutralEMEt() const { return pf_data.NeutralEMFraction * sumEt(); }
    double NeutralHadEtFraction() const { return pf_data.NeutralHadFraction; }
    double NeutralHadEt() const { return pf_data.NeutralHadFraction * sumEt(); }
    double ChargedEMEtFraction() const { return pf_data.ChargedEMFraction; }
    double ChargedEMEt() const { return pf_data.ChargedEMFraction * sumEt(); }
    double ChargedHadEtFraction() const { return pf_data.ChargedHadFraction; }
    double ChargedHadEt() const { return pf_data.ChargedHadFraction * sumEt(); }
    double MuonEtFraction() const { return pf_data.MuonFraction; }
    double MuonEt() const { return pf_data.MuonFraction * sumEt(); }
    double Type6EtFraction() const { return pf_data.Type6Fraction; }
    double Type6Et() const { return pf_data.Type6Fraction * sumEt(); }
    double Type7EtFraction() const { return pf_data.Type7Fraction; }
    double Type7Et() const { return pf_data.Type7Fraction * sumEt(); }
    double NeutralEMFraction() const { return pf_data.NeutralEMFraction; }
    double NeutralHadFraction() const { return pf_data.NeutralHadFraction; }
    double ChargedEMFraction() const { return pf_data.ChargedEMFraction; }
    double ChargedHadFraction() const { return pf_data.ChargedHadFraction; }
    double MuonFraction() const { return pf_data.MuonFraction; }

    // block accessors
    SpecificPFMETData getSpecific() const { return pf_data; }

  private:
    SpecificPFMETData pf_data;
  };
}  // namespace reco
#endif