CMS 3D CMS Logo

Particle.h
Go to the documentation of this file.
1 #ifndef Candidate_Particle_h
2 #define Candidate_Particle_h
3 
13 #include "ParticleState.h"
14 namespace reco {
15 
16  class Particle {
17  public:
19  typedef int Charge;
28 
29  typedef unsigned int index;
30 
31 #if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
32  template<typename... Args>
33  explicit Particle(Args && ...args) :
34  m_state(std::forward<Args>(args)...) {}
35 
37 
38  Particle(Particle&&)=default;
39  Particle(Particle const&)=default;
40  Particle& operator=(Particle&&)=default;
41  Particle& operator=(Particle const&)=default;
42 #else
43  // for Reflex to parse... (compilation will use the above)
44  Particle();
45  Particle( Charge q, const PtEtaPhiMass & p4, const Point & vtx = Point( 0, 0, 0 ),
46  int pdgId = 0, int status = 0, bool integerCharge = true );
47  Particle( Charge q, const LorentzVector & p4, const Point & vtx = Point( 0, 0, 0 ),
48  int pdgId = 0, int status = 0, bool integerCharge = true );
49  Particle( Charge q, const PolarLorentzVector & p4, const Point & vtx = Point( 0, 0, 0 ),
50  int pdgId = 0, int status = 0, bool integerCharge = true );
51  Particle( Charge q, const GlobalVector & p3, float iEnergy, float imass, const Point & vtx = Point( 0, 0, 0 ),
52  int pdgId = 0, int status = 0, bool integerCharge = true );
53 #endif
54 
55  void construct(int qx3, float pt, float eta, float phi, float mass, const Point & vtx, int pdgId, int status) {
56  m_state = ParticleState(qx3, PolarLorentzVector(pt,eta,phi,mass), vtx, pdgId, status, false);
57  }
58 
60  virtual ~Particle(){}
61 
62 
64  int charge() const { return m_state.charge(); }
66  void setCharge( Charge q ) { m_state.setCharge(q); }
68  int threeCharge() const { return m_state.threeCharge(); }
70  void setThreeCharge( Charge qx3 ) {m_state.setThreeCharge(qx3); }
72  const LorentzVector & p4() const { return m_state.p4(); }
74  const PolarLorentzVector & polarP4() const { return m_state.polarP4(); }
76  Vector momentum() const { return m_state.momentum(); }
79  Vector boostToCM() const { return m_state.boostToCM(); }
81  double p() const { return m_state.p(); }
83  double energy() const { return m_state.energy(); }
85  double et() const { return m_state.et(); }
87  double et2() const { return m_state.et2(); }
89  double mass() const { return m_state.mass(); }
91  double massSqr() const { return mass() * mass(); }
92 
94  double mt() const { return m_state.mt(); }
96  double mtSqr() const { return m_state.mtSqr(); }
98  double px() const { return m_state.px(); }
100  double py() const { return m_state.py(); }
102  double pz() const { return m_state.pz(); }
104  double pt() const { return m_state.pt();}
106  double phi() const { return m_state.phi(); }
108  double theta() const { return m_state.theta(); }
110  double eta() const { return m_state.eta(); }
112  double rapidity() const { return m_state.rapidity(); }
114  double y() const { return rapidity(); }
116  void setP4( const LorentzVector & p4 ) { m_state.setP4(p4);}
118  void setP4( const PolarLorentzVector & p4 ) {m_state.setP4(p4); }
120  void setMass( double m ) {m_state.setMass(m);}
121  void setPz( double pz ) { m_state.setPz(pz);}
123  const Point & vertex() const { return m_state.vertex(); }
125  double vx() const { return m_state.vx(); }
127  double vy() const { return m_state.vy(); }
129  double vz() const { return m_state.vz(); }
131  void setVertex( const Point & vertex ) { m_state.setVertex(vertex); }
132 
134  int pdgId() const { return m_state.pdgId(); }
135  // set PDG identifier
136  void setPdgId( int pdgId ) { m_state.setPdgId(pdgId); }
138  int status() const { return m_state.status(); }
140  void setStatus( int status ) { m_state.setStatus(status); }
145  bool longLived() const { return m_state.longLived(); }
150  bool massConstraint() const { return m_state.massConstraint(); }
151 
152  private:
154 
155 
156  };
157 
158 }
159 
160 #endif
double rapidity() const
repidity
int status() const
status word
Definition: Particle.h:138
double mtSqr() const
transverse mass squared
Definition: Particle.h:96
bool longLived() const
is long lived?
Definition: Particle.h:145
double px() const
x coordinate of momentum vector
double energy() const
energy
Definition: Particle.h:83
double pt() const
transverse momentum
Definition: Particle.h:104
const PolarLorentzVector & polarP4() const
four-momentum Lorentz vector
Definition: Particle.h:74
double rapidity() const
rapidity
Definition: Particle.h:112
void setP4(const LorentzVector &p4)
set 4-momentum
Definition: Particle.h:116
int pdgId() const
PDG identifier.
double et2() const
transverse energy squared (use this for cut!)
Definition: Particle.h:87
double theta() const
momentum polar angle
double pz() const
z coordinate of momentum vector
int threeCharge() const
electric charge
Definition: ParticleState.h:76
Particle(Particle &rh)
Definition: Particle.h:36
void setVertex(const Point &vertex)
set vertex
Definition: Particle.h:131
double y() const
rapidity
Definition: Particle.h:114
void setMassConstraint()
set mass constraint flag
double vz() const
z coordinate of vertex position
Definition: Particle.h:129
int Charge
electric charge type
Definition: Particle.h:19
double energy() const
energy
Definition: ParticleState.h:91
void setPdgId(int pdgId)
double pz() const
z coordinate of momentum vector
Definition: Particle.h:102
int threeCharge() const
electric charge
Definition: Particle.h:68
void setPz(double pz)
const LorentzVector & p4() const
four-momentum Lorentz vector
Definition: Particle.h:72
void setP4(const PolarLorentzVector &p4)
set 4-momentum
Definition: Particle.h:118
unsigned int index
Definition: Particle.h:29
int pdgId() const
PDG identifier.
Definition: Particle.h:134
void setPz(double pz)
Definition: Particle.h:121
double phi() const
momentum azimuthal angle
const Point & vertex() const
vertex position (overwritten by PF...)
Definition: Particle.h:123
bool massConstraint() const
do mass constraint?
const LorentzVector & p4() const
four-momentum Lorentz vector
Definition: ParticleState.h:80
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:25
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
double pt() const
transverse momentum
void setStatus(int status)
set status word
Particle(Args &&...args)
Definition: Particle.h:33
double phi() const
momentum azimuthal angle
Definition: Particle.h:106
double mass() const
mass
Definition: Particle.h:89
double mt() const
transverse mass
double mass() const
mass
Definition: ParticleState.h:97
void setLongLived()
Definition: Particle.h:143
bool longLived() const
is long lived?
void setCharge(Charge q)
set electric charge
Definition: Particle.h:66
void setVertex(const Point &vertex)
set vertex
double mtSqr() const
transverse mass squared
double massSqr() const
mass squared
Definition: Particle.h:91
math::XYZPoint Point
point in the space
Definition: Particle.h:25
Vector boostToCM() const
Definition: ParticleState.h:87
void setThreeCharge(Charge qx3)
set electric charge
Definition: ParticleState.h:78
bool massConstraint() const
do mass constraint?
Definition: Particle.h:150
double et2() const
transverse energy squared (use this for cuts)!
Definition: ParticleState.h:95
Vector boostToCM() const
Definition: Particle.h:79
int charge() const
electric charge
Definition: Particle.h:64
void setLongLived()
set long lived flag
const PolarLorentzVector & polarP4() const
four-momentum Lorentz vector
Definition: ParticleState.h:82
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
Definition: Vector3D.h:27
double et() const
transverse energy
Definition: ParticleState.h:93
double vy() const
y coordinate of vertex position
double vx() const
x coordinate of vertex position
Definition: Particle.h:125
double vz() const
z coordinate of vertex position
int charge() const
electric charge
Definition: ParticleState.h:72
Vector momentum() const
spatial momentum vector
Definition: Particle.h:76
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
void construct(int qx3, float pt, float eta, float phi, float mass, const Point &vtx, int pdgId, int status)
Definition: Particle.h:55
int status() const
status word
const Point & vertex() const
vertex position
void setPdgId(int pdgId)
Definition: Particle.h:136
void setMass(double m)
set particle mass
Definition: Particle.h:120
double theta() const
momentum polar angle
Definition: Particle.h:108
virtual ~Particle()
destructor
Definition: Particle.h:60
double et() const
transverse energy
Definition: Particle.h:85
fixed size matrix
math::XYZVector Vector
point in the space
Definition: Particle.h:27
Vector momentum() const
spatial momentum vector
Definition: ParticleState.h:84
void setThreeCharge(Charge qx3)
set electric charge
Definition: Particle.h:70
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Definition: Particle.h:23
ParticleState m_state
Definition: Particle.h:153
double eta() const
momentum pseudorapidity
void setP4(const LorentzVector &p4)
set 4-momentum
double py() const
y coordinate of momentum vector
Definition: Particle.h:100
void setMassConstraint()
Definition: Particle.h:148
double p() const
magnitude of momentum vector
Definition: Particle.h:81
double eta() const
momentum pseudorapidity
Definition: Particle.h:110
double px() const
x coordinate of momentum vector
Definition: Particle.h:98
Particle & operator=(Particle &&)=default
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
double vy() const
y coordinate of vertex position
Definition: Particle.h:127
double p() const
magnitude of momentum vector
Definition: ParticleState.h:89
double py() const
y coordinate of momentum vector
void setCharge(Charge q)
set electric charge
Definition: ParticleState.h:74
void setStatus(int status)
set status word
Definition: Particle.h:140
double mt() const
transverse mass
Definition: Particle.h:94
double vx() const
x coordinate of vertex position
double p3[4]
Definition: TauolaWrapper.h:91
void setMass(double m)
set particle mass