herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
TwoBodyDecayConstructor.h
1 // -*- C++ -*-
2 //
3 // TwoBodyDecayConstructor.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_TwoBodyDecayConstructor_H
10 #define HERWIG_TwoBodyDecayConstructor_H
11 //
12 // This is the declaration of the TwoBodyDecayConstructor class.
13 //
14 
15 #include "NBodyDecayConstructorBase.h"
16 #include "ThePEG/Helicity/Vertex/VertexBase.h"
17 #include "Herwig/Decay/General/GeneralTwoBodyDecayer.fh"
18 #include "Herwig/Shower/ShowerAlpha.h"
19 #include "TwoBodyDecay.h"
20 
21 namespace Herwig {
22 using namespace ThePEG;
23 
24 using Helicity::VertexBasePtr;
25 using Helicity::tVertexBasePtr;
26 
38 
39 public:
40 
45  radiationVertices_[ShowerInteraction::QCD] = map<tPDPtr,VertexBasePtr>();
46  radiationVertices_[ShowerInteraction::QED] = map<tPDPtr,VertexBasePtr>();
47  }
48 
53  virtual void DecayList(const set<PDPtr> & part);
54 
58  virtual unsigned int numBodies() const { return 2; }
59 
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 private:
105 
110  TwoBodyDecayConstructor & operator=(const TwoBodyDecayConstructor &) = delete;
111 
112 private:
113 
124  void createModes(tPDPtr inpart, VertexBasePtr vert,
125  unsigned int ilist,
126  multiset<TwoBodyDecay> & modes);
127 
133  GeneralTwoBodyDecayerPtr createDecayer(TwoBodyDecay decay,
134  vector<VertexBasePtr> );
135 
141  void createDecayMode(multiset<TwoBodyDecay> & decays);
143 
147  VertexBasePtr radiationVertex(tPDPtr particle,ShowerInteraction inter,
148  tPDPair children = tPDPair ());
149 
150 private:
151 
156  map<ShowerInteraction,map<tPDPtr,VertexBasePtr> > radiationVertices_;
157 
161  ShowerAlphaPtr alphaQCD_;
162 
166  ShowerAlphaPtr alphaQED_;
167 
172 
173 };
174 
175 }
176 
177 #endif /* HERWIG_TwoBodyDecayConstructor_H */
ShowerInteraction
Handy header file to be included in all Shower classes.
ShowerAlphaPtr alphaQED_
Default choice for the strong coupling object for hard QED radiation.
ThePEG::Ptr< ParticleData >::transient_pointer tPDPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ShowerAlphaPtr alphaQCD_
Default choice for the strong coupling object for hard QCD radiation.
ShowerInteraction inter_
Which type of corrections to the decays to include.
This is the base class for NBodyDecayConstructors.
Struct for the prototype of a two-body decay mode.
Definition: TwoBodyDecay.h:22
TwoBodyDecayConstructor()
The default constructor.
pair< tPDPtr, tPDPtr > tPDPair
The TwoBodyDecayConstructor class inherits from the dummy base class NBodyDecayConstructorBase and im...
-*- C++ -*-
map< ShowerInteraction, map< tPDPtr, VertexBasePtr > > radiationVertices_
Map of particles and the vertices which generate their QCD radiation.
virtual unsigned int numBodies() const
Number of outgoing lines.