herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
TFFDecayer.h
1 // -*- C++ -*-
2 //
3 // TFFDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 The Herwig Collaboration
5 //
6 // Herwig 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 HERWIG_TFFDecayer_H
10 #define HERWIG_TFFDecayer_H
11 //
12 // This is the declaration of the TFFDecayer class.
13 //
14 
15 #include "GeneralTwoBodyDecayer.h"
16 #include "ThePEG/Repository/EventGenerator.h"
17 #include "ThePEG/Helicity/Vertex/Tensor/FFTVertex.h"
18 #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h"
19 #include "ThePEG/Helicity/Vertex/Tensor/FFVTVertex.h"
20 
21 namespace Herwig {
22 using namespace ThePEG;
23 using Helicity::FFTVertexPtr;
24 
35 
36 public:
37 
42 
53  virtual double me2(const int ichan, const Particle & part,
54  const ParticleVector & decay, MEOption meopt) const;
55 
62  virtual Energy partialWidth(PMPair inpart, PMPair outa,
63  PMPair outb) const;
64 
68  virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
69 
73  virtual double threeBodyME(const int , const Particle & inpart,
74  const ParticleVector & decay,MEOption meopt);
76 
77 public:
78 
85  void persistentOutput(PersistentOStream & os) const;
86 
92  void persistentInput(PersistentIStream & is, int version);
94 
101  static void Init();
102 
103 protected:
104 
111  virtual IBPtr clone() const;
112 
117  virtual IBPtr fullclone() const;
119 
120 protected:
121 
129  virtual void doinit();
131 
132 private:
133 
139 
144  TFFDecayer & operator=(const TFFDecayer &) = delete;
145 
146 private:
147 
151  AbstractFFTVertexPtr _abstractVertex;
152 
156  FFTVertexPtr _perturbativeVertex;
157 
161  AbstractFFVVertexPtr _abstractOutgoingVertex1;
162 
166  AbstractFFVVertexPtr _abstractOutgoingVertex2;
167 
171  AbstractFFVTVertexPtr _abstractFourPointVertex;
172 
176  mutable RhoDMatrix _rho;
177 
181  mutable vector<TensorWaveFunction> _tensors;
182 
186  mutable vector<SpinorWaveFunction> _wave;
187 
191  mutable vector<SpinorBarWaveFunction> _wavebar;
192 
196  mutable RhoDMatrix _rho3;
197 
201  mutable vector<TensorWaveFunction> _tensors3;
202 
206  mutable vector<SpinorWaveFunction> _wave3;
207 
211  mutable vector<SpinorBarWaveFunction> _wavebar3;
212 
216  mutable vector<VectorWaveFunction> _gluon;
217 
218 };
219 
220 }
221 
222 #include "ThePEG/Utilities/ClassTraits.h"
223 
224 namespace ThePEG {
225 
230 template <>
231 struct BaseClassTrait<Herwig::TFFDecayer,1> {
233  typedef Herwig::GeneralTwoBodyDecayer NthBase;
234 };
235 
238 template <>
239 struct ClassTraits<Herwig::TFFDecayer>
240  : public ClassTraitsBase<Herwig::TFFDecayer> {
242  static string className() { return "Herwig::TFFDecayer"; }
243 };
244 
247 }
248 
249 
250 #endif /* HERWIG_TFFDecayer_H */
AbstractFFVVertexPtr _abstractOutgoingVertex1
Abstract pointer to AbstractFFVVertex for QCD radiation from outgoing (anti)fermion.
Definition: TFFDecayer.h:161
The TFFDecayer class implements the decay of a tensor to 2 fermions in a general model.
Definition: TFFDecayer.h:34
RhoDMatrix _rho3
Spin density matrix for 3 body decay.
Definition: TFFDecayer.h:196
vector< VectorWaveFunction > _gluon
Vector wavefunction for 3 body decay.
Definition: TFFDecayer.h:216
vector< SpinorWaveFunction > _wave3
Spinor wavefunction for 3 body decay.
Definition: TFFDecayer.h:206
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
AbstractFFVTVertexPtr _abstractFourPointVertex
Abstract pointer to AbstractFFVTVertex for QCD radiation from 4 point vertex.
Definition: TFFDecayer.h:171
The GeneralTwoBodyDecayer class is designed to be the base class for 2 body decays for some general m...
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: TFFDecayer.h:68
vector< TensorWaveFunction > _tensors
Polarization tensors for the decaying particle.
Definition: TFFDecayer.h:181
TFFDecayer()
The default constructor.
Definition: TFFDecayer.h:41
pair< tcPDPtr, Energy > PMPair
A ParticleData ptr and (possible) mass pair.
RhoDMatrix _rho
Spin density matrix.
Definition: TFFDecayer.h:176
vector< TensorWaveFunction > _tensors3
Tensor wavefunction for 3 body decay.
Definition: TFFDecayer.h:201
MEOption
Enum for the matrix element option.
AbstractFFTVertexPtr _abstractVertex
Abstract pointer to AbstractFFTVertex.
Definition: TFFDecayer.h:151
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:78
FFTVertexPtr _perturbativeVertex
Pointer to the perturbative vertex.
Definition: TFFDecayer.h:156
vector< SpinorWaveFunction > _wave
Spinors for the decay products.
Definition: TFFDecayer.h:186
static ClassDescription< TFFDecayer > initTFFDecayer
The static object used to initialize the description of this class.
Definition: TFFDecayer.h:138
AbstractFFVVertexPtr _abstractOutgoingVertex2
Abstract pointer to AbstractFFVVertex for QCD radiation from outgoing (anti)fermion.
Definition: TFFDecayer.h:166
-*- C++ -*-
vector< SpinorBarWaveFunction > _wavebar3
Barred spinor wavefunction for 3 body decay.
Definition: TFFDecayer.h:211
vector< PPtr > ParticleVector
vector< SpinorBarWaveFunction > _wavebar
Barred spinors for the decay products.
Definition: TFFDecayer.h:191