1 |
peiffer |
1.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 |
peiffer |
1.5 |
/**
|
17 |
|
|
* @short generic particle class
|
18 |
|
|
* @author Thomas Peiffer
|
19 |
|
|
*/
|
20 |
|
|
|
21 |
peiffer |
1.1 |
class Particle{
|
22 |
|
|
public:
|
23 |
peiffer |
1.5 |
/// Default constructor
|
24 |
peiffer |
1.1 |
Particle(){
|
25 |
|
|
m_charge=0;
|
26 |
|
|
m_pt=0;
|
27 |
|
|
m_eta=0;
|
28 |
|
|
m_phi=0;
|
29 |
|
|
m_energy=0;
|
30 |
|
|
};
|
31 |
peiffer |
1.5 |
/// Default destructor
|
32 |
peiffer |
1.1 |
~Particle(){
|
33 |
|
|
};
|
34 |
|
|
|
35 |
peiffer |
1.5 |
/// four-momentum
|
36 |
peiffer |
1.3 |
LorentzVector v4() const{
|
37 |
peiffer |
1.1 |
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 |
peiffer |
1.5 |
|
45 |
|
|
/// charge
|
46 |
peiffer |
1.2 |
float charge() const{return m_charge;}
|
47 |
peiffer |
1.5 |
/// transverse momentum
|
48 |
peiffer |
1.2 |
float pt() const {return m_pt;}
|
49 |
peiffer |
1.5 |
/// pseudo-rapidity
|
50 |
peiffer |
1.2 |
float eta() const{return m_eta;}
|
51 |
peiffer |
1.5 |
/// phi
|
52 |
peiffer |
1.2 |
float phi() const{return m_phi;}
|
53 |
peiffer |
1.5 |
///energy
|
54 |
peiffer |
1.2 |
float energy() const{return m_energy;}
|
55 |
peiffer |
1.1 |
|
56 |
peiffer |
1.5 |
/// set charge
|
57 |
peiffer |
1.1 |
void set_charge(float charge){m_charge=charge;}
|
58 |
peiffer |
1.5 |
/// set transverse momentum
|
59 |
peiffer |
1.1 |
void set_pt(float pt){m_pt=pt;}
|
60 |
peiffer |
1.5 |
/// set pseudo-rapidity
|
61 |
peiffer |
1.1 |
void set_eta(float eta){m_eta=eta;}
|
62 |
peiffer |
1.5 |
/// set phi
|
63 |
peiffer |
1.1 |
void set_phi(float phi){m_phi=phi;}
|
64 |
peiffer |
1.5 |
/// set energy
|
65 |
peiffer |
1.1 |
void set_energy(float energy){m_energy=energy;}
|
66 |
|
|
|
67 |
peiffer |
1.5 |
/// set four-momentum
|
68 |
peiffer |
1.3 |
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 |
peiffer |
1.5 |
/// distance in phi to particle p2
|
76 |
peiffer |
1.4 |
double deltaPhi(const Particle p2) const{
|
77 |
peiffer |
1.1 |
double deltaphi = fabs(this->phi() - p2.phi());
|
78 |
|
|
if(deltaphi > PI) deltaphi = 2* PI - deltaphi;
|
79 |
|
|
return deltaphi;
|
80 |
|
|
}
|
81 |
peiffer |
1.5 |
/// distance in eta-phi plane to particle p2
|
82 |
peiffer |
1.4 |
double deltaR(const Particle p2) const{
|
83 |
peiffer |
1.1 |
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
|