ThePEG  1.8.0
RSFermionSpinInfo.h
1 // -*- C++ -*-
2 //
3 // RSFermionSpinInfo.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 2003-2011 Peter Richardson, Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef THEPEG_RSFermionSpinInfo_H
10 #define THEPEG_RSFermionSpinInfo_H
11 // This is the declaration of the RSFermionSpinInfo class.
12 
13 #include "ThePEG/EventRecord/SpinInfo.h"
14 #include "ThePEG/Helicity/LorentzRSSpinor.h"
15 #include "RSFermionSpinInfo.fh"
16 
17 namespace ThePEG {
18 namespace Helicity {
19 
42 class RSFermionSpinInfo: public SpinInfo {
43 
44 public:
45 
53  _decaycalc(false) {}
54 
60  RSFermionSpinInfo(const Lorentz5Momentum & p,bool time)
61  : SpinInfo(PDT::Spin3Half, p, time),
63  _decaycalc(false) {}
65 
66 public:
67 
75  void setBasisState(unsigned int hel,
76  const LorentzRSSpinor<SqrtEnergy> & in) const {
77  assert(hel<4);
78  _productionstates[hel] = in;
79  _currentstates [hel] = in;
80  }
81 
87  void setDecayState(unsigned int hel,
88  const LorentzRSSpinor<SqrtEnergy> & in) const {
89  assert(hel<4);
90  _decaycalc = true;
91  _decaystates[hel] = in;
92  }
93 
98  const LorentzRSSpinor<SqrtEnergy> & getProductionBasisState(unsigned int hel) const {
99  assert(hel<4);
100  return _productionstates[hel];
101  }
102 
107  const LorentzRSSpinor<SqrtEnergy> & getDecayBasisState(unsigned int hel) const {
108  assert(hel<4);
109  if(!_decaycalc) {
110  for(unsigned int ix=0;ix<4;++ix) _decaystates[ix]=_currentstates[ix];
111  _decaycalc=true;
112  }
113  return _decaystates[hel];
114  }
115 
119  virtual void transform(const LorentzMomentum &,const LorentzRotation &);
121 
122 public:
123 
127  static void Init();
128 
132  virtual EIPtr clone() const;
133 
134 private:
135 
140 
145 
146 private:
147 
151  mutable vector<LorentzRSSpinor<SqrtEnergy> > _productionstates;
152 
156  mutable vector<LorentzRSSpinor<SqrtEnergy> > _decaystates;
157 
161  mutable vector<LorentzRSSpinor<SqrtEnergy> > _currentstates;
162 
166  mutable bool _decaycalc;
167 
168 };
169 
170 }
171 }
172 
173 
174 #include "ThePEG/Utilities/ClassTraits.h"
175 
176 namespace ThePEG {
177 
184 template <>
187  typedef ThePEG::SpinInfo NthBase;
188 };
189 
194 template <>
196  : public ClassTraitsBase<ThePEG::Helicity::RSFermionSpinInfo> {
200  static string className() { return "ThePEG::Helicity::RSFermionSpinInfo"; }
201 };
202 
205 }
206 
207 #endif /* THEPEG_RSFermionSpinInfo_H */
static void Init()
Standard Init function used to initialize the interfaces.
PDT is a helper class implementing enumerations for charge, colour and spin to be used by the Particl...
Definition: PDT.h:24
The LorentzRotation class combine a SpinOneLorentzRotation and a spin SpinHalfLorentzRotation to prov...
RSFermionSpinInfo & operator=(const RSFermionSpinInfo &)
Private and non-existent assignment operator.
bool _decaycalc
True if the decay state has been set.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
A concreate implementation of ClassDescriptionBase describing a concrete class without persistent dat...
void setDecayState(unsigned int hel, const LorentzRSSpinor< SqrtEnergy > &in) const
Set the basis state for the decay.
The LorentzRSSpinor class is designed to store a Rarita-Schwinger spinor for a spin-3/2 particle...
virtual EIPtr clone() const
Standard clone method.
The SpinInfo is the base class for the spin information for the spin correlation algorithm.
Definition: SpinInfo.h:58
static NoPIOClassDescription< RSFermionSpinInfo > initRSFermionSpinInfo
Describe a concrete class without persistent data.
The RSFermionSpinInfo class inherits from the SpinInfo class and implements the storage of the basis ...
vector< LorentzRSSpinor< SqrtEnergy > > _currentstates
Basis states in the current frame of the particle.
RSFermionSpinInfo()
Default constructor.
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
vector< LorentzRSSpinor< SqrtEnergy > > _decaystates
Basis states in the frame in which the particle decays.
void setBasisState(unsigned int hel, const LorentzRSSpinor< SqrtEnergy > &in) const
Set the basis state, this is production state.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
vector< LorentzRSSpinor< SqrtEnergy > > _productionstates
Basis states in the frame in which the particle was produced.
RSFermionSpinInfo(const Lorentz5Momentum &p, bool time)
Standard Constructor.
virtual void transform(const LorentzMomentum &, const LorentzRotation &)
Perform a lorentz rotation of the spin information.
const LorentzRSSpinor< SqrtEnergy > & getProductionBasisState(unsigned int hel) const
Get the basis state for the production for the given helicity, hel (0,1,2,3 as described above...
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
const LorentzRSSpinor< SqrtEnergy > & getDecayBasisState(unsigned int hel) const
Get the basis state for the decay for the given helicity, hel (0,1,2,3 as described above...
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52