FastJet
3.5.2
Toggle main menu visibility
Loading...
Searching...
No Matches
plugins
D0RunICone
inline_maths.h
1
#ifndef INLINE_MATHS
2
#define INLINE_MATHS
3
4
// This file is distributed with FastJet under the terms of the GNU
5
// General Public License (v2). Permission to do so has been granted
6
// by Lars Sonnenschein and the D0 collaboration (see COPYING for
7
// details)
8
//
9
// History of changes in FastJet compared tothe original version of
10
// inline_math.h
11
//
12
// 2011-12-13 Gregory Soyez <soyez@fastjet.fr>
13
//
14
// * added license information
15
//
16
// 2011-10-06 Gregory Soyez <soyez@fastjet.fr>
17
//
18
// * put the code in the fastjet::d0runi namespace
19
20
#include <cmath>
21
#include <cerrno>
22
#include <fastjet/internal/base.hh>
23
24
FASTJET_BEGIN_NAMESPACE
25
26
//using namespace std;
27
28
namespace
d0runi{
29
namespace
inline_maths {
30
31
const
double
PI = fabs(acos(-1.));
32
33
const
double
TWOPI = 2*PI;
34
35
36
inline
double
sqr(
double
a) {
37
return
a*a;
38
}
39
40
41
42
inline
double
min(
double
a,
double
b) {
43
return
(a < b) ? a : b;
44
}
45
46
47
48
inline
double
delta_phi(
double
phi1,
double
phi2) {
49
double
dphi = min(
double
(fabs(phi1-phi2)),
double
(2.*PI-fabs(phi1-phi2)) );
50
return
(phi1 < phi2) ? -dphi : dphi;
51
}
52
53
54
55
inline
double
phi(
double
px,
double
py) {
56
return
atan2(py, px);
57
}
58
59
60
61
inline
double
y(
double
E,
double
pz) {
62
errno=0;
63
double
y;
64
//cout << "inline_maths: ";
65
if
(fabs(E-pz) == 0.) {
66
// cout << "Error in header mathe.h: division by 0 in function y!" << " p=" << p << " pz=" << pz << endl;
67
// exit(721);
68
errno=721;
69
y = 99999.;
70
}
71
else
{
72
y = 0.5*log((E+pz)/(E-pz));
73
}
74
//cout << "y: E=" << E << " pz=" << pz << " y=" << y << endl;
75
return
y;
76
}
77
78
79
80
81
inline
double
eta(
double
p,
double
pz) {
82
errno=0;
83
double
eta;
84
//cout << "inline_maths: ";
85
if
(fabs(p-pz) == 0.) {
86
// cout << "Error in header mathe.h: division by 0 in function eta!" << " p=" << p << " pz=" << pz << endl;
87
// exit(721);
88
errno=721;
89
eta = 99999.;
90
}
91
else
{
92
eta = 0.5*log((p+pz)/(p-pz));
93
}
94
//cout << "eta: p=" << p << " pz=" << pz << " eta=" << eta << endl;
95
return
eta;
96
}
97
98
99
100
101
inline
double
eta(
double
px,
double
py,
double
pz) {
102
errno=0;
103
double
eta;
104
//cout << "inline_maths: ";
105
double
p = sqrt(px*px+py*py+pz*pz);
106
if
(fabs(p-pz) == 0.) {
107
// cout << "Error in header mathe.h: division by 0 in function eta!" << " p=" << p << " pz=" << pz << endl;
108
// exit(721);
109
errno=721;
110
eta = 99999.;
111
}
112
else
{
113
eta = 0.5*log((p+pz)/(p-pz));
114
}
115
//cout << "eta: p=" << p << " pz=" << pz << " eta=" << eta << endl;
116
return
eta;
117
}
118
119
120
121
inline
double
eta(
double
theta) {
122
double
eta = -log(tan(theta/2.));
123
124
return
eta;
125
}
126
127
128
inline
double
theta
(
double
eta) {
129
double
theta
= 2.*atan(exp(-eta));
130
131
return
theta
;
132
}
133
134
inline
double
theta
(
double
px,
double
py,
double
pz) {
135
double
Eta = eta(px, py, pz);
136
double
theta
= 2.*atan(exp(-Eta));
137
138
return
theta
;
139
}
140
141
142
143
}
//end usename inline_maths
144
}
//end usename d0runi
145
146
FASTJET_END_NAMESPACE
147
148
149
#endif
fastjet::theta
double theta(const PseudoJet &a, const PseudoJet &b)
returns the angle between a and b
Definition
PseudoJet.hh:950
Generated on
for FastJet by
1.18.0