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 */
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...
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...
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...
The LorentzRSSpinor class is designed to store a Rarita-Schwinger spinor for a spin-3/2 particle...
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.
void setDecayState(unsigned int hel, const LorentzRSSpinor< SqrtEnergy > &in) const
Set the basis state for the decay.
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
virtual EIPtr clone() const
Standard clone method.
vector< LorentzRSSpinor< SqrtEnergy > > _decaystates
Basis states in the frame in which the particle decays.
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.
void setBasisState(unsigned int hel, const LorentzRSSpinor< SqrtEnergy > &in) const
Set the basis state, this is production state.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52