thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
VectorWaveFunction.h
1// -*- C++ -*-
2//
3// VectorWaveFunction.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_VectorWaveFunction_H
10#define ThePEG_VectorWaveFunction_H
11//
12// This is the declaration of the VectorWaveFunction class.
13//
14#include "WaveFunctionBase.h"
15#include <ThePEG/Helicity/LorentzPolarizationVector.h>
16#include <ThePEG/Helicity/VectorSpinInfo.h>
17#include <ThePEG/EventRecord/RhoDMatrix.h>
18#include <ThePEG/EventRecord/Particle.h>
19
20namespace ThePEG {
21namespace Helicity {
22
51
52public:
53
67 : WaveFunctionBase(p,part,dir), _wf(wave)
68 {
69 assert(iSpin()==3);
70 }
71
82 const Complex & y,const Complex & z, const Complex & t)
83 : WaveFunctionBase(p,part), _wf(x,y,z,t)
84 {
85 assert(iSpin()==3);
86 }
87
98 unsigned int ihel,Direction dir,
100 : WaveFunctionBase(p,part,dir)
101 {
102 assert(iSpin()==3);
103 calculateWaveFunction(ihel,phase);
104 }
105
113 tcPDPtr part,Direction dir)
114 : WaveFunctionBase(p,part,dir), _wf()
115 {
116 assert(iSpin()==3);
117 }
118
123
127 VectorWaveFunction(vector<VectorWaveFunction> & wave,
128 tPPtr part,Direction dir,bool time,bool massless,
129 bool=true,
131 calculateWaveFunctions(wave,part,dir,massless,phase);
132 constructSpinInfo(wave,part,dir,time,massless);
133 }
135
143 const LorentzPolarizationVector & wave() const { return _wf;}
144
148 Complex x() const {return _wf.x();}
149
153 Complex y() const {return _wf.y();}
154
158 Complex z() const {return _wf.z();}
159
163 Complex t() const {return _wf.t();}
164
174 void reset(unsigned int ihel,VectorPhase phase=default_vector_phase) {
175 calculateWaveFunction(ihel,phase);
176 }
178
179public:
180
184 void transform(const LorentzRotation & r) {
185 _wf.transform(r);
187 }
188
189public:
190
194 static void calculateWaveFunctions(vector<LorentzPolarizationVector> & waves,
195 tPPtr particle,Direction,bool massless,
197
201 static void calculateWaveFunctions(vector<VectorWaveFunction> & waves,
202 tPPtr particle,Direction,bool massless,
204
208 static void calculateWaveFunctions(vector<VectorWaveFunction> & waves,
210 tcPDPtr parton, Direction,bool massless,
212
216 static void calculateWaveFunctions(vector<LorentzPolarizationVector> & waves,
217 RhoDMatrix & rho,
218 tPPtr particle,Direction,bool massless,
220
224 static void calculateWaveFunctions(vector<VectorWaveFunction> & waves,
225 RhoDMatrix & rho,
226 tPPtr particle,Direction,bool massless,
228
232 static void constructSpinInfo(const vector<LorentzPolarizationVector> & waves,
233 tPPtr part,Direction dir, bool time,bool massless);
234
238 static void constructSpinInfo(const vector<VectorWaveFunction> & waves,
239 tPPtr part,Direction dir, bool time,bool massless);
240
241private:
242
248 void calculateWaveFunction(unsigned int ihel,
250
251private:
252
257
258};
259
260}
261}
262
263#endif
A Direction object can be used to specify that some following operations should be assumed to be perf...
Definition: Direction.h:41
VectorWaveFunction(vector< VectorWaveFunction > &wave, tPPtr part, Direction dir, bool time, bool massless, bool=true, VectorPhase phase=default_vector_phase)
Special for spin correlations.
VectorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, const Complex &x, const Complex &y, const Complex &z, const Complex &t)
Constructor, set the momentum and components of the wavefunction.
VectorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, const LorentzPolarizationVector &wave, Direction dir=intermediate)
Constructor, set the momentum and Wavefunction, the direction can also be specified.
VectorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, Direction dir)
Constructor, set the 5-momentum and direction, zero the wavefunction.
static void constructSpinInfo(const vector< LorentzPolarizationVector > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
void transform(const LorentzRotation &r)
Perform the Lorentz transformation of the wave function.
void reset(unsigned int ihel, VectorPhase phase=default_vector_phase)
Reset functions.
static void calculateWaveFunctions(vector< LorentzPolarizationVector > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless, VectorPhase phase=default_vector_phase)
Calculate the wavefunctions.
Complex y() const
Get y component.
static void constructSpinInfo(const vector< VectorWaveFunction > &waves, tPPtr part, Direction dir, bool time, bool massless)
Construct the SpinInfo object.
Complex x() const
Get x component.
void calculateWaveFunction(unsigned int ihel, VectorPhase phase=default_vector_phase)
Calculate the wavefunction.
VectorWaveFunction(const Lorentz5Momentum &p, tcPDPtr part, unsigned int ihel, Direction dir, VectorPhase phase=default_vector_phase)
Constructor, set the momentum, helicity and direction, optionally the choice of the phase.
static void calculateWaveFunctions(vector< VectorWaveFunction > &waves, RhoDMatrix &rho, tPPtr particle, Direction, bool massless, VectorPhase phase=default_vector_phase)
Calculate the wavefunctions.
static void calculateWaveFunctions(vector< LorentzPolarizationVector > &waves, tPPtr particle, Direction, bool massless, VectorPhase phase=default_vector_phase)
Calculate the wavefunctions.
const LorentzPolarizationVector & wave() const
Access to the wavefunction and its components.
static void calculateWaveFunctions(vector< VectorWaveFunction > &waves, tPPtr particle, Direction, bool massless, VectorPhase phase=default_vector_phase)
Calculate the wavefunctions.
Complex z() const
Get z component.
LorentzPolarizationVector _wf
Storage of the wavefunction as a Lorentz Vector.
static void calculateWaveFunctions(vector< VectorWaveFunction > &waves, const Lorentz5Momentum &momentum, tcPDPtr parton, Direction, bool massless, VectorPhase phase=default_vector_phase)
Calculate the wavefunctions.
Complex t() const
Get t component.
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.
const Lorentz5Momentum & momentum() const
Access to the 5-momentum.
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
LorentzVector< Value > & transform(const SpinOneLorentzRotation &m)
Rotate the vector. Resets .
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.
VectorPhase
Definition of the enumerated values of the phase to include in the calculation of the polarization ve...
@ default_vector_phase
Default option.
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