herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
PartonicDecayerBase.h
1 // -*- C++ -*-
2 //
3 // PartonicDecayerBase.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_PartonicDecayerBase_H
10 #define HERWIG_PartonicDecayerBase_H
11 //
12 // This is the declaration of the PartonicDecayerBase class.
13 //
14 
15 #include "Herwig/Decay/HwDecayerBase.h"
16 #include "Herwig/Hadronization/PartonSplitter.h"
17 #include "Herwig/Hadronization/ClusterFinder.h"
18 #include "Herwig/Hadronization/ClusterFissioner.h"
19 #include "Herwig/Hadronization/LightClusterDecayer.h"
20 #include "Herwig/Hadronization/ClusterDecayer.h"
21 #include "Herwig/Hadronization/Cluster.h"
22 
23 namespace Herwig {
24 
25 using namespace ThePEG;
26 
30 ThePEG_DECLARE_MULTISET(tcPDPtr,cParticleMSet);
31 
39 
40 public:
41 
46 
55  virtual bool accept(tcPDPtr parent, const tPDVector & children) const = 0;
56 
63  virtual ParticleVector decay(const Particle & parent,
64  const tPDVector & children) const = 0;
65 
72  virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const;
73 
79  virtual void dataBaseOutput(ofstream & os,bool header) const;
81 
82 public:
83 
90  void persistentOutput(PersistentOStream & os) const;
91 
97  void persistentInput(PersistentIStream & is, int version);
99 
106  static void Init();
107 
108 protected:
109 
117  bool duplicateMode(const Particle & parent,
118  const vector<tPPtr> & hadrons) const;
119 
120 private:
121 
126  PartonicDecayerBase & operator=(const PartonicDecayerBase &) = delete;
127 
128 private:
129 
133  PartonSplitterPtr _partonSplitter;
134 
138  ClusterFinderPtr _clusterFinder;
139 
143  ClusterFissionerPtr _clusterFissioner;
144 
148  LightClusterDecayerPtr _lightClusterDecayer;
149 
153  ClusterDecayerPtr _clusterDecayer;
154 
159 
163  unsigned int _partontries;
164 
168  bool _inter;
169 
170 };
171 
172 }
173 
174 #endif /* HERWIG_PartonicDecayerBase_H */
LightClusterDecayerPtr _lightClusterDecayer
This is a pointer to a Herwig::LightClusterDecayer object.
ClusterFinderPtr _clusterFinder
This is a pointer to a Herwig::ClusterFinder object.
ThePEG_DECLARE_MULTISET(tcPDPtr, cParticleMSet)
Define some sets.
ClusterDecayerPtr _clusterDecayer
This is a pointer to a Herwig::ClusterDecayer object.
bool _exclusive
Switch to control hadrons produced in partonic b and c decays.
unsigned int _partontries
Number of tries for partonic modes.
vector< tPDPtr > tPDVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
PartonSplitterPtr _partonSplitter
This is a pointer to a Herwig::PartonSplitter object.
bool _inter
Whether or not to include the intermediates.
The HwDecayerBase class is the base class for Decayers in Herwig.
Definition: HwDecayerBase.h:37
-*- C++ -*-
Here is the documentation of the PartonicDecayerBase class.
ClusterFissionerPtr _clusterFissioner
This is a pointer to a Herwig::ClusterFissioner object.
vector< PPtr > ParticleVector