herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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#include "Herwig/Shower/QTilde/Base/PartnerFinder.h"
23#include "Herwig/Shower/QTilde/SplittingFunctions/SplittingGenerator.h"
24#include "Herwig/Shower/QTilde/Kinematics/KinematicsReconstructor.h"
25
26namespace Herwig {
27
28using namespace ThePEG;
29
34
42
43public:
44
49
58 virtual bool accept(tcPDPtr parent, const tPDVector & children) const = 0;
59
66 virtual ParticleVector decay(const Particle & parent,
67 const tPDVector & children) const = 0;
68
75 virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const;
76
82 virtual void dataBaseOutput(ofstream & os,bool header) const;
84
85protected:
86
90 PVector shower(const Particle & parent, ParticleVector & partons) const;
91
92 bool timeLikeShower(tShowerParticlePtr particle,
93 Branching fb, bool first, PVector & output) const;
94
95public:
96
104
110 void persistentInput(PersistentIStream & is, int version);
112
119 static void Init();
120
121protected:
122
130 virtual void doinit();
132
133protected:
134
142 bool duplicateMode(const Particle & parent,
143 const vector<tPPtr> & hadrons) const;
144
145private:
146
152
153private:
154
158 PartonSplitterPtr _partonSplitter;
159
163 ClusterFinderPtr _clusterFinder;
164
168 ClusterFissionerPtr _clusterFissioner;
169
173 LightClusterDecayerPtr _lightClusterDecayer;
174
178 ClusterDecayerPtr _clusterDecayer;
179
184
188 unsigned int _partontries;
189
193 bool _inter;
194
195 // @name Parton Shower related variables
197
201
205 SplittingGeneratorPtr _splittingGenerator;
206
210 PartnerFinderPtr _partnerFinder;
211
215 KinematicsReconstructorPtr _reconstructor;
217
218};
219
220}
221
222#endif /* HERWIG_PartonicDecayerBase_H */
The HwDecayerBase class is the base class for Decayers in Herwig.
Definition: HwDecayerBase.h:37
Here is the documentation of the PartonicDecayerBase class.
SplittingGeneratorPtr _splittingGenerator
Pointer to the splitting generator.
ClusterDecayerPtr _clusterDecayer
This is a pointer to a Herwig::ClusterDecayer object.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
unsigned int _partontries
Number of tries for partonic modes.
PartnerFinderPtr _partnerFinder
Pointer to the PartnerFinder object.
KinematicsReconstructorPtr _reconstructor
Pointer to the KinematicsReconstructor object.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const =0
Check if this decayer can perfom the decay for a particular mode.
ClusterFinderPtr _clusterFinder
This is a pointer to a Herwig::ClusterFinder object.
virtual ParticleVector decay(const DecayMode &dm, const Particle &p) const
Perform a decay for a given DecayMode and a given Particle instance.
bool _inter
Whether or not to include the intermediates.
bool _shower
Wheher or not to perform the parton shower.
virtual ParticleVector decay(const Particle &parent, const tPDVector &children) const =0
Perform the decay of the particle to the specified decay products.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
LightClusterDecayerPtr _lightClusterDecayer
This is a pointer to a Herwig::LightClusterDecayer object.
ClusterFissionerPtr _clusterFissioner
This is a pointer to a Herwig::ClusterFissioner object.
PVector shower(const Particle &parent, ParticleVector &partons) const
Perform the parton shower.
bool duplicateMode(const Particle &parent, const vector< tPPtr > &hadrons) const
Check hadrons produced in a partonic hadron decay do not reproduce an inclusive mode.
static void Init()
The standard Init function used to initialize the interfaces.
bool _exclusive
Switch to control hadrons produced in partonic b and c decays.
PartonicDecayerBase & operator=(const PartonicDecayerBase &)=delete
The assignment operator is private and must never be called.
PartonSplitterPtr _partonSplitter
This is a pointer to a Herwig::PartonSplitter object.
PartonicDecayerBase()
The default constructor.
-*- C++ -*-
ThePEG_DECLARE_MULTISET(tcPDPtr, cParticleMSet)
Define some sets.
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
vector< PPtr > PVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
The branching struct is used to store information on the branching.
Definition: Branching.h:20