Muon

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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
#ifndef DataFormats_L1Trigger_Muon_h
#define DataFormats_L1Trigger_Muon_h

#include "DataFormats/Common/interface/Ref.h"
#include "DataFormats/L1Trigger/interface/L1Candidate.h"
#include "DataFormats/L1Trigger/interface/BXVector.h"
#include "DataFormats/L1Trigger/interface/L1TObjComparison.h"

namespace l1t {

  class Muon;
  typedef BXVector<Muon> MuonBxCollection;
  typedef edm::Ref<MuonBxCollection> MuonRef;
  typedef edm::RefVector<MuonBxCollection> MuonRefVector;
  typedef std::vector<MuonRef> MuonVectorRef;

  typedef ObjectRefBxCollection<Muon> MuonRefBxCollection;
  typedef ObjectRefPair<Muon> MuonRefPair;
  typedef ObjectRefPairBxCollection<Muon> MuonRefPairBxCollection;

  class Muon : public L1Candidate {
  public:
    Muon();

    Muon(const LorentzVector& p4,
         int pt = 0,
         int eta = 0,
         int phi = 0,
         int qual = 0,
         int charge = 0,
         int chargeValid = 0,
         int iso = 0,
         int tfMuonIndex = -1,
         int tag = 0,
         bool debug = false,
         int isoSum = 0,
         int dPhi = 0,
         int dEta = 0,
         int rank = 0,
         int hwEtaAtVtx = 0,
         int hwPhiAtVtx = 0,
         double etaAtVtx = 0.,
         double phiAtVtx = 0.,
         int hwPtUnconstrained = 0,
         double ptUnconstrained = 0.,
         int dXY = 0);

    Muon(const PolarLorentzVector& p4,
         int pt = 0,
         int eta = 0,
         int phi = 0,
         int qual = 0,
         int charge = 0,
         int chargeValid = 0,
         int iso = 0,
         int tfMuonIndex = -1,
         int tag = 0,
         bool debug = false,
         int isoSum = 0,
         int dPhi = 0,
         int dEta = 0,
         int rank = 0,
         int hwEtaAtVtx = 0,
         int hwPhiAtVtx = 0,
         double etaAtVtx = 0.,
         double phiAtVtx = 0.,
         int hwPtUnconstrained = 0,
         double ptUnconstrained = 0.,
         int dXY = 0);

    ~Muon() override;

    // set values
    inline void setHwCharge(int charge) { hwCharge_ = charge; };
    inline void setHwChargeValid(int valid) { hwChargeValid_ = valid; };
    inline void setTfMuonIndex(int index) { tfMuonIndex_ = index; };
    inline void setHwTag(int tag) { hwTag_ = tag; };

    inline void setHwEtaAtVtx(int hwEtaAtVtx) { hwEtaAtVtx_ = hwEtaAtVtx; };
    inline void setHwPhiAtVtx(int hwPhiAtVtx) { hwPhiAtVtx_ = hwPhiAtVtx; };
    inline void setEtaAtVtx(double etaAtVtx) { etaAtVtx_ = etaAtVtx; };
    inline void setPhiAtVtx(double phiAtVtx) { phiAtVtx_ = phiAtVtx; };

    inline void setHwIsoSum(int isoSum) { hwIsoSum_ = isoSum; };
    inline void setHwDPhiExtra(int dPhi) { hwDPhiExtra_ = dPhi; };
    inline void setHwDEtaExtra(int dEta) { hwDEtaExtra_ = dEta; };
    inline void setHwRank(int rank) { hwRank_ = rank; };

    inline void setHwPtUnconstrained(int hwPtUnconstrained) { hwPtUnconstrained_ = hwPtUnconstrained; };
    inline void setPtUnconstrained(double ptUnconstrained) { ptUnconstrained_ = ptUnconstrained; };
    inline void setHwDXY(int hwDXY) { hwDXY_ = hwDXY; };

    inline void setDebug(bool debug) { debug_ = debug; };

    // methods to retrieve values
    inline int hwCharge() const { return hwCharge_; };
    inline int hwChargeValid() const { return hwChargeValid_; };
    inline int tfMuonIndex() const { return tfMuonIndex_; };
    inline int hwTag() const { return hwTag_; };

    inline int hwEtaAtVtx() const { return hwEtaAtVtx_; };
    inline int hwPhiAtVtx() const { return hwPhiAtVtx_; };
    inline double etaAtVtx() const { return etaAtVtx_; };
    inline double phiAtVtx() const { return phiAtVtx_; };

    inline int hwIsoSum() const { return hwIsoSum_; };
    inline int hwDPhiExtra() const { return hwDPhiExtra_; };
    inline int hwDEtaExtra() const { return hwDEtaExtra_; };
    inline int hwRank() const { return hwRank_; };

    inline int hwPtUnconstrained() const { return hwPtUnconstrained_; };
    inline double ptUnconstrained() const { return ptUnconstrained_; };
    inline int hwDXY() const { return hwDXY_; };

    inline bool debug() const { return debug_; };

    bool operator==(const l1t::Muon& rhs) const;
    inline bool operator!=(const l1t::Muon& rhs) const { return !(operator==(rhs)); };

  private:
    using L1Candidate::operator==;
    using L1Candidate::operator!=;
    // additional hardware quantities common to L1 global jet
    int hwCharge_;
    int hwChargeValid_;
    int tfMuonIndex_;
    int hwTag_;

    // additional hardware quantities only available if debug flag is set
    bool debug_;
    int hwIsoSum_;
    int hwDPhiExtra_;
    int hwDEtaExtra_;
    int hwRank_;

    // muon coordinates at the vertex
    int hwEtaAtVtx_;
    int hwPhiAtVtx_;
    double etaAtVtx_;
    double phiAtVtx_;

    // displacement information
    int hwPtUnconstrained_;
    double ptUnconstrained_;
    int hwDXY_;
  };

}  // namespace l1t

#endif