thepeg
is hosted by
Hepforge
,
IPPP Durham
ThePEG
2.3.0
Helicity
WaveFunction
Rank3TensorWaveFunction.h
1
// -*- C++ -*-
2
//
3
// Rank3TensorWaveFunction.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_Rank3TensorWaveFunction_H
10
#define ThePEG_Rank3TensorWaveFunction_H
11
//
12
// This is the declaration of the Rank3TensorWaveFunction class.
13
//
14
#include "WaveFunctionBase.h"
15
#include "VectorWaveFunction.h"
16
#include <ThePEG/Helicity/LorentzRank3Tensor.h>
17
#include <ThePEG/Helicity/Rank3TensorSpinInfo.h>
18
#include <ThePEG/EventRecord/Particle.h>
19
#include <ThePEG/EventRecord/RhoDMatrix.h>
20
21
namespace
ThePEG
{
22
namespace
Helicity {
23
52
class
Rank3TensorWaveFunction
:
public
WaveFunctionBase
{
53
54
public
:
55
66
Rank3TensorWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
67
const
LorentzRank3Tensor<double>
&
wave
,
68
Direction
dir=
intermediate
)
69
:
WaveFunctionBase
(p,part,dir),
_wf
(
wave
) {
70
assert(
iSpin
()==
PDT::Spin3
);
71
}
72
81
Rank3TensorWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
82
unsigned
int
ihel,
Direction
dir)
83
:
WaveFunctionBase
(p,part,dir) {
84
assert(
iSpin
()==
PDT::Spin3
);
85
calculateWaveFunction
(ihel);
86
}
87
94
Rank3TensorWaveFunction
(
const
Lorentz5Momentum
& p,
95
tcPDPtr
part,
Direction
dir)
96
:
WaveFunctionBase
(p,part,dir),
_wf
() {
97
assert(
iSpin
()==
PDT::Spin3
);
98
}
99
103
Rank3TensorWaveFunction
() {}
104
108
Rank3TensorWaveFunction
(vector<Rank3TensorWaveFunction> &
wave
,
109
tPPtr
part,
Direction
dir,
bool
time,
bool
massless,
110
bool
=
true
) {
111
calculateWaveFunctions
(
wave
,part,dir,massless);
112
constructSpinInfo
(
wave
,part,dir,time,massless);
113
}
115
123
Complex
operator ()
(
int
i,
int
j,
int
k)
const
{
124
return
_wf
(i,j,k);
125
}
126
130
Complex
&
operator ()
(
int
i,
int
j,
int
k) {
131
return
_wf
(i,j,k);
132
}
133
137
const
LorentzRank3Tensor<double>
&
wave
()
const
{
return
_wf
;}
139
144
149
void
reset
(
unsigned
int
ihel) {
150
calculateWaveFunction
(ihel);
151
}
153
154
public
:
155
159
void
transform
(
const
LorentzRotation
& r) {
160
_wf
.
transform
(r);
161
transformMomentum
(r);
162
}
163
164
public
:
165
169
static
void
calculateWaveFunctions
(vector<
LorentzRank3Tensor<double>
> & waves,
170
tPPtr
particle
,
Direction
,
bool
massless);
171
175
static
void
calculateWaveFunctions
(vector<Rank3TensorWaveFunction> & waves,
176
tPPtr
particle
,
Direction
,
bool
massless);
177
181
static
void
calculateWaveFunctions
(vector<
LorentzRank3Tensor<double>
> & waves,
182
RhoDMatrix
& rho,
183
tPPtr
particle
,
Direction
,
bool
massless);
184
188
static
void
calculateWaveFunctions
(vector<Rank3TensorWaveFunction> & waves,
189
RhoDMatrix
& rho,
190
tPPtr
particle
,
Direction
,
bool
massless);
191
195
static
void
constructSpinInfo
(
const
vector<
LorentzRank3Tensor<double>
> & waves,
196
tPPtr
part,
Direction
dir,
bool
time,
bool
massless);
197
201
static
void
constructSpinInfo
(
const
vector<Rank3TensorWaveFunction> & waves,
202
tPPtr
part,
Direction
dir,
bool
time,
bool
massless);
203
204
private
:
205
210
void
calculateWaveFunction
(
unsigned
int
ihel);
211
212
private
:
213
217
LorentzRank3Tensor<double>
_wf
;
218
219
};
220
}
221
}
222
223
#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::LorentzRank3Tensor
The LorentzRank3Tensor class is designed to implement the storage of a complex tensor to be used to r...
Definition:
LorentzRank3Tensor.h:37
ThePEG::Helicity::LorentzRank3Tensor::transform
LorentzRank3Tensor & transform(const SpinOneLorentzRotation &r)
General Lorentz transformation.
Definition:
LorentzRank3Tensor.h:80
ThePEG::Helicity::Rank3TensorWaveFunction
Definition:
Rank3TensorWaveFunction.h:52
ThePEG::Helicity::Rank3TensorWaveFunction::transform
void transform(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
Definition:
Rank3TensorWaveFunction.h:159
ThePEG::Helicity::Rank3TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< Rank3TensorWaveFunction > &waves, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
ThePEG::Helicity::Rank3TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< Rank3TensorWaveFunction > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
ThePEG::Helicity::Rank3TensorWaveFunction::Rank3TensorWaveFunction
Rank3TensorWaveFunction()
Default constructor.
Definition:
Rank3TensorWaveFunction.h:103
ThePEG::Helicity::Rank3TensorWaveFunction::wave
const LorentzRank3Tensor< double > & wave() const
Return wavefunction as polarization rank-3 tensor .
Definition:
Rank3TensorWaveFunction.h:137
ThePEG::Helicity::Rank3TensorWaveFunction::calculateWaveFunction
void calculateWaveFunction(unsigned int ihel)
Calculate the wavefunction.
ThePEG::Helicity::Rank3TensorWaveFunction::Rank3TensorWaveFunction
Rank3TensorWaveFunction(vector< Rank3TensorWaveFunction > &wave, tPPtr part, Direction dir, bool time, bool massless, bool=true)
Special for spin correlations.
Definition:
Rank3TensorWaveFunction.h:108
ThePEG::Helicity::Rank3TensorWaveFunction::_wf
LorentzRank3Tensor< double > _wf
Storage of the wavefunction as a Lorentz Rank3Tensor.
Definition:
Rank3TensorWaveFunction.h:217
ThePEG::Helicity::Rank3TensorWaveFunction::Rank3TensorWaveFunction
Rank3TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, unsigned int ihel, Direction dir)
Constructor, set the momentum, helicity, direction and optionally the phase.
Definition:
Rank3TensorWaveFunction.h:81
ThePEG::Helicity::Rank3TensorWaveFunction::operator()
Complex operator()(int i, int j, int k) const
Access to the wavefunction and its components.
Definition:
Rank3TensorWaveFunction.h:123
ThePEG::Helicity::Rank3TensorWaveFunction::constructSpinInfo
static void constructSpinInfo(const vector< Rank3TensorWaveFunction > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
ThePEG::Helicity::Rank3TensorWaveFunction::Rank3TensorWaveFunction
Rank3TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, const LorentzRank3Tensor< double > &wave, Direction dir=intermediate)
Constructor, set the momentum and Wavefunction, the direction can also be specified.
Definition:
Rank3TensorWaveFunction.h:66
ThePEG::Helicity::Rank3TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< LorentzRank3Tensor< double > > &waves, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
ThePEG::Helicity::Rank3TensorWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< LorentzRank3Tensor< double > > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
ThePEG::Helicity::Rank3TensorWaveFunction::Rank3TensorWaveFunction
Rank3TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, Direction dir)
Constructor, set the 5-momentum and direction, zero the wavefunction.
Definition:
Rank3TensorWaveFunction.h:94
ThePEG::Helicity::Rank3TensorWaveFunction::constructSpinInfo
static void constructSpinInfo(const vector< LorentzRank3Tensor< double > > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
ThePEG::Helicity::Rank3TensorWaveFunction::reset
void reset(unsigned int ihel)
Reset functions.
Definition:
Rank3TensorWaveFunction.h:149
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::Spin3
@ Spin3
Spin 4.
Definition:
PDT.h:42
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
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