herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
WeakCurrentDecayConstructor.h
1 // -*- C++ -*-
2 //
3 // WeakCurrentDecayConstructor.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 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_WeakCurrentDecayConstructor_H
10 #define HERWIG_WeakCurrentDecayConstructor_H
11 //
12 // This is the declaration of the WeakCurrentDecayConstructor class.
13 //
14 
15 #include "NBodyDecayConstructorBase.h"
16 #include "ThePEG/Helicity/Vertex/VertexBase.h"
17 #include "Herwig/Decay/DecayIntegrator.h"
18 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
19 #include "Herwig/Decay/General/GeneralCurrentDecayer.fh"
20 #include "Herwig/Models/StandardModel/StandardModel.h"
21 #include "Herwig/Decay/WeakCurrents/WeakDecayCurrent.h"
22 #include "Herwig/Decay/General/GeneralCurrentDecayer.h"
23 #include "TwoBodyDecay.h"
24 
25 namespace Herwig {
26 
27 using namespace ThePEG;
28 
36 
37 public:
38 
42  WeakCurrentDecayConstructor() : _masscut(5.*GeV) {}
43 
49  virtual void DecayList(const set<PDPtr> & part);
50 
54  virtual unsigned int numBodies() const { return 1000; }
55 
59  Energy massCut() const { return _masscut;}
60 
61 public:
62 
69  void persistentOutput(PersistentOStream & os) const;
70 
76  void persistentInput(PersistentIStream & is, int version);
78 
85  static void Init();
86 
87 protected:
88 
95  virtual IBPtr clone() const;
96 
101  virtual IBPtr fullclone() const;
103 
104 protected:
105 
113  virtual void doinit();
115 
116 private:
117 
128  vector<TwoBodyDecay>
129  createModes(const PDPtr inpart,const VertexBasePtr vert,
130  unsigned int ilist);
131 
139  GeneralCurrentDecayerPtr createDecayer(PDPtr in, PDPtr out1,
140  vector<tPDPtr> outCurrent,
141  VertexBasePtr vertex,
142  WeakDecayCurrentPtr current);
143 
150  void createDecayMode(vector<TwoBodyDecay> & decays);
152 
153 private:
154 
159  WeakCurrentDecayConstructor & operator=(const WeakCurrentDecayConstructor &) = delete;
160 
161 private:
162 
166  Ptr<Herwig::StandardModel>::pointer _theModel;
167 
171  Energy _masscut;
172 
176  vector<string> decayTags_;
177 
181  vector<vector<tPDPtr> > particles_;
182 
186  vector<double> _norm;
187 
191  vector<WeakDecayCurrentPtr> _current;
192 };
193 
194 }
195 
196 #endif /* HERWIG_WeakCurrentDecayConstructor_H */
Here is the documentation of the WeakCurrentDecayConstructor class.
Energy _masscut
Cut-off on the mass difference.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< string > decayTags_
Tags for the modes.
vector< WeakDecayCurrentPtr > _current
The current for the mode.
This is the base class for NBodyDecayConstructors.
vector< vector< tPDPtr > > particles_
Particles for the mode.
ThePEG::Ptr< ParticleData >::pointer PDPtr
-*- C++ -*-
WeakCurrentDecayConstructor()
The default constructor.
Ptr< Herwig::StandardModel >::pointer _theModel
Model Pointer.
virtual unsigned int numBodies() const
Number of outgoing lines.