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 |
class Particle{
|
17 |
public:
|
18 |
Particle(){
|
19 |
m_charge=0;
|
20 |
m_pt=0;
|
21 |
m_eta=0;
|
22 |
m_phi=0;
|
23 |
m_energy=0;
|
24 |
};
|
25 |
|
26 |
~Particle(){
|
27 |
};
|
28 |
|
29 |
LorentzVector v4(){
|
30 |
LorentzVector v4;
|
31 |
v4.SetPt(m_pt);
|
32 |
v4.SetEta(m_eta);
|
33 |
v4.SetPhi(m_phi);
|
34 |
v4.SetE(m_energy);
|
35 |
return v4;
|
36 |
};
|
37 |
|
38 |
float charge() const{return m_charge;}
|
39 |
float pt() const {return m_pt;}
|
40 |
float eta() const{return m_eta;}
|
41 |
float phi() const{return m_phi;}
|
42 |
float energy() const{return m_energy;}
|
43 |
|
44 |
void set_charge(float charge){m_charge=charge;}
|
45 |
void set_pt(float pt){m_pt=pt;}
|
46 |
void set_eta(float eta){m_eta=eta;}
|
47 |
void set_phi(float phi){m_phi=phi;}
|
48 |
void set_energy(float energy){m_energy=energy;}
|
49 |
|
50 |
double deltaPhi(Particle p2){
|
51 |
double deltaphi = fabs(this->phi() - p2.phi());
|
52 |
if(deltaphi > PI) deltaphi = 2* PI - deltaphi;
|
53 |
return deltaphi;
|
54 |
}
|
55 |
double deltaR(Particle p2){
|
56 |
double deltaeta = this->eta() - p2.eta();
|
57 |
return sqrt(deltaeta*deltaeta+deltaPhi(p2)*deltaPhi(p2));
|
58 |
}
|
59 |
|
60 |
private:
|
61 |
|
62 |
float m_charge;
|
63 |
float m_pt;
|
64 |
float m_eta;
|
65 |
float m_phi;
|
66 |
float m_energy;
|
67 |
|
68 |
};
|
69 |
|
70 |
#endif
|