thepeg
is hosted by
Hepforge
,
IPPP Durham
ThePEG
2.3.0
Helicity
WaveFunction
RSSpinorBarWaveFunction.h
1
// -*- C++ -*-
2
//
3
// RSSpinorBarWaveFunction.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_RSSpinorBarWaveFunction_H
10
#define ThePEG_RSSpinorBarWaveFunction_H
11
//
12
// This is the declaration of the RSSpinorBarWaveFunction class.
13
//
14
#include "WaveFunctionBase.h"
15
#include <ThePEG/Helicity/LorentzRSSpinorBar.h>
16
#include <ThePEG/Helicity/RSFermionSpinInfo.h>
17
#include <ThePEG/EventRecord/Particle.h>
18
#include <ThePEG/EventRecord/RhoDMatrix.h>
19
20
namespace
ThePEG
{
21
22
namespace
Helicity {
23
60
class
RSSpinorBarWaveFunction
:
public
WaveFunctionBase
{
61
62
public
:
63
87
RSSpinorBarWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
88
complex<double>
xs1
, complex<double>
xs2
,
89
complex<double>
xs3
, complex<double>
xs4
,
90
complex<double>
ys1
, complex<double>
ys2
,
91
complex<double>
ys3
, complex<double>
ys4
,
92
complex<double>
zs1
, complex<double>
zs2
,
93
complex<double>
zs3
, complex<double>
zs4
,
94
complex<double>
ts1
, complex<double>
ts2
,
95
complex<double>
ts3
, complex<double>
ts4
)
96
:
WaveFunctionBase
(p,part),
_wf
(
xs1
,
xs2
,
xs3
,
xs4
,
97
ys1
,
ys2
,
ys3
,
ys4
,
98
zs1
,
zs2
,
zs3
,
zs4
,
99
ts1
,
ts2
,
ts3
,
ts4
)
100
{
101
assert(
iSpin
()==4);
102
}
103
110
RSSpinorBarWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
111
const
LorentzRSSpinorBar<double>
&
wave
,
112
Direction
dir=
intermediate
)
113
:
WaveFunctionBase
(p,part,dir),
_wf
(
wave
)
114
{
115
assert(
iSpin
()==4);
116
}
117
124
RSSpinorBarWaveFunction
(
const
tPPtr
& p,
125
const
LorentzRSSpinorBar<SqrtEnergy>
&
wave
,
126
Direction
dir=
intermediate
)
127
:
WaveFunctionBase
(p->
momentum
(),p->dataPtr(),dir),
_wf
(
wave
.Type())
128
{
129
assert(
iSpin
()==4);
130
for
(
unsigned
int
i=0; i<4; ++i)
131
for
(
unsigned
int
j=0; j<4; ++j)
132
_wf
(i,j)=
Complex
(
wave
(i,j)*UnitRemoval::InvSqrtE);
133
}
134
142
RSSpinorBarWaveFunction
(
const
Lorentz5Momentum
& p,
tcPDPtr
part,
143
unsigned
int
ihel,
Direction
dir)
144
:
WaveFunctionBase
(p,part,dir)
145
{
146
assert(
iSpin
()==4);
147
calculateWaveFunction
(ihel);
148
}
149
157
RSSpinorBarWaveFunction
(
Lorentz5Momentum
p,
tcPDPtr
part,
Direction
dir)
158
:
WaveFunctionBase
(p,part,dir),
_wf
()
159
{
160
assert(
iSpin
()==4);
161
}
162
166
RSSpinorBarWaveFunction
()
167
:
WaveFunctionBase
(),
_wf
()
168
{}
169
173
RSSpinorBarWaveFunction
(vector<RSSpinorBarWaveFunction> &
wave
,
174
tPPtr
part,
Direction
dir,
bool
time,
bool
=
true
) {
175
calculateWaveFunctions
(
wave
,part,dir);
176
constructSpinInfo
(
wave
,part,dir,time);
177
}
179
188
complex<double>
operator ()
(
int
i,
int
j)
const
{
189
assert( i>=0 && i<=3 && j>=0 && j<=3 );
190
return
_wf
(i,j);
191
}
192
196
const
LorentzRSSpinorBar<double>
&
wave
()
const
{
return
_wf
;}
197
199
LorentzRSSpinorBar<SqrtEnergy>
dimensionedWf
()
const
{
200
LorentzRSSpinorBar<SqrtEnergy>
temp(
_wf
.
Type
());
201
for
(
unsigned
int
i=0; i<4; ++i)
202
for
(
unsigned
int
j=0; j<4; ++j)
203
temp(i,j) =
_wf
(i,j)*UnitRemoval::SqrtE;
204
return
temp;
205
}
206
210
complex<double>
xs1
()
const
{
return
_wf
.
xs1
();}
211
215
complex<double>
xs2
()
const
{
return
_wf
.
xs2
();}
216
220
complex<double>
xs3
()
const
{
return
_wf
.
xs3
();}
221
225
complex<double>
xs4
()
const
{
return
_wf
.
xs4
();}
226
230
complex<double>
ys1
()
const
{
return
_wf
.
ys1
();}
231
235
complex<double>
ys2
()
const
{
return
_wf
.
ys2
();}
236
240
complex<double>
ys3
()
const
{
return
_wf
.
ys3
();}
241
245
complex<double>
ys4
()
const
{
return
_wf
.
ys4
();}
246
250
complex<double>
zs1
()
const
{
return
_wf
.
zs1
();}
251
255
complex<double>
zs2
()
const
{
return
_wf
.
zs2
();}
256
260
complex<double>
zs3
()
const
{
return
_wf
.
zs3
();}
261
265
complex<double>
zs4
()
const
{
return
_wf
.
zs4
();}
266
270
complex<double>
ts1
()
const
{
return
_wf
.
ts1
();}
271
275
complex<double>
ts2
()
const
{
return
_wf
.
ts2
();}
276
280
complex<double>
ts3
()
const
{
return
_wf
.
ts3
();}
281
285
complex<double>
ts4
()
const
{
return
_wf
.
ts4
();}
287
296
void
reset
(
unsigned
int
ihel) {
297
calculateWaveFunction
(ihel);
298
}
300
301
public
:
302
306
void
transform
(
const
LorentzRotation
& r) {
307
_wf
.
transform
(r);
308
transformMomentum
(r);
309
}
310
311
public
:
312
316
static
void
calculateWaveFunctions
(vector<
LorentzRSSpinorBar<SqrtEnergy>
> & waves,
317
tPPtr
particle
,
Direction
);
318
322
static
void
calculateWaveFunctions
(vector<RSSpinorBarWaveFunction> & waves,
323
tPPtr
particle
,
Direction
);
324
328
static
void
calculateWaveFunctions
(vector<RSSpinorBarWaveFunction> & waves,
329
const
Lorentz5Momentum
&
momentum
,
330
tcPDPtr
parton,
Direction
);
331
335
static
void
calculateWaveFunctions
(vector<
LorentzRSSpinorBar<SqrtEnergy>
> & waves,
336
RhoDMatrix
& rho,
337
tPPtr
particle
,
Direction
);
338
342
static
void
calculateWaveFunctions
(vector<RSSpinorBarWaveFunction> & waves,
343
RhoDMatrix
& rho,
344
tPPtr
particle
,
Direction
);
345
349
static
void
constructSpinInfo
(
const
vector<
LorentzRSSpinorBar<SqrtEnergy>
> & waves,
350
tPPtr
part,
Direction
dir,
bool
time);
351
355
static
void
constructSpinInfo
(
const
vector<RSSpinorBarWaveFunction> & waves,
356
tPPtr
part,
Direction
dir,
bool
time);
357
358
private
:
359
364
void
calculateWaveFunction
(
unsigned
int
ihel);
365
366
private
:
367
371
LorentzRSSpinorBar<double>
_wf
;
372
};
373
374
}
375
}
376
377
#endif
/* ThePEG_RSSpinorBarWaveFunction_H */
378
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::LorentzRSSpinorBar
The LorentzRSSpinorBar class implements the storage of a barred Lorentz Rarita-Schwinger Spinor for a...
Definition:
LorentzRSSpinorBar.h:38
ThePEG::Helicity::LorentzRSSpinorBar::ys1
complex< Value > ys1() const
Get first spinor component for the y vector.
Definition:
LorentzRSSpinorBar.h:114
ThePEG::Helicity::LorentzRSSpinorBar::zs3
complex< Value > zs3() const
Get third spinor component for the z vector.
Definition:
LorentzRSSpinorBar.h:144
ThePEG::Helicity::LorentzRSSpinorBar::xs4
complex< Value > xs4() const
Get fourth spinor component for the x vector.
Definition:
LorentzRSSpinorBar.h:109
ThePEG::Helicity::LorentzRSSpinorBar::xs2
complex< Value > xs2() const
Get second spinor component for the x vector.
Definition:
LorentzRSSpinorBar.h:99
ThePEG::Helicity::LorentzRSSpinorBar::ts4
complex< Value > ts4() const
Get fourth spinor component for the t vector.
Definition:
LorentzRSSpinorBar.h:169
ThePEG::Helicity::LorentzRSSpinorBar::zs2
complex< Value > zs2() const
Get second spinor component for the z vector.
Definition:
LorentzRSSpinorBar.h:139
ThePEG::Helicity::LorentzRSSpinorBar::xs3
complex< Value > xs3() const
Get third spinor component for the x vector.
Definition:
LorentzRSSpinorBar.h:104
ThePEG::Helicity::LorentzRSSpinorBar::Type
SpinorType Type() const
Return the type of the spinor.
Definition:
LorentzRSSpinorBar.h:342
ThePEG::Helicity::LorentzRSSpinorBar::ts3
complex< Value > ts3() const
Get third spinor component for the t vector.
Definition:
LorentzRSSpinorBar.h:164
ThePEG::Helicity::LorentzRSSpinorBar::transform
LorentzRSSpinorBar & transform(const LorentzRotation &)
General transform.
ThePEG::Helicity::LorentzRSSpinorBar::ys4
complex< Value > ys4() const
Get fourth spinor component for the y vector.
Definition:
LorentzRSSpinorBar.h:129
ThePEG::Helicity::LorentzRSSpinorBar::ts2
complex< Value > ts2() const
Get second spinor component for the t vector.
Definition:
LorentzRSSpinorBar.h:159
ThePEG::Helicity::LorentzRSSpinorBar::zs1
complex< Value > zs1() const
Get first spinor component for the z vector.
Definition:
LorentzRSSpinorBar.h:134
ThePEG::Helicity::LorentzRSSpinorBar::ys3
complex< Value > ys3() const
Get third spinor component for the y vector.
Definition:
LorentzRSSpinorBar.h:124
ThePEG::Helicity::LorentzRSSpinorBar::zs4
complex< Value > zs4() const
Get fourth spinor component for the z vector.
Definition:
LorentzRSSpinorBar.h:149
ThePEG::Helicity::LorentzRSSpinorBar::ys2
complex< Value > ys2() const
Get second spinor component for the y vector.
Definition:
LorentzRSSpinorBar.h:119
ThePEG::Helicity::LorentzRSSpinorBar::xs1
complex< Value > xs1() const
Get first spinor component for the x vector.
Definition:
LorentzRSSpinorBar.h:94
ThePEG::Helicity::LorentzRSSpinorBar::ts1
complex< Value > ts1() const
Get first spinor component for the t vector.
Definition:
LorentzRSSpinorBar.h:154
ThePEG::Helicity::RSSpinorBarWaveFunction
The RSSpinorBarWaveFunction class is designed to store the wavefunction of a spin- particle in a for...
Definition:
RSSpinorBarWaveFunction.h:60
ThePEG::Helicity::RSSpinorBarWaveFunction::zs1
complex< double > zs1() const
Get first spinor component for the z vector.
Definition:
RSSpinorBarWaveFunction.h:250
ThePEG::Helicity::RSSpinorBarWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< RSSpinorBarWaveFunction > &waves, RhoDMatrix &rho, tPPtr particle, Direction)
Calculate the wavefunctions.
ThePEG::Helicity::RSSpinorBarWaveFunction::wave
const LorentzRSSpinorBar< double > & wave() const
return wavefunction as LorentzRSSpinorBar
Definition:
RSSpinorBarWaveFunction.h:196
ThePEG::Helicity::RSSpinorBarWaveFunction::transform
void transform(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
Definition:
RSSpinorBarWaveFunction.h:306
ThePEG::Helicity::RSSpinorBarWaveFunction::ys4
complex< double > ys4() const
Get fourth spinor component for the y vector.
Definition:
RSSpinorBarWaveFunction.h:245
ThePEG::Helicity::RSSpinorBarWaveFunction::calculateWaveFunction
void calculateWaveFunction(unsigned int ihel)
Calcuate the wavefunction.
ThePEG::Helicity::RSSpinorBarWaveFunction::ys3
complex< double > ys3() const
Get third spinor component for the y vector.
Definition:
RSSpinorBarWaveFunction.h:240
ThePEG::Helicity::RSSpinorBarWaveFunction::dimensionedWf
LorentzRSSpinorBar< SqrtEnergy > dimensionedWf() const
Return wavefunction as LorentzRSSpinorBar<SqrtEnergy>
Definition:
RSSpinorBarWaveFunction.h:199
ThePEG::Helicity::RSSpinorBarWaveFunction::xs3
complex< double > xs3() const
Get third spinor component for the x vector.
Definition:
RSSpinorBarWaveFunction.h:220
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, unsigned int ihel, Direction dir)
Constructor, set the momentum, helicity, direction.
Definition:
RSSpinorBarWaveFunction.h:142
ThePEG::Helicity::RSSpinorBarWaveFunction::_wf
LorentzRSSpinorBar< double > _wf
storage of the Lorentz RSSpinorBar
Definition:
RSSpinorBarWaveFunction.h:371
ThePEG::Helicity::RSSpinorBarWaveFunction::operator()
complex< double > operator()(int i, int j) const
Access to the wavefunction and its components.
Definition:
RSSpinorBarWaveFunction.h:188
ThePEG::Helicity::RSSpinorBarWaveFunction::constructSpinInfo
static void constructSpinInfo(const vector< RSSpinorBarWaveFunction > &waves, tPPtr part, Direction dir, bool time)
Construct the SpinInfo object.
ThePEG::Helicity::RSSpinorBarWaveFunction::constructSpinInfo
static void constructSpinInfo(const vector< LorentzRSSpinorBar< SqrtEnergy > > &waves, tPPtr part, Direction dir, bool time)
Construct the SpinInfo object.
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, const LorentzRSSpinorBar< double > &wave, Direction dir=intermediate)
Constructor, set the momentum and the wavefunction.
Definition:
RSSpinorBarWaveFunction.h:110
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, complex< double > xs1, complex< double > xs2, complex< double > xs3, complex< double > xs4, complex< double > ys1, complex< double > ys2, complex< double > ys3, complex< double > ys4, complex< double > zs1, complex< double > zs2, complex< double > zs3, complex< double > zs4, complex< double > ts1, complex< double > ts2, complex< double > ts3, complex< double > ts4)
Constructor, set the momentum and the components of the spinor.
Definition:
RSSpinorBarWaveFunction.h:87
ThePEG::Helicity::RSSpinorBarWaveFunction::ts3
complex< double > ts3() const
Get third spinor component for the t vector.
Definition:
RSSpinorBarWaveFunction.h:280
ThePEG::Helicity::RSSpinorBarWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< LorentzRSSpinorBar< SqrtEnergy > > &waves, RhoDMatrix &rho, tPPtr particle, Direction)
Calculate the wavefunctions.
ThePEG::Helicity::RSSpinorBarWaveFunction::zs3
complex< double > zs3() const
Get third spinor component for the z vector.
Definition:
RSSpinorBarWaveFunction.h:260
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction(vector< RSSpinorBarWaveFunction > &wave, tPPtr part, Direction dir, bool time, bool=true)
Special for spin correlations.
Definition:
RSSpinorBarWaveFunction.h:173
ThePEG::Helicity::RSSpinorBarWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< RSSpinorBarWaveFunction > &waves, const Lorentz5Momentum &momentum, tcPDPtr parton, Direction)
Calculate the wavefunctions.
ThePEG::Helicity::RSSpinorBarWaveFunction::ts4
complex< double > ts4() const
Get fourth spinor component for the t vector.
Definition:
RSSpinorBarWaveFunction.h:285
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction()
Default constructor.
Definition:
RSSpinorBarWaveFunction.h:166
ThePEG::Helicity::RSSpinorBarWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< LorentzRSSpinorBar< SqrtEnergy > > &waves, tPPtr particle, Direction)
Calculate the wavefunctions.
ThePEG::Helicity::RSSpinorBarWaveFunction::xs2
complex< double > xs2() const
Get second spinor component for the x vector.
Definition:
RSSpinorBarWaveFunction.h:215
ThePEG::Helicity::RSSpinorBarWaveFunction::xs1
complex< double > xs1() const
Get first spinor component for the x vector.
Definition:
RSSpinorBarWaveFunction.h:210
ThePEG::Helicity::RSSpinorBarWaveFunction::zs4
complex< double > zs4() const
Get fourth spinor component for the z vector.
Definition:
RSSpinorBarWaveFunction.h:265
ThePEG::Helicity::RSSpinorBarWaveFunction::reset
void reset(unsigned int ihel)
reset functions
Definition:
RSSpinorBarWaveFunction.h:296
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction(const tPPtr &p, const LorentzRSSpinorBar< SqrtEnergy > &wave, Direction dir=intermediate)
Constructor, set the particle and the wavefunction.
Definition:
RSSpinorBarWaveFunction.h:124
ThePEG::Helicity::RSSpinorBarWaveFunction::ts2
complex< double > ts2() const
Get second spinor component for the t vector.
Definition:
RSSpinorBarWaveFunction.h:275
ThePEG::Helicity::RSSpinorBarWaveFunction::calculateWaveFunctions
static void calculateWaveFunctions(vector< RSSpinorBarWaveFunction > &waves, tPPtr particle, Direction)
Calculate the wavefunctions.
ThePEG::Helicity::RSSpinorBarWaveFunction::ys2
complex< double > ys2() const
Get second spinor component for the y vector.
Definition:
RSSpinorBarWaveFunction.h:235
ThePEG::Helicity::RSSpinorBarWaveFunction::zs2
complex< double > zs2() const
Get second spinor component for the z vector.
Definition:
RSSpinorBarWaveFunction.h:255
ThePEG::Helicity::RSSpinorBarWaveFunction::ys1
complex< double > ys1() const
Get first spinor component for the y vector.
Definition:
RSSpinorBarWaveFunction.h:230
ThePEG::Helicity::RSSpinorBarWaveFunction::ts1
complex< double > ts1() const
Get first spinor component for the t vector.
Definition:
RSSpinorBarWaveFunction.h:270
ThePEG::Helicity::RSSpinorBarWaveFunction::xs4
complex< double > xs4() const
Get fourth spinor component for the x vector.
Definition:
RSSpinorBarWaveFunction.h:225
ThePEG::Helicity::RSSpinorBarWaveFunction::RSSpinorBarWaveFunction
RSSpinorBarWaveFunction(Lorentz5Momentum p, tcPDPtr part, Direction dir)
Constructor, set the momentum, direction, zero the wavefunction.
Definition:
RSSpinorBarWaveFunction.h:157
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::Helicity::WaveFunctionBase::momentum
const Lorentz5Momentum & momentum() const
Access to the 5-momentum.
Definition:
WaveFunctionBase.h:124
ThePEG::Lorentz5Vector< Energy >
ThePEG::LorentzRotation
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
Definition:
LorentzRotation.h:27
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