thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
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
21namespace ThePEG {
22namespace Helicity {
23
53
54public:
55
69 : WaveFunctionBase(p,part,dir), _wf(wave) {
70 assert(iSpin()==PDT::Spin3);
71 }
72
82 unsigned int ihel,Direction dir)
83 : WaveFunctionBase(p,part,dir) {
84 assert(iSpin()==PDT::Spin3);
86 }
87
95 tcPDPtr part,Direction dir)
96 : WaveFunctionBase(p,part,dir), _wf() {
97 assert(iSpin()==PDT::Spin3);
98 }
99
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) {
151 }
153
154public:
155
159 void transform(const LorentzRotation & r) {
160 _wf.transform(r);
162 }
163
164public:
165
170 tPPtr particle,Direction,bool massless);
171
175 static void calculateWaveFunctions(vector<Rank3TensorWaveFunction> & waves,
176 tPPtr particle,Direction,bool massless);
177
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
204private:
205
210 void calculateWaveFunction(unsigned int ihel);
211
212private:
213
218
219};
220}
221}
222
223#endif
A Direction object can be used to specify that some following operations should be assumed to be perf...
Definition: Direction.h:41
The LorentzRank3Tensor class is designed to implement the storage of a complex tensor to be used to r...
LorentzRank3Tensor & transform(const SpinOneLorentzRotation &r)
General Lorentz transformation.
void transform(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
static void calculateWaveFunctions(vector< Rank3TensorWaveFunction > &waves, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
static void calculateWaveFunctions(vector< Rank3TensorWaveFunction > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
const LorentzRank3Tensor< double > & wave() const
Return wavefunction as polarization rank-3 tensor .
void calculateWaveFunction(unsigned int ihel)
Calculate the wavefunction.
Rank3TensorWaveFunction(vector< Rank3TensorWaveFunction > &wave, tPPtr part, Direction dir, bool time, bool massless, bool=true)
Special for spin correlations.
LorentzRank3Tensor< double > _wf
Storage of the wavefunction as a Lorentz Rank3Tensor.
Rank3TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, unsigned int ihel, Direction dir)
Constructor, set the momentum, helicity, direction and optionally the phase.
Complex operator()(int i, int j, int k) const
Access to the wavefunction and its components.
static void constructSpinInfo(const vector< Rank3TensorWaveFunction > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
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.
static void calculateWaveFunctions(vector< LorentzRank3Tensor< double > > &waves, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
static void calculateWaveFunctions(vector< LorentzRank3Tensor< double > > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless)
Calculate the wavefunctions.
Rank3TensorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, Direction dir)
Constructor, set the 5-momentum and direction, zero the wavefunction.
static void constructSpinInfo(const vector< LorentzRank3Tensor< double > > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
void reset(unsigned int ihel)
Reset functions.
PDT::Spin iSpin() const
Get 2s+1 for the particle.
tcPDPtr particle() const
Get the particle pointer.
void transformMomentum(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
@ Spin3
Spin 4.
Definition: PDT.h:42
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
The RhoDMatrix class is designed to implement the storage of the rho and D matrices which are require...
Definition: RhoDMatrix.h:28
@ intermediate
An intermediate particle.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23