herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
DipoleShowerParticle.h
1 // -*- C++ -*-
2 //
3 // DipoleShowerParticle.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration
5 //
6 // Herwig 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 HERWIG_DipoleShowerParticle_H
10 #define HERWIG_DipoleShowerParticle_H
11 //
12 // This is the declaration of the DipoleShowerParticle class.
13 //
14 
15 #include "ThePEG/EventRecord/Particle.h"
16 #include "ThePEG/Helicity/WaveFunction/WaveFunctionBase.h"
17 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
18 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
19 
20 #include "DipoleShowerVertex.h"
21 
22 namespace Herwig {
23 
24  using namespace ThePEG;
25 
31  class DipoleShowerParticle : public Base {
32 
33  public:
34 
39 
44 
45  public:
46 
50  void clear();
51 
55  void prepare( PPtr& part,
56  const Helicity::Direction emmDir,
57  const Helicity::Direction specDir,
58  const Lorentz5Momentum& pVector,
59  const Lorentz5Momentum& nVector );
60 
65  DSVertexPtr decayVertex() { return theDecayVertex; }
66 
72  vector<LorentzSpinor<SqrtEnergy> > createFermionDecayStates();
73 
77  void createVectorDecayStates();
78 
83  void createNewFermionSpinInfo( PPtr& outgoing, Helicity::Direction dir);
84 
89  void createNewVectorSpinInfo( PPtr& outgoing, Helicity::Direction dir);
90 
104  void setFermionMapping( const vector<LorentzSpinor<SqrtEnergy>>& decayBasis );
105 
112  void setVectorMapping();
113 
114  public:
115 
122  static void Init();
123 
124  private:
125 
130 
135  DSVertexPtr theDecayVertex;
136 
137  private:
138 
143  DipoleShowerParticle & operator=(const DipoleShowerParticle &);
144 
145  };
146 }
147 
148 #include "ThePEG/Utilities/ClassTraits.h"
149 
150 namespace ThePEG {
151 
156  template <>
159  typedef Base NthBase;
160  };
161 
164  template <>
166  : public ClassTraitsBase<Herwig::DipoleShowerParticle> {
168  static string className() { return "Herwig::DipoleShowerParticle"; }
176  static string library() { return "HwDipoleShower.so"; }
177  };
178 
181 }
182 #endif /* HERWIG_DipoleShowerParticle_H */
ThePEG::Ptr< Particle >::pointer PPtr
DSVertexPtr theDecayVertex
The dipole shower vertex associated with this particle.
~DipoleShowerParticle()
Default destructor.
DSVertexPtr decayVertex()
Return the associated decay vertex, a DipoleShowerVertex.
PPtr theParticle
The pptr to this particle.
DipoleShowerParticle()
Default constructor.
-*- C++ -*-