CMS 3D CMS Logo

TriggerObject.h
Go to the documentation of this file.
1 #ifndef HLTReco_TriggerObject_h
2 #define HLTReco_TriggerObject_h
3 
15 #include <cmath>
16 #include <vector>
17 
18 namespace trigger
19 {
20 
22  class TriggerObject {
23 
25  private:
27  int id_;
29  float pt_, eta_, phi_, mass_;
30 
32  public:
34  TriggerObject(): id_(), pt_(), eta_(), phi_(), mass_() { }
35  TriggerObject(int id, float pt, float eta, float phi, float mass):
36  id_(id), pt_(pt), eta_(eta), phi_(phi), mass_(mass) { }
37 
39  template <typename T>
40  TriggerObject(int id, const T& o):
41  id_(id), pt_(o.pt()), eta_(o.eta()), phi_(o.phi()), mass_(o.mass()) { }
43  template <typename T>
44  TriggerObject(const T& o):
45  id_(o.pdgId()), pt_(o.pt()), eta_(o.eta()), phi_(o.phi()), mass_(o.mass()) { }
46 
48  void setId (int id) {id_ =id;}
49  void setPt (float pt) {pt_ =pt;}
50  void setEta (float eta) {eta_ =eta;}
51  void setPhi (float phi) {phi_ =phi;}
52  void setMass(float mass) {mass_=mass;}
53 
55  int id() const {return id_;}
56  float pt() const {return pt_;}
57  float eta() const {return eta_;}
58  float phi() const {return phi_;}
59  float mass() const {return mass_;}
60 
61  float px() const {return pt_*std::cos(phi_);}
62  float py() const {return pt_*std::sin(phi_);}
63  float pz() const {return pt_*std::sinh(eta_);}
64  float p () const {return pt_*std::cosh(eta_);}
65  float energy() const {return std::sqrt(std::pow(mass_,2)+std::pow(p(),2));}
66  // et = energy/cosh(eta)
67  float et() const {return std::sqrt(std::pow(mass_/std::cosh(eta_),2)+std::pow(pt_,2));}
68 
70  const reco::Particle::Point & vertex = reco::Particle::Point(0,0,0),
71  int status=0, bool integerCharge=true) const {
72  return reco::Particle(q,
74  vertex,id(),status,integerCharge);
75  }
76 
77  };
78 
79 
81  typedef std::vector<TriggerObject> TriggerObjectCollection;
82 
83 }
84 
85 #endif
int id() const
getters
Definition: TriggerObject.h:55
float phi() const
Definition: TriggerObject.h:58
void setPt(float pt)
Definition: TriggerObject.h:49
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
reco::Particle particle(reco::Particle::Charge q=0, const reco::Particle::Point &vertex=reco::Particle::Point(0, 0, 0), int status=0, bool integerCharge=true) const
Definition: TriggerObject.h:69
float energy() const
Definition: TriggerObject.h:65
int Charge
electric charge type
Definition: Particle.h:19
float eta() const
Definition: TriggerObject.h:57
void setEta(float eta)
Definition: TriggerObject.h:50
void setId(int id)
setters
Definition: TriggerObject.h:48
T sqrt(T t)
Definition: SSEVec.h:18
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
math::XYZPoint Point
point in the space
Definition: Particle.h:25
void setPhi(float phi)
Definition: TriggerObject.h:51
void setMass(float mass)
Definition: TriggerObject.h:52
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:81
TriggerObject(int id, float pt, float eta, float phi, float mass)
Definition: TriggerObject.h:35
TriggerObject(const T &o)
... and pdgId()
Definition: TriggerObject.h:44
int id_
data members - similar to DataFormats/Candidate/interface/Particle.h
Definition: TriggerObject.h:27
float mass() const
Definition: TriggerObject.h:59
long double T
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
TriggerObject(int id, const T &o)
any type T object implementing the methods pt(), eta(), phi(), mass()
Definition: TriggerObject.h:40
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
float pt_
4-momentum of physics object
Definition: TriggerObject.h:29