thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
Rank3TensorSpinInfo.h
1// -*- C++ -*-
2//
3// Rank3TensorSpinInfo.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_Rank3TensorSpinInfo_H
10#define THEPEG_Rank3TensorSpinInfo_H
11// This is the declaration of the Rank3TensorSpinInfo class.
12
13#include "ThePEG/EventRecord/SpinInfo.h"
14#include "ThePEG/Helicity/LorentzRank3Tensor.h"
15#include "Rank3TensorSpinInfo.fh"
16// #include "Rank3TensorSpinInfo.xh"
17#include <array>
18
19namespace ThePEG {
20namespace Helicity {
21
47
48public:
49
56
63 : SpinInfo(PDT::Spin3, p, time), _decaycalc(false) {}
65
66public:
67
75 void setBasisState(unsigned int hel, LorentzRank3Tensor<double> in) const {
76 assert(hel<7);
77 _productionstates[hel]=in;
78 _currentstates [hel]=in;
79 }
80
86 void setDecayState(unsigned int hel, LorentzRank3Tensor<double> in) const {
87 assert(hel<7);
88 _decaycalc = true;
89 _decaystates[hel] = in;
90 }
91
96 const LorentzRank3Tensor<double> & getProductionBasisState(unsigned int hel) const {
97 assert(hel<7);
98 return _productionstates[hel];
99 }
100
105 const LorentzRank3Tensor<double> & getCurrentBasisState(unsigned int hel) const {
106 assert(hel<7);
107 return _currentstates[hel];
108 }
109
114 const LorentzRank3Tensor<double> & getDecayBasisState(unsigned int hel) const {
115 assert(hel<7);
116 if(!_decaycalc) {
117 for(unsigned int ix=0;ix<7;++ix)
118 _decaystates[ix]=_currentstates[ix].conjugate();
119 _decaycalc=true;
120 }
121 return _decaystates[hel];
122 }
124
128 virtual void transform(const LorentzMomentum &,const LorentzRotation &);
129
133 virtual void undecay() const {
134 _decaycalc=false;
136 }
137
141 virtual void reset() {
142 undecay();
145 }
146
147public:
148
152 static void Init();
153
157 virtual EIPtr clone() const;
158
159private:
160
165
166private:
167
171 mutable std::array<LorentzRank3Tensor<double>,7> _productionstates;
172
176 mutable std::array<LorentzRank3Tensor<double>,7> _decaystates;
177
181 mutable std::array<LorentzRank3Tensor<double>,7> _currentstates;
182
186 mutable bool _decaycalc;
187
188};
189
190}
191}
192
193
194namespace ThePEG {
195
196}
197#endif /* THEPEG_Rank3TensorSpinInfo_H */
The LorentzRank3Tensor class is designed to implement the storage of a complex tensor to be used to r...
The Rank3TensorSpinInfo class is the implementation of the spin information for tensor particles.
virtual void undecay() const
Undecay.
Rank3TensorSpinInfo(const Lorentz5Momentum &p, bool time)
Standard Constructor.
void setBasisState(unsigned int hel, LorentzRank3Tensor< double > in) const
Set the basis state, this is production state.
Rank3TensorSpinInfo & operator=(const Rank3TensorSpinInfo &)=delete
Private and non-existent assignment operator.
virtual void transform(const LorentzMomentum &, const LorentzRotation &)
Perform a lorentz rotation of the spin information.
const LorentzRank3Tensor< 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....
virtual EIPtr clone() const
Standard clone method.
static void Init()
Standard Init function.
const LorentzRank3Tensor< double > & getDecayBasisState(unsigned int hel) const
Get the basis state for the decay for the given helicity, hel (0,1,2,3,4,5,6 as described above....
std::array< LorentzRank3Tensor< double >, 7 > _currentstates
Basis states in the current frame of the particle.
bool _decaycalc
True if the decay state has been set.
std::array< LorentzRank3Tensor< double >, 7 > _productionstates
Basis states in the frame in which the particle was produced.
void setDecayState(unsigned int hel, LorentzRank3Tensor< double > in) const
Set the basis state for the decay.
std::array< LorentzRank3Tensor< double >, 7 > _decaystates
Basis states in the frame in which the particle decays.
const LorentzRank3Tensor< 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....
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
PDT is a helper class implementing enumerations for charge, colour and spin to be used by the Particl...
Definition: PDT.h:24
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
The SpinInfo is the base class for the spin information for the spin correlation algorithm.
Definition: SpinInfo.h:58
virtual void reset()
Reset - Undoes any transformations and calls undecay.
Definition: SpinInfo.h:159
virtual void undecay() const
Calculate the rho matrix for the decay if not already done.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28