1 |
#ifndef Particle_H
|
2 |
#define Particle_H
|
3 |
|
4 |
#include <vector>
|
5 |
#include "Math/LorentzVector.h"
|
6 |
#include "Math/PtEtaPhiE4D.h"
|
7 |
#include "TObject.h"
|
8 |
|
9 |
|
10 |
#ifndef PI
|
11 |
#define PI 3.14159265358979323846264338328
|
12 |
#endif
|
13 |
|
14 |
typedef ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiE4D< Double32_t > > LorentzVector;
|
15 |
|
16 |
/**
|
17 |
* @short generic particle class
|
18 |
* @author Thomas Peiffer
|
19 |
*/
|
20 |
|
21 |
class Particle{
|
22 |
public:
|
23 |
/// Default constructor
|
24 |
Particle(){
|
25 |
m_charge=0;
|
26 |
m_pt=0;
|
27 |
m_eta=0;
|
28 |
m_phi=0;
|
29 |
m_energy=0;
|
30 |
};
|
31 |
/// Default destructor
|
32 |
~Particle(){
|
33 |
};
|
34 |
|
35 |
/// four-momentum
|
36 |
LorentzVector v4() const{
|
37 |
LorentzVector v4;
|
38 |
v4.SetPt(m_pt);
|
39 |
v4.SetEta(m_eta);
|
40 |
v4.SetPhi(m_phi);
|
41 |
v4.SetE(m_energy);
|
42 |
return v4;
|
43 |
};
|
44 |
|
45 |
/// charge
|
46 |
float charge() const{return m_charge;}
|
47 |
/// transverse momentum
|
48 |
float pt() const {return m_pt;}
|
49 |
/// pseudo-rapidity
|
50 |
float eta() const{return m_eta;}
|
51 |
/// phi
|
52 |
float phi() const{return m_phi;}
|
53 |
///energy
|
54 |
float energy() const{return m_energy;}
|
55 |
|
56 |
/// set charge
|
57 |
void set_charge(float charge){m_charge=charge;}
|
58 |
/// set transverse momentum
|
59 |
void set_pt(float pt){m_pt=pt;}
|
60 |
/// set pseudo-rapidity
|
61 |
void set_eta(float eta){m_eta=eta;}
|
62 |
/// set phi
|
63 |
void set_phi(float phi){m_phi=phi;}
|
64 |
/// set energy
|
65 |
void set_energy(float energy){m_energy=energy;}
|
66 |
|
67 |
/// set four-momentum
|
68 |
void set_v4(LorentzVector v4){
|
69 |
set_pt(v4.Pt());
|
70 |
set_eta(v4.Eta());
|
71 |
set_phi(v4.Phi());
|
72 |
set_energy(v4.E());
|
73 |
}
|
74 |
|
75 |
/// distance in phi to particle p2
|
76 |
double deltaPhi(const Particle p2) const{
|
77 |
double deltaphi = fabs(this->phi() - p2.phi());
|
78 |
if(deltaphi > PI) deltaphi = 2* PI - deltaphi;
|
79 |
return deltaphi;
|
80 |
}
|
81 |
/// distance in eta-phi plane to particle p2
|
82 |
double deltaR(const Particle p2) const{
|
83 |
double deltaeta = this->eta() - p2.eta();
|
84 |
return sqrt(deltaeta*deltaeta+deltaPhi(p2)*deltaPhi(p2));
|
85 |
}
|
86 |
|
87 |
private:
|
88 |
|
89 |
float m_charge;
|
90 |
float m_pt;
|
91 |
float m_eta;
|
92 |
float m_phi;
|
93 |
float m_energy;
|
94 |
|
95 |
};
|
96 |
|
97 |
#endif
|