ROOTPWA
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
amplitude
isobarAmplitude.h
Go to the documentation of this file.
1
2
//
3
// Copyright 2010
4
//
5
// This file is part of rootpwa
6
//
7
// rootpwa is free software: you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation, either version 3 of the License, or
10
// (at your option) any later version.
11
//
12
// rootpwa is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
16
//
17
// You should have received a copy of the GNU General Public License
18
// along with rootpwa. If not, see <http://www.gnu.org/licenses/>.
19
//
21
//-------------------------------------------------------------------------
22
// File and Version Information:
23
// $Rev:: $: revision of last commit
24
// $Author:: $: author of last commit
25
// $Date:: $: date of last commit
26
//
27
// Description:
28
// virtual base class for isobar decay amplitude independent of formalism
29
//
30
//
31
// Author List:
32
// Boris Grube TUM (original author)
33
//
34
//
35
//-------------------------------------------------------------------------
36
37
38
#ifndef ISOBARAMPLITUDE_H
39
#define ISOBARAMPLITUDE_H
40
41
42
#include <complex>
43
#include <map>
44
#include <vector>
45
46
#include "
isobarDecayTopology.h
"
47
48
49
namespace
rpwa {
50
51
52
class
isobarAmplitude
;
53
typedef
boost::shared_ptr<rpwa::isobarAmplitude>
isobarAmplitudePtr
;
54
55
56
class
isobarAmplitude
{
57
58
public
:
59
60
isobarAmplitude
();
61
isobarAmplitude
(
const
isobarDecayTopologyPtr
&
decay
);
62
virtual
~isobarAmplitude
();
63
64
const
isobarDecayTopologyPtr
&
decayTopology
()
const
{
return
_decay
; }
65
void
setDecayTopology
(
const
isobarDecayTopologyPtr
& decay);
66
67
virtual
void
init
();
68
69
bool
reflectivityBasis
()
const
{
return
_useReflectivityBasis
; }
70
bool
boseSymmetrization
()
const
{
return
_boseSymmetrize
; }
71
bool
isospinSymmetrization
()
const
{
return
_isospinSymmetrize
; }
72
void
enableReflectivityBasis
(
const
bool
flag =
true
) {
_useReflectivityBasis
= flag; }
73
void
enableBoseSymmetrization
(
const
bool
flag =
true
) {
_boseSymmetrize
= flag; }
74
void
enableIsospinSymmetrization
(
const
bool
flag =
true
) {
_isospinSymmetrize
= flag; }
75
76
bool
doSpaceInversion
()
const
{
return
_doSpaceInversion
; }
77
bool
doReflection
()
const
{
return
_doReflection
; }
78
void
enableSpaceInversion
(
const
bool
flag =
true
) {
_doSpaceInversion
= flag; }
79
void
enableReflection
(
const
bool
flag =
true
) {
_doReflection
= flag; }
80
81
static
TLorentzRotation
gjTransform
(
const
TLorentzVector& beamLv,
82
const
TLorentzVector& XLv);
83
84
std::complex<double>
amplitude
()
const
;
85
std::complex<double>
operator ()
()
const
{
return
amplitude
(); }
86
87
virtual
std::string
name
()
const
{
return
"isobarAmplitude"
; }
88
virtual
std::ostream&
printParameters
(std::ostream& out)
const
;
89
virtual
std::ostream&
print
(std::ostream& out)
const
;
90
91
static
bool
debug
() {
return
_debug
; }
92
static
void
setDebug
(
const
bool
debug
=
true
) {
_debug
=
debug
; }
93
94
95
protected
:
96
97
void
spaceInvertDecay
()
const
;
98
void
reflectDecay
()
const
;
99
100
virtual
void
transformDaughters
()
const
= 0;
101
102
virtual
std::complex<double>
twoBodyDecayAmplitude
103
(
const
isobarDecayVertexPtr
& vertex,
104
const
bool
topVertex)
const
= 0;
105
106
virtual
std::complex<double>
twoBodyDecayAmplitudeSum
107
(
const
isobarDecayVertexPtr
& vertex,
108
const
bool
topVertex =
false
)
const
;
109
110
virtual
std::complex<double>
symTermAmp
(
const
std::vector<unsigned int>& fsPartPermMap)
const
;
111
112
virtual
bool
initSymTermMaps
();
113
114
isobarDecayTopologyPtr
_decay
;
115
bool
_useReflectivityBasis
;
116
bool
_boseSymmetrize
;
117
bool
_isospinSymmetrize
;
118
bool
_doSpaceInversion
;
119
bool
_doReflection
;
120
std::vector<symTermMap>
_symTermMaps
;
121
122
static
bool
_debug
;
123
124
};
125
126
127
inline
128
std::ostream&
129
operator <<
(std::ostream& out,
130
const
isobarAmplitude
& amp)
131
{
132
return
amp.
print
(out);
133
}
134
135
136
}
// namespace rpwa
137
138
139
#endif // ISOBARAMPLITUDE_H
Generated by
1.8.1.2