thepeg
is hosted by
Hepforge
,
IPPP Durham
ThePEG
2.2.1
Helicity
TensorSpinInfo.h
1
// -*- C++ -*-
2
//
3
// TensorSpinInfo.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_TensorSpinInfo_H
10
#define THEPEG_TensorSpinInfo_H
11
// This is the declaration of the TensorSpinInfo class.
12
13
#include "ThePEG/EventRecord/SpinInfo.h"
14
#include "ThePEG/Helicity/LorentzTensor.h"
15
#include "TensorSpinInfo.fh"
16
// #include "TensorSpinInfo.xh"
17
#include <array>
18
19
namespace
ThePEG
{
20
namespace
Helicity {
21
43
class
TensorSpinInfo
:
public
SpinInfo
{
44
45
public
:
46
52
TensorSpinInfo
() :
SpinInfo
(
PDT
::Spin2),
_decaycalc
(false) {}
53
59
TensorSpinInfo
(
const
Lorentz5Momentum
& p,
bool
time)
60
:
SpinInfo
(
PDT
::Spin2, p, time),
_decaycalc
(false) {}
62
63
public
:
64
72
void
setBasisState
(
unsigned
int
hel,
LorentzTensor<double>
in)
const
{
73
assert(hel<5);
74
_productionstates
[hel]=in;
75
_currentstates
[hel]=in;
76
}
77
83
void
setDecayState
(
unsigned
int
hel,
LorentzTensor<double>
in)
const
{
84
assert(hel<5);
85
_decaycalc
=
true
;
86
_decaystates
[hel] = in;
87
}
88
93
const
LorentzTensor<double>
&
getProductionBasisState
(
unsigned
int
hel)
const
{
94
assert(hel<5);
95
return
_productionstates
[hel];
96
}
97
102
const
LorentzTensor<double>
&
getCurrentBasisState
(
unsigned
int
hel)
const
{
103
assert(hel<5);
104
return
_currentstates
[hel];
105
}
106
111
const
LorentzTensor<double>
&
getDecayBasisState
(
unsigned
int
hel)
const
{
112
assert(hel<5);
113
if
(!
_decaycalc
) {
114
for
(
unsigned
int
ix=0;ix<5;++ix)
115
_decaystates
[ix]=
_currentstates
[ix].conjugate();
116
_decaycalc
=
true
;
117
}
118
return
_decaystates
[hel];
119
}
121
125
virtual
void
transform
(
const
LorentzMomentum
&,
const
LorentzRotation
&);
126
130
virtual
void
undecay
()
const
{
131
_decaycalc
=
false
;
132
SpinInfo::undecay
();
133
}
134
138
virtual
void
reset
() {
139
undecay
();
140
_currentstates
=
_productionstates
;
141
SpinInfo::reset
();
142
}
143
144
public
:
145
149
static
void
Init
();
150
154
virtual
EIPtr
clone
()
const
;
155
156
private
:
157
161
TensorSpinInfo
&
operator=
(
const
TensorSpinInfo
&) =
delete
;
162
163
private
:
164
168
mutable
std::array<LorentzTensor<double>,5>
_productionstates
;
169
173
mutable
std::array<LorentzTensor<double>,5>
_decaystates
;
174
178
mutable
std::array<LorentzTensor<double>,5>
_currentstates
;
179
183
mutable
bool
_decaycalc
;
184
185
};
186
187
}
188
}
189
190
191
namespace
ThePEG
{
192
193
}
194
#endif
/* THEPEG_TensorSpinInfo_H */
ThePEG::LorentzVector< Energy >
ThePEG::Helicity::TensorSpinInfo::_decaystates
std::array< LorentzTensor< double >, 5 > _decaystates
Basis states in the frame in which the particle decays.
Definition:
TensorSpinInfo.h:173
ThePEG::Helicity::TensorSpinInfo::Init
static void Init()
Standard Init function.
ThePEG::Helicity::TensorSpinInfo::getCurrentBasisState
const LorentzTensor< double > & getCurrentBasisState(unsigned int hel) const
Get the basis state for the current for the given helicity, hel (0,1,2,3,4 as described above...
Definition:
TensorSpinInfo.h:102
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::Helicity::TensorSpinInfo::clone
virtual EIPtr clone() const
Standard clone method.
ThePEG::LorentzRotation
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
Definition:
LorentzRotation.h:27
ThePEG::Helicity::TensorSpinInfo::_currentstates
std::array< LorentzTensor< double >, 5 > _currentstates
Basis states in the current frame of the particle.
Definition:
TensorSpinInfo.h:178
ThePEG
This is the main namespace within which all identifiers in ThePEG are declared.
Definition:
FactoryBase.h:28
ThePEG::Helicity::TensorSpinInfo::TensorSpinInfo
TensorSpinInfo(const Lorentz5Momentum &p, bool time)
Standard Constructor.
Definition:
TensorSpinInfo.h:59
ThePEG::Helicity::TensorSpinInfo::setBasisState
void setBasisState(unsigned int hel, LorentzTensor< double > in) const
Set the basis state, this is production state.
Definition:
TensorSpinInfo.h:72
ThePEG::Helicity::TensorSpinInfo::undecay
virtual void undecay() const
Undecay.
Definition:
TensorSpinInfo.h:130
ThePEG::SpinInfo::reset
virtual void reset()
Reset - Undoes any transformations and calls undecay.
Definition:
SpinInfo.h:159
ThePEG::SpinInfo
The SpinInfo is the base class for the spin information for the spin correlation algorithm.
Definition:
SpinInfo.h:58
ThePEG::Helicity::TensorSpinInfo::reset
virtual void reset()
Reset.
Definition:
TensorSpinInfo.h:138
ThePEG::Pointer::RCPtr
RCPtr is a reference counted (smart) pointer.
Definition:
RCPtr.h:60
ThePEG::Helicity::TensorSpinInfo::getDecayBasisState
const LorentzTensor< double > & getDecayBasisState(unsigned int hel) const
Get the basis state for the decay for the given helicity, hel (0,1,2,3,4 as described above...
Definition:
TensorSpinInfo.h:111
ThePEG::Helicity::TensorSpinInfo::getProductionBasisState
const LorentzTensor< double > & getProductionBasisState(unsigned int hel) const
Get the basis state for the production for the given helicity, hel (0,1,2,3,4 as described above...
Definition:
TensorSpinInfo.h:93
ThePEG::Lorentz5Vector< Energy >
ThePEG::Helicity::TensorSpinInfo::_productionstates
std::array< LorentzTensor< double >, 5 > _productionstates
Basis states in the frame in which the particle was produced.
Definition:
TensorSpinInfo.h:168
ThePEG::Helicity::TensorSpinInfo
The TensorSpinInfo class is the implementation of the spin information for tensor particles...
Definition:
TensorSpinInfo.h:43
ThePEG::Helicity::TensorSpinInfo::TensorSpinInfo
TensorSpinInfo()
Default constructor.
Definition:
TensorSpinInfo.h:52
ThePEG::Helicity::TensorSpinInfo::setDecayState
void setDecayState(unsigned int hel, LorentzTensor< double > in) const
Set the basis state for the decay.
Definition:
TensorSpinInfo.h:83
ThePEG::Helicity::TensorSpinInfo::_decaycalc
bool _decaycalc
True if the decay state has been set.
Definition:
TensorSpinInfo.h:183
ThePEG::Helicity::TensorSpinInfo::operator=
TensorSpinInfo & operator=(const TensorSpinInfo &)=delete
Private and non-existent assignment operator.
ThePEG::Helicity::LorentzTensor< double >
ThePEG::SpinInfo::undecay
virtual void undecay() const
Calculate the rho matrix for the decay if not already done.
ThePEG::Helicity::TensorSpinInfo::transform
virtual void transform(const LorentzMomentum &, const LorentzRotation &)
Perform a lorentz rotation of the spin information.
Generated on Sat Apr 11 2020 14:31:18 for ThePEG by
1.8.13