ROOTPWA
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
pwa2000
libpp
pwa2000/libpp/particle.h
Go to the documentation of this file.
1
#ifndef __PARTICLE_H_
2
#define __PARTICLE_H_
3
4
5
#include <list>
6
#include <string>
7
#include <complex>
8
9
#include "
Vec.h
"
10
#include "
lorentz.h
"
11
#include "
particleData.h
"
12
13
14
class
massDep
;
15
class
event
;
16
class
decay
;
17
18
19
class
particle
:
public
particleData
{
20
21
public
:
22
23
particle
();
24
particle
(
const
particle
&
p
);
25
particle
(
const
particleData
& data,
const
int
charge);
26
virtual
~particle
();
27
28
particle
&
operator =
(
const
particle
& p);
29
int
operator ==
(
const
particle
& p) {
return
Mass
() == p.
Mass
(); }
30
int
operator !=
(
const
particle
& p) {
return
Mass
() != p.
Mass
(); }
31
int
operator <
(
const
particle
& p) {
return
Mass
() < p.
Mass
(); }
32
particle
&
operator *=
(
const
lorentzTransform
& L);
33
friend
particle
operator *
(
const
lorentzTransform
& L,
34
const
particle
& p);
35
36
particle
&
setCharge
(
const
int
charge);
37
particle
&
set4P
(
const
fourVec
& p4);
38
particle
&
set3P
(
const
threeVec
& p3);
39
particle
&
Index
(
const
int
i
);
40
particle
&
setDecay
(
const
decay
&
d
);
41
particle
&
setMassDep
(
massDep
* md);
42
43
decay
*
Decay
()
const
{
return
_decay
; }
44
int
Stable
()
const
{
return
(
_decay
) ? 0 : 1; }
45
threeVec
get3P
()
const
{
return
_p
.
V
(); }
46
int
Index
()
const
{
return
_index
; }
47
int
Charge
()
const
{
return
_charge
; }
48
fourVec
get4P
()
const
{
return
_p
; }
49
fourVec
*
get4P
(
particle
* p,
50
const
int
debug
= 0);
51
52
std::list<int>&
helicities
();
53
particle
&
addHelicity
(
const
int
lam);
54
55
int
is
(
const
std::string& name)
const
;
56
57
fourVec
setupFrames
(
const
int
debug
= 0);
58
59
double
q
()
const
;
60
double
q0
()
const
;
61
62
std::complex<double>
breitWigner
()
const
;
63
64
std::complex<double>
decayAmp
(
const
int
lambda
,
65
const
int
debug
= 0);
66
67
std::string
sprint
(
const
std::string& space =
" "
)
const
;
68
void
print
()
const
;
69
void
printFrames
()
const
;
70
71
static
void
debug
(
const
int
d
= 1) {
_particle_debug
=
d
; }
72
73
private
:
74
75
static
int
_particle_debug
;
76
int
_lambda
;
77
int
_charge
;
78
fourVec
_p
;
79
decay
*
_decay
;
80
int
_index
;
81
std::list<int>
_helicities
;
82
int
_inRestFrame
;
83
massDep
*
_massDep
;
84
85
};
86
87
88
class
decay
{
89
90
public
:
91
92
decay
();
93
decay
(
const
decay
&);
94
virtual
~decay
();
95
96
decay
&
addChild
(
const
particle
&
p
);
97
decay
&
setL
(
const
int
l);
98
decay
&
setS
(
const
int
s);
99
decay
&
calculateS
();
100
101
int
L
()
const
{
return
_l
; }
102
int
S
()
const
{
return
_s
; }
103
fourVec
*
get4P
(
particle
* part,
104
const
int
debug
= 0);
105
106
decay
&
operator =
(
const
decay
&
d
);
107
decay
&
operator *=
(
const
lorentzTransform
&
L
);
108
109
fourVec
fill
(
const
event
& e,
110
const
int
debug
= 0);
111
112
decay
&
setupFrames
(
const
lorentzTransform
& T,
113
const
int
debug
= 0);
114
115
std::complex<double>
expt_amp
(
const
double
b,
116
const
double
t,
117
const
int
debug
= 0);
118
119
std::complex<double>
amp
(
const
int
j,
120
const
int
m,
121
const
int
debug
= 0);
122
123
void
print
()
const
;
124
void
printFrames
()
const
;
125
126
void
debug
(
const
int
d
= 1) {
_decay_debug
=
d
; }
127
128
std::list<particle>
_children
;
129
130
private
:
131
132
void
_init
(
const
std::list<particle>& children,
133
const
int
l,
134
const
int
s,
135
const
double
mass
);
136
137
static
int
_decay_debug
;
138
std::list<particle>
_childrenInFrames
;
139
int
_l
;
140
int
_s
;
141
double
_mass
;
142
143
};
144
145
146
#define _PARTICLE_H
147
#endif
Generated by
1.8.1.2