thepeg
is hosted by
Hepforge
,
IPPP Durham
ThePEG
2.3.0
Helicity
VectorSpinInfo.h
1
// -*- C++ -*-
2
//
3
// VectorSpinInfo.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_VectorSpinInfo_H
10
#define THEPEG_VectorSpinInfo_H
11
// This is the declaration of the VectorSpinInfo class.
12
13
#include "ThePEG/EventRecord/SpinInfo.h"
14
#include "ThePEG/Helicity/LorentzPolarizationVector.h"
15
#include "VectorSpinInfo.fh"
16
17
namespace
ThePEG
{
18
namespace
Helicity {
19
39
class
VectorSpinInfo
:
public
SpinInfo
{
40
41
public
:
42
48
VectorSpinInfo
() :
SpinInfo
(
PDT
::Spin1),
_decaycalc
(false) {}
49
55
VectorSpinInfo
(
const
Lorentz5Momentum
& p,
bool
time)
56
:
SpinInfo
(
PDT
::Spin1, p, time),
_decaycalc
(false) {}
58
59
public
:
60
68
void
setBasisState
(
unsigned
int
hel,
69
const
LorentzPolarizationVector
& in)
const
{
70
assert(hel<3);
71
_productionstates
[hel] = in;
72
_currentstates
[hel] = in;
73
}
74
80
void
setDecayState
(
unsigned
int
hel,
81
const
LorentzPolarizationVector
& in)
const
{
82
assert(hel<3);
83
_decaycalc
=
true
;
84
_decaystates
[hel] = in;;
85
}
86
91
const
LorentzPolarizationVector
&
getProductionBasisState
(
unsigned
int
hel)
const
{
92
assert(hel<3);
93
return
_productionstates
[hel];
94
}
95
100
const
LorentzPolarizationVector
&
getCurrentBasisState
(
unsigned
int
hel)
const
{
101
assert(hel<3);
102
return
_currentstates
[hel];
103
}
104
109
const
LorentzPolarizationVector
&
getDecayBasisState
(
unsigned
int
hel)
const
{
110
assert(hel<3);
111
if
(!
_decaycalc
) {
112
for
(
unsigned
int
ix=0;ix<3;++ix)
113
_decaystates
[ix]=
_currentstates
[ix].conjugate();
114
_decaycalc
=
true
;
115
}
116
// return the basis function
117
return
_decaystates
[hel];
118
}
120
124
virtual
void
transform
(
const
LorentzMomentum
&,
const
LorentzRotation
& );
125
129
virtual
void
undecay
()
const
{
130
_decaycalc
=
false
;
131
SpinInfo::undecay
();
132
}
133
137
virtual
void
reset
() {
138
undecay
();
139
_currentstates
=
_productionstates
;
140
SpinInfo::reset
();
141
}
142
143
public
:
144
148
static
void
Init
();
149
153
virtual
EIPtr
clone
()
const
;
154
155
private
:
156
160
VectorSpinInfo
&
operator=
(
const
VectorSpinInfo
&) =
delete
;
161
162
private
:
163
167
mutable
std::array<LorentzPolarizationVector,3>
_productionstates
;
168
172
mutable
std::array<LorentzPolarizationVector,3>
_decaystates
;
173
177
mutable
std::array<LorentzPolarizationVector,3>
_currentstates
;
178
182
mutable
bool
_decaycalc
;
183
184
};
185
186
}
187
}
188
189
190
namespace
ThePEG
{
191
192
}
193
#endif
/* THEPEG_VectorSpinInfo_H */
ThePEG::Helicity::VectorSpinInfo
The VectorSpinInfo class is the implementation of the spin information for vector particles.
Definition:
VectorSpinInfo.h:39
ThePEG::Helicity::VectorSpinInfo::_decaycalc
bool _decaycalc
True if the decay state has been set.
Definition:
VectorSpinInfo.h:182
ThePEG::Helicity::VectorSpinInfo::operator=
VectorSpinInfo & operator=(const VectorSpinInfo &)=delete
Private and non-existent assignment operator.
ThePEG::Helicity::VectorSpinInfo::_decaystates
std::array< LorentzPolarizationVector, 3 > _decaystates
Basis states in the frame in which the particle decays.
Definition:
VectorSpinInfo.h:172
ThePEG::Helicity::VectorSpinInfo::VectorSpinInfo
VectorSpinInfo(const Lorentz5Momentum &p, bool time)
Standard Constructor.
Definition:
VectorSpinInfo.h:55
ThePEG::Helicity::VectorSpinInfo::getDecayBasisState
const LorentzPolarizationVector & getDecayBasisState(unsigned int hel) const
Get the basis state for the decay for the given helicity, hel (0,1,2 as described above....
Definition:
VectorSpinInfo.h:109
ThePEG::Helicity::VectorSpinInfo::_productionstates
std::array< LorentzPolarizationVector, 3 > _productionstates
Basis states in the frame in which the particle was produced.
Definition:
VectorSpinInfo.h:167
ThePEG::Helicity::VectorSpinInfo::transform
virtual void transform(const LorentzMomentum &, const LorentzRotation &)
Perform a Lorentz rotation of the spin information.
ThePEG::Helicity::VectorSpinInfo::clone
virtual EIPtr clone() const
Standard clone method.
ThePEG::Helicity::VectorSpinInfo::getProductionBasisState
const LorentzPolarizationVector & getProductionBasisState(unsigned int hel) const
Get the basis state for the production for the given helicity, hel (0,1,2 as described above....
Definition:
VectorSpinInfo.h:91
ThePEG::Helicity::VectorSpinInfo::getCurrentBasisState
const LorentzPolarizationVector & getCurrentBasisState(unsigned int hel) const
Get the basis state for the current for the given helicity, hel (0,1,2 as described above....
Definition:
VectorSpinInfo.h:100
ThePEG::Helicity::VectorSpinInfo::undecay
virtual void undecay() const
Undecay.
Definition:
VectorSpinInfo.h:129
ThePEG::Helicity::VectorSpinInfo::VectorSpinInfo
VectorSpinInfo()
Default constructor.
Definition:
VectorSpinInfo.h:48
ThePEG::Helicity::VectorSpinInfo::_currentstates
std::array< LorentzPolarizationVector, 3 > _currentstates
Basis states in the current frame of the particle.
Definition:
VectorSpinInfo.h:177
ThePEG::Helicity::VectorSpinInfo::setBasisState
void setBasisState(unsigned int hel, const LorentzPolarizationVector &in) const
Set the basis state, this is production state.
Definition:
VectorSpinInfo.h:68
ThePEG::Helicity::VectorSpinInfo::setDecayState
void setDecayState(unsigned int hel, const LorentzPolarizationVector &in) const
Set the basis state for the decay.
Definition:
VectorSpinInfo.h:80
ThePEG::Helicity::VectorSpinInfo::reset
virtual void reset()
Reset.
Definition:
VectorSpinInfo.h:137
ThePEG::Helicity::VectorSpinInfo::Init
static void Init()
Standard Init function used to initialize the interfaces.
ThePEG::Lorentz5Vector< Energy >
ThePEG::LorentzRotation
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
Definition:
LorentzRotation.h:27
ThePEG::LorentzVector< complex< double > >
ThePEG::PDT
PDT is a helper class implementing enumerations for charge, colour and spin to be used by the Particl...
Definition:
PDT.h:24
ThePEG::Pointer::RCPtr
RCPtr is a reference counted (smart) pointer.
Definition:
RCPtr.h:60
ThePEG::SpinInfo
The SpinInfo is the base class for the spin information for the spin correlation algorithm.
Definition:
SpinInfo.h:58
ThePEG::SpinInfo::reset
virtual void reset()
Reset - Undoes any transformations and calls undecay.
Definition:
SpinInfo.h:159
ThePEG::SpinInfo::undecay
virtual void undecay() const
Calculate the rho matrix for the decay if not already done.
ThePEG
This is the main namespace within which all identifiers in ThePEG are declared.
Definition:
FactoryBase.h:28
Generated on Thu Jun 20 2024 14:47:00 for ThePEG by
1.9.6