File indexing completed on 2024-04-06 12:04:22
0001 #ifndef HLTReco_TriggerObject_h
0002 #define HLTReco_TriggerObject_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "DataFormats/Candidate/interface/Particle.h"
0015 #include <cmath>
0016 #include <vector>
0017
0018 namespace trigger {
0019
0020
0021 class TriggerObject {
0022
0023 private:
0024
0025 int id_;
0026
0027 float pt_, eta_, phi_, mass_;
0028
0029
0030 public:
0031
0032 TriggerObject() : id_(), pt_(), eta_(), phi_(), mass_() {}
0033 TriggerObject(int id, float pt, float eta, float phi, float mass)
0034 : id_(id), pt_(pt), eta_(eta), phi_(phi), mass_(mass) {}
0035
0036
0037 template <typename T>
0038 TriggerObject(int id, const T& o) : id_(id), pt_(o.pt()), eta_(o.eta()), phi_(o.phi()), mass_(o.mass()) {}
0039
0040 template <typename T>
0041 TriggerObject(const T& o) : id_(o.pdgId()), pt_(o.pt()), eta_(o.eta()), phi_(o.phi()), mass_(o.mass()) {}
0042
0043
0044 void setId(int id) { id_ = id; }
0045 void setPt(float pt) { pt_ = pt; }
0046 void setEta(float eta) { eta_ = eta; }
0047 void setPhi(float phi) { phi_ = phi; }
0048 void setMass(float mass) { mass_ = mass; }
0049
0050
0051 int id() const { return id_; }
0052 float pt() const { return pt_; }
0053 float eta() const { return eta_; }
0054 float phi() const { return phi_; }
0055 float mass() const { return mass_; }
0056
0057 float px() const { return pt_ * std::cos(phi_); }
0058 float py() const { return pt_ * std::sin(phi_); }
0059 float pz() const { return pt_ * std::sinh(eta_); }
0060 float p() const { return pt_ * std::cosh(eta_); }
0061 float energy() const { return std::sqrt(std::pow(mass_, 2) + std::pow(p(), 2)); }
0062
0063 float et() const { return std::sqrt(std::pow(mass_ / std::cosh(eta_), 2) + std::pow(pt_, 2)); }
0064
0065 reco::Particle particle(reco::Particle::Charge q = 0,
0066 const reco::Particle::Point& vertex = reco::Particle::Point(0, 0, 0),
0067 int status = 0,
0068 bool integerCharge = true) const {
0069 return reco::Particle(
0070 q, reco::Particle::LorentzVector(px(), py(), pz(), energy()), vertex, id(), status, integerCharge);
0071 }
0072 };
0073
0074
0075 typedef std::vector<TriggerObject> TriggerObjectCollection;
0076
0077 }
0078
0079 #endif