thepeg
is hosted by
Hepforge
,
IPPP Durham
ThePEG
2.3.0
Helicity
WaveFunction
TensorWaveFunction.h
1
// -*- C++ -*-
2
//
3
// TensorWaveFunction.h is a part of ThePEG - Toolkit for HEP Event Generation
4
// Copyright (C) 2003-2019 Peter Richardson, Leif Lonnblad
5
//
6
// ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8
//
9
#ifndef ThePEG_TensorWaveFunction_H
10
#define ThePEG_TensorWaveFunction_H
11
//
12
// This is the declaration of the TensorWaveFunction class.
13
//
14
#include "WaveFunctionBase.h"
15
#include "VectorWaveFunction.h"
16
#include <ThePEG/Helicity/LorentzTensor.h>
17
#include <ThePEG/Helicity/TensorSpinInfo.h>
18
#include <ThePEG/EventRecord/Particle.h>
19
#include <ThePEG/EventRecord/RhoDMatrix.h>
20
21
namespace
ThePEG
{
22
namespace
Helicity {
23
28
enum
TensorPhase
{
29
tensor_phase
,
30
tensor_nophase
,
31
default_tensor_phase
=
tensor_nophase
32
};
33
67
class
TensorWaveFunction
:
public
WaveFunctionBase
{
68
69
public
:
70
81
TensorWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
82
const
LorentzTensor<double>
&
wave
,
83
Direction
dir=
intermediate
)
84
:
WaveFunctionBase
(p,part,dir),
_wf
(
wave
)
85
{
86
assert(
iSpin
()==
PDT::Spin2
);
87
}
88
110
TensorWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
111
Complex
xx
,
Complex
xy
,
Complex
xz
,
Complex
xt
,
Complex
yx
,
112
Complex
yy
,
Complex
yz
,
Complex
yt
,
Complex
zx
,
Complex
zy
,
113
Complex
zz
,
Complex
zt
,
Complex
tx
,
Complex
ty
,
Complex
tz
,
114
Complex
tt
)
115
:
WaveFunctionBase
(p,part),
_wf
(
xx
,
xy
,
xz
,
xt
,
116
yx
,
yy
,
yz
,
yt
,
117
zx
,
zy
,
zz
,
zt
,
118
tx
,
ty
,
tz
,
tt
)
119
{
120
assert(
iSpin
()==
PDT::Spin2
);
121
}
122
131
TensorWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
132
unsigned
int
ihel,
Direction
dir,
133
TensorPhase
phase=
default_tensor_phase
)
134
:
WaveFunctionBase
(p,part,dir)
135
{
136
assert(
iSpin
()==
PDT::Spin2
);
137
calculateWaveFunction
(ihel,phase);
138
}
139
146
TensorWaveFunction
(
const
Lorentz5Momentum
& p,
147
tcPDPtr
part,
Direction
dir)
148
:
WaveFunctionBase
(p,part,dir),
_wf
()
149
{
150
assert(
iSpin
()==
PDT::Spin2
);
151
}
152
156
TensorWaveFunction
() {}
157
161
TensorWaveFunction
(vector<TensorWaveFunction> &
wave
,
162
tPPtr
part,
Direction
dir,
bool
time,
bool
massless,
163
bool
=
true
,
164
TensorPhase
phase=
default_tensor_phase
) {
165
calculateWaveFunctions
(
wave
,part,dir,massless,phase);
166
constructSpinInfo
(
wave
,part,dir,time,massless);
167
}
169
177
Complex
operator ()
(
int
i,
int
j)
const
{
178
return
_wf
(i,j);
179
}
180
184
Complex
&
operator ()
(
int
i,
int
j) {
185
return
_wf
(i,j);
186
}
187
191
const
LorentzTensor<double>
&
wave
()
const
{
return
_wf
;}
192
196
Complex
xx
()
const
{
return
_wf
.
xx
();}
197
201
Complex
yx
()
const
{
return
_wf
.
yx
();}
202
206
Complex
zx
()
const
{
return
_wf
.
zx
();}
207
211
Complex
tx
()
const
{
return
_wf
.
tx
();}
212
216
Complex
xy
()
const
{
return
_wf
.
xy
();}
217
221
Complex
yy
()
const
{
return
_wf
.
yy
();}
222
226
Complex
zy
()
const
{
return
_wf
.
zy
();}
227
231
Complex
ty
()
const
{
return
_wf
.
ty
();}
232
236
Complex
xz
()
const
{
return
_wf
.
xz
();}
237
241
Complex
yz
()
const
{
return
_wf
.
yz
();}
242
246
Complex
zz
()
const
{
return
_wf
.
zz
();}
247
251
Complex
tz
()
const
{
return
_wf
.
tz
();}
252
256
Complex
xt
()
const
{
return
_wf
.
xt
();}
257
261
Complex
yt
()
const
{
return
_wf
.
yt
();}
262
266
Complex
zt
()
const
{
return
_wf
.
zt
();}
267
271
Complex
tt
()
const
{
return
_wf
.
tt
();}
273
278
284
void
reset
(
unsigned
int
ihel,
TensorPhase
phase=
default_tensor_phase
) {
285
calculateWaveFunction
(ihel,phase);
286
}
288
289
public
:
290
294
void
transform
(
const
LorentzRotation
& r) {
295
_wf
.
transform
(r);
296
transformMomentum
(r);
297
}
298
299
public
:
300
304
static
void
calculateWaveFunctions
(vector<
LorentzTensor<double>
> & waves,
305
tPPtr
particle
,
Direction
,
bool
massless,
306
TensorPhase
phase=
default_tensor_phase
);
307
311
static
void
calculateWaveFunctions
(vector<TensorWaveFunction> & waves,
312
tPPtr
particle
,
Direction
,
bool
massless,
313
TensorPhase
phase=
default_tensor_phase
);
314
318
static
void
calculateWaveFunctions
(vector<
LorentzTensor<double>
> & waves,
319
RhoDMatrix
& rho,
320
tPPtr
particle
,
Direction
,
bool
massless,
321
TensorPhase
phase=
default_tensor_phase
);
322
326
static
void
calculateWaveFunctions
(vector<TensorWaveFunction> & waves,
327
RhoDMatrix
& rho,
328
tPPtr
particle
,
Direction
,
bool
massless,
329
TensorPhase
phase=
default_tensor_phase
);
330
334
static
void
constructSpinInfo
(
const
vector<
LorentzTensor<double>
> & waves,
335
tPPtr
part,
Direction
dir,
bool
time,
bool
massless);
336
340
static
void
constructSpinInfo
(
const
vector<TensorWaveFunction> & waves,
341
tPPtr
part,
Direction
dir,
bool
time,
bool
massless);
342
343
private
:
344
350
void
calculateWaveFunction
(
unsigned
int
ihel,
351
TensorPhase
phase=
default_tensor_phase
);
352
353
private
:
354
358
LorentzTensor<double>
_wf
;
359
360
};
361
}
362
}
363
364
#endif
ThePEG::Direction
A Direction object can be used to specify that some following operations should be assumed to be perf...
Definition:
Direction.h:41
ThePEG::Helicity::LorentzTensor
The LorentzTensor class is designed to implement the storage of a complex tensor to be used to repres...
Definition:
LorentzTensor.h:37
ThePEG::Helicity::LorentzTensor::tt
complex< Value > tt() const
Get t,t component.
Definition:
LorentzTensor.h:158
ThePEG::Helicity::LorentzTensor::zx
complex< Value > zx() const
Get z,x component.
Definition:
LorentzTensor.h:93
ThePEG::Helicity::LorentzTensor::xx
complex< Value > xx() const
Get x,x component.
Definition:
LorentzTensor.h:84
ThePEG::Helicity::LorentzTensor::yz
complex< Value > yz() const
Get y,z component.
Definition:
LorentzTensor.h:128
ThePEG::Helicity::LorentzTensor::zt
complex< Value > zt() const
Get z,t component.
Definition:
LorentzTensor.h:153
ThePEG::Helicity::LorentzTensor::xz
complex< Value > xz() const
Get x,z component.
Definition:
LorentzTensor.h:123
ThePEG::Helicity::LorentzTensor::yt
complex< Value > yt() const
Get y,t component.
Definition:
LorentzTensor.h:148
ThePEG::Helicity::LorentzTensor::ty
complex< Value > ty() const
Get t,y component.
Definition:
LorentzTensor.h:118
ThePEG::Helicity::LorentzTensor::zz
complex< Value > zz() const
Get z,z component.
Definition:
LorentzTensor.h:133
ThePEG::Helicity::LorentzTensor::zy
complex< Value > zy() const
Get z,y component.
Definition:
LorentzTensor.h:113
ThePEG::Helicity::LorentzTensor::xy
complex< Value > xy() const
Get x,y component.
Definition:
LorentzTensor.h:103
ThePEG::Helicity::LorentzTensor::tz
complex< Value > tz() const
Get t,z component.
Definition:
LorentzTensor.h:138
ThePEG::Helicity::LorentzTensor::tx
complex< Value > tx() const
Get t,x component.
Definition:
LorentzTensor.h:98
ThePEG::Helicity::LorentzTensor::xt
complex< Value > xt() const
Get x,t component.
Definition:
LorentzTensor.h:143
ThePEG::Helicity::LorentzTensor::transform
LorentzTensor & transform(const SpinOneLorentzRotation &r)
General Lorentz transformation.
Definition:
LorentzTensor.h:274
ThePEG::Helicity::LorentzTensor::yx
complex< Value > yx() const
Get y,x component.
Definition:
LorentzTensor.h:89
ThePEG::Helicity::LorentzTensor::yy
complex< Value > yy() const
Get y,y component.
Definition:
LorentzTensor.h:108
ThePEG::Helicity::TensorWaveFunction
Definition:
TensorWaveFunction.h:67
ThePEG::Helicity::TensorWaveFunction::TensorWaveFunction
TensorWaveFunction()
Default constructor.
Definition:
TensorWaveFunction.h:156
ThePEG::Helicity::TensorWaveFunction::TensorWaveFunction
TensorWaveFunction(vector< TensorWaveFunction > &wave, tPPtr part, Direction dir, bool time, bool massless, bool=true, TensorPhase phase=default_tensor_phase)
Special for spin correlations.
Definition:
TensorWaveFunction.h:161
ThePEG::Helicity::TensorWaveFunction::TensorWaveFunction
TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, const LorentzTensor< double > &wave, Direction dir=intermediate)
Constructor, set the momentum and Wavefunction, the direction can also be specified.
Definition:
TensorWaveFunction.h:81
ThePEG::Helicity::TensorWaveFunction::yx
Complex yx() const
Get the component.
Definition:
TensorWaveFunction.h:201
ThePEG::Helicity::TensorWaveFunction::TensorWaveFunction
TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, unsigned int ihel, Direction dir, TensorPhase phase=default_tensor_phase)
Constructor, set the momentum, helicity, direction and optionally the phase.
Definition:
TensorWaveFunction.h:131
ThePEG::Helicity::TensorWaveFunction::xz
Complex xz() const
Get the component.
Definition:
TensorWaveFunction.h:236
ThePEG::Helicity::TensorWaveFunction::yz
Complex yz() const
Get the component.
Definition:
TensorWaveFunction.h:241
ThePEG::Helicity::TensorWaveFunction::xx
Complex xx() const
Get the component.
Definition:
TensorWaveFunction.h:196
ThePEG::Helicity::TensorWaveFunction::constructSpinInfo
static void constructSpinInfo(const vector< LorentzTensor< double > > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
ThePEG::Helicity::TensorWaveFunction::xy
Complex xy() const
Get the component.
Definition:
TensorWaveFunction.h:216
ThePEG::Helicity::TensorWaveFunction::zx
Complex zx() const
Get the component.
Definition:
TensorWaveFunction.h:206
ThePEG::Helicity::TensorWaveFunction::yt
Complex yt() const
Get the component.
Definition:
TensorWaveFunction.h:261
ThePEG::Helicity::TensorWaveFunction::calculateWaveFunction
void calculateWaveFunction(unsigned int ihel, TensorPhase phase=default_tensor_phase)
Calculate the wavefunction.
ThePEG::Helicity::TensorWaveFunction::operator()
Complex operator()(int i, int j) const
Access to the wavefunction and its components.
Definition:
TensorWaveFunction.h:177
ThePEG::Helicity::TensorWaveFunction::constructSpinInfo
static void constructSpinInfo(const vector< TensorWaveFunction > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
ThePEG::Helicity::TensorWaveFunction::ty
Complex ty() const
Get the component.
Definition:
TensorWaveFunction.h:231
ThePEG::Helicity::TensorWaveFunction::TensorWaveFunction
TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, Complex xx, Complex xy, Complex xz, Complex xt, Complex yx, Complex yy, Complex yz, Complex yt, Complex zx, Complex zy, Complex zz, Complex zt, Complex tx, Complex ty, Complex tz, Complex tt)
Constructor, set the momentum and the components of the tensor.
Definition:
TensorWaveFunction.h:110
ThePEG::Helicity::TensorWaveFunction::tt
Complex tt() const
Get the component.
Definition:
TensorWaveFunction.h:271
ThePEG::Helicity::TensorWaveFunction::tz
Complex tz() const
Get the component.
Definition:
TensorWaveFunction.h:251
ThePEG::Helicity::TensorWaveFunction::TensorWaveFunction
TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, Direction dir)
Constructor, set the 5-momentum and direction, zero the wavefunction.
Definition:
TensorWaveFunction.h:146
ThePEG::Helicity::TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< TensorWaveFunction > &waves, tPPtr particle, Direction, bool massless, TensorPhase phase=default_tensor_phase)
Calculate the wavefunctions.
ThePEG::Helicity::TensorWaveFunction::transform
void transform(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
Definition:
TensorWaveFunction.h:294
ThePEG::Helicity::TensorWaveFunction::zt
Complex zt() const
Get the component.
Definition:
TensorWaveFunction.h:266
ThePEG::Helicity::TensorWaveFunction::xt
Complex xt() const
Get the component.
Definition:
TensorWaveFunction.h:256
ThePEG::Helicity::TensorWaveFunction::tx
Complex tx() const
Get the component.
Definition:
TensorWaveFunction.h:211
ThePEG::Helicity::TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< TensorWaveFunction > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless, TensorPhase phase=default_tensor_phase)
Calculate the wavefunctions.
ThePEG::Helicity::TensorWaveFunction::reset
void reset(unsigned int ihel, TensorPhase phase=default_tensor_phase)
Reset functions.
Definition:
TensorWaveFunction.h:284
ThePEG::Helicity::TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< LorentzTensor< double > > &waves, tPPtr particle, Direction, bool massless, TensorPhase phase=default_tensor_phase)
Calculate the wavefunctions.
ThePEG::Helicity::TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< LorentzTensor< double > > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless, TensorPhase phase=default_tensor_phase)
Calculate the wavefunctions.
ThePEG::Helicity::TensorWaveFunction::zz
Complex zz() const
Get the component.
Definition:
TensorWaveFunction.h:246
ThePEG::Helicity::TensorWaveFunction::zy
Complex zy() const
Get the component.
Definition:
TensorWaveFunction.h:226
ThePEG::Helicity::TensorWaveFunction::wave
const LorentzTensor< double > & wave() const
Return wavefunction as polarization vector.
Definition:
TensorWaveFunction.h:191
ThePEG::Helicity::TensorWaveFunction::yy
Complex yy() const
Get the component.
Definition:
TensorWaveFunction.h:221
ThePEG::Helicity::TensorWaveFunction::_wf
LorentzTensor< double > _wf
Storage of the wavefunction as a Lorentz Tensor.
Definition:
TensorWaveFunction.h:358
ThePEG::Helicity::WaveFunctionBase
Definition:
WaveFunctionBase.h:58
ThePEG::Helicity::WaveFunctionBase::iSpin
PDT::Spin iSpin() const
Get 2s+1 for the particle.
Definition:
WaveFunctionBase.h:139
ThePEG::Helicity::WaveFunctionBase::particle
tcPDPtr particle() const
Get the particle pointer.
Definition:
WaveFunctionBase.h:144
ThePEG::Helicity::WaveFunctionBase::transformMomentum
void transformMomentum(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
Definition:
WaveFunctionBase.h:162
ThePEG::Lorentz5Vector< Energy >
ThePEG::LorentzRotation
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
Definition:
LorentzRotation.h:27
ThePEG::PDT::Spin2
@ Spin2
Spin 2.
Definition:
PDT.h:40
ThePEG::Pointer::TransientConstRCPtr
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition:
RCPtr.h:696
ThePEG::Pointer::TransientRCPtr
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition:
RCPtr.h:519
ThePEG::RhoDMatrix
The RhoDMatrix class is designed to implement the storage of the rho and D matrices which are require...
Definition:
RhoDMatrix.h:28
ThePEG::Helicity::intermediate
@ intermediate
An intermediate particle.
Definition:
WaveFunctionBase.h:33
ThePEG::Helicity::TensorPhase
TensorPhase
Definition of the enumerated values of the phase to include in the calculation of the polarization te...
Definition:
TensorWaveFunction.h:28
ThePEG::Helicity::tensor_nophase
@ tensor_nophase
No phase-factor.
Definition:
TensorWaveFunction.h:30
ThePEG::Helicity::tensor_phase
@ tensor_phase
Include the phase factor.
Definition:
TensorWaveFunction.h:29
ThePEG::Helicity::default_tensor_phase
@ default_tensor_phase
Default option.
Definition:
TensorWaveFunction.h:31
ThePEG
This is the main namespace within which all identifiers in ThePEG are declared.
Definition:
FactoryBase.h:28
ThePEG::Complex
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition:
Complex.h:23
Generated on Thu Jun 20 2024 14:47:00 for ThePEG by
1.9.6